采样格式

类型:

  • PCM S16LE/S16BE:16位有符号整数,小端/大端。这是CD音质的标准格式,提供足够的动态范围,文件大小适中。

  • PCM S24LE/S24BE:24位有符号整数,小端/大端。提供更宽的动态范围,常用于专业音频录制。

  • PCM F32LE/F32BE:32位浮点数,小端/大端。允许极其宽的动态范围,但文件大小也较大。

选择考量:选择合适的采样格式通常要平衡音质需求、存储空间限制和系统兼容性。

多声道系统

常见的多声道配置有

  • 5.1 系统:包括前左、前右、中央、低频效果(LFE)、后左和后右六个声道。
  • 7.1 系统:在 5.1 的基础上增加了两个侧面声道(侧左和侧右),以实现更全面的环绕声效果。
  • 其他配置:如 9.1 系统等,根据不同的应用需求,可能会有更多的声道配置。

在这个部分引入音频帧的计算,方便我们下面进行pts、dts、cts分析

音频帧的数据量 = 采样率 * 采样位宽 * 声道数 * 时间

播放时间 = 总采样数/采样率总采样数 = 音频帧数据量/声道数

各种官方文档都对这一部分有规定,总采样数(samples)指的是一个声道的采样,帧(frame)指的是一个时间点的样本集合,包(packet)指的是多个frame的集合

FFmpeg对于音频重采样的处理

首先是配置上下文swr_alloc_set_opts;接下来对于swr_init初始化音频采样格式等基础信息;由swr_convert执行实际的重采样工作;最后由swr_free释放资源。

一般来说ffmpeg内部是封装好了一个fifo队列的,但是对于正常发送而言是不足以使用的, 因此音频重采样的过程中,应该在程序中自定义一个FIFO队列,并且为队列中取出的包打时间戳等其他操作。


本站由 Edison.Chen 创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。