OpenAL 从特定时间戳播放音频

Posted

技术标签:

【中文标题】OpenAL 从特定时间戳播放音频【英文标题】:OpenAL playing audio from certain timestamp 【发布时间】:2020-04-23 16:13:24 【问题描述】:

我正在用 C++ 为我的游戏引擎编写一个对话系统。为了将对话组合在一起,我将不同的对话部分放在一个文件和一个缓冲区中。因此,我如何告诉 OpenAL 从特定时间播放缓冲区(或采样对我来说并不重要)到缓冲区中。提前感谢您的帮助!

【问题讨论】:

【参考方案1】:
void PlayFromSpecifiedTime(ALfloat seconds) const

    alSourcef(source, AL_SEC_OFFSET, seconds);
    alSourcePlay(source);

或者,如果您想从缓冲区中的某个样本播放:

void PlayFromSpecifiedSample(ALint sample) const

    alSourcei(source, AL_SAMPLE_OFFSET, sample);
    alSourcePlay(source);

您还可以在开头添加一个检查,以查看您是否没有尝试跳到超出缓冲区总量的某个时间(或样本)。如果是这样,您只需return; 即可。这假设您知道自己在做什么。

【讨论】:

以上是关于OpenAL 从特定时间戳播放音频的主要内容,如果未能解决你的问题,请参考以下文章

OpenAL播放捕获的音频数据c ++

在 Mac 上使用 OpenAL 播放音频时出现随机噪音

IOS音频1:之采用四种方式播放音频文件AudioToolbox AVFoundation OpenAL AUDIO QUEUE

使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放

使用openal播放WAV音频

几种播放音频文件的方式(十三) —— OpenAL框架之分步解析