对DASH协议的自适应流媒体传输技术研究
2021-09-10滕杰英黄仲吴霄汉
滕杰英 黄仲 吴霄汉
摘要:随着当前互联网普及以及通讯技术不断发展,其中以多媒体为主要的载体的流媒体,在生活中得到越来越多的广泛以及使用。传统的Internet可以比较有效完成文字、图像等各种的离散性的媒体方面的输送。但缺陷也明显,在传输流媒体以及音频数据时候,遇到巨大挑战。主要以流媒体方式对于数据进行传输。为了更好的应付这个挑战,随着流媒体不断的持续性增长,传统的流媒体在此中呈现了不足。常见如无法通过防火墙、网络异构、服务器复杂等。但是基于MPEG-DADH协议的流媒体技术互相结合HTTP渐进式下载技术和自适应传输技术等优点可以在一定程度上优化这些问题。本文则是研究基础为DASH协议的流媒体的自适应系统以及关键技术。
关键词:自适应传输;HTTP;流媒体
一、流媒体技术概述
流媒体传输的基本原理如图1-1所示,从图1-1可以看出。流式传输的一般过程如下:首先开始阶段,系统用户请求流媒体数据以后,便开始工作,在WEB的服务器和Web浏览器之间的传输则是靠HTTP/TCP会话消息,主要目的以便让服务器从海量的信息中进行检索用户请求的数据;其次Web浏览器启动音频视频播放器,在通过和Web服务器相互的交互进而在此基础上得到参数,因此在此过程中需要对于此播放器进行初始化操作。然后在音频播放器与音频视频服务则是通过RTSP/TCP,交换数据的传輸用户的控制信息,最后则是在通过RTP/UDP协议,这样可以使得音频数据从音频视频服务器中传输得到客户端播放器进行播放。
为了实现数据传输,本文则是基于C/S的流媒体方式中,其中对于服务器和具体的客户端主要是通过流媒体的传输协议进行实现。TCP协助中规定了“确认应答”机制和“超时传输”机制,这就意味者当发送发一旦发送消息以后,将实际的等待接收的消息为确认信息,但是假如一直没有收到接收方的信息的时候,他会一直处于等待状态,一直到等待超时。当等待的时候超过系统自身所设定的时间的时候,系统将会重新发送丢失的分组,另外需要注意的是在TCP的协议数据包传输很多字节开销的时候,因此实际上传输实施数据方面则是表现的不足之处。UDP协议中传输的具体的原则:“尽最大努力进行传输”并不对于已经发出的分组做任何的校验。根据这一特点可以在一定程度上弥补TCP协议在实时传输方面的具有不足。
随着流媒体实际的应用范围越来的越广泛,可以说现在的媒体数据相比较传统的媒体数据而言要大很多。但是受到通信网络错综复杂的限制,就目前的流媒体在系统的性能方面可以说受到了极大的挑战。因此这些方方面面都是需要进一步的提高。
二、基于DASH的流媒体自适用传输系统研究
本文在进行搭建DASH协议的流媒体主要是基于Ubuntul4.0上,其中对于具体的服务端则是采用普通的Apache服务器,另外就是客户端需要使用的DASH插件的VLC播放器。其中需要注意的是在具体的内容的准备的阶段则由视频方面的转码和具体的视频切换两个步骤。在具体的操作中,使用音频转码工具FFmpeg进行视频文件的转码和GPAC和MP4Box工具进行视频的文件切片。在具体的客户端,则是包含了MPD文件的解析、切片下载和自适应选择等三个步骤。
2.1系统总体构建
对于系统的总体的构建,主要是分为两部分,分别为片源端、服务器和客户端三个部分,其中对于片源端而言,主要是具有一定封装格式的视频节目上传至服务器,另外需要注意的是片源端到实际服务器的整体过程可以说比较的简单,本文主要研究的重点为用户的上传视频开始。
在Apache服务器端,一方面则是负责接收和具体的响应开放端收到的HTTP的请求。另外一方面则是对于视频文件进行流媒体相关的内容的准备性的工作。尤其是在自适应的客户端,一方面对于用户请求的下载和播放视频的切片。另外一方面则是通过自适应模块选择出和网络宽带匹配下的一片最佳码率。具体的系统总体构架图如图2-1所示。
2.2服务端内容准备
2.2.1FFmpeg视频转码
对于具体的用户上传的单一码率文件而言,假如在此基础上要实现自适用的传输,这就需要我们准备多个码率视频版本,并将各个码率切片。首先本文将上传单一的码率视频文件转换成400kbps、800kbps和1.5Mbps三个码率等级。下面则是本文将利用相关的软件FFmpeg工具进行实现视频文件的相关转码。
首先需要准备的则是FFmpeg工具的环境,进行安装,但是在具体安装的时候需要依赖以下工具包:yasm(libx264 需要 yasm,所以先安装 yasm);libx264;libfaac;libmp3lame;libtheora;libvorbis;libxvid;libxext;libxfixes。从FFmpeg相关的官网下载最新的FFmpeg源代码的包,之后在进行解压,解压以后在进行编译,具体的编译的命令如下:
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-version3
--enable-nonfree
--enable-postproc --enable-pthreads --enable-libfaac --enable-libmp3lame
--enable-libtheora
--enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis
make
make install
至此,FFmpeg 安装完成,查看 FFmpeg 安装是否成功可用命令 ffmpeg –version。
在进行对于多个码率视频文件进行相关的转码的时候,一个比较重要的要求则是对于I帧的位置,假如I帧不在不同质量之间进行对准,则对于具体端的长度不互相的匹配。使用的过程中,难以做到质量之间的切换。为了确保用户之间的不同质量切换,需要在具体的转码过程中,必须强行的从I帧的位置进行编码。
2.2.2MP4Box视频切片
在进行MP4Box主要是由GPAC发布的多媒体封装性的程序。从具体的GPAC官网可以获得已经发布性的版本,在具体的安装以后,在此基础上就可以获取DASH切片,但是在此过程中,需要注意的是,当在进行MP4编码文件的时候,需要输入正确的参数,这样可以获取每一段I帧。在此基础上本文使用的是MP4Box版本,具体的0.6.2,具体的命名的切片如下:
MP4Box -dash 2000 -rap -frag-rap -profile onDemand -out [path/to/outpout.file]vid1.mp4
vid2.mp4 aud1.mp4 aud2.mp4
-dash [DURATION]:启用 DASH 功能,创建设置的持续时间的段。
-rap -frag-rap:强制段以随机接入点开始(I 帧开始)。 -profile [PROFILE]:MPEG-DASH 配置文件。
-out [path / to / outpout.file]:输出文件位置。 此参数是可选的,默认情况下,MP4box 将在当前目录中创建一个 output.mpd 文件和相应的 output.mp4 文件。-in [path / to / input1.file]:指示输入 mp4 文件的位置,可以是视频或音频文件。
2.3 VLC概述
VLC (Video Lan Client)主要是一款比较开源的软件,可以做简单的流媒体的播放使用,该软件的实际应用可以说非常广泛,具有比较好的跨平台以及多平台的支持,并在此基础上支持多种的编码各种,VLC的优势在于其插件化的设计,根据相关的加载方式,其中具体的插件可以内置插件和动态载入插件,并在实际运行的过程中,插件会随着具体的使用完毕,从而进行动态的释放。这个时候的新插件会继续的加载进来,libvlc.dll 是 VLC 的一个重要内置插件,主要ᨀ供音视频输出、流接入、模块管理等的接口它是 VLC 的核心。表 2.2 示出了 VLC-DASH 插件中主要的类,这些类分布在插件的 5 個模块中。
三、结束语
本文首先则是对于流媒体进行了相关技术方面的概述,之后在基于 DASH 流媒体自适应系统的搭建。首先,详细阐述了服务端内容准备阶段的视频转码和视频切片步骤。在视频转码时要注意强制 I 帧的原则,在视频切片时要注意选择合适 Group 的大小,这些都为视频数据在播放端重建以及播放中速率的切换提供保证。其次,研究了 VLC 客户端播放器中 DASH 插件的源码,论述了每个模块的功能及实现方法,分析了其中的自适应策略。
参考文献:
[1]吴桦,王凌,程光. 基于DASH流媒体的TCP拥塞控制算法优化[J]. 计算机研究与发展,2019,v.56(09):165-176.
[2]吴晓娜. 全景视频流媒体传输优化技术[D]. 上海交通大学,2019.
[3]田旺. 基于DASH的全景视频传输技术研究[D]. 北京邮电大学,2019.
[4]韩煦,张国强,高茜. 基于SVC与多网络接口的DASH调度算法[J]. 计算机工程,2019,v.45;No.508(12):249-254.
[5]亚历山大·吉拉德,张少波. 用于在模板模式下有效支持短加密区间的系统和方法:,CN106452759B[P]. 2019.
[6]托马斯·席尔,托马斯·维尔特,托马斯·豪施泰因,等. 用于从服务器向客户端发送媒体内容的无线资源管理设备及方法:,CN104041111B[P]. 2019.