自适应码率(ABR)直播流(必须使用HDS或HLS方式播放,rtmp://方式无法播放。)

三种方式实现

1、编码器推多路同源不同码率的视频,然后通过smil文件汇集成一个组来播放。

2、配置了wowza转码后,wowza根据模板生成多个流,默认在模板下方可以汇集多个流使用ngrp:aa_all这样的方式来实现。

3、使用wowza转码后,在模板中没有汇集,使用smil的方式来实现。



编码器推多路流,通过smil播放

用flash live media encoder 推2路(或)流到wowza服务器如:aa1、aa2


aa1:360k码率

aa2:160k码率


在wowza [install-dir]/content目录下新建一个文件bb.smil(.smil不可改变;bb可随意变)文件内容如下:


<smil>
   <head>
   </head>
   <body>
       <switch>
           <video src="aa1" system-bitrate="360000"/> (注意后面360000要依据编码器设定实际码率设定,否则不能自动切换)
           <video src="aa2" system-bitrate="160000"/>
       </switch>
   </body>
</smil>


使用Adobe Flash player(Flash HTTP)播放:

http://[wowza-ip-address]:1935/live/smil:bb.smil/manifest.f4m


使用Apple iOS设备播放:

http://[wowza-address]:1935/live/smil:bb.smil/playlist.m3u8





Wowza转出多路流通过ngrp播放

如果配置了wowza转码,在转码模板下方有一个ngrp的汇聚流,播放时使用ngrp:aa_all也可以实现自适应播放。

模拟场景:编码器推一路流(aa)到wowza服务器,通过转码模板wowza转码生成多路不同码率的流,如aa_360p,aa_160p,默认模板下方还会有一个聚合流<Name>${SourceStreamName}_all</Name> 如:aa_all。那么使用如下地址播放可以实现自适应流播放:

flash HTTP:


http://[wowza-ip-address]:1935/live/ngrp:aa_all/manifest.f4m


Appale iOS设备:


http://[wowza-ip-address]:1935/live/ngrp:aa_all/playlist.m3u8



Wowza转码出多路流,通过smil播放

把Wowza转码出来流如:aa_360p aa_160p汇聚到smil文件中(参考第一种方法),通过smil的方式播放。