在移动通信网络状态下,由于带宽不够,可能导致视频无法正常播放,这会影响用户体验,因此Apple的Appstore要求你最好在提供音视频流的同时还要提供一个纯音频的流。
这篇文章介绍了Wowza Streaming Engine如何自动将音频过滤出来,在M3u8索引中形成一个单独的纯音频流。注意:按Apple AppStore的政策,在3G网络下音频码率不要超过192kbps。
最后,这个功能既适用于点播业务,也适用于直播业务;可以针对多码率码流,也可以针对单个的码流。
配置一个直播输入流
在M3u8索引中生成纯音频的码率
在SMIL文件的多码率配置中加入一个纯音频的码率
改进纯音频和其它流之间的切换
element("livestream")?>
如果是仅仅针对直播业务,请编辑Cupertino Streaming Packetizer参数,如果即包含直播业务也包含点播业务,还要编辑HTTP Streamers Cupertino Settings参数。
至此,配置完成。此时,Wowza media server将针对每一个输入流,创建和打包出一个纯音频的Http流,并将其加入到M3u8的索引文件中。 如果你直接播放这个直播流或点播流,Wowza media server 会在M3u8索引中包含2个码率,一个是音视频混合的源流,一个是提取出来的纯音频流。 只要直播流或点播文件中的音频码率小于等于192kbps,就符合Apple App Store 关于在3G网络下的应用政策。
如果你用Synchronized Multimedia Integration Language (SMIL) 文件来配置一个多码率流,并从其中一个流中提取音频出来做为另一个码流。你需要在你要提取音频的<video>节点下添加<param name="audioOnly" value="TRUE" valuetype="data"/>。 例如,假设你有两个直播流:hi-livestream 和 low-livestream,你希望再增加一个纯音频流,它的音频是从low-livestream提取的。那么,这个SMIL文件应该如下:
同样的,对于2个码流的点播业务来说,SMIL文件应该如下:
你可以直接用下面的URL来直接测试这个纯音频流:
从iOS 6以后,iOS原生播放器对纯音频流和其它流之间的切换有了一些变化。对于Wowza Streaming Engine 和Wowza Media Server 3.5.1及以上版本,要改进流的切换,你需要配置cupertinoPacketizeAllStreamsAsTS参数。
这篇文章介绍了Wowza Streaming Engine如何自动将音频过滤出来,在M3u8索引中形成一个单独的纯音频流。注意:按Apple AppStore的政策,在3G网络下音频码率不要超过192kbps。
最后,这个功能既适用于点播业务,也适用于直播业务;可以针对多码率码流,也可以针对单个的码流。
内容目录
配置一个直播输入流
在M3u8索引中生成纯音频的码率
在SMIL文件的多码率配置中加入一个纯音频的码率
改进纯音频和其它流之间的切换
配置一个直播应用并发布一个直播流
element("livestream")?>
生成纯音频流
如果是仅仅针对直播业务,请编辑Cupertino Streaming Packetizer参数,如果即包含直播业务也包含点播业务,还要编辑HTTP Streamers Cupertino Settings参数。
通过Wowza Streaming Engine Manager管理界面来配置
针对Wowza直播应用
- 在Wowza Streaming Engine Manager管理界面点击Applicationstab页,再点击你的Wowza直播应用(例如live)。
- 在这个应用首页的Propertiestab页,在Quick Links导航条上点击Cupertino Streaming Packetizer。
- 在Cupertino Streaming Packetizer参数旁点击Edit,在cupertinoCreateAudioOnlyRendition边上的Enabled复选框打勾,然后将其设置为True。
- 点击Save,然后重启应用,让参数生效。
针对直播和点播应用
- 在Wowza Streaming Engine Manager管理界面点击Applicationstab页,再点击你的Wowza应用。
- 在这个应用首页的Propertiestab页,在Quick Links导航条上点击HTTP Streamers Cupertino Settings。
- 在HTTP Streamers Cupertino Settings参数旁点击Edit,在cupertinoAutoCreateMultibitratePlaylist边上的Enabled复选框打勾,然后将其设置为True。
- 重复上面的步骤,将下面的参数也做好配置:
参数名值cupertinoUseCalculatedVideoBitrate true cupertinoUseCalculatedAudioBitrate true cupertinoDefaultVideoBitrate 250000 cupertinoMaxCalculatedVideoBitrate 0 cupertinoDefaultAudioBitrate 64000 cupertinoMaxCalculatedAudioBitrate 64000 cupertinoBitrateAdjustmentFactor 110
- 点击Save,然后重启应用,让参数生效。
注意: 在直播流中继(live repeater)架构下,你需要在源(Origin)和边缘(edge)上都要做以上的参数配置。
用XML来配置
针对Wowza直播应用
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<LiveStreamPacketizer>/<Properties>部分加入下面的参数:
<Property> <Name>cupertinoCreateAudioOnlyRendition</Name> <Value>true</Value> <Type>Boolean</Type> </Property>
- 重启Wowza Streaming Engine,让参数生效。
针对Wowza直播和点播应用
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>部分加入下面的参数:
<Property> <Name>cupertinoAutoCreateMultibitratePlaylist</Name> <Value>true</Value> <Type>Boolean</Type> </Property> <Property> <Name>cupertinoUseCalculatedVideoBitrate</Name> <Value>true</Value> <Type>Boolean</Type> </Property> <Property> <Name>cupertinoUseCalculatedAudioBitrate</Name> <Value>true</Value> <Type>Boolean</Type> </Property> <Property> <Name>cupertinoDefaultVideoBitrate</Name> <Value>250000</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoMaxCalculatedVideoBitrate</Name> <Value>0</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoDefaultAudioBitrate</Name> <Value>64000</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoMaxCalculatedAudioBitrate</Name> <Value>64000</Value> <Type>Integer</Type> </Property> <Property> <Name>cupertinoBitrateAdjustmentFactor</Name> <Value>110</Value> <Type>Integer</Type> </Property>
- 重启Wowza media server,让参数生效。
至此,配置完成。此时,Wowza media server将针对每一个输入流,创建和打包出一个纯音频的Http流,并将其加入到M3u8的索引文件中。 如果你直接播放这个直播流或点播流,Wowza media server 会在M3u8索引中包含2个码率,一个是音视频混合的源流,一个是提取出来的纯音频流。 只要直播流或点播文件中的音频码率小于等于192kbps,就符合Apple App Store 关于在3G网络下的应用政策。
注意: 在直播流中继(live repeater)架构下,你需要在源(Origin)和边缘(edge)上都要做以上的参数配置。
在SMIL文件的多码率配置中加入一个纯音频的码率
如果你用Synchronized Multimedia Integration Language (SMIL) 文件来配置一个多码率流,并从其中一个流中提取音频出来做为另一个码流。你需要在你要提取音频的<video>节点下添加<param name="audioOnly" value="TRUE" valuetype="data"/>。 例如,假设你有两个直播流:hi-livestream 和 low-livestream,你希望再增加一个纯音频流,它的音频是从low-livestream提取的。那么,这个SMIL文件应该如下:
<smil> <head> </head> <body> <switch> <video src="hi-livestream" system-bitrate="500000"/> <video src="lo-livestream" system-bitrate="250000"/> <video src="lo-livestream" system-bitrate="64000"> <param name="audioOnly" value="TRUE" valuetype="data"/> </video> </switch> </body> </smil>
<smil> <head> </head> <body> <switch> <video src="hi-sample.mp4" system-bitrate="500000"/> <video src="lo-sample.mp4" system-bitrate="250000"/> <video src="lo-sample.mp4" system-bitrate="64000"> <param name="audioOnly" value="TRUE" valuetype="data"/> </video> </switch> </body> </smil>
http://[wowza-ip-address]:1935/[app-name]/[stream-name]/playlist.m3u8?wowzaaudioonly
改进纯音频流和其它之间的切换
从iOS 6以后,iOS原生播放器对纯音频流和其它流之间的切换有了一些变化。对于Wowza Streaming Engine 和Wowza Media Server 3.5.1及以上版本,要改进流的切换,你需要配置cupertinoPacketizeAllStreamsAsTS参数。
用Wowza Streaming Engine Manager管理界面来配置
针对Wowza直播应用
- 在Wowza Streaming Engine Manager管理界面,点击Applicationstab页,然后点击应用名(例如live)。
-
在这个直播应用主界面的Propertiestab页,点击Quick Links导航条上的Cupertino Streaming Packetizer链接。
- 点击Cupertino Streaming Packetizer部分的Edit,在cupertinoPacketizeAllStreamsAsTS边上的Enabled复选框打上勾,并将其设置True。
- 点击Save,然后重启直播应用,让参数生效。
针对Wowza直播应用和点播应用
- 在Wowza Streaming Engine Manager管理界面,点击Applicationstab页,然后点击应用名。
- 在这个应用主界面的Propertiestab页,点击Quick Links导航条上的HTTP Streamers Cupertino Settings链接。
- 点击HTTP Streamers Cupertino Settings部分的Edit,在cupertinoPacketizeAllStreamsAsTSVOD边上的Enabled复选框打上勾,并将其设置为True。
- 点击Save,然后重启Wowza应用,让参数生效。
用XML来配置
针对Wowza直播应用
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<LiveStreamPacketizer>/<Properties>部分添加下面的参数:
<Property> <Name>cupertinoPacketizeAllStreamsAsTS</Name> <Value>true</Value> <Type>Boolean</Type> </Property>
- 重启Wowza应用,让参数生效。
针对Wowza直播应用和点播应用
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>部分添加下面的参数:
<Property> <Name>cupertinoPacketizeAllStreamsAsTS</Name> <Value>true</Value> <Type>Boolean</Type> </Property>
- 重启Wowza应用,让参数生效。