找回密码
 注册会员
查看: 703|回复: 0

【求助】关于使用waveOutSetVolume设置音量的问题

[复制链接]
发表于 2010-3-29 12:50:24 | 显示全部楼层 |阅读模式
<p>【求助】关于使用waveOutSetVolume设置音量的问题</p>
<p><img src="http://img.baidu.com/img/iknow/icn_point.gif"> 悬赏分:20 -</p>
<p>解决时间:2010-3-29 12:50</p>
<p>现在打算使用waveOut系列函数播放声音。</p>
<p>通过多次调用waveOutOpen函数打开多个句柄,可以实现同时播放多个音频文件。</p>
<p>但调用waveOutSetVolume(handleX, volume)函数设置声音时,虽然第一个参数传的是某个已打开的句柄,但效果却是所有已打开句柄的音量同时变化。</p>
<p>我没有启用多线程。</p>
<p>我应该怎样对每个句柄单独设置音量呢?</p>
<p>问题补充:</p>
<p>修改Buffer中的数据改变音量的话,应该怎么做呢?</p>
<p>另外这样做的话,能否实现左右声道的音量单独设定呢?</p>
<p>提问者: gaogaf - 五级</p>
<p>最佳答案</p>
<p>这和声卡有关系, 如果声卡只有一个输入通道(不是硬件的插孔), 音量或者不变,或者都变. 我的方法是在waveOutWrite之前把buffer里的数据(signed short)按音量重算.</p>
<p>------------------------------------</p>
<p>数据多是16位的,其它的也有,大同小异.若是16位的,buffer里存的是signed short, 也就是说数值在-32768到32767之间, 如果是双声道,数据是交叉的:第一个是左声道的,第二个是右声道的.</p>
<p>将数据按比例缩小或放大可控制音量, 但须注意别弄过了火, 否则会出现喀喀的噪音.</p>
<p>0</p>
<p>回答者:</p>
<p>freelaxy - 四级   2010-3-29 12:05</p>
<p>我来评论>></p>
<p>提问者对于答案的评价:</p>
<p>谢谢你的回答,基本想法明白了,现在的问题就是分析wave文件的结构了。</p>
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|文字版|手机版|小黑屋|襄阳城

GMT+8, 2025-7-31 07:30

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表