如何实现多码率自适应?
这篇文章介绍了Wowza®Media Server实现多码率自适应(ABR)的详细步骤。
VOD点播业务的多码率自适应
面向Adobe Flash播放器、Apple iOS设备、Microsoft Silverlight播放器的多码率自适应(ABR)流媒体需要你事先按照需要的码率大小,将一个视频内容预先编码为多个不同码率的视频文件。为了保持正常和平滑的切换,不同码率的多个文件的关键帧必须要对齐。这是必须在编码的时候通过设置正确的关键帧间隔和帧率来完成的。当你完成这些准备后,请将这些视频文件拷贝到[install-dir]/content 目录下,然后创建一个同步多媒体集成语言(SMIL)文件将多个不同码率的文件组织在一起。
例如,一个同样的VOD内容有下面四个不同码率的文件:
· bigbuckbunny_450.mp4 (450kbps total bitrate)
· bigbuckbunny_750.mp4 (750kbps total bitrate)
· bigbuckbunny_1100.mp4 (1100kbps total bitrate)
· bigbuckbunny_1500.mp4 (1500kbps total bitrate)
用一个文本编辑器在[install-dir]/content文件夹下创建一个名字为bigbuckbunny.smil的SMIL文件,包含下面的内容:
Code:
你可以看到在里面的 实体,它表示了每一个待播放的视频内容。system-bitrate 是这个文件的总码率(单位bits-per-second)(包括音频和视频)。
注意:你最好按码率大小从低向高的顺序来组织不同的码率,就像上面的例子那样。如果你没有从最低的码率开始按增序组织,可能所有播放器都无法实现码率自适应功能。
Microsoft Smooth流媒体只能在视频之间切换,音频将采用下面第一个文件中的音频轨道。如果你想采用第一个文件意外的另外一个音频轨道,你可以在中添加一个 实体。例如:
注意:
· 当使用Adobe HDS (San Jose) 或 Apple HLS(Cupertino) 流媒体技术时, 实体将被忽略。
· JWplayer和Flowplayer采用客户端侧的XML文件来描述每一个码率的内容文件,不是本文上面介绍的服务端SMIL文件。它们都使用BWCheck 模块。
VOD 播放
Adobe Flash 播放器 (San Jose/Adobe HDS)
针对Wowza Media Server 3.5.0及以上版本,双击[install-dir]/examples/VideoOnDemandStreaming/FlashHTTPPlayer/player.html, 输入下面的信息,然后点击Connect 按钮。
Stream: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/manifest.f4m
Apple iOS 设备 (Cupertino/Apple HLS)
在iOS设备的Safari浏览器上输入下面的URL:
URL: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/playlist.m3u8
Microsoft Silverlight (SmoothStreaming)
针对Wowza Media Server 3.5.0及更高版本,双击[install-dir]/examples/VideoOnDemandStreaming/SilverlightPlayer/player.html, 输入如下信息, 然后点击Connect按钮。
Stream: http://[wowza-ip-address]:1935/vod/smil:bigbuckbunny.smil/Manifest
默认情况下,Microsoft Smooth 流媒体将将为manifest data 实时地计算内容我呢见的视频码率和音频码率. 如果你希望使用Wowza Media Server 使用SMIL文件中的码率信息,你需要在[install-dir]/conf/[application]/Application.xml文件的HTTPStreamer/Properties添加下面的属性设置:
Code:
smoothStreamingUseSMILBitrates
true
Boolean
当在这个配置下运行时,Wowza Media Server 将认为视频和音频的system-bitrate 的数值仅仅针对视频和音频自己。
Adobe Flash Player (RTMP)
针对Adobe Flash 的动态流传输,则需要在客户端做一定的工作。下面的资料展现了如何在Flash里实现动态流传输的详细步骤:Dynamic streaming in Flash (part 1)Dynamic streaming in Flash (part 2)Dynamic streaming in Flash (part 3)当你采用Wowza Media Server的Adobe HTTP Dynamic Streaming (Adobe HDS)时,最好打开dynamic stream 标签,它将提供更精确的带宽计算能力。要打开dynamic stream 标签,请打开[install-dir]/conf/[application]/Application.xml文件,在Streams/Properties 里添加下面的属性:
Code:
enableDynamicStreamMarkers
true
Boolean
注意: Dynamic stream 标签在Wowza Media Server 2.2.0及更高版本中是默认打开的。
直播业务的多码率自适应
面向Adobe Flash播放器、Apple iOS设备、Microsoft Silverlight播放器的直播业务多码率自适应(ABR)需要你的编码器能够从一个直播源生成多个不同码率的直播流并且关键帧要对齐。你同样可以用一个SMIL文件将这些流组织在一起。
例如,假定编码器输出了三个不同的码率的直播流:
· myStream_700 (700kbps total bitrate)
· myStream_350 (350kbps total bitrate)
· myStream_200 (200kbps total bitrate)
用一个文本编辑器,在[install-dir]/content文件夹下创建一个名称为myStream.smil的SMIL文件。内容如下:
你可以看到在中有一个 实体代表了每一个码率的直播流。system-bitrate 的数值代表了每一个直播流的总码率(单位bits-per-second)。
注意:你最好按码率大小从低向高的顺序来组织不同的码率,就像上面的例子那样。如果你没有从最低的码率开始按增序组织,可能所有播放器都无法实现码率自适应功能。
Microsoft Smooth流媒体只能在视频之间切换,音频将采用下面第一个文件中的音频轨道。如果你想采用第一个文件意外的另外一个音频轨道,你可以在中添加一个 实体。例如:
注意:
· 当使用Adobe HDS (San Jose) 或 Apple HLS(Cupertino) 流媒体技术时, 实体将被忽略。
· JWplayer和Flowplayer采用客户端侧的XML文件来描述每一个码率的内容文件,不是本文上面介绍的服务端SMIL文件。它们都使用BWCheck 模块。
直播播放
Adobe Flash Player (SanJose/Adobe HDS)
针对Wowza Media Server 3.5.0及更高版本,双击[install-dir]/examples/LiveVideoStreaming/FlashHTTPPlayer/player.html, 输入如下信息,然后点击Connect 按钮。
Stream: http://[wowza-ip-address]:1935/live/smil:myStream.smil/manifest.f4m
Apple iOS 设备 (Cupertino/Apple HLS)
在iOS设备的Safari浏览器上输入如下的URL:
URL: http://[wowza-ip-address]:1935/live/smil:myStream.smil/playlist.m3u8
Microsoft Silverlight (SmoothStreaming)
针对Wowza Media Server 3.5.0及更高版本,双击[install-dir]/examples/LiveVideoStreaming/SilverlightPlayer/player.html, 输入下面的信息,软后点击Connect 按钮。
Stream: http://[wowza-ip-address]:1935/live/smil:myStream.smil/Manifest
默认情况下,Microsoft Smooth 流媒体将将为manifest data 实时地计算内容我呢见的视频码率和音频码率. 如果你希望使用Wowza Media Server 使用SMIL文件中的码率信息,你需要在[install-dir]/conf/[application]/Application.xml文件的HTTPStreamer/Properties添加下面的属性设置:
smoothStreamingUseSMILBitrates
true
Boolean
当在这个配置下运行时,Wowza Media Server 将认为视频和音频的system-bitrate 的数值仅仅针对视频和音频自己。
Adobe Flash Player (RTMP)
针对Adobe Flash 的动态流传输,则需要在客户端做一定的工作。下面的资料展现了如何在Flash里实现动态流传输的详细步骤:Dynamic streaming in Flash (part 1)Dynamic streaming in Flash (part 2)Dynamic streaming in Flash (part 3)当你采用Wowza Media Server的Adobe HTTP Dynamic Streaming (Adobe HDS)时,最好打开dynamic stream 标签,它将提供更精确的带宽计算能力。要打开dynamic stream 标签,请打开[install-dir]/conf/[application]/Application.xml文件,在Streams/Properties 里添加下面的属性:
enableDynamicStreamMarkers
true
Boolean
注意: Dynamic stream 标签在Wowza Media Server 2.2.0及更高版本是默认打开的。
Wowza Streaming Engine 4是业界功能强大、API接口丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地。
京ICP备09015132号-996 | 网络文化经营许可证京网文[2017]4225-497号 | 违法和不良信息举报电话:4006561155
© Copyright 2000-2023 北京哲想软件有限公司版权所有 | 地址:北京市海淀区西三环北路50号豪柏大厦C2座11层1105室