视频文件分段传输协议都有哪些
HLS (HTTP Live Streaming)是苹果公司实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播。它主要是把视频流分片成一系列小的HTTP文件(MPEG-TS格式),然后用一个m3u8的索引文件把这些TS文件关联起来,播放器则不断的下载并播放,当播放完一个TS文件后,再去下载下一个TS文件进行播放,以此类推,实现了流媒体的播放。
DASH,即Dynamic Adaptive Streaming over HTTP,是一种在互联网上传输视频的自适应比特率串流技术。DASH技术与苹果的HLS类似,会将视频内容分割成一个或多个小文件片段,每个片段都含有一小段时间的视频内容,然后通过HTTP协议进行传输。DASH会通过一个MPD(Media Presentation Description)文件来描述这些视频片段的地址、格式、码率、分辨率等信息。
基于HTTP的动态自适应流(DASH)也称为MPEG-DASH。它是一种自适应比特率流技术,使高质量流媒体可以通过传统的HTTP Web服务器以可变网速传送。与HLS类似,MPEG-DASH的工作原理是将内容分解为一系列基于HTTP的片段文件。每个片段都包含一小段总内容。这些内容可在各种比特率下编码。MPEG-DASH使用媒体演示描述(MPD)文件,播放器使用该文件自动选择下一个要下载和播放的片段,以实现最佳播放效果。
HTTP流媒体分发技术将原来一个大的媒体文件,切分成一个个小的媒体分片文件,并通过一个索引文件(manifest file)来管理这些分片。客户端播放器首先获取索引文件,通过解析索引文件得知媒体分片的信息,然后根据当前网络状况,选择合适码率的媒体分片进行下载播放。由于采用标准HTTP协议,因此可以充分利用现有的HTTP缓存技术,例如CDN网络,来对媒体分片进行缓存,从而有效降低源站压力,并提供更好的服务质量。
HLS的m3u8文件,本质上是一个播放列表(playlist),其中记录了可供客户端播放的媒体切片(media segment)地址。m3u8分为两种,一种是主播放列表(master playlist),另一种是媒体播放列表(media playlist)。当播放器请求一个包含多个码率的HLS地址时,服务器首先返回的是主播放列表,这个列表里不包含具体的ts切片地址,而是包含了指向不同码率的媒体播放列表的地址。播放器根据网络情况选择一个合适的媒体播放列表进行请求,获取到的媒体播放列表里才包含了具体ts切片的地址,然后播放器再逐个下载ts文件进行播放。
HDS(HTTP Dynamic Streaming)是Adobe公司推出的协议,在功能上和苹果的HLS类似,允许客户端在网络带宽发生变化时,平滑地切换到码率匹配的视频流。HDS同样将视频文件进行切片,不同的是,HLS输出的是ts文件和m3u8播放列表,而HDS输出的是f4f文件和f4m播放列表。由于其依赖Flash播放器,随着Flash的没落,HDS也逐渐被MPEG-DASH等更开放的标准所取代。
传统的基于HTTP分片的流媒体协议(如HLS、DASH)通常存在较高的延迟。这种延迟主要来源于几个方面:首先,编码器需要积累一定数量的视频帧才能生成一个分片,这引入了编码延迟;其次,分片上传到服务器需要时间;最后,播放器为了保证流畅播放,通常会缓存几个分片,这导致播放端需要等待下载完数个分片后才能开始播放。一个典型的HLS分片时长为2-10秒,播放器缓存3个分片,延迟就会达到6-30秒,这对于直播互动场景是难以接受的。
MPEG-DASH中的MPD文件采用XML格式,其结构具有很强的层次性和扩展性。顶层是Period,表示一段播放时间。一个Period内可以包含多个Adaptation Set,每个Adaptation Set代表一种媒体类型,比如视频、音频或字幕。在Adaptation Set内部,则包含多个Representation,每个Representation对应一个具体的码率或分辨率的媒体流。最后,Representation由一个个Segment组成,Segment是媒体数据的基本下载单元。这种分层结构使得DASH能够灵活地描述各种复杂的流媒体内容。
在自适应比特率流媒体传输中,码率切换的决策逻辑完全由客户端(播放器)控制。服务器只负责将视频内容以多种码率进行编码和切片,并提供一个描述文件。客户端播放器会持续监控自身的网络带宽、缓冲区填充情况以及CPU负载等状态,然后根据预设的算法来决定下一个分片应该请求哪一个码率版本。这种将智能放在客户端的设计,减轻了服务器的负担,并使得系统具有更好的伸缩性。
HLS协议选择MPEG-2 Transport Stream(TS)作为其媒体分片的标准容器格式,是有其历史和技术原因的。TS格式最初是为数字电视广播设计的,它天生就支持将视频、音频以及其他数据打包成一个单一的流,并且包含了时间戳信息(如PTS和DTS),这对于流媒体的同步播放至关重要。每个TS分片都可以被独立解码,播放器在下载完一个分片后就可以立即开始处理和播放,无需等待整个文件的下载,这正是分段流媒体所需要的特性。
上一篇:网络摄像机测试的步骤和方法详解