关于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中的自适应视频传输算法-张洋洋-中科大

关于dash的基础学习相关推荐

  1. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  2. python创建对象的格式为_Python入门基础学习(面向对象)

    python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

  3. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

  4. 动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals

    如何分类--动画产业基础 大小解压后:6.2G 含课程素材 1920X1080 mp4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 信息: 绘画技巧.解剖学.角色设计.透视和整体讲故事--这门 ...

  5. Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender

    Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender Blender纹理基础学习视频教程 CGCookie – Funda ...

  6. ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course! 教程大小解压后:4.96G 语言:英语+中英文字幕(机译)时长 ...

  7. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  8. 计算机一级ps2019,2019年计算机一级考试PS基础学习点子:PS菜单中英文对照表.docx...

    2019 年计算机一级考试 PS 基础学习点子: PS 菜单中英文对照表 PS菜单中英文对照表 一.File New 2.Open 3.Open As 4.Open Recent Close 6.Sa ...

  9. Java零基础学习难吗

    java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...

最新文章

  1. 解决访问http://localhost:8080/需要用户和密码的问题
  2. Popup窗口在XP+SP2下面受到限制
  3. Win64 驱动内核编程-14.回调监控文件
  4. 纯c gSoap实现WebService
  5. 增强学习(二)----- 马尔可夫决策过程MDP
  6. 库克用iPhone12 Pro Max发中秋祝福 网友调侃:库克也没抢到iPhone13?
  7. linux下搭建uvm环境,转:使用QuestaSIM进行UVM仿真环境搭建
  8. aspnet ajax 1.0中的according控件
  9. Wrong FS: hdfs://......, expected: file:///
  10. 蓝桥杯 拉马车(模拟)
  11. picsart旧版本_picsart旧版本中文下载-picsart老版本软件8.5.6 历史版本-东坡下载
  12. usb3.0速度测试软件,USB3.0传输速度测试 揭秘速度到底是多少
  13. FreeRTOS动态创建任务
  14. Android 屏幕适配神器ScreenMatch
  15. 大数据分析软件都有哪些平台?
  16. 电影《悟空传》中的管理知识
  17. 河大计算机学院足球队,我校第二十九届“河大杯”足球赛落幕
  18. 【腾讯TMQ】漫步VR——Unity语音聊天室开发小结
  19. MapReduce中文翻译
  20. 原来华展云还能这么玩? 玩转华展云之——官网风云

热门文章

  1. 日语学习-多邻国-问候
  2. JAVA面向对象编程(2)
  3. 计算机上的be无法正常启动,应用程序无法正常启动0xc0000005的三种解决方法
  4. 上传图片到php服务器
  5. 如何让你开发的游戏赚钱
  6. 产品的波士顿矩阵分析
  7. 使用Javascript制作声音按钮
  8. 乐理基础知识-4.音程
  9. 64位处理器_32位和64位的Windows 10和处理器(CPU)有什么区别
  10. National day present