流媒体技术世界——分享技术,增值服务
如何创建一个带有纯音频以符合Apple Appstore多码率HLS流?
在移动通信网络状态下,由于带宽不够,可能导致视频无法正常播放,这会影响用户体验,因此Apple的Appstore要求你最好在提供音视频流的同时还要提供一个纯音频的流。

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

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

内容目录


配置一个直播输入流

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

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

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


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





生成纯音频流


如果是仅仅针对直播业务,请编辑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应用,让参数生效。



匿名用户
评论

我们的地址


北京市朝阳区管庄西里建基商务楼423室


邮编:100024

关于我们


北京联方信科信息技术有限责任公司


官网:www.ttstream.com

联系我们


王经理:phone


柳经理:phone

京ICP备14033868号-2