音视频学习1-概念框架

109 阅读10分钟

核心学习目标:理解视频从“生产”到“传输”到“播放”的全链条中,这些术语代表什么环节和功能。

我们可以把这个过程想象成一个“视频快递”系统:

  1. 视频内容本身 (原始货物): H.264, H.265, MJPEG, ES
  2. 打包货物以便运输: PS, TS
  3. 贴上运输标签和跟踪信息: RTP
  4. 控制整个快递流程(下单、查询、暂停): RTSP
  5. 运输策略(保速度还是保画质): 主码流, 子码流
  6. 货物内部的特殊标记(关键节点、重点区域): 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 区域(如背景)则分配较低的码率,适当降低其画质。
    • 目的:总码率(带宽)有限的情况下,优先保障关键区域的图像质量,从而在整体上获得更优的观感或识别效果。常用于安防监控(看清人脸车牌)、视频会议(看清发言人)、远程医疗(看清病灶)等场景。

学习路径建议

  1. 建立概念框架: 先理解整个流程(编码 -> ES -> 封装PS/TS -> RTP传输 -> RTSP控制 -> 解码播放),以及主/子码流、帧类型、ROI在其中的位置和作用。本文档就是为此目的设计的。
  2. 深入编码标准: 重点学习 H.264H.265 的基本原理(帧内预测、帧间预测、变换量化、熵编码)。了解它们的区别和优势。MJPEG 相对简单,了解其特点即可。
  3. 理解封装: 搞明白 PSTS 的区别和各自应用场景。理解为什么需要封装(加入同步、时间、纠错等信息)。
  4. 掌握传输协议:
    • 重点理解 RTP 的作用(加时间戳、序列号)、包结构。
    • 理解 RTSP 的作用(播放控制),熟悉几个主要命令 (DESCRIBE, SETUP, PLAY, TEARDOWN, PAUSE)。
    • 了解 RTCP 的作用(质量反馈)。
    • 理解 RTP + RTCP + RTSP 如何协同工作。
  5. 应用概念: 理解 主码流/子码流 的使用策略,I帧/P帧 的作用和依赖关系,ROI 编码的价值。
  6. 实践观察:
    • 使用 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是编码优化手段)是掌握流媒体技术的基础。