如何获得采样率& CMAudioFormatDescription上的每个通道位数

时间:2017-01-05 22:50:56

标签: avfoundation core-audio avcapturedevice

我可以从AVCaptureDeviceFormat获取音频描述。

let formats = device.formats
for format in formats {
print(format.formatDescription)
}

但是想直接获取mSampleRate和mBitsPerChannel属性。

CMAudioFormatDescription 0x60000010b880 [0x7fffadb29d80] {

    mediaType:'soun' 
    mediaSubType:'lpcm' 
    mediaSpecific: {
        ASBD: {
            mSampleRate: 44100.000000 
            mFormatID: 'lpcm' 
            mFormatFlags: 0x9 
            mBytesPerPacket: 8 
            mFramesPerPacket: 1 
            mBytesPerFrame: 8 
            mChannelsPerFrame: 2 
            mBitsPerChannel: 32     } 
        cookie: {(null)} 
        ACL: {Stereo (L R)}
        FormatList Array: {(null)} 
    } 
    extensions: {(null)}
}

我怎么能这样做? 我一直在调查AudioToolBox框架中的AudioFormatGetProperty(),但我迷路了。 所有人都非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以从格式说明中获取AudioStreamBasicDescription,并从中获取您需要的数据:

let asbd = CMAudioFormatDescriptionGetStreamBasicDescription(format.formatDescription)

if let asbd = asbd?.pointee {
    print("Sample rate: \(asbd.mSampleRate), bits per channel: \(asbd.mBitsPerChannel)")
}