使用 ffmpeg 将 PCM-ALAW 数据转换为音频文件

Converting PCM-ALAW data to an audio file using ffmpeg

在我的项目中,我将接收到的带有负载的RTP数据包进行处理,并将所有负载提取到一个单独的缓冲区中。此有效载荷是 - PCM ALAW(类型 8)。我如何实现一个 class 将作为参数 - 文件名和带有原始数据的缓冲区来创建音频文件。为了将原始数据编码为音频文件,我究竟需要执行哪些步骤?作为示例,我使用了 this 示例。

这听起来太复杂了。 “PCM ALAW”有点误导,但很明显 G.711 aLaw 编码的意思。这是一个微不足道的“压缩”,它将每个 16 位 PCM 样本映射到一个 8 位值。所以一个简单的查找就可以解决这个问题。

甚至还有免费的 implementation aLaw 编码可用。只需将每个样本转换为 16 位 PCM,在其前面塞入一个标准的 Microsoft WAVE header,并将结果称为 .WAV.

您需要根据 RTP 类型 8 填写一些 WAV headers。主要是“单声道,8000 Hz,每个样本 16 位”。 header 的一个小问题是,一旦知道有多少样本,您就只能写完整的 header。您可以在收到 RTP 数据包时更新 header,但这有点 I/O 密集。每 10 个数据包左右执行一次可能会更好。