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 Bit, 4096 frames per packet

4

2 回答 2

1

解决方案是使用扩展的音频文件服务。您只需设置客户端格式和 PCM 之间的转换。在音频处理中找到了正确的方法:播放音量

于 2011-09-12T01:50:17.560 回答
0

要获取波形数据,您可能首先需要将压缩音频文件转换为原始 PCM 样本,例如 WAV 文件中的原始 PCM 样本,或其他非压缩音频格式。试试 AVAssetReader 等。

于 2011-09-11T05:32:26.433 回答