2

AudioToolbox を使用して、次のコードで m4a オーディオ ファイルにアクセスしています。

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 Hz、16 ビット、パケットあたり 4096 フレーム

4

2 に答える 2

1

解決策は、拡張オーディオ ファイル サービスを使用することでした。クライアント形式と PCM 間の移行を設定するだけです。そこに正しい方法がありましたAudio Processing: Playing with volume level .

于 2011-09-12T01:50:17.560 に答える
0

波形データを取得するには、最初に圧縮オーディオ ファイルを生の PCM サンプル (WAV ファイル内にあるようなもの) またはその他の非圧縮オーディオ形式に変換する必要がある場合があります。AVAssetReader などを試してください。

于 2011-09-11T05:32:26.433 に答える