如何配置一个直播流repeater(中继)?
转载请注明:文章来自www.wowza.cn
注意: 要访问最新的技术资料,请访问http://www.ttstream.com/wowza/
Live stream repeater是一个直播流通过多台服务器来提供大规模用户的一种方法。它采用了源/边缘(origin/edge)架构,其中原始输入流由源(origin)服务器发布,由多台边缘(edge)服务器来向大规模用户提供直播服务。 这篇文章描述了如何将一个直播流应用配置为源/边缘(origin/edge)架构。你可以在一台Wowza Stream Engine 4服务器上测试这个功能,在这种情况下[wowza-origin-address][wowza-edge-address] 是相同的。 www.wowza.cn

内容




基本配置



Wowza origin

  1. 在Wowza origin 服务器上创建一个应用文件夹[install-dir]/applications/liveorigin.

  2. 在Wowza origin 服务器上创建一个配置文件夹[install-dir]/conf/liveorigin 并将 [install-dir]/conf/Application.xml 拷贝到这个新的文件夹下.

  3. 用文本编辑器打开这个新拷贝的Application.xml,将StreamType 设置为 liverepeater-origin:
    Code:
    <StreamType>liverepeater-origin</StreamType>
  4. 启动 Wowza Media Server.

Wowza edge

  1. 在每一个Wowza edge 服务器上创建一个应用文件夹[install-dir]/applications/liveedge

  2. 在每一个Wowza edge 服务器上创建一个配置文件夹[install-dir]/conf/liveedge 并将 [install-dir]/conf/Application.xml 拷贝到这个新的文件夹下。

  3. 用一个文本编辑器打开这个新拷贝的Application.xml,并将 StreamType 设置为 liverepeater-edge:
    Code:
    <StreamType>liverepeater-edge</StreamType>
  4. 启动 Wowza Stream Engine 4

编码器

从一个编码器向Wowza origin 服务器推送一个直播流:

Connect: rtmp://[wowza-origin-address]:1935/liveorigin
Stream name: myStream

或者,你可以采用MediaCaster机制来从一个视频源采用拉的PULL方式发布一个直播流(例如,从一个IP摄像头) using 如何使用StreamManager.

对基本配置进行测试


使用Wowza Stream Engine 4 的例子播放器LiveVideoStreaming 来测试直播流。

Wowza Media Server 3.5及以上版本和Wowza Stream Engine 4
双击 [install-dir]/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html, 输入下面的信息,然后点击 Connect 按钮。

Wowza Media Server 3.1.2 及更早的版本
双击 [install-dir]/examples/LiveVideoStreaming/client/live.html, 输入下面的信息, 然后点击 Play 按钮。

测试origin server上的直播流:

Server: rtmp://[wowza-origin-address]:1935/liveorigin
Stream: myStream

测试edge server上的直播流:

Server: rtmp://[wowza-edge-address]:1935/liveedge
Stream: myStream

配置HTTP packetizers



直播流进入Wowza Stream Engine 4 后,如要通过HTTP协议对外提供流媒体服务,则必须先经过打包(packetized)处理。这些基于HTTP协议的流媒体播放技术包括Apple HTTP Live Streaming (Apple® HLS), Adobe HTTP Dynamic Streaming (Adobe® HDS) 及 Microsoft® Smooth Streaming。 在Application.xml<Streams>/<LiveStreamPacketizers> 中列出了系统在对直播流进行打包时需要支持的Http流媒体协议对应的打包器。它有2种类型的打包器:streaming packetizers 和 repeater packetizers.

Wowza origin

在直播流中继架构(origin/edge)下,streaming packetizers 被用于从Wowza origin服务器向Wowza edge 服务器传输直播流。 www.wowza.cn 在源(Origin)服务器的Application.xml<Streams>/<LiveStreamPacketizers> 列表中可以包含从零到一个或多个下面的streaming packetizers.
cupertinostreamingpacketizer 对应 Apple HLS live streaming
sanjosestreamingpacketizer 对应面向Flash 播放器的Adobe HDS live streaming
smoothstreamingpacketizer 对应面向Microsoft Silverlight®的 Smooth Streaming

你可以在源(origin)服务器的/conf/liveorigin/Application.xml中添加你需要的streaming packetizers :
Code:
<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
<LiveStreamPacketizers>cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer</LiveStreamPacketizers>
Wowza edge

在直播流中继架构(origin/edge)下,Wowza edge 服务器上的Http流媒体打包器需要被设置为对应的repeater打包器。 在边缘(edge)服务器的Application.xml<Streams>/<LiveStreamPacketizers> 列表中可以包含从零到一个或多个下面的repeater packetizers.

cupertinostreamingrepeater 对应 Apple HLS live stream repeater
sanjosestreamingrepeater 对应面向Flash播放器的Adobe HDS live stream repeater
smoothstreamingrepeater 对应面向Microsoft Silverlight的Smooth Streaming live stream repeater

在每一个边缘(edge)服务器的/conf/liveedge/Application.xml中添加你需要的repeater packetizers :
Code:
<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
<LiveStreamPacketizers>cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater</LiveStreamPacketizers>

配置源服务器的服务地址(URL)



Wowza edge

在每一个边缘服务器的Application.xml文件中配置源服务器的服务地址(URL):
Code:
<Repeater>
	<OriginURL>wowz://[wowza-origin-address]:1935/liveorigin</OriginURL>
	<QueryString><![CDATA[]]></QueryString>
</Repeater>
为了实现冗余备份,你可以配置多个源服务器服务地址,并将它们用竖线(|)隔开。例如:
Code:
<Repeater>
	<OriginURL>wowz://[wowza-origin-address]:1935/liveorigin|wowz://[wowza-alternate-origin-address]:1935/backuporigin</OriginURL>
	<QueryString><![CDATA[]]></QueryString>
</Repeater>
上面的配置是为每一个应用配置源服务器直播服务地址,这时这个应用下的每一个直播流都通过OriginURL参数来确定源服务器服务地址。

注意: 当主源服务器故障或宕机时, 在切换到备源服务器之前,客户端可能要等待12秒左右。采用上面的方法只是为了实现failover。

注意: WOWZ™ 协议是Wowza Media Server 3.5中一个新的基于TCP的消息协议,它被用于多个Wowza服务器之间的通信。默认状态下,这个协议就是可以使用的。 如果在源/边缘架构(origin/edge)下的一台Wowza Media Server正在使用3.5之前的版本, 那么在两个服务器之间将采用RTMP连接。 www.wowza.cn


直播流播放



注意:在下面的例子中,[wowza-edge-address] 是运行Wowza Media Server的边缘服务器的IP地址,[wowza-origin-address] 是运行Wowza Media Server的源服务器的IP地址, [stream-name] 是送到源服务器的输入流的stream name。

用Adobe Flash 播放器播放 (San Jose/Adobe HDS)

Wowza Media Server 3.5
双击 [install-dir]/examples/LiveVideoStreaming/FlashHTTPPlayer/player.html, 输入下面的信息,然后点击 Connect 按钮。

Wowza Media Server 3.1.2 及更早版本
双击[install-dir]/examples/LiveVideoStreaming/clientOSMF/bin-release/LiveOSMFPlayer.html, 输入下面的信息,然后点击 Play 按钮。

Stream: http://[wowza-edge-address]:1935/liveedge/[stream-name]/manifest.f4m


Http live Streaming播放(Cupertino/Apple HLS)

在iOS设备的Safari web浏览器上访问下面的地址:

URL: http://[wowza-edge-address]:1935/liveedge/[stream-name]/playlist.m3u8


Microsoft Silverlight播放 (Smooth Streaming)

Wowza Media Server 3.5
双击 [install-dir]/examples/LiveVideoStreaming/SilverlightPlayer/player.html, 输入下面的信息,然后点击 Connect 按钮。

Wowza Media Server 3.1.2 及更早的版本
双击 [install-dir]/examples/LiveVideoStreaming/clientSilverlight/Default.html, 输入下面的信息,然后点击 Play 按钮。

URL: http://[wowza-edge-address]:1935/liveedge/[stream-name]/Manifest


在Adobe Flash 播放器中用RTMP播放

Wowza Media Server 3.5
双击 [install-dir]/examples/LiveVideoStreaming/FlashRTMPPlayer/player.html, 输入下面的信息, 然后点击 Connect 按钮。

Wowza Media Server 3.1.2及更早版本
双击 [install-dir]/examples/LiveVideoStreaming/client/live.html, 输入下面的信息,然后点击 Play 按钮。

Server和Stream的信息如下:

Server: rtmp://[wowza-edge-address]:1935/liveedge
Stream: stream-name


对源服务器的直播流进行保护



当有一个未经授权的另一个服务器从你的源服务器上拉(pull)直播流并将它直接提供给基于Adobe Flash的播放器(RTMP)时,你可以采用SecureToken的机制来阻止这种行为。

Wowza Media Server 3.5及更高版本

  1. 在源服务器上,用文本编辑器打开[install-dir]/conf/[application]/Application.xml,在<Modules>列表的最后面添加以下<Module>:
    Code:
    <Module>
    	<Name>ModuleRTMPAuthenticate</Name>
    	<Description>ModuleRTMPAuthenticate</Description>
    	<Class>com.wowza.wms.security.ModuleRTMPAuthenticate</Class>
    </Module>
  2. 在同样的这个源服务器的 Application.xml 中,在文件最后面的<Properties> 列表中添加下面的属性:
    Code:
    <Property>
    	<Name>secureTokenSharedSecret</Name>
    	<Value>#ed%h0#w@1</Value>
    </Property>
  3. 在每一个边缘服务器上,用文本编辑器打开[install-dir]/conf/[application]/Application.xml ,在<Modules>列表的最后加入以下<Module> :
    Code:
    <Module>
    	<Name>ModuleRTMPAuthenticate</Name>
    	<Description>ModuleRTMPAuthenticate</Description>
    	<Class>com.wowza.wms.security.ModuleRTMPAuthenticate</Class>
    </Module>
  4. 在每一个边缘服务器上,用文本编辑器打开Application.xml, 在文件最后面的<Properties>中添加下面的属性:
    Code:
    <Property>
    	<Name>secureTokenOriginSharedSecret</Name>
    	<Value>#ed%h0#w@1</Value>
    </Property>


对边缘服务器上的直播流进行保护



  1. 先按上面的章节的说明进行配置 (对源服务器的直播流进行保护)。

  2. 在每一个边缘夫妻的Application.xml 文件中,在文件的最后的<Properties> 列表中添加下面的属性(在secureTokenOriginSharedSecret 的下面):
    Code:
    <Property>
    	<Name>secureTokenSharedSecret</Name>
    	<Value>#ed%h0#w@1</Value>
    </Property>
    <Property>
    	<Name>requireSecureConnection</Name>
    	<Value>true</Value>
    	<Type>Boolean</Type>
    </Property>
  3. 要让这个机制正常工作,你的Flash播放器必须在与服务器建立连接后,向服务器返回SecureToken。要了解更多如何在JW Player中使用它,请阅读 How to add SecureToken Protection to LongTail JW Player 5.