如何使用AVFoundation的AVAsetReader将m4a解码为PCM

时间:2016-01-22 11:17:29

标签: swift avfoundation pcm avassetreader

尝试将M4A转换为PCM在开始时进展顺利。 我能够转换和读取字节。 但是我不确定这是否是正确的方法。 因为当我试图获取NSData中的字节时,我得到16384字节。

这是我的功能

func getData(sampleRef:CMSampleBufferRef) -> NSMutableData{


    let dataBuffer = CMSampleBufferGetDataBuffer(sampleRef)
    let length = CMBlockBufferGetDataLength(dataBuffer!)

    var data = NSMutableData(length: length)


     CMBlockBufferCopyDataBytes(dataBuffer!, 0, length, data!.mutableBytes)

        print(data!)// this prints 16384 bytes 



    return data!


}

我尝试将此数据转换为Int16

 // 3 lines below i was just testing how it converts to Int16
    let count = data!.length / sizeof(Int16)
    var array = [Int16](count: count, repeatedValue: 0)

    data!.getBytes(&array, length: data!.length)

这些是我解码PCM的设置 M4A文件。

    let outputSettings = [
        AVFormatIDKey: Int(kAudioFormatLinearPCM),
        AVSampleRateKey: 44100,
        AVLinearPCMBitDepthKey:16,
        AVLinearPCMIsFloatKey:0,
        AVNumberOfChannelsKey: 1 as NSNumber,

    ]

PS。我用相同的设置录制文件

0 个答案:

没有答案