如何将Wowza Streaming Engine配置为一个http caching origin?
在采用基于HTTP的流媒体传输方式(Apple HTTP Live Streaming (HLS))进行直播或点播流传输时,Wowza Streaming Engine可以被当作HTTP caching架构中的一个内容源(origin)。这篇文章介绍了如何配置你的Wowza应用以实现这个功能。
内容大纲
关于HTTP Caching Origin
要注意的配置问题
在Wowza Streaming Engine中创建一个HTTP Origin 类型的Application
配置参数说明
其它资源
关于HTTP caching origin
当你将Wowza Streaming Engine做为一个HTTP caching origin时:
-
1、在这个HTTP缓存架构中的边缘服务器(edge server)不是另一个Wowza Streaming Engine,而是普通的WEB服务器。这个边缘服务器将采用拉(HTTP PULL)的方式将内容从你的Wowza Streaming Engine将HTTP流拉到边缘上,并将内容缓存到边缘服务器上。
-
2、边缘服务器与扮演HTTP caching origin角色的Wowza Streaming Engine之间的HTTP通信是无状态的(基于session的通信无法实现这个功能)。也就说对于所有Edge服务器发来的HTTP请求,它在内部就只创建一个Session。这样就导致了下面的结果:
-
1、在播放请求的URL中,查询参数(query parameters)是不被支持的。这包括VOD点播中的wowzaplaystart 和 wowzaplayduration以及nDvr播放中的wowzadvrplayliststart和wowzadvrplaylistduration。
以及其它任何自定义参数(但这不包括NDVR播放功能必须的查询参数)。如果你带上了这些参数,只有当这个被请求的流在最初的初始化阶段才有用,后续请求的参数、不管是不是来自同一个播放器的,都将被忽略。
- 2、基于Session的一些信息(例如并发连接数)是不被支持的。
要注意的配置问题
为了让HTTP caching 正常工作,关于HTTP streaming的以下几点需要做出调整:
-
Wowza Streaming Engine中所有的playlist和manifest里面含有的session 标识的(_wXXXXXXXXX)数据都必须被删除掉。当你将Wowza Streaning Engine设置为一个Http caching origin时,系统会自动为你完成这个工作(具体请参见下面的配置)。
-
HTTP Cache的Header信息必须被设置为允许内容进行缓存。
-
媒体流的URL必须加上随机标识符(random identifiers),这样每一个编码器发送来的数据的session从缓存的角度看是唯一的。
在Wowza Streaming Engine中创建一个HTTP Origin 类型的Application
这部分介绍如何在Wowza服务器上创建一个Http caching origin类型的Application。如果你使用的是Wowza Streaming Engine产品,您可以通过Wowza Streaming Engine Manager的管理界面来创建这个应用。
如果你使用的是以前的Wowza Media Server产品,你需要编辑
[install-dir]/conf/[application]/Application.xml文件来实现这个功能。
- 在Wowza Streaming Engine Manager管理界面,点击Applications菜单,在面板中再点击Add Application。
- 在Add Application页面,点击Live HTTP Origin (针对直播流) 或 VOD HTTP Origin (针对点播流)。
- 在New Application 对话框中,填写Application的名字,再点击Add。
- 点击Save 来保存这个Application。
注意: 根据上面的截图,你可以看到HTTP Origin 应用只支持HTTP类型的流传输协议,不支持RTMP 和 RTSP 协议。
每一个HTTP流传输协议的HTTP cache origin相关的一些配置参数会自动按默认值被设置好。
如果你要改变这些默认值,可以点击
Propertiestab页,并在
Quick Links导航条上点击
HTTP Cache Origin。
请根据下面的
配置参数说明进行配置以及添加自定义参数。
配置参数说明
HTTP Streamer 相关参数
httpOriginMode
这个参数用于启用HTTP Origin 模式或者禁用这个模式。默认值是
on (启用)。
用Wowza Streaming Engine Manager 管理界面来配置
- 在Wowza Streaming Engine Manager管理界面,点击ApplicationsTab页,再点击你的HTTP Origin 应用。
- 在HTTP origin 应用界面的Propertiestab页,点击Quick Links导航条的HTTP Cache Origin。
- 在HTTP Cache Origin区域,确认httpOriginMode被设置为on。要禁用HTTP Origin 模式,点击Edit,在将其设置为off。
- 点击Save,重启application让配置生效。
用XML 来配置
- 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>中加入以下参数:
<!-- HTTP origin mode: on, off -->
<Property>
<Name>httpOriginMode</Name>
<Value>on</Value>
</Property>
重启Wowza Streaming Engine,让配置生效。
Apple HLS cache-control 参数
用Wowza Streaming Engine Manager 管理界面来配置
- 在Wowza Streaming Engine Manager管理界面,点击ApplicationsTab页,再点击你的HTTP Origin 应用。
- 在HTTP origin 应用界面的Propertiestab页,点击Quick Links导航条的HTTP Cache Origin。
- 在HTTP Cache Origin区域点击EDIT,做以下修改:
- 选择cupertinoCacheControlPlaylist边上的Enabled复选框,并将值设置为max-age=1。
- 选择cupertinoCacheControlMediaChunk边上的Enabled复选框,并将值设置为max-age=3600。
- 点击Save,重启application让配置生效。
用XML 来配置
- 用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>中加入以下参数:
<!-- Apple HLS: cache control -->
<Property>
<Name>cupertinoCacheControlPlaylist</Name>
<Value>max-age=1</Value>
</Property>
<Property>
<Name>cupertinoCacheControlMediaChunk</Name>
<Value>max-age=3600</Value>
</Property>
点击Save,重启application让配置生效。
说明:
- cupertinoCacheControlPlaylist设置playlist的HTTP caching header,单位是秒。
- cupertinoCacheControlMediaChunk设置media chunk的HTTP caching header,单位是秒。
MPEG-DASH cache-control 参数
下面是MPEG-DASH 流传输协议需要的相关参数:
注意: MPEG-DASH cache-control 参数,只在Wowza Streaming Engine 软件才支持。
用Wowza Streaming Engine Manager 管理界面来配置
- 在Wowza Streaming Engine Manager管理界面,点击Applications菜单,再点击你的HTTP origin application。
- 在HTTP origin application 界面的Propertiestab页,在Quick Links导航条上点击HTTP Cache Origin。
- 在HTTP Cache Origin区域,点击Edit,做如下改变:
- 选择mpegdashCacheControlPlaylist边上的Enabled复选框,将值设置为max-age=1。
- 选择mpegdashCacheControlMediaChunk边上的Enabled复选框,将值设置为max-age=3600。
- 点击Save,然后重启应用,让配置生效。
用XML来配置
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>中加入以下参数:
<Property>
<Name>mpegdashCacheControlPlaylist</Name>
<Value>max-age=1</Value>
<Type>String</Type>
</Property>
<Property>
<Name>mpegdashCacheControlMediaChunk</Name>
<Value>max-age=3600</Value>
<Type>String</Type>
</Property>
- 重启Wowza Streaming Engine,让配置生效。
说明:
- mpegdashCacheControlPlaylist 设置Mpeg-dash流的manifests和playlists的HTTP caching header,单位为秒。
- mpegdashCacheControlMediaChunk 设置Mpeg-dash流的media 片段的HTTP caching header,单位为秒。
自定义参数
cupertinoOnChunkStartResetCounter
将这个参数设置为
true,可以对每一个生成的media chunk的continuity counter进行重置。
这可以确认每一个生成的Chunk都是唯一的。当禁用这个参数时(设置为
false), 每一个media chunk的continuity counter会连续增加,可以用于跟踪和检查TCP传输的丢包。
用Wowza Streaming Engine Manager管理界面来配置
- 在Wowza Streaming Engine Manager管理界面,点击Applicationstab,再点击菜单中的HTTP origin application。
- 点击HTTP origin application 界面的 Properties tab页,点击Quick Links的Custom链接。
- 在Custom区域,点击Edit.
- 点击Add Custom Property, 在Add Custom Property对话框里输入如下信息,再点击Add:
- Path - 选择 /Root/Application/HTTPStreamer.
- Name - 输入 cupertinoOnChunkStartResetCounter.
- Type - 选择 Boolean.
- Value - 输入 true.
- 点击Save,重启application,让配置生效
用XML来配置
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,在<HTTPStreamer>/<Properties>中添加以下参数:
<Property>
<Name>cupertinoOnChunkStartResetCounter</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
- 重启Wowza Streaming Engine,让配置生效
httpRandomizeMediaName
将这个参数设置为
true,用来确保编码器重启后(重新连接后)发来的音视频片段(Chunk)是唯一的(没有重复的)。
用Wowza Streaming Engine Manager管理界面来配置
- 在Wowza Streaming Engine Manager管理界面上,点击Applicationstab菜单,再点击你的HTTP origin application。
-
在HTTP origin application 界面上的Propertiestab页,点击Quick Links导航条上的Custom。
- 在Custom区域,点击Edit.
-
点击Add Custom Property, 然后在Add Custom Property对话框中按下面的信息输入自定参数,然后点击Add:
- Path - 选择 /Root/Application/LiveStreamPacketizer.
- Name - 输入 httpRandomizeMediaName.
- Type - 选择 Boolean.
- Value - 输入 true.
- 点击Save,然后重启Wowza 应用,让配置生效。
用XML来配置
-
用文本编辑器打开[install-dir]/conf/[application]/Application.xml文件,然后在<LiveStreamPacketizer>/<Properties>中添加以下参数。
<Property>
<Name>httpRandomizeMediaName</Name>
<Value>true</Value>
<Type>Boolean</Type>
</Property>
HTTP Caching技术
要了解更多关于HTTP caching 的技术细节, 请访问以下资源: