多协议、性能稳定、丰富API的流媒体服务器软件
提示播放终端是否可以缓存Http Live Streaming流媒体内容
Http Live Streaming 的M3U8 playlist 中有一个叫做 EXT-X-ALLOW-CACHE 的tag,它提示终端播放器是否可以缓存HLS的流媒体内容。 这篇文章介绍了如何让Wowza Streaming Engine在输出的chunklist.m3u8索引列表中添加EXT-X-ALLOW-CACHE tag。

关于 EXT-X-ALLOW-CACHE tag



M3U8 索引列表中的 EXT-X-ALLOW-CACHE tag 给终端播放器了一个提示,告诉它是否可以将下载下来的TS片段缓存下来。
这个Tag 可以出现在索引文件的任何位置,但只能有一个,并且对索引列表中的所有TS文件有效,格式如下:
#EXT-X-ALLOW-CACHE:<YES|NO>
	
如果索引列表中包含EXT-X-ALLOW-CACHE tag 并且它的值是NO,那么终端播放器在播放完毕每一个TS文件后就应该及时删除它,不能缓存这些TS文件。否则,终端播放器就可以无限期地缓存这些TS文件。 你若将它设置为YES,就是告诉终端播放器,可以缓存这些内容。

注意:对于VOD业务,这个缓存还有点作用;但对于直播业务,建议不要缓存了,总不能让用户看过时的内容吧。 如果索引列表中没有设置这个Tag,那么终端播放器自己决定是否要缓存。


Wowza服务器上的配置



下面介绍了如何在Wowza Streaming Engine服务器上做配置,以让Wowza的M3u8索引列表中添加EXT-X-ALLOW-CACHE tag 。 你可以在你的Wowza应用配置文件Application.xml中添加以下参数:

对于这些参数,值true允许缓存(#EXT-X-ALLOW-CACHE:YES),值false 不允许缓存(#EXT-X-ALLOW-CACHE:NO)。如果没有设置这个参数,将默认使用下面的策略:

  • 对于VOD业务,这个Tag不会出现。
  • 对于直播(Live)和时移(nDVR)业务,这个Tag将被设置为#EXT-X-ALLOW-CACHE:NO

注意:下面的这些XML中的配置,目前都可以在Wowza Streaming Engine Manger管理界面去设置。


VOD业务中的配置

  1. 配置一个VOD应用,具体请参考如何开始一个VOD点播,视频文件存放在哪里?

  2. 用文本编辑器打开[install-dir]/conf/[application]Application.xml文件,在HTTPStreamer/Properties部分添加如下参数:
    <Property>
    	<Name>vodCupertinoPlaylistAllowCaching</Name>
    	<Value>true</Value>
    	<Type>Boolean</Type>
    </Property>
    <Property>
    	<Name>cupertinoEnableExtXAllowCache</Name>
    	<Value>true</Value>
    	<Type>Boolean</Type>
    </Property>
             
  3. 重启Wowza Streaming Engine。


直播(Live)业务的配置

  1. 参考下面的资料,建立一个Wowza直播应用:

    element("livestream")?>
  2. 用文本编辑器打开[install-dir]/conf/[application]Application.xml文件,在LiveStreamPacketizer/Properties部分添加如下参数:
    <Property>
    	<Name>cupertinoAllowCaching</Name>
    	<Value>true</Value>
    	<Type>Boolean</Type>
    </Property>
  3. 重启Wowza Streaming Engine。


时移(nDVR)业务的配置

  1. 如何配置时移(nDVR)应用的详细信息,请参考如何为直播流配置nDVR功能?

  2. 用文本编辑器打开[install-dir]/conf/[application]Application.xml文件,在HTTPStreamer/Properties部分添加如下参数:
    <Property>
    	<Name>dvrCupertinoPlaylistAllowCaching</Name>
    	<Value>true</Value>
    	<Type>Boolean</Type>
    </Property>
  3. 重启Wowza Streaming Engine。