核心学习目标:理解视频从“生产”到“传输”到“播放”的全链条中,这些术语代表什么环节和功能。
我们可以把这个过程想象成一个“视频快递”系统:
- 视频内容本身 (原始货物):
H.264,H.265,MJPEG,ES - 打包货物以便运输:
PS,TS - 贴上运输标签和跟踪信息:
RTP - 控制整个快递流程(下单、查询、暂停):
RTSP - 运输策略(保速度还是保画质):
主码流,子码流 - 货物内部的特殊标记(关键节点、重点区域):
I帧,P帧,ROI
一、核心:视频编码标准 (压缩技术 - 让“货物”体积变小)
H.264(AVC - Advanced Video Coding):- 是什么? 目前应用最广泛、最成熟的视频压缩编码标准。它通过复杂的算法,在尽量保证画质的前提下,大幅减小原始视频文件的大小(可能压缩到几百分之一),便于存储和传输。
- 特点: 兼容性好、压缩效率高、软硬件支持广泛。是网络监控、视频会议、在线视频(如B站、腾讯视频)、蓝光光盘等的主流编码格式。
H.265(HEVC - High Efficiency Video Coding):- 是什么? H.264 的升级版,新一代高效视频编码标准。
- 特点: 在同等画质下,压缩效率比 H.264 提高约 50%。意味着相同带宽下可以传输更高清(如4K/8K)的视频,或者相同画质下节省大量带宽和存储空间。但计算复杂度更高,对硬件要求稍高,普及度正在快速提升。
MJPEG(Motion JPEG):- 是什么? 一种非常简单的视频压缩方式。它实际上就是把视频的每一帧都当成一张独立的 JPEG 图片进行压缩,然后按顺序播放这些图片形成视频。
- 特点:
- 优点: 实现简单,每帧独立,任何一帧损坏不影响其他帧;对硬件要求极低。
- 缺点: 压缩效率远低于 H.264/H.265(文件巨大,占用带宽高);没有利用帧与帧之间的相关性。
- 应用: 早期网络摄像头、对实时性要求极高但对带宽不敏感的工业检测等场景。现在主流应用已被 H.264/H.265 取代。
二、基本单元:视频数据本身 (原始/压缩后的“货物”)
ES(Elementary Stream - 基本码流):- 是什么? 最原始、最纯粹的压缩后的音视频数据流。
- 只有视频编码数据(H.264/H.265/MJPEG 压缩后的数据)叫 视频ES。
- 只有音频编码数据(如 AAC, G.711 压缩后的数据)叫 音频ES。
- 特点: ES 流本身不包含任何时间戳、同步信息、播放控制信息等。它只是纯粹的“货物本体”,还不能直接用于传输或播放。
- 是什么? 最原始、最纯粹的压缩后的音视频数据流。
三、封装格式 (给“货物”打包、装箱、加清单)
PS(Program Stream - 节目流):- 是什么? 一种将一个视频ES、一个音频ES(以及其他可能的辅助数据ES)打包在一起,并加入同步信息、时间戳、错误检测等数据的容器格式。可以想象成一个包裹,里面装了一部电影的完整视频和对应音轨。
- 特点: 主要用于对错误不敏感的环境,如本地存储(DVD、硬盘录像机文件)、有线广播等。它的结构设计使得随机访问(快进快退)相对容易。文件扩展名常见
.mpg,.mpeg,.vob(DVD),.evo(蓝光)。
TS(Transport Stream - 传输流):- 是什么? 另一种将多个视频ES、音频ES(如多个电视频道、多路监控画面)打包复用在一起,并加入同步信息、时间戳、错误检测与校正信息等数据的容器格式。可以想象成一个大的集装箱,里面装了很多个不同的小包裹(每个小包裹对应一个节目/频道)。
- 特点: 专为易出错的传输环境(如有线/无线广播、网络流媒体)设计。它具有很强的错误恢复能力和容错性,即使传输中丢失一些数据包,也能尽量保证播放不中断。结构设计更利于连续传输。文件扩展名常见
.ts,.mts,.m2ts(蓝光)。
PS vs TS 关键区别总结表
| 特性 | PS (节目流) | TS (传输流) |
|---|---|---|
| 设计目标 | 错误不敏感环境 (存储,高质量传输) | 错误敏感环境 (广播,网络流媒体) |
| 内容 | 通常包含一个完整节目 (音+视) | 可包含多个节目/频道 |
| 结构 | 包较大,长度可变 | 包固定小 (通常188字节),利于传输 |
| 错误恢复 | 较弱 | 强 (内置冗余校验、重传机制) |
| 随机访问 | 较容易 | 相对复杂 |
| 典型应用 | DVD, 硬盘录像机文件 | 数字电视广播(DVB, ATSC), IPTV, 网络直播 |
| 码流分层结构 |
graph LR
A[原始视频] --> B[编码器]
B --> C[ES流] --> D{封装}
D --> E[PS流] -->|本地存储| F[DVD/硬盘录像]
D --> G[TS流] -->|网络传输| H[IPTV/直播]
四、传输协议 (“快递”服务)
RTP(Real-time Transport Protocol - 实时传输协议):- 是什么? 一个网络协议,专门用于在互联网上实时传输音视频等流媒体数据。它工作在传输层 (通常是 UDP 之上)。
- 核心功能:
- 打包: 将封装好的数据(如 TS 包或 PS 包,甚至是 H.264 NALU)封装成 RTP 数据包。
- 加标签: 为每个 RTP 包打上关键“标签”:
- 序列号 (Sequence Number): 标识包的顺序,用于检测丢包和乱序。
- 时间戳 (Timestamp): 极其重要! 标记数据包中媒体数据的采集/播放时间。接收端依靠它来同步音视频,并按正确速度播放。
- 负载类型 (Payload Type): 标识包内数据的编码格式(如 H.264, G.711)。
- 部分QoS: 提供基础的传输监控信息(如丢包率、抖动)。
- 关键点: RTP 本身不保证可靠传输(不保证数据包一定能送达、按序送达、不重复),也不提供流量控制或拥塞控制机制。它专注于“实时性”和“时序信息”。可靠性通常由下层(UDP)或上层应用/协议(如 RTCP)来补充。
RTCP(RTP Control Protocol):- 是什么? RTP 的伴生协议,总是和 RTP 一起使用。
- 核心功能: 提供传输质量的反馈 (QoS Monitoring) 和参与者信息交换。
- 接收方定期向发送方发送 RTCP 报告:报告接收到的包数、丢包数、网络抖动(Jitter) 等信息。发送方据此可以调整码率等。
- 参与者(如会议中的用户)可以发送 RTCP 包告知自己的存在和身份。
RTSP(Real Time Streaming Protocol - 实时流协议):- 是什么? 一个应用层的网络控制协议。它本身不传输音视频数据(那是 RTP 的工作),而是用于控制媒体服务器的播放行为。
- 功能 (类比快递“客服/调度中心”):
- 建立/终止会话: 客户端向服务器发起连接请求 (
DESCRIBE,SETUP)。 - 播放控制:
PLAY(开始播放),PAUSE(暂停),TEARDOWN(终止会话/断开连接)。 - 定位:
SEEK(快进/快退到指定时间点 - 需要服务器支持)。 - 获取媒体信息:
DESCRIBE请求会返回媒体信息的描述 (通常用 SDP 描述),如支持的编码格式、分辨率、码流地址等。
- 建立/终止会话: 客户端向服务器发起连接请求 (
- 工作模式: RTSP 协议建立控制通道(通常用 TCP),然后协商好传输音视频数据的 RTP 通道(通常用 UDP 或 TCP)。RTSP 指挥 RTP 开始“发货”。
五、码流类型与帧类型 (“货物”的不同规格和内部结构)
主码流(Main Stream) /子码流(Sub Stream / Extra Stream):- 是什么? 同一路摄像机/视频源同时产生的两种(或多种)不同质量的视频流。
- 主码流: 高分辨率、高码率、高画质的码流。用于本地高清存储、高清大屏显示等需要最佳画质的场景。
- 子码流: 低分辨率、低码率、较低画质的码流。用于网络远程预览(在带宽有限时保证流畅性)、多画面分割显示(同时看很多路画面时节省资源)、移动端(手机APP)预览等。
- 目的: 解决画质与带宽/存储/解码能力之间的矛盾。根据不同的应用场景,灵活选择使用主码流或子码流。
- 是什么? 同一路摄像机/视频源同时产生的两种(或多种)不同质量的视频流。
I帧(Intra-coded frame - 关键帧/帧内编码帧):- 是什么? 一种独立、完整的视频帧。它像一张完整的 JPEG 图片,不依赖于视频序列中前后的其他帧,自身就包含了重构该帧画面所需的全部信息。
- 特点:
- 是视频序列的锚点和随机访问点(快进快退必须定位到 I 帧才能开始解码)。
- 压缩率相对较低(因为只利用帧内信息压缩),数据量最大。
- 解码最简单。
P帧(Predictive-coded frame - 预测编码帧):- 是什么? 一种需要依赖前面(过去)的帧(I帧或P帧)才能解码的帧。它只存储与参考帧差异的部分(运动矢量和残差数据)。
- 特点:
- 压缩率高于 I 帧(利用时间相关性,只存变化的部分),数据量较小。
- 解码需要先解码其参考帧。
- 不能作为随机访问点。如果前面的参考帧丢失,P 帧也无法正确解码。
B帧(Bidirectionally predictive-coded frame - 双向预测编码帧):- 是什么? 一种需要同时依赖前面(过去)和后面(未来)的帧(I帧或P帧)才能解码的帧。它存储的是与前后参考帧的差异。
- 特点:
- 压缩率最高,数据量最小。
- 解码最复杂(需要缓存未来的参考帧),延迟最大(因为要等后面的帧)。
- 不能作为随机访问点。
ROI(Region Of Interest - 感兴趣区域):- 是什么? 指视频画面中用户重点关注的区域。
- 技术应用 (ROI 编码): 一种视频编码优化技术。在压缩时,对画面中指定的 ROI 区域(如人脸、车牌、重要设备)分配更高的码率(即分配更多数据量),保证该区域的清晰度和细节;对非 ROI 区域(如背景)则分配较低的码率,适当降低其画质。
- 目的: 在总码率(带宽)有限的情况下,优先保障关键区域的图像质量,从而在整体上获得更优的观感或识别效果。常用于安防监控(看清人脸车牌)、视频会议(看清发言人)、远程医疗(看清病灶)等场景。
学习路径建议
- 建立概念框架: 先理解整个流程(编码 -> ES -> 封装PS/TS -> RTP传输 -> RTSP控制 -> 解码播放),以及主/子码流、帧类型、ROI在其中的位置和作用。本文档就是为此目的设计的。
- 深入编码标准: 重点学习 H.264 和 H.265 的基本原理(帧内预测、帧间预测、变换量化、熵编码)。了解它们的区别和优势。MJPEG 相对简单,了解其特点即可。
- 理解封装: 搞明白 PS 和 TS 的区别和各自应用场景。理解为什么需要封装(加入同步、时间、纠错等信息)。
- 掌握传输协议:
- 重点理解 RTP 的作用(加时间戳、序列号)、包结构。
- 理解 RTSP 的作用(播放控制),熟悉几个主要命令 (
DESCRIBE,SETUP,PLAY,TEARDOWN,PAUSE)。 - 了解 RTCP 的作用(质量反馈)。
- 理解 RTP + RTCP + RTSP 如何协同工作。
- 应用概念: 理解 主码流/子码流 的使用策略,I帧/P帧 的作用和依赖关系,ROI 编码的价值。
- 实践观察:
- 使用 Wireshark 抓包工具抓取一个 RTSP 流(如连接一个网络摄像头),观察 RTSP 信令交互过程、RTP 包的发送、RTCP 报告的发送。查看 RTP 头部的序列号、时间戳、负载类型。
- 在视频播放器或监控客户端中切换主/子码流,观察效果差异。
- 尝试在编码设置中调整 I 帧间隔 (GOP大小),观察对视频质量和文件大小/带宽的影响。
总结
这些术语涵盖了数字视频从压缩编码 -> 数据封装 -> 网络传输 -> 播放控制的核心环节,以及码流策略和编码优化的关键技术点。理解它们之间的关系(ES被封装进PS/TS,RTP传输PS/TS包,RTSP控制RTP流的播放,H.264/H.265是ES的编码方式,I/P帧是H.26x的内部结构,主/子码流是源的不同输出,ROI是编码优化手段)是掌握流媒体技术的基础。