小编Ryu*_*old的帖子

iOS AudioUnit以8kHz采样率录制,静音

我正在构建一个voip应用程序,我们需要从麦克风录制音频并以8kHz采样率发送到某处.现在我以默认采样率录制它,在我的情况下总是为44,4k.然后使用此算法将其手动转换为8k .

这种天真的方法产生了"正常"的质量,但我认为使用AudioUnit的原生下采样功能会好得多.

但是当我更改录音AudioUnit上的采样率属性时,它只输出静音帧(~0.0),我不知道为什么.

我已经提取了负责声音的应用程序部分.它应该从麦克风录制 - >写入环形缓冲区 - >播放缓冲区中的数据:

RecordingUnit:

import Foundation
import AudioToolbox
import AVFoundation

class RecordingUnit : NSObject
{
    public static let AudioPacketDataSize = 160
    public static var instance: RecordingUnit!
    public var micBuffers : AudioBufferList?;
    public var OutputBuffer = RingBuffer<Float>(count: 1 * 1000 * AudioPacketDataSize);

    public var currentAudioUnit: AudioUnit?

    override init()
    {
        super.init()
        RecordingUnit.instance = self

        micBuffers = AudioBufferList(
            mNumberBuffers: 1,
            mBuffers: AudioBuffer(
                mNumberChannels: UInt32(1),
                mDataByteSize: UInt32(1024),
                mData: UnsafeMutableRawPointer.allocate(byteCount: 1024, alignment: 1)))
    }

    public func start() …
Run Code Online (Sandbox Code Playgroud)

audio downsampling audiounit ios swift

11
推荐指数
0
解决办法
321
查看次数

标签 统计

audio ×1

audiounit ×1

downsampling ×1

ios ×1

swift ×1