问题标签 [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 投票
1 回答
329 浏览

shell - 通过终端使用 pygame 停止播放歌曲

我的代码:

有什么方法可以处理 2 个使用 pygame 播放和停止音乐的程序。

使用类似的脚本我可以播放音乐,但使用上面的代码我无法在从终端执行时停止音乐。

0 投票
0 回答
551 浏览

c++ - SDL_mixer 播放静态文件而不是 .wav 文件

我正在 SDL 2 中制作一个有声音的俄罗斯方块版本。我有背景音乐,效果很好。但是,声音效果(移动、旋转等)播放的是静态的,而不是它们应该播放的。

一些代码:

定义:

开头:

播放声音代码:

关:

杂项信息:

  • 在 VS 2013 中使用 C++
  • 使用昨天下载的 SDL_mixer 2.0.0
  • 声音约为 11kB,音乐为 94,675kB
  • 声音在 Windows Media Player 中播放良好

如果您需要任何其他信息,请告诉我,并提前致谢!

0 投票
0 回答
747 浏览

c - SDL_Mixer 错误“混音器不是用...支持构建的”

我正在尝试在我正在开发的游戏的背景下播放音乐。我第一次使用 SDL2 和 SDL-mixer。我自己编译了它们并将文件放在我的程序文件夹的根目录下(出于可移植性目的)。现在,当我运行游戏时,没有声音播放并且 Mix_GetError() 返回此错误:

我正在尝试播放 MP3 文件,但是当我尝试使用 OGG 和其他格式进行初始化时,我得到了同样的错误。

这是功能,如果它完全相关的话。

我在那个特定问题上没有找到太多,但我认为问题来自我从源代码编译 SDL2 和 SDL-mixer。我一定忘记了什么,但我真的不知道......顺便说一句,我在 OSX 上(还没有真正习惯它)。

感谢大家的帮助!

编辑/我没有尝试过使用 WAV 文件。

0 投票
0 回答
730 浏览

c++ - SDL_mixer 某些 mp3 文件没有声音

所以我在使用 SDL_mixer 时遇到了问题,它似乎在大量 mp3 上播放良好(虽然“很好”。我注意到在一些 MP3 的开头有一小段声音损坏,然后它开始播放)但在某些 MP3 文件中,只有绝对的沉默。好像什么都玩不了。而且 Mix_PlayMusic 似乎没有返回错误,也没有其他任何东西,但它似乎没有发出任何声音。有时我会在尝试播放这些文件时得到一个随机的“访问读取冲突”,但每隔一次,它只是沉默。

这是我用来播放 MP3 文件的代码:

我正在检查 MP3 文件中的差异,似乎唯一真正的区别是具有 LAME3.99 编码的文件似乎不起作用。有人能解释一下吗?

编辑:经过更多测试,它似乎也发生在其他人身上

0 投票
1 回答
542 浏览

c++ - 使用 SDL_Mixer 获取当前正在播放的 Mix_Music

我正在使用 SDL_Mixer 在我的 C++ 游戏中实现声音,但在手册中找不到可以为我提供当前正在播放的 Mix_Music 的函数。我想我需要它知道我是否可以释放 Mix_Music,这取决于它当前是否正在播放。

0 投票
1 回答
914 浏览

c++ - SDL_mixer 函数 Mix_LoadMUS_RW 导致访问冲突

我在使用 SDL_mixer 从内存中加载音乐时遇到问题。以下包含一些错误检查的“最小”示例将始终因 Music::play 中的访问冲突而崩溃。

我的 ArchiveManager 确实可以工作,这也可以看出,因为注释将缓冲区写入文件的块并从中创建 SDL_RW 将运行得很好。我加载的音乐文件只是假设是一个 ogg 文件,在这种情况下就是这样,因此从文件创建一个 SDL_RW 工作正常。意味着没有崩溃,音乐从头到尾正常播放。

音乐课在我看来太大了。我只是保留缓冲区 m_file 以及 SDL_RW 以确保问题不是来自被释放的数据。使用 SDL_FALSE 运行 Mix_LoadMUS_RW 还应确保未释放 RW。

值得注意的是,使用 Mix_LoadWAV_RW 从同一存档中加载 wav 文件的类似示例可以正常工作:

在调用 Mix_PlayCannel 之前,我什至没有保留缓冲区。同样在这里,我使用 SDL_TRUE 调用加载函数,因为我没有创建显式 SDL_RW。尝试加载音乐类似的事情不会有什么不同。

我研究了 SDL_mixer 源代码,但对我没有帮助。也许我的知识不够,或者我错过了一些重要的东西。

直截了当:访问冲突从何而来,我该如何防止它?

编辑:更改了示例代码,因此任何人都可以直接复制它。所以没有 ArchiveManager 或类似的东西,只是将 ogg 直接读入内存。关键部分只是 loadMusic 中的几行。

0 投票
0 回答
889 浏览

c++ - Mix_LoadWAV 在不应该返回 NULL 时

我正在用 C++ 制作游戏,但我一直遇到一个问题,我无法弄清楚何时涉及声音。我正在使用 SDL_Mixer,Mix_Music 用于音乐,Mix_Chunk 用于音效,但由于某种原因,当我尝试使用 MIX_LoadWAV 加载音效文件时,它返回 NULL。

问题是,当我使用 MIX_LoadMUS 加载相同的文件(加载为音乐而不是音效)时,它加载得很好。

我找不到任何可以解释该问题的差异;唯一的区别是 Mix_LoadWAV 而不是 Mix_LoadMUS,但为什么呢?Mix_LoadMUS 不适用于 Mix_Chunk,否则我只会使用它,但是......

在这里,我将向您展示我使用的声音管理器的代码。MusicClip 是一个 Mix_Music,而 SoundClip 是一个 Mix_Chunk。

这是 MusicClip 和 SoundClip 的代码;除了我将 PlayOnce 和淡出添加到 MusicClip 之外,它们似乎相同。

-

这是我用来调用函数的代码。(soundManager 已在程序的早期初始化以启动 BGM。)因此,使用 Mix_Chunk* SFX2 将不起作用:

但出于某种原因,如果我将 SFX2 更改为 Mix_Music*,这确实有效。

我该怎么办?Mix_GetError() 也不返回任何内容......如果我写错了路径,它会返回“无法打开文件”,所以很明显它可以找到/打开文件,它只是......不会?我也不能只使用 Mix_Music 作为我的音效,因为如果我这样做,它们会抵消音乐。

顺便说一句,我不知道它是否相关,但 Mix_LoadMUS 不会加载非 wav 文件,即使它也应该支持 .ogg 和 .mp3?

0 投票
1 回答
517 浏览

c++ - SDL_mixer 不会播放声音 Raspberry Pi

我无法SDL_Mixer在树莓派上播放声音。该程序可以编译并构建,但我听到的只是一声短促的吱吱声(像静态的),什么也没有。

有任何想法吗?

0 投票
1 回答
640 浏览

macos - ./configure 找不到头文件

我正在编译一个使用 SDL_mixer 播放.ogg文件的项目。但是,Mix_Init(MIX_INIT_OGG)失败并Mix_GetError()返回"Mixer not built with Ogg Vorbis support"。我使用的 SDL_mixer 版本是 1.2.12,通过 Homebrew 下载。

所以我下载了 SDL_mixer 的源代码(相同版本,1.2.12),并尝试使用 Ogg 支持构建它,即./configure --enable-music-ogg,但configure无法找到 Vorbis 头文件。这是它给出的输出:

我什至尝试传递--includedir=/usr/local/includeconfigure,但没有成功。我有 Vorbis 和 Ogg 头文件/usr/local/include,所以例如路径vorbisfile.h/usr/local/include/vorbis/vorbisfile.h. 我还尝试从头开始构建 libogg 和 libvorbis,但我仍然遇到相同的错误。我正在使用 OS X 10.11.1 测试版。

我究竟做错了什么?


编辑

输出brew ls sdl_mixer

0 投票
1 回答
2340 浏览

c++ - SDL_mixer 停止在某些事件上播放音乐

如果某个点在范围内,我的程序需要停止播放声音,因为我有一个函数类,run()它在单独的线程上运行并使用 and 播放SDL.h声音SDL_mixer.h

但是当if条件返回 true 时,它​​会打印“停止声音”但声音仍在播放,这似乎是什么问题?