SDL_Mixer 声音问题
Posted
技术标签:
【中文标题】SDL_Mixer 声音问题【英文标题】:SDL_Mixer sound problems 【发布时间】:2009-10-18 15:36:35 【问题描述】:基本信息:
编程语言 - C++
平台 - Windows
音频格式 - wav 和 mid
我最近完成了一款游戏,正在寻找将其上传到文件托管网站的最佳方式。我最终决定使用 7zip 的自解压功能。但是,我认为我犯的错误是,我没有将我需要的内容复制到另一个文件夹并将其压缩以进行分发(即不复制源文件等),而是重新排列了包含我所有源文件的实际文件夹等等,然后将其分成 2 个子文件夹用于 C++ 文件,然后是其他所有文件(该文件夹是被压缩的文件夹。)
我测试了下载并播放它,它运行良好。然而,我又回去了,因为我决定改变背景音乐,这就是问题开始发生的时候。
总结问题,Mix_PlayMusic()
被调用并且工作正常。但是,由于某种原因,没有播放声音(也没有从Mix_PlayChannel()
调用的任何声音效果)。奇怪的是,当调用Mix_FadeOutMusic()
时,您可以听到音乐。我也有一个声音切换功能,但经过彻底测试后,我得出的结论是这不是问题。
我最终决定创建一个全新的项目,并将我需要的所有文件放入与它们最初所在的“组织”相同的项目中。但是,问题仍然存在。
我不知道出了什么问题。文件正在正常加载,只是当音乐应该播放时(并且根据测试它是),它没有播放。这也适用于音效。
编辑:实际上,我为每个游戏循环编写了一个测试,以确定音乐是否正在播放,并且显然音乐正在播放。只是由于某种原因它没有被听到。
【问题讨论】:
【参考方案1】:这可能是很多事情。这可能是您拥有的 SDL_Mixer 库的问题,因此您可以尝试再次获取它以排除这种情况。您的音量可能在某个地方被设置为零,所以我会检查音量作为测试。最后的想法是您正在播放的源声音文件在某些方面不兼容(如果您可以在另一个声音播放器中播放,则不太可能,但可能)。除了这些建议之外,我认为我无法根据您提供的数据进一步帮助您。
【讨论】:
我所做的 hack 修复是让音乐淡入,而不是使用 PlayMusic,这很有效。希望我的下一个项目不会有同样的问题。以上是关于SDL_Mixer 声音问题的主要内容,如果未能解决你的问题,请参考以下文章
在 C++/Linux 中使用 SDL_Mixer 时没有声音
c++ SDL_mixer 错误,Mix_LoadWAV_RW with NULL src