这篇文章介绍了如何在直播流中继(origin/edge)架构下配置nDVR功能。直播流中继是通过部署多台服务器将一个直播流提供给大规模用户的方法。这个架构使用源/边缘配置,原始的输入流被发布在源服务器上,内容片段也被录制在源服务器上,之后,就可以通过多个边缘服务器访问直播流来播放。Wowza nDVR 会将播放列表信息从源服务器传递到边缘服务器。边缘服务器之后就会通过Http协议对外提供音频和视频数据。
注意: 需要Wowza Media Server® 3.0.0 及以上版本
注意: Wowza Streaming Engine™ 4.0 需要所有的源服务器和边缘服务器均运行Wowza Streaming Engine 4.0及以上版本。在源和边缘架构中,Wowza MediaServer 和 Wowza Streaming Engine 不能组合使用。
安装
获得授权并在源服务器和所有边缘服务器上安装 WowzaMedia Server。所有的源服务器和边缘服务器上的Wowza Media Server必须采用相同的版本。
配置源服务器
这个章节介绍了在直播流中继架构下配置WowzanDVR的基本步骤和Application.xml的配置。在这个例子中,缘服务器上的应用名为dvrorigin。
?
用文本编辑器打开新拷贝的Application.xml文件,做如下改动:
?
Code:
live
Code:
dvrstreamingpacketizer
这表示DVR会将录制的内容片段存储在这台Wowza Media server上。除了DVR流播放外,要使用直播流播放,你可以增加下面的打包器(packetizer)。例如:
Code:
cupertinostreamingpacketizer,smoothstreamingpacketizer,sanjosestreamingpacketizer,dvrstreamingpacketizer
Code:
dvrrecorder
Code:
dvrfilestorage
Code:
dvrchunkstreaming
将会使得源服务器可以向边缘服务器传送录制的音频和视频片段。
边缘服务器的配置
在每一个边缘服务器上配置创建一个新的WowzaMedia Server 应用。在这个例子中,应用名为dvredge。
?
用文本编辑器打开这个新拷贝的Application.xml文件,并做如下改动:
?
Code:
liverepeater-edge
Code:
dvrstreamingrepeater
这表示DVR录制数据来自另一个Wowza Media Server,并由当前这个Wowza Media Server接收。处了DVR流播放外,要使用直播流播放,你需要增加下面的打包器(packetizer)。如下:
Code:
cupertinostreamingrepeater,smoothstreamingrepeater,sanjosestreamingrepeater,dvrstreamingrepeater
这样可以测试是否可以从边缘服务器上播放直播流,这对排查故障非常有用。
Code:
Code:
?
Code:
wowz://[origin-ip-address]/dvrorigin
其中[origin-ip-address] 是源服务器的IP地址。
WOWZ协议是Wowza Media Server 3.5 中的一个新的基于TCP的消息协议,用于服务器和服务器之间的消息通信。它在默认情况下就是可用的。如果在源和边缘服务器中有一台服务器运行的不是Wowza Media Server 3.5,那么服务器之间将会建立RTMP连接。
Code:
cupertinostreaming,smoothstreaming,sanjosestreaming
发布直播流
?
播放
H.264编码的输入流可以通过Wowza Media Server支持的任何Http协议来传输。
使用Adobe Flash Player(San Jose/Adobe HTTP Dynamic Streaming)
Note: 这个例子使用Strobe player,它基于OSMF播放流媒体。
Wowza Media Server 3.5
双击[install-dir]/examples/LiveDVRStreaming/FlashHTTPPlayer/player.html,输入下面的信息,然后点击Connect按钮。
Code:
http://[wowza-ip-address]:1935/dvredge/myStream/manifest.f4m?DVR
使用Apple iOS device (Cupertino/Apple HTTP Live Streaming)
在iOS设备的Safari web 浏览器上访问:
Code:
http://[wowza-ip-address]:1935/dvredge/myStream/playlist.m3u8?DVR
使用Microsoft Silverlight (Smooth Streaming)
Wowza Media Server 3.5
双击[install-dir]/examples/LiveDVRStreaming/SilverlightPlayer/player.html,输入下面的信息,然后点击Connect 按钮。
Wowza Media Server 3.1.2 及更早版本
双击[install-dir]/examples/LiveDvrStreaming/clientSilverlight/LiveDvrSmoothStreaming.html,输入下面的信息,然后点击Play按钮。
Code:
http://[wowza-ip-address]:1935/dvredge/myStream/Manifest?DVR
调优
MediaCache
因为边缘服务器将会从源服务器请求录制的数据段,我们推荐在边缘服务器的DVR配置中使用MediaCache。 这将允许DVR数据段在边缘服务器上缓存,从而降低从边缘服务器器到源服务器的访问请求。
内存中的DVR数据段
默认情况下,Wowza nDVR 插件会将最近的10个录制数据段保存在内容中。在源服务器和边缘服务器上降低磁盘访问的方法就是增加这个数值。注意,你应该理解这样做的影响。它会把每一个流的录制数据段保存在内存中,这样会导致内存占用增大。
例如,假设你有20个高码率的DVR流。 On average, 每一个视频数据端900KB,每一个音频数据段100KB (这样,每一个数据段有1 MB大小)。如果你将这个值从10增大到50,你将在内存中为每一个流多保存40个数据段,将占用接近1 GB 的服务器内存(20 * 40 * (900 KB + 100 KB) = 800 MB)。
在调整这个数值前,分析好需要占用多少内存,你是否还有剩余的内存,以及磁盘I/O是否是个问题。 之后,请在[install-dir]/conf/dvredge/Application.xml文件的DVR/Properties下面添加下面的属性:
Code:
chunkMemoryCacheSize
20
Integer
Wowza Streaming Engine 4是业界功能强大、API接口丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地。