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

问题描述

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

解决方法

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

甚至还提供免费的implementation的aLaw编码。只需将每个样本转换为16位PCM,在其前面填充一个标准的Microsoft WAVE标头,然后调用结果.WAV

您需要根据RTP类型8填写一些WAV标头。主要是“单声道,8000 Hz,每个样本16位”。标头的一个小问题是,只有知道了多少样本后才能编写完整的标头。每当您收到RTP数据包时,都可以更新标头,但这会占用大量I / O。每10个包左右执行一次可能会更好。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...