多协议、性能稳定、丰富API的流媒体服务器软件
如何创建一个带有纯音频以符合Apple Appstore多码率HLS流?
element('share');?>
在移动通信网络状态下,由于带宽不够,可能导致视频无法正常播放,这会影响用户体验,因此Apple的Appstore要求你最好在提供音视频流的同时还要提供一个纯音频的流。

这篇文章介绍了Wowza Streaming Engine如何自动将音频过滤出来,在M3u8索引中形成一个单独的纯音频流。注意:按Apple AppStore的政策,在3G网络下音频码率不要超过192kbps。

最后,这个功能既适用于点播业务,也适用于直播业务;可以针对多码率码流,也可以针对单个的码流。

内容目录


配置一个直播输入流

在M3u8索引中生成纯音频的码率
用Wowza Streaming Engine Manager 管理界面来配置
用XML来配置

在SMIL文件的多码率配置中加入一个纯音频的码率

改进纯音频和其它流之间的切换
用Wowza Streaming Engine Manager 管理界面来配置
用XML 来配置


配置一个直播应用并发布一个直播流



element("livestream")?>

生成纯音频流


如果是仅仅针对直播业务,请编辑Cupertino Streaming Packetizer参数,如果即包含直播业务也包含点播业务,还要编辑HTTP Streamers Cupertino Settings参数。

通过Wowza Streaming Engine Manager管理界面来配置


针对Wowza直播应用


  1. 在Wowza Streaming Engine Manager管理界面点击Applicationstab页,再点击你的Wowza直播应用(例如live)。


  2. 在这个应用首页的Propertiestab页,在Quick Links导航条上点击Cupertino Streaming Packetizer


  3. Cupertino Streaming Packetizer参数旁点击Edit,在cupertinoCreateAudioOnlyRendition边上的Enabled复选框打勾,然后将其设置为True


  4. 点击Save,然后重启应用,让参数生效。


针对直播和点播应用


  1. 在Wowza Streaming Engine Manager管理界面点击Applicationstab页,再点击你的Wowza应用。


  2. 在这个应用首页的Propertiestab页,在Quick Links导航条上点击HTTP Streamers Cupertino Settings


  3. HTTP Streamers Cupertino Settings参数旁点击Edit,在cupertinoAutoCreateMultibitratePlaylist边上的Enabled复选框打勾,然后将其设置为True。


  4. 重复上面的步骤,将下面的参数也做好配置:


    参数名
    cupertinoUseCalculatedVideoBitrate true
    cupertinoUseCalculatedAudioBitrate true
    cupertinoDefaultVideoBitrate 250000
    cupertinoMaxCalculatedVideoBitrate 0
    cupertinoDefaultAudioBitrate 64000
    cupertinoMaxCalculatedAudioBitrate 64000
    cupertinoBitrateAdjustmentFactor 110


  5. 点击Save,然后重启应用,让参数生效。
注意: 在直播流中继(live repeater)架构下,你需要在源(Origin)和边缘(edge)上都要做以上的参数配置。

用XML来配置


针对Wowza直播应用


  1. 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<LiveStreamPacketizer>/<Properties>部分加入下面的参数:

    <Property>
        <Name>cupertinoCreateAudioOnlyRendition</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>
  2. 重启Wowza Streaming Engine,让参数生效。

针对Wowza直播和点播应用


  1. 用文本编辑器打开[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>
  2. 重启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-livestreamlow-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>
同样的,对于2个码流的点播业务来说,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>
你可以直接用下面的URL来直接测试这个纯音频流:

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直播应用


  1. 在Wowza Streaming Engine Manager管理界面,点击Applicationstab页,然后点击应用名(例如live)。


  2. 在这个直播应用主界面的Propertiestab页,点击Quick Links导航条上的Cupertino Streaming Packetizer链接。


  3. 点击Cupertino Streaming Packetizer部分的Edit,在cupertinoPacketizeAllStreamsAsTS边上的Enabled复选框打上勾,并将其设置True


  4. 点击Save,然后重启直播应用,让参数生效。


针对Wowza直播应用和点播应用


  1. 在Wowza Streaming Engine Manager管理界面,点击Applicationstab页,然后点击应用名。


  2. 在这个应用主界面的Propertiestab页,点击Quick Links导航条上的HTTP Streamers Cupertino Settings链接。


  3. 点击HTTP Streamers Cupertino Settings部分的Edit,在cupertinoPacketizeAllStreamsAsTSVOD边上的Enabled复选框打上勾,并将其设置为True


  4. 点击Save,然后重启Wowza应用,让参数生效。

用XML来配置


针对Wowza直播应用


  1. 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<LiveStreamPacketizer>/<Properties>部分添加下面的参数:

    <Property>
        <Name>cupertinoPacketizeAllStreamsAsTS</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>
  2. 重启Wowza应用,让参数生效。


针对Wowza直播应用和点播应用


  1. 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>部分添加下面的参数:

    <Property>
        <Name>cupertinoPacketizeAllStreamsAsTS</Name>
        <Value>true</Value>
        <Type>Boolean</Type>
    </Property>
  2. 重启Wowza应用,让参数生效。