DirectSound折腾记之二

 DirectSound折腾记之二

找到有节奏的“突突”杂音的步骤:
1、先把收到的音频数据放到一个大的缓存(比如:可保存10秒的音频)
2、然后直接播放缓存里的数据,发现音频很流畅干净,说明杂音是播放过程中产生

解决思路:

利用Notify对象实现播放位置的通知,不断更新播放缓冲(SecondaryBuffer)里的音频数据。
不过很可惜,结果是失败的,在设置通知的时候:
//设置通知
myNotify2 = new Notify(secBuffer);
总会产生”值不在预期范围内“的异常,据说是DirectX中的BUG,微软也撒手不管了,只好另想3招:
1、另起线程,不断检测SecondaryBuffer的播放位置PlayPosition,发现该线程占用CPU太过分,此招作废。
2、收到播放端发送过来的数据时,检测播放位置PlayPosition,发现检测频率太低,受制于数据接收的速度。
3、使用Timer,定时检测播放位置PlayPosition,此招为前2招的折衷,采用。
另外:为了实现平滑播放,对音频数据进行了合并和扩充,效果还比较理想。
对于回声的问题,时间紧迫,暂时没有解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值