关于dash的基础学习
关于dash的基础学习
研究了有关dash的一篇论文,此文的研究重点在于自适应码率切换算法,传统的算法单独考虑网络的状态或者播放缓冲的状态,并不能很好的把二者结合起来。切换视频码率的效果并不理想。因此,提出一个算法综合二者考虑,设计并实现无线DASH系统,提出基于缓冲区下溢概率的自适应码李切换算法,建立相应的数学模型,并利用相关优化理论推导最优算法。可惜后面内容的精妙还无法参悟透,但阅读后对于dash基础知识的把握有所提高。
词汇补充:
码率:就是每秒传送的比特数,单位时间码率越大,精度越好。
缓冲区溢出:计算机程序向缓冲区内填充数据,数据位数超过了缓冲区本身的容量。
缓冲区下溢:一个超长的数据进入缓冲区时,超出部分被写入下级缓冲区,而下级缓冲区存放的是下一条指令的指针或者其他程序输出的内容,导致下一个命令执行不正常
缓冲区上溢:一个超长的数据进入缓冲区时,超出部分被写入上级缓冲区,而下级缓冲区存放的是上一条指令的指针或者其他程序输出的内容,导致上一个命令执行不正常
背景
流媒体工作原理:
(1)媒体源采集;通过不同的采集设备,包括摄像机、录音机等对媒体数据进行采集,为编码器提供流媒体音视频源。
(2)音视频编码器:主要由一台PC、音视频采集设备(比如视频采集卡和音视频编码软件)组成。视频采集设备用来进行音视频采集,接着录入到PC中供编码软件进行编码。
(3)流媒体服务器;主要包含多个普通的服务器。该服务器主要用来对音视频内容进行存储、管理以及下发到播放的客户端。
(4)播放客户端:主要包含播放音视频的软件,也即解码软件。用播放音视频以及播放音视频。播放客户端的类型多种多样,包括普通PC、智能手机以及个人笔记本等。
http渐进式下载:
http渐进式下载的好处在于:第一,HTTP无状态:第二,HTTP服务器配置简单,成本低廉。这也是很多商家选择其作为传输协议的原因所在。http渐进式下载从严格意义上讲并不是一个直播协议,它的原理如下,首先下载文件的基本信息,然后下载音频的时间戳,最后下载音视频数据。拿播放一个MP4文件为例,首先巧到MP4文件头,然后根据文件头的指引下载文件尾,最后才是真正下载该MP4的音视频数据
HTTP自适应流媒体传输协议:
HTTP自适应流媒体传输协议是一种混合的传输方法,看起来很像流的方式,但事实上却采用了基于HTTP渐进式下载的方式。自适应流媒体传输中自适应体现在将音视巧巧编码成不同比特率的片段,生成2-4s不同大小的多个视频片段。客户端可在不同大小的视频片段中进行选择。播放缓冲区的大小完全可设定。
优势:
(1)HTTP采用TCP使得连接更可靠,有效降低丢包率(2)打破了传统的专用流媒体服务器的束缚,可布署在CDN或者其他服务器上
(3)NAT和防火墙问题得到有效解决,在异构网络中适应任更强。
但是,受到用户的随机移动、信道的衰减及无线的干扰等因素的影响,移动网络带宽是时变的。传统的HTTP渐进式下载方式己经不能满足用户的需求。就此,基于HTTP的动态自适应流媒体传输标准DASH被首次提出。
DASH技术
DASH技术是一种新型的基于动态自适应流媒体传输技术标准。DASH是一种混合的传输方法,看起来很像流的方式,但事实上却采用了基于http渐进式下载的方式。
其特点和优势主要表现在:
(1)可靠性:HTTP流化采用的是面向连接的TCP协议,其“三次握手”机制能够保证视频在传输的过程中更加可靠。
(2)成本低:DASH系统中采用的视频服务器为HTTP服务器,部署成本较低。
(3)简易性:DASH系统中采用HTTP协议,默认端口为80,很容易避免NAT和防火墙等问题,使得传输变得更加便捷。
(4)动态自适应性:DASH系统客户端采用动态自适应流媒体算法,其在捕获到整个网络的带宽后,客户端综合当前链路状态和其终端的能力,及时向视频服务器发送请求调整用户当前的视频版本,最大化视频质量。(5)分片处理;按照3GPP的DASH标准,同一视频不仅被编码成具有不同码率的副本,同时,每个视频副本又被切分成许多小的片段。
工作原理
其实意思就是,http服务器中保存有高中低三种质量的分片,而dash客户端在捕获到网络带宽后,分析现在的状况来获取保证最大流畅前提下质量最高的分片
设计与实现
媒体表示服务器:主要负责产生包含不同码率副本的片段,主要由视频编码模块组成,其完整的编码流程如下图。首先,利用FFmpeg或者X264将普通视频编码成H.264格式的文件,再将H.264格式的文件通过MP4BOX进行相应封装,当然也可采用别的工具进行封装,从而得到不同码率的视频片段。
词汇补充:
H.264:H.264是较新的音视频编码标准,主要目标是提高压缩效率,提供网络友好的视颖表示,不仅支持会话型应用,比如视频电话,同时支持非会话型业务,比如广播以及流服务。
(1)周期(Period):—个或者多个周期构成了一个完整的DASH媒体流,其中一个周期代表一个固定的时间段,每个Period都有一个开始时间。如下图,该码流共100s,包含3个周期,每个周期里包含的可用媒体内容以及表示(Representation)固定不变。
(2)自适应集(Adaptation set):—个或者多个自适应集构成了一个周期。同一自适应集包含不同码率的视频版本,也即Representation不同,如下图中Representation 1和Representation 2中视频的码率分别为500kbit/s和250kbit/s
(3)表示(Representation);—个或者多个表示构成了一个自适应集。而每个表示里可能包含一个或者多个媒体流,每个媒体流都有一个媒体内容部分与之相对应。
(4)段(Segment):每个表示包含一个或者多个Segment,若表示仅包含一个段,那么其将不支持直播。每一段都有一个URL与之对应。
(5)段格式
初始段:初始段为客户端提供元数据,该数据包含对媒体内容的描述信息,符合3GPP标准文件格式,不包含任何媒体数据。
媒体段:媒体段Wstypbox作为起始部分,并包含一系列的独立的视频片段
自初始媒体段:自巧始媒体段可W看成初始段和媒体段功能的结合。
HTTP源服务器:存放不同码率副本的片段和媒体表示描述文件MPD(MPD——媒体表示描述)
视频存储模块主要负责存储保存由媒体表示服务器编码的不同码率视频的片段,并维护一张视巧信息的文件也即MPD文件。
视频流化模块主要负贵视频发送过程,这里采用HTTP流化技术。
视频交互模块主要负责与客户端进行请求会话建立、TCP连接建立、MPD文件请求建立、视频流传输过程建立等。
HTTP缓存服务器:用来存储不同码率的视频
客户端:能够完全自主控制流媒体会话,它可以根据当前的链路状态和设备状态,请求合适的视频版本,视频服务器及时作出响应,发送请求的视频版本。
请求管理模块主要负责对HTTP服务器发起视频请求,获取MPD文件,并对发起的请求进行统一管理。
视频播放模块主要负责视频解码及视频播放,解码工作由相应的解码器完成。
算法模块主要负责在捕获到整个网络的带宽后,客户端综合当前链路状态和其终端的能力,及时向视频服务器发送请求调整用户当前的视频版本,最大化视频质量,满足用户体验。
实现方式
媒体表示服务器实现:媒体表示服务器主要负责对普通视频进行编码,得到不同码率的视频片段,主要通过编码器DashEncoder完成编码过程。
HTTP服务器实现:此系统中选择apache作为Web服务器。
客户端实现:本系统客户端采用VLC播放器,为了使得VLC支持DASH标准,VLC-DASH插件必不可少。
文章来源:DASH中的自适应视频传输算法-张洋洋-中科大