DirectSound播放的杂音问题!

lujunweixu 2009-08-22 11:24:10
大家好! 欢迎大家提出自己的看法!

我现在的问题是:我用DirectSound 来播放视频会议系统中的音频时时不时出现杂音,为了提高实时性,我只创建了包含两个长度的解码数据的Stream Buffer(例如AAC解码出来的长度是8192,则Stream Buffer的长度设为8192 * 2),并且在Buffer的中间和结尾设置两个通知点,Primary Buffer的参数设置正确!

...全文
401 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roger_long 2010-02-11
  • 打赏
  • 举报
回复
我也遇到此问题,有点思路,可相互交流:MSN:lxp8@sina.com
浮云 2009-09-28
  • 打赏
  • 举报
回复
应该是缓冲区设的过小了,aac解码一帧1024个sample,假设采样率44100,两个sample相当于0.046秒,太短了
UDX协议 2009-09-23
  • 打赏
  • 举报
回复
应该不是这个问题。

首先,你在本地,边压边解,都在本地完成。

比如录文件。。


出现杂音只可能在开始一小段。如果一直出现就得查看你的代码问题了。
lujunweixu 2009-08-23
  • 打赏
  • 举报
回复
谢谢楼上两位大哥的回答!
我觉得有可能是填充速度的问题。我现在的做法的只要有数据来就解码,解码完成后马上调用填充Stream Buffer的函数,在进入这个函数后会等待通知事件,如果有则填充,如果没有则等待,不解码,也不填充Stream Buffer。
不过我发现,即使我一直不填充数据的话,通知事件还是一直都回来,就是说只要你设置好Stream Buffer并且设置好通知点,则Stream Buffer的Play Cursour和Writer Cursor就会以设定的播放速度一直改变,我会一直通过GetCurrentPosition()来得到这两个参数的位置值。
所以有可能是解码的速度赶不上播放的速度。大家有没有什么好的办法在保证一定的实时性下,解决这个杂音问题。 或者说大家一般用什么方法解决实时性问题!
ArcRain 2009-08-23
  • 打赏
  • 举报
回复
同意楼上的观点,可能解码的速度比较快,导致无新数据可解码引起了杂音。
SoftSoftSoft2008 2009-08-22
  • 打赏
  • 举报
回复
播放有杂音如果数据没有丢失,往往是播放的缓冲里面没有数据,
音频数据没有及时到达,以供播放。

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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