0%

音视频基本概念

参考文章:https://help.aliyun.com/document_detail/441244.html

封装格式(Format)

将已编码压缩好的视频轨道、音频轨道和元数据(视频基本信息如标题、字幕等)按照一定的格式规范,打包放到一个文件中,形成特定文件格式的视频文件。

封装格式主要分为两大类:面向存储的和面向流媒体的。

  • 面向存储的,常见的有 AVI、ASF(WMA/WMV)、MP4、MKV、RMVB(RM/RA)等;
  • 面向流媒体的,常见的有 FLV、TS(需要配合流媒体网络传输协议,如 HLS、RTMP 等),MP4 也支持流媒体方式(配合 HTTP 等)。

面向流媒体的封装格式:

  • MP4:经典的视频封装格式,移动端(iOS、Android)、PC Web 多终端都能良好支持。但 MP4 的视频文件头太大,结构复杂;如果视频较长(如数小时),则其文件头会过大,影响视频加载速度,故更适合短视频场景。
    MP4 由一个个的 box(以前叫 atom)组成,所有的 Metadata(媒体描述元数据),包括定义媒体的排列和时间信息的数据都包含在这样的一些结构 box 中。Metadata 对媒体数据(比如视频帧)引用说明,而媒体数据在这些引用文件中的排列关系全部在第一个主文件中的 metadata 描述,这样就会导致视频时长越大文件头就会越大、加载越慢。
  • HLS(HTTP Live Streaming):苹果公司推出的基于 HTTP 的流媒体网络传输协议,视频的默认封装格式是 TS,除了多个 TS 分片文件,还定义了用来控制播放的 m3u8 索引文件(文本文件),可以规避普通 MP4 长时间缓冲头部数据的问题,比较适合点播场景。移动端(iOS、Android)支持较好,但 PC 端 IE 存在兼容性问题依赖播放器的二次开发(建议使用阿里云 Web 播放器)。
  • FLV:Adobe 公司推出的标准,在 PC 端有 Flash 的强力支持,但在移动终端只有 App 实现播放器才能支持(建议使用阿里云播放器),大部分手机端浏览器(特别是苹果的移动设备)均不支持。
  • DASH(Dynamic Adaptive Streaming over HTTP):使用 fragmented MP4(fMP4)格式,将 MP4 视频分割为多个分片,每个分片可以存在不同的编码形式(如分辨率、码率等);播放器端可自由选择需要播放的视频分片,实现自适应多码率、不同画质内容的无缝切换,提供更好的播放体验。其中 MPD 文件类似 HLS 的 m3u8 文件,国外视频网站如 YouTube、Netflix 等较多使用 DASH。
  • HLS+fMP4(HTTP Live Streaming with fragmented MP4):此处单列,但本质上还是 HLS 协议。苹果公司于 WWDC 2016 宣布新的 HLS 标准支持文件封装格式为 fragmented MP4,使用方法与 TS 分片类似,意味着一次转码可同时打包成 DASH 和 HLS。

HLS(包括 HLS+fMP4)和 DASH 是最常用的自适应流媒体传输技术(Adaptive Video Streaming),推荐使用。

比特率和码率

在视频领域,比特率等同于码率。码率(Bitrate)是指视频文件在单位时间内使用的数据流量,也叫码流或码流率,是视频编码中画面质量控制最重要的部分。量度单位为“比特每秒”(bit/s或bps),常使用Kbps(每秒多少千个比特)或Mbps。其计算公式是文件体积=时间×码率/8。例如,网络上常见的一部60分钟的码率为1Mbps的720P的视频文件,其体积就大概为3600秒×1Mb/8=450MB。