求助,关于音频压缩ACM + DirectSound!

kulala 2002-03-09 10:27:15
紧急求助,本人正在做一个关于网络语音通话的程序,捕捉和播放音频用的是DirectSound,压缩用的ACM,可是压缩后解压播放的时候有很大噪音,请各位
高手指点。
...全文
111 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
碧螺春的马甲 2002-04-17
  • 打赏
  • 举报
回复
多谢
kulala 2002-03-22
  • 打赏
  • 举报
回复
我在把源音频格式转化为中间PCM格式时出了点问题,
转化后的缓冲区大小取错了,所以出现有噪音。
碧螺春的马甲 2002-03-18
  • 打赏
  • 举报
回复
到底你是怎么解决的,我也遇到了同样的问题,我用的是TureSpeedch,
噪音很大,我不知道问题出在哪里?
kulala 2002-03-15
  • 打赏
  • 举报
回复
搞定了,如果CODEC用TureSpeech的话压缩比可以达到10:1,真爽。
好了,现在给分。
loveisbug 2002-03-11
  • 打赏
  • 举报
回复
注意单双声道采样率和8位16位的的声音格式。
kulala 2002-03-11
  • 打赏
  • 举报
回复
呵呵,我自己编码只怕是做不来的。
我用的CODEC是GSM 6.10,就算失真也不应该有如此大噪音的呀。
我估计是压缩或者解压缩时存在有没注意到的问题,但是却找不到,
cppnet(jdy)你是怎么做的呢?有没有碰到这样的问题?
cppnet 2002-03-11
  • 打赏
  • 举报
回复
可能你的压缩算法有问题,是无失真的?
你可采用霍夫曼编码或者游程编码,这些都是无失真的编码
loveisbug 2002-03-11
  • 打赏
  • 举报
回复
说说你的压缩吧。
kulala 2002-03-11
  • 打赏
  • 举报
回复
还请各位大侠多多指点,本人感激不尽!
kulala 2002-03-11
  • 打赏
  • 举报
回复
to: redleaves(无心红叶),cppnet(jdy)
的确我不需要做什么混音。
如果我不压缩音频数据,直接发送用DSound采集的音频流数据的话,则通话很清晰,但是数据量太大;而压缩后则很大噪音,不知道问题在什么地方。
kulala 2002-03-11
  • 打赏
  • 举报
回复
谢谢各位。
能不能留下QQ方便联系!
我的是9374931
loveisbug 2002-03-11
  • 打赏
  • 举报
回复
DirectSound在录音时对声音的格式是有限制的。
查一查这方面的资料去。
我只知道CE3.0里的DSKit包只支持16bit,44100,2channels。
cppnet 2002-03-11
  • 打赏
  • 举报
回复
这个函数可能有用:

acmStreamSize()
The acmStreamSize function returns a recommended size for a source or destination buffer on an ACM stream.

MMRESULT acmStreamSize(
HACMSTREAM has,
DWORD cbInput,
LPDWORD pdwOutputBytes,
DWORD fdwSize
);
cppnet 2002-03-11
  • 打赏
  • 举报
回复
我的数据暂时还没有压缩,不过在两台机子上测试发现效果很好,没有噪声的
问题.若压缩过效果也应不会比目前差..
我用的采样率为22050,单声道8位格式..
everandforever 2002-03-11
  • 打赏
  • 举报
回复
我做过一个类似的程序,用DIRECT SOUND 输出,WAVEIN录入的。
用ACM压缩时,一次性转换的数据长度是有限制的,
必须是 960(具体多少记不清了) 的倍数,比如:
960,1920。。。 如果你要一次压缩1919个字节,
那么后面的一半(959字节)就会丢失。至少在我
的机器上是这样。

eien@eyou.com
cppnet 2002-03-11
  • 打赏
  • 举报
回复
我对directsound不太了解,我的做法是用waveIn**** 等函数来录音,再用
waveOut**** 等函数放音.
当用这些函数来处理音频数据时,霍夫曼压缩可通过
可采集一些数据,再进行分析得到一张各个音频数据出现几率的表.
(当然这张表很影响压缩效率)
再进行编码就差不多可以啦.(数据结构的书上都有例子)
至于游程编码思路很简单,
比如:"abcabcabc"将会编成(3,abc),
kulala 2002-03-11
  • 打赏
  • 举报
回复
采样率我试过11025和22050,都有噪音。
redleaves 2002-03-10
  • 打赏
  • 举报
回复
我觉得没有必要用DirectSound。这个东西有点复杂,不如windows的多媒体函数方便(如:waveOut),除非你要用到混音之类的操作(这时用DX方便些,不过也可以手工处理)。
cppnet 2002-03-10
  • 打赏
  • 举报
回复
即使要混音也不必用DirectSound
除非要做游戏不然用不上DirectSound
cppnet 2002-03-09
  • 打赏
  • 举报
回复
我也在做这个,多联系
aha.jdy@263.net

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧