问题标签 [sdl-mixer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
183 浏览

c++ - SDL Mixer Load_Mus 使程序崩溃

我一直在开发我的第一个 SDL 游戏,并且添加声音效果很顺利。但是,一旦我尝试添加音乐,Mix_LoadMus() 就会使程序崩溃。

这崩溃没有任何输出。这是回溯:

我的假设是在检索文件时出现了可怕的错误,但我不知道如何去纠正它。任何帮助深表感谢。

0 投票
1 回答
463 浏览

c++ - 我可以在没有 SDL 的情况下使用 SDL_mixer 吗?

我有一个使用 GLFW 进行窗口创建和输入的游戏。是否可以在没有 SDL 的情况下将 SDL_mixer 用于音频?

0 投票
0 回答
223 浏览

c++ - SDL_Mixer 音乐必须播放两次才能正常工作

我目前正在开发一个简单的音乐播放器,但是,我遇到了一个问题,我可以无限期地循环播放音乐或任何次数> 1,但是如果我尝试只播放一次歌曲,那么什么都不会播放。在这里搜索了大约 30 分钟后,我找不到记录相同问题的问题。

奇怪的是这曾经可以工作,我在它工作后保存,关闭,打开,然后它不再工作。我没有改变任何东西

我认为这可能是我如何清理 SDL_Mixer 的问题,但经过一个小时的调试后,我离解决方案更近了。

这是我目前的清理工作:

0 投票
1 回答
1347 浏览

c++ - SDL_Mixer 可能在自身上播放单个块吗?

我在使用 SDL_Mixer 时遇到问题(我缺乏经验)。块和音乐播放得很好(使用 Mix_PlayChannel 和 Mix_PlayMusic),同时播放两个不同的块不是问题。

我的问题是我想播放一些块 1,然后播放块 1 的第二次迭代与第一次重叠。我正在尝试快速连续播放一个块,但它会以更长的间隔重复播放声音(没有我想要的那么快)。我已经测试了控制台输出并且我的播放/循环方法没有错误,因为我可以看到控制台消息打印,以正确的速度循环。

我有一个块数组,我在初始化期间定期加载,使用 Mix_LoadWAV();

我还有一个保留用于播放这些块的功能:

尝试快速连续多次播放单个声音(例如,延迟 100 毫秒/10 bps),尽管以 10 bps 调用函数,但我仍以设定的较慢间隔(大约 500 毫秒左右/2 bps)播放声音。

我已经使用了“Mix_AllocateChannels(16);” 以确保我已经分配了频道(如果我使用不正确,请告诉我)并且仍然,阵列中的单个块拒绝以特定速率播放。

感谢任何想法/帮助,以及对我如何发布这个问题的批评。

0 投票
0 回答
234 浏览

c++ - 使用 SDL2.0 加载声音会导致 MS Visual Studio 出现异常

我有以下声音加载功能:

在 Dev-C++ 中,这很好用。我想使用另一个 IDE,所以我开始使用 Visual Studio 2017,并为其配置了 SDL2。但是,当我运行此代码时,从调用 Mix_LoadWAV 的那一刻起,Visual Studio 会给出以下信息: https ://imgur.com/a/STnXx

我在互联网上搜索了很多,但我找不到任何对我有用的东西。

编辑:根据要求,我创建了一个仍然产生相同错误的最小示例。

0 投票
1 回答
842 浏览

c++ - SDL_AudioStreamFlush 无法位于动态链接库 SDL2_mixer.dll 中

我只是在尝试学习 MakingGamesWithBen 中关于 SDL 混音器(一种音频系统)的 c++ 图形教程。我从: SDL_Mixer Development Library Download获得了开发库。

它是 Visual C++ 开发库下的 SDL2_mixer-devel-2.0.2-VC.zip 文件夹。尽管我一直在使用 x64 而不是 x86,但我已经完成了与他所展示的所有相同的步骤。但是,当我尝试运行该项目时,它给了我错误“SDL_AudioStreamFlush 无法在动态链接库 [文件路径] SDL2_mixer.dll 中找到”。我根本没有在我的代码中使用函数 SDL_AudioStreamFlush,这让我感到困惑。老实说,我不知道如何解决这个问题,在线文档似乎也无济于事。任何帮助将不胜感激,因为我曾尝试在网站上寻找其他类似问题,但我无法使用。下面应该是我的整个解决方案的保管箱链接。

https://www.dropbox.com/sh/0blrourluyjpsca/AACs4bHdZs83q_R8lSjFINIEa?dl=0

0 投票
0 回答
364 浏览

c - SDL2_mixer SDL_AudioStreamFlush 无法在动态链接库中定位

我试图在 sdl 2 中发出声音,但是当我编译这一行时:

Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 2048 );

我的 exe 告诉我SDL_AudioStreamFlush could not be located in the dynamic link library SDL2_mixer.dll(还有 dll 的路径)。

在询问之前我重新安装了所有东西,并且出现了同样的错误。

我使用了 SDL2_mixer-devel-2.0.2-mingw SDL2_image-devel-2.0.1-mingw 和 SDL2-devel-2.0.6-mingw。

使用此标志编译:-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer

请知道SDL的人帮忙!

PS对不起英语不好

0 投票
1 回答
1714 浏览

c++ - 检查使用 SDL2 播放的音乐

使用 SDL 制作一个简单的游戏,我从程序开始就在后台播放音乐,但我希望能够检查音乐何时停止播放,以便可以开始下一首曲目。我正在使用 SDL_mixer 库来加载和播放音乐。

我在一个名为 music 的类中加载和播放音乐,歌曲在类构造函数中定义为 NULL,然后给它轨道名称并在该类的“loadTrack”方法中播放。我想在类中使用另一个可以调用的方法,如果曲目已播放完毕,则返回 true,如果仍在播放,则返回 false。我的问题是不知道如何检查曲目是否仍在播放,或者混音器库是否有自己的功能来检查它是否仍在播放。

0 投票
1 回答
1254 浏览

xcode - 如何将 OGG 与 SDL_Mixer 一起使用?

我似乎无法让 SDL_Mixer 在启用 OGG 支持的情况下进行初始化。我知道我必须与 libogg、libvorbis 和 libvorbisfile 链接,但它仍然不起作用。我有这三个库的.dylibs、.frameworks 和.as,我都试过了。

我将 dylibs/frameworks 复制到构建阶段选项卡中应用程序包的 Frameworks 文件夹中。

我已在构建设置选项卡中设置Runpath Search Paths为。@executable_path/../Frameworks

Mix_Init(MIX_INIT_OGG)不断返回错误OGG support not available

我正在使用所有提到的库的最新 Homebrew 版本。我不确定还能尝试什么。

我已经完成了一个以 300MB 的wavs 为音乐的游戏。

更新

我设法将一些 Objective C 与 C++ 混合在一起,并获得了一些声音,AVAudioPlayer但这是可怕的代码。我必须强制转换void *以确保我的音乐播放器类与我的 C++ 代码库兼容。垃圾收集器太烦人了。它所做的只是妨碍你。你必须用桥牌来对抗它。

我真的很想使用 SDL_Mixer 或一个简单的 C 库。

0 投票
0 回答
69 浏览

c++ - 多次重复使用 Mix_Music 问题

考虑以下情况。

我有两个加载的 mp3 文件Mix_LoadMUS,因此获得了两个Mix_Music *. 让我们称它们为m1and m2
我使用以下方法播放第一首曲目一段时间Mix_PlayMusic

然后我(让我说)使用第二个命令将第一首曲目替换为第二首曲目:

注意:我不免费m1,因为我想将来再次使用它。
过了一会儿,我决定再玩一次m1,使用与上面显示的完全相同的命令。

这就是问题所在。

当我m1第二次玩时,我希望它从文档中的 0 开始:

从头到尾播放加载的音乐循环时间。

嗯,它做到了。几乎。问题是,紧随我停止播放的几毫秒的曲目是出于未知原因播放的。然后它开始从头开始再现音乐,仅此而已。

难道我做错了什么?看起来重用已经存在的东西Mix_Music不能正常工作。
我的意思是,音乐停止时缓冲区中的内容似乎仍然存在,因此在我Mix_PlayMusic第二次运行时播放。这是预期的行为,错误还是我只是想念的东西?


作为旁注,如果我m1m2播放时释放它,它会按预期工作,然后我稍后再加载它。