iOS:使用 AudioQueue 时快进音频

Posted

技术标签:

【中文标题】iOS:使用 AudioQueue 时快进音频【英文标题】:iOS: Fast forward audio when using AudioQueue 【发布时间】:2013-07-19 20:49:21 【问题描述】:

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

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

【问题讨论】:

developer.apple.com/library/mac/#documentation/MusicAudio/… 使用 kAudioQueueParam_PlayRate 谢谢,但看起来这仅适用于 OS X,不适用于 iOS。我可能应该在问题中指定 iOS 而不仅仅是一个标签。我现在将对其进行编辑。 【参考方案1】:

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 的问题,但这就是我必须用作示例的内容......)

【讨论】:

以上是关于iOS:使用 AudioQueue 时快进音频的主要内容,如果未能解决你的问题,请参考以下文章

ios音频:使用audioqueue改变播放进度

iOS音频播放之AudioQueue:播放本地音乐

使用 AudioQueue 在 iOS 上进行失真(机器人)音频录制

ios 使用audioQueue 录音以及播放 (pcm)

为啥 iOS AudioQueue 内存不断增加?

iOS 6.1 AudioQueueStop,AudioQueueDispose 错误