} } }

    HTTP Adaptive Streaming

    添加时间:2013-7-26 点击量:

    HTTP Adaptive Streaming


    By ahuner


    HTTP Adaptive Streaming简称HAS,中文名称为码流自适应。跟着这几年移动终端对视频播放需求的增长,HAS技巧慢慢火热起来。


    HAS技巧中流媒体办事器端须要筹办各类码率的媒体数据,然后对每种码率的媒体数据都进行切割分片,每个切片时长一向,可能2~10秒钟,每个切片由一个完全的GOP序列构成,一个GOP序列里面有1个或者多个I帧,GOP序列的第一个帧必须是I帧,并且每个切片都能零丁的解码播放显示。切片时须要建树每种码率切片的索引文件,以便客户端定位播放。


    HAS技巧中流媒体播放器须要按照本身的收集带宽选择不合码率的切片文件播放。播放器起首所率的切片索引信息,然后选择性的播放切片文件,若是半途带宽收紧,可随时切换到低码率的切片文件播放,因为流媒体办事器已经做好了不合码率切片文件的时候同步和图像同步,他们仅仅是码率和辨别率不合,所占用的收集传输带宽不合罢了。


    HAS技巧本质上是流媒体办事器筹办各类码率的码流,所有的码流都是雷同时段完全同一图像的视音频数据,客户端播放器按照收集带宽变更当令的调剂不合的码流, 完成带宽变更时图像无卡顿无花屏的播放。HAS技巧须要办事器端和客户端完美的共同才干显现其上风。


    HAS技巧的实现体式格式如今有四种规划:Apple HTTP Live Streaming技巧、Microsoft Smooth Streaming技巧、Adobe HTTP Dynamic Streaming技巧、MPEG DASH技巧。


    传统的流媒体传输技巧一般为RTP/RTSP/RTCP,而HAS是基于HTTP的,具有以下上风:


    1、HTTP和谈的WEB办事器有很多,Lighttpd、Nginx、Apache和IIS,哄骗WEB办事器的缓存机制能做好高并发流媒体的分发;


    2、播放器按照收集带广大小动态切换不合码率的媒体源,具有杰出的兼容性;


    3、HAS技巧都由技巧实力强大的公司牵头制订标准,靠得住实用。


    HAS技巧由互联网视频技巧成长而生,若是将其应用到传统行业,也会带来不错的结果。


    一、Apple HTTP Live Streaming (HLS)


    文件切片格局为TS;


    索引文件为M3U8;


    支撑直播和时移;


    首要面向于iphone/ipad视频播放器,不过安卓平台也有播放器支撑该和谈,在PC上可直接用VLC测试;


    HLS和谈斗劲简单,可自行在任何平台上实现。


    流媒体办事器中HLS和谈切片文件:



    M3u8存储着TS文件列表,1.m3u8内容:
     


    playlist.m3u8存储1.m3u8和2.m3u8的切片码率,playlist.m3u8文件内容:



    HLS和谈标准文档:


    http://tools.ietf.org/html/draft-pantos-http-live-streaming-11


     


    二、Microsoft Smooth Streaming


    文件切片格局为MP4;


    索引文件为ism/ismc;


    支撑直播和时移;


    首要面向于WPhone视频播放器;


    须要IIS 7做WEB办事器,不过nginx 和Apache也有第三方模块支撑该和谈,播放器须要采取Silverlight技巧。


     


    录像存储文件列表为:


    LiveSmoothStream.ism


    LiveSmoothStream.ismc


    stream101.isma


    stream201.ismv


    stream202.ismv


     


    LiveSmoothStream.ism文件内容为:


    <?xml version=1.0 encoding=utf-16?>


    <smil xmlns=http://www.w3.org/2001/SMIL20/Language>


      <head>


        <meta name=clientManifestRelativePath content=LiveSmoothStream.ismc />


      </head>


      <body>


        <switch>


          <audio src=stream101.isma systemBitrate=64000 systemLanguage=eng>


            <param name=manifestOutput value=false valuetype=data />


            <param name=trackID value=101 valuetype=data />


            <param name=trackName value=audio101_eng valuetype=data />


          </audio>


          <video src=stream201.ismv systemBitrate=1200000 systemLanguage=und>


            <param name=manifestOutput value=false valuetype=data />


            <param name=trackID value=201 valuetype=data />


            <param name=trackName value=video valuetype=data />


          </video>


          <video src=stream202.ismv systemBitrate=600000 systemLanguage=und>


            <param name=manifestOutput value=false valuetype=data />


            <param name=trackID value=202 valuetype=data />


            <param name=trackName value=video valuetype=data />


          </video>


        </switch>


      </body>


    </smil>


     


    三、Adobe HTTP Dynamic Streaming (HDS)


    文件切片格局为FLV/F4V/MP4;


    索引文件为 f4m(此时的f4m仅仅是上方流文件的索引,而每个流文件又可碎片化,获得更正确的碎片索引信息)


    支撑直播和时移;



    录像存储文件列表为:


    hds_sample1_manifest.f4m


    sample1_150kbps.f4v


    sample1_700kbps.f4v


    sample1_1000kbps.f4v


    hds_sample1_manifest.f4m文件内容为:


    <manifest xmlns=http://ns.adobe.com/f4m/2.0>


    <media href=../hds-vod/sample1_150kbps.f4v.f4m bitrate=150/>


    <media href=../hds-vod/sample1_700kbps.f4v.f4m bitrate=700/>


    <media href=../hds-vod/sample1_1000kbps.f4v.f4m bitrate=1000/>


    </manifest>


     


    四、MPEG Dynamic Adaptive Streaming over HTTP(MPEG DASH)


    DASHEncoder: https://github.com/slederer/DASHEncoder


    DASHEncoder的依附有x264,ffmpeg,mp4box和mysql client libraries


    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: