音视频数据流基础
共 5 篇
整个音视频的开发流程经历下面几步:
- 首先用相机或者是麦克风采集未经压缩的原始画面数据(YUV)和原始声音数据(PCM)。
- 为了便于存储与传输,将这些原始数据送入编码器(Encode)进行压缩。视频被压缩成 H.264/H.265 等格式的裸流(NALU),音频被压缩成 AAC 等格式的裸流(ADTS)。在代码流转中,这些压缩后的数据会被打上时间戳(PTS/DTS),作为一个整体的数据包进行传递,这个数据包就叫做 Packet(压缩包)。
- 接着进入封装层(Mux),将这些零散的视频 Packet 和音频 Packet 按照特定的规则混合并塞入一个“集装箱”中,就得到了完整的 MP4、FLV、TS 等封装容器文件。
- 最后这些文件通过网络协议(比如 HTTP、RTMP、WebRTC)在网络上传输,被转换为网络数据流发送给客户端。
- 目标主机收到数据之后,会先解网络协议,再进行解封装(Demux),也就是把 MP4/FLV 这个“集装箱”拆开,从中按顺序拿出一个个带有时间戳的 Packet(里面装的依然是压缩状态的 H.264/AAC 数据)。
- 随后将这些 Packet 送入解码器(Decode)进行解压缩,剥去 H.264/AAC 的压缩外衣,重新还原出巨大的原始 YUV 数据和 PCM 数据(在代码中通常叫 AVFrame)。
- 最后将这些还原出的原始数据分别送入渲染层(比如通过 OpenGL/Metal 把画面丢给显卡,通过 AudioUnit/OpenAL 把声音丢给声卡)进行最终的播放呈现。
流程图:

音频流基础:PCM、WAV 与 AAC 编码深度解析
从音频采集全链路出发,深入剖析 PCM 裸数据的物理意义与计算、WAV 容器结构,以及 AAC 编码原理与 ADTS 帧头字段级解析。
音视频数据流基础 · 2视频底层密码:YUV 颜色空间、内存对齐与格式转换揭秘
深入剖析 YUV 颜色空间的核心原理,拆解 4:2:0 采样机制,彻底搞懂 Planar/Semi-Planar/Packed 内存布局,并直击音视频开发中最容易踩坑的 Stride 字节对齐问题。
音视频数据流基础 · 3音视频容器格式剖析:MP4、FLV 与 TS
深入剖析 MP4、FLV 与 MPEG-TS 三大主流音视频容器的底层结构。解析 MP4 Box 树状模型与 stbl 核心索引表,剖析 FLV 流式结构与直播基因,图解 TS 流的多层嵌套机制,彻底搞懂无损转封装背后的原理。
音视频数据流基础 · 4