SDL_mixer 中的 Mix_PlayChannel 函数

分享于2022年07月17日 audio audio-channels c++ mixing sdl 问答
【问题标题】:Mix_PlayChannel function in SDL_mixerSDL_mixer 中的 Mix_PlayChannel 函数
【发布时间】:2022-07-16 04:17:46
【问题描述】:

如文档所述,Mix_PlayChannel 函数有 3 个参数:

  • channel:要播放的频道,或 -1 表示第一个免费的未保留频道。
  • 块:播放示例。
  • loops:循环数,-1 为无限循环。在这里传递一个样本会播放两次(1 个循环)。

我不明白channel参数的含义。文档中提到了哪个频道?


【解决方案1】:

他们正在处理混合音频通道。

由于 SDL_mixer 是一个多声道混音器库,您可以一次访问多个混合音频通道,从而同时独立播放多个声音。这就是为什么它需要您指定在哪个频道上播放它。使用 -1 参数,它只会占用第一个空闲频道。

当您尝试仅停止一种播放声音时,了解这一点很重要:

int Mix_HaltChannel(int channel);

这是您可以混合/分配一定数量的频道以使用的方式:

int Mix_AllocateChannels(int amountChannels);

还有一个单独的音乐频道可以在不指定独立播放的频道的情况下进行寻址:

int Mix_PlayMusic(Mix_Music *music, int loops);

【讨论】: