问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

文件打包和解包在OTT和RTC中的应用:理解MP4、FLV和TS容器

创作时间:
作者:
@小白创作中心

文件打包和解包在OTT和RTC中的应用:理解MP4、FLV和TS容器

引用
1
来源
1.
https://trtc.io/zh/learning/file-packaging-and-unpackaging-in-ott-and-rtc

在音视频处理领域,文件打包和解包技术扮演着至关重要的角色。本文将深入探讨这一技术的核心概念,并重点介绍三种主流的容器格式:MP4、FLV和TS。通过本文,你将全面了解这些容器格式的结构特点及其在OTT(Over-The-Top)和RTC(Real-Time Communication)系统中的具体应用。

打包的必要性

当音频和视频数据经过各自的编码器后,我们通常会得到两个独立的数据流:一个用于音频的AAC流和一个用于视频的H.264流。这些流是分开的,因为它们来自不同的源(音频来自麦克风,视频来自摄像头),并由不同的组件处理。

然而,在实际应用中,音频和视频流很少单独使用。为了同步同一场景中的声音和画面,我们需要将音频和视频数据打包到一个文件中。

什么是打包?

打包,也称为复用或muxing,是将多个数据流组合成一个单一容器文件的过程。打包的主要目的包括:

  1. 整合来自同一场景的信息。
  2. 便于音视频同步和统一配置。

结果打包后的文件称为容器。常见的容器格式包括MP4、FLV、TS、AVI和MKV。

元数据:高效播放的关键

容器就像不同大小的盒子,有些支持多种编解码格式(如MKV),而有些支持较少(如AVI)。为了实现高效播放,容器包含元数据——关于打包媒体的信息。

元数据通常包括:

  • 音频和视频的编解码信息
  • 分辨率
  • 帧速率
  • 比特率
  • 采样率
  • 比特深度
  • 音频通道数

当媒体播放器开始播放文件时,它首先读取元数据,以确定使用哪些编解码器以及在开始播放之前分配多少缓冲区空间。

对于具有“边下载边播放”功能的在线流媒体,确保元数据位于文件开头至关重要。一些打包格式将元数据放在末尾,这需要转码以移动元数据或在播放开始之前下载整个文件。

流行的容器格式

让我们探索三种在OTT和RTC系统中使用的流行容器格式:

1. MP4(MPEG-4第14部分)

MP4是一种多功能的媒体文件结构标准,可以嵌入各种类型的数据。大多数MP4文件包含H.264或MPEG-4编码的视频和AAC编码的音频。

MP4文件结构为一系列嵌套的“盒子”。以下是一些常见的盒子类型:

盒子类型
描述
ftyp
文件类型,指示文件格式
moov
元数据容器,存储文件元数据
mvhd
电影头部,包含文件头部信息
trak
轨道容器,包含音频/视频轨道信息
tkhd
轨道头部,包含轨道头部信息
mdia
媒体信息
mdhd
媒体头部,定义媒体头部信息
hdlr
处理程序,指定轨道类型(视频/音频/提示)
minf
媒体信息,包含媒体数据
stbl
样本表,存储样本映射信息
mdat
媒体数据容器,保存实际的媒体数据

2. FLV(Flash视频)

FLV是由Adobe开发的一种流行的网络视频容器格式。其简单的结构和易于解码使其非常适合在线视频,尤其是与Adobe的RTMP协议结合使用时。

FLV文件由FLV头部和FLV主体组成:

FLV 头部 | 标签0 | 标签0 数据 | 标签1 | 标签1 数据 | ... | 标签N | 标签N 数据

FLV主体包含多个标签,这些标签可以是音频、视频或脚本(用于关键字或文件信息)。

FLV头部结构:

字段
描述
签名(3B)
始终为"FLV"(0x46 0x4C 0x56)
版本(1B)
版本号,通常为0x01
标志(1B)
位5-7:0,位6:音频标签存在,位7:视频标签存在
头部大小(4B)
FLV头部的大小,通常为9

FLV主体结构(针对每个标签):

字段
描述
前一个标签大小
前一个标签的大小
标签类型
音频(0x08),视频(0x09),或脚本(0x12)
数据大小
标签数据部分的大小
时间戳
标签的时间戳
流ID
流标识符
标签数据
实际的媒体数据

3. TS(传输流)

TS,由MPEG-2标准定义,通常用于数字视频广播和HTTP实时流协议(HLS)。

TS打包过程:

  1. 元素流(ES)-原始编码的音频或视频数据
  2. 分组元素流(PES)-将ES数据打包成PES数据包
  3. 传输流(TS)-将PES数据包复用到TS数据包中

TS数据包的固定大小为188字节,包含头部和有效载荷。

结论

理解文件打包和解包对任何从事OTT和RTC技术的人来说都是至关重要的。每种容器格式都有其优势,适用于不同的用例:

  • MP4广泛用于互联网视频点播服务
  • FLV在直播和视频点播中都很受欢迎
  • TS通常用于HTML5视频传送的HLS中

随着数字媒体领域的不断发展,及时了解这些容器格式及其应用将对开发高效、高质量的音视频流解决方案至关重要。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号