【问题标题】:Getting raw sample data of m4a file to draw waveform获取 m4a 文件的原始样本数据以绘制波形
【发布时间】:2011-09-14 08:14:53
【问题描述】:

我正在使用 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 帧

【问题讨论】:

    标签: objective-c signal-processing audiotoolbox m4a


    【解决方案1】:

    解决方案是使用扩展的音频文件服务。您只需设置客户端格式和 PCM 之间的转换。找对了方向Audio Processing: Playing with volume level

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • AVAssetReader 对于 tge 实时分析来说太慢了。这是我第一次解决这个问题。
      猜你喜欢
      • 2023-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多