音视频播放基本流程

音视频播放的原理主要分为:解协议->解封装->解码->音视频同步->播放。当然,如果是本地播放,没有解协议这一步骤

  • 解协议->
    • 流媒体协议格式转换为封装格式
    • 音视频流媒体的传输格式是RTMP、HLS、HTTP-FLV…的格式,网络传输完成需要对这种格式进行解析,解析出来是AVI、FLV、TS…的格式,这是一种封装了的格式需要再进行解封装
  • 解封装->
    • 封装格式转换为原始格式
    • 由AVI、FLV、TS、MP4等封装格式,音频解析为ACC…视频解析为H.264等
  • 解码->
    • AAC等转换为PCM YUV等音视频原始格式
  • 音视频同步->
  • 播放

image.png

图像编码

YUV,RGB,包括YcbCr是色彩空间的模型,而平常所说的BMP、PNG、JPEG是文件的存储形式。而YUV是音视频(编解码)最常用的格式。

音频编码

说到音频,主要有两个概念比较重要,一个是采集到的原始音频数据(比如PCM)和压缩后的音频数据(比如AAC),本文将介绍下PCM的相关知识。(AAC相关知识请参见下篇文章)

什么是PCM?

PCM(Pulse Code Modulation,脉冲编码调制)音频数据是未经压缩的音频采样数据裸流,它是由模拟信号经过采样、量化、编码转换成的标准数字音频数据。

什么是AAC?

AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式。AAC分为ADIF和ADTS两种文件格式。

视频编码

macMP4info分析工具
https://github.com/ksvc/MediaParser/releases/tag/v0.0.1

音视频相关编码

image.png