【问题标题】:How to record only the last 10 seconds of audio using AVAudioRecorder?如何使用 AVAudioRecorder 只录制最后 10 秒的音频?
【发布时间】:2011-03-01 23:49:42
【问题描述】:

这可能是一个非常简单的请求,如果是,请道歉。

我正在使用 AVAudioRecorder 录制来自 iphone 麦克风的声音。目前我正在将其保存到文件中。仅当用户点击按钮后录制才会停止,然后播放。

我的问题是如何让录音机只保存最后 10 秒的声音?

我知道我可以让播放器只播放最后 10 秒,但我不希望录制的音频文件变得很大。我宁愿只记录最后 10 秒。

【问题讨论】:

    标签: iphone avaudiorecorder avaudiosession


    【解决方案1】:

    不要使用 AVAudioRecorder API。它不能做你想做的事。使用音频队列 API(或者可能是 RemoteIO 音频单元)将样本记录到 10 秒长的循环缓冲区(大小小于 1 兆字节)。然后在将样本写入 WAVE/RIFF 文件头之后的 .wav 文件时展开此循环缓冲区。

    【讨论】:

    • 嘿hotpaw2,谢谢你的建议。很抱歉很痛苦,但在我播放音频之前,我还必须修改它的音高。我可以使用 AudioQueue 来执行此操作还是应该使用 openAL?
    • 目前只有 OpenAL API 包含内置的重采样器。或者您可以编写自己的重采样代码,并使用音频队列 API。
    • 恐怕我对音频的理解不足以编写自己的重采样器,所以我想我会使用 openAL :) 再次感谢您的建议 hotpaw2
    猜你喜欢
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2011-03-21
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多