m_mmr = waveOutOpen(0,WAVE_MAPPER,&m_Format,0,0,WAVE_FORMAT_QUERY);
if( MMSYSERR_NOERROR != m_mmr )
{
return PLAY_USUAL_ERROR;
}

m_mmr = waveOutOpen(&m_hWaveOut,WAVE_MAPPER,&m_Format,(DWORD)waveOutProc,(DWORD)this,CALLBACK_FUNCTION);        waveOutSetVolume(m_hWaveOut,lVol)
我播放的声音是G.726解码后,通过waveOutPrepareHeader进行播放的。调用waveOutSetVolume(m_hWaveOut,lVol),系统声音也跟着减小。怎样能独立起来?音频播放以前没做过。在网上也找不到相关资料,我想问一下有没有更好的音频播放方式。
还有就是怎么修改音频的音量的,音频流里应该有管理本文件音量的标志吧。有什么算法吗?有什么电子书没有,我想把音频学得深一点。不知道怎么搜索编程相关的音频播放的书。

解决方案 »

  1.   

    刚才查了一下,waveOutSetVolume的第一个参数对应的是一个播放设备,这样看来,我只有修改音频流了。有没有人提供一个方法?
      

  2.   


    查 MSDN ,waveOutSetVolume 是改变波形设备的音量,不是改变文件或者音频数据。
    波形音频,通过改变数据,可以使波形变小。欲知详情,请看这本书:『Windows程序设计』的倒数第二章『声音与音乐』下载地址:http://blog.csdn.net/zaodt/archive/2007/11/25/1901332.aspx
      

  3.   

    回至尊宝宝,我已经看完了声音与音乐的部分,可能是浏览的太快,还是没有找到降低声音振幅的办法。能给我具体指一下吗?文章太长了。就像KMPlayer,暴风影音,千千静听那样的可以调节单个文件播放音量的功能,很难实现吗?有没有人教教我。