使用资源文件中的directshow播放音频

时间:2012-08-17 17:04:46

标签: c++ audio resources directshow

我目前正在使用Scripthook C ++为Grand Theft Auto IV编写脚本mod。 我一直在使用此模板播放音频文件:Simple C++ MP3 Player Class

我的问题始于尝试使用资源中的文件。 我不知道如何加载它们。

每当我尝试使用我的代码从资源加载声音时,游戏就崩溃了。 已花费数小时浏览谷歌有关如何从资源播放DirectShow音频而没有任何结果。

内部资源文件:

(resource.h)  #define WAV_Sound            106
(resource.rc) WAV_Sound                    RCDATA                  "MySound.wav"

从HDD加载文件工作正常

Load(TEXT("MySound.wav"));

但是当我尝试其中一个时游戏崩溃了:

// Load from resource #1
    LPCWSTR file = MAKEINTRESOURCE(WAV_Sound);
    Load(file);

// Load from resource #2
    Load((LPCWSTR) WAV_Sound);

希望有人可以帮助我,谢谢!

1 个答案:

答案 0 :(得分:0)

Microsoft建议使用DirectX Audio为开发游戏提供多层接口,即XAudio2,X3DAudio,XACT等,它们在2d / 3d游戏环境中处理声音效果非常强大。这是链接http://msdn.microsoft.com/en-us/library/ee415737%28v=vs.85%29

请下载并安装DirectX软件开发套件,并找到'XAudio2BasicSound'示例,从文件或资源或dll中打开wave文件并使用IXAudio2界面播放,这是一个非常简单的例子,但下一步你可以添加声音对你的游戏产生影响。