2011-09-09 14 views
2

を描画します取得生のサンプルデータは、私は次のコードでM4AオーディオファイルにアクセスするAudioToolboxを使用している波形

UInt32 packetsToRead = 1; //Does it makes difference? 

void *buffer = malloc(maxPacketSize * packetsToRead); 

for (UInt64 packetIndex = 0; packetIndex < packetCount; packetIndex++) 
{ 
    ioNumberOfPackets = packetsToRead; 
    ioNumberOfBytes = maxPacketSize * ioNumberOfPackets; 

    AudioFileReadPacketData(audioFile, NO, &ioNumbersOfBytes, NULL, packetIndex, &ioNumberOFPackets, buffer); 
    for (UInt32 batchPacketIndex = 0; batchPacketIndex < ioNumberOfPackets; batchPacketIndex++) 
    { 
    //What to do here to get amplitude value? How to get sample value? 
    } 
    packetIndex+=ioNumberOfPackets; 
} 

私のオーディオフォーマットは次のとおりです。 AppleM4A、8000ヘルツ、16ビット、4096のフレームパケットごと

答えて

1

解決策は、拡張オーディオファイルサービスを使用することでした。あなたは、クライアントフォーマットとPCMの間の移行を設定するだけです。正しい方法は、Audio Processing: Playing with volume levelを上回っています。

0

波形データを取得するには、まず、圧縮されたオーディオファイルを、WAVファイルやその他の圧縮されていないオーディオ形式のような未加工のPCMサンプルに変換する必要があります。 AVAssetReader、et.alを試してください。

+0

AVAssetReaderはリアルタイム解析には時間がかかりすぎます。この問題の私の最初の解決策でした。 –

関連する問題