2

我正在使用 AudioQueue 播放音频。有谁知道如何控制播放速率,以便在音频输出时快进和快退?AVPlayer 有一个“速率”属性,但是我需要使用 AudioQueue。

我在多媒体编程指南或音频队列服务编程指南中没有找到类似的东西。看起来 Mac OS X 支持 Rocky 提到的 kAudioQueueParam_PlayRate 但这在 iOS 上不起作用

4

1 回答 1

0

kAudioQueueParam_PlayRate从版本 7 开始适用于 iOS。必须在播放开始之前专门启用它才能正常工作:

        var enabled : UInt32 = 1;
        AudioQueueSetProperty(queue!, kAudioQueueProperty_EnableTimePitch, &enabled, 4);
        var algorithm = kAudioQueueTimePitchAlgorithm_Spectral;
        AudioQueueSetProperty(queue!, kAudioQueueProperty_TimePitchAlgorithm, &algorithm, 4);

然后您可以根据需要改变速率和音高:

            AudioQueueSetParameter(q, kAudioQueueParam_PlayRate, Float32(rate));
            AudioQueueSetParameter(q, kAudioQueueParam_Pitch, Float32(pitch));

(抱歉,Swift 回答了一个标记为 Objective-c 的问题,但这就是我必须用作示例的内容......)

于 2018-07-22T10:33:27.020 回答