多协议、性能稳定、丰富API的流媒体服务器软件
如何配置一个直播流repeater(中继)?
这篇文章介绍了如何配置Live stream repeater。

内容


总览
用Wowza Streaming Engine Manager 管理界面来配置
用XML 来配置
发布一个直播流
对配置做基础的测试
播放直播流
对源进行加密保护
对边缘进行保护

其它相关资料

总览


直播流中继(Live stream repeater)是一个直播流通过多台服务器来提供大规模用户的一种方法。它采用了源/边缘(origin/edge)架构,其中原始输入流由源(origin)服务器发布,然后由多台边缘(edge)服务器来向大规模用户提供直播服务。 出于测试的目的,你可以在一台Wowza服务器上测试这个功能,这时[wowza-origin-address][wowza-edge-address] 是一样的。

用Wowza Streaming Engine Manager管理界面来配置


下面介绍利用Wowza Streaming Engine Manager管理界面来配置live stream repeater (origin/edge) 应用。

配置Wowza 源(origin)服务器


  1. 在Wowza origin 服务器上,首先确认Wowza Streaming Engine Manager 处于正常运行状态。请参考如何启动和停止Wowza Streaming Engine软件.

  2. Applications菜单,点击Add Application,然后点击Live application type.



  3. New Application 对话框,为应用设置一个名字liveorigin,然后点击Add.



  4. liveorigin页面,选择所有的Playback Types, 然后点击 Save.



  5. 配置推流验证:

    1. 点击Source Security, 在点击Edit.



    2. Source Security页面配置下面的选项,然后点击Save:

      • RTMP Sources下, 选择 Require password authentication.

      • RTSP Sources, 选择 Require password authentication.

      • Client Restrictions, 选择 No client restrictions.



      要了解更多,请参考直播流发布.

  6. 重启这个Wowza应用。



  7. 为了将直播流推送到liveorigin应用,现在需要配置推流验证的用户名和密码:

    1. Server 菜单,点击Source Authentication,然后点击Add Source.



    2. Source Authentication 页面,输入Source User NamePassword, 然后点击 Add.


配置Wowza 边缘(edge)服务器


  1. 在Wowza边缘(edge)服务器上,首先确认Wowza Streaming Engine Manager处于正常运行状态。请参考如何启动和停止Wowza Streaming Engine软件.

  2. Applications 菜单,点击Add Application, 然后在点击Live Edge application type.



  3. New Application对话框,为这个新应用设置一个名字liveedge, 然后点击Add.


  4. liveedge 页面配置一下选项,然后点击Save:

    • 选择所有Playback Types.

    • Primary Origin URL中输入Wowza 源(origin)服务器的URL

    • (可选)在Secondary Origin URL中输入一个Wowza 源(origin)服务器的备份URL,它是冗余而设计的。 如果primary origin 服务器宕机。Edge服务器经过12秒的Timeout时间后,会将请求切换到这个备份URL上。




    注意:
    • Primary Origin URL 和可选的 Secondary Origin URL 必须使用这些URL前缀: wowz://, wowzs://, rtmp://, or rtmps://.

    • 重要: 如果你使用了wowzs:// 前缀,那么EDGE和Origin服务器将使用SSL连接,请注意到以下关于SSL加密的要求:

      • SSL 验证必须来自一个证书颁发机构(请参考如何从一个证书颁发机构申请一个SSL 证书)。自签名的证书是不支持。 但Wowza完全支持Wowza StreamLock™ 认证(请参考How to get SSL certificates from the StreamLock service).

      • 你必须使用域名,而不能使用IP地址。

      • 如果没有设置端口,则默认使用443端口。

      • 如果边缘(Edge)服务器和源(Origin)服务器之间没有成功建立SSL连接,它会反复尝试连接,这时在Wowza的日志中会显示下面的警告信息:

        WARN server comment - LiveMediaStreamReceiver.secureConnectionValidation: SSL Connection was not established: wowzs://[wowza-ip-address]:1935/live/_definst_/myStream
  5. 重启应用


XML configuration


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:
    <StreamType>live</StreamType>
    				
  4. 用文本编辑器打开[install-dir]/conf/publish.password文件,添加一个推流验证的用户名和密码。 下面是一个例子:
    # Publish password file (format [username][space][password])
    # username password
    publisherName [password]
    				
  5. 启动 Wowza Stream Engine

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:
    <StreamType>liverepeater-edge</StreamType>
    				
  4. 启动 Wowza Stream Engine

配置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 服务器传输直播流。 在源(Origin)服务器的Application.xml<Streams>/<LiveStreamPacketizers> 列表中可以包含从零到一个或多个下面的streaming packetizers.
cupertinostreamingpacketizer 对应 Apple HLS live streaming
sanjosestreamingpacketizer 对应面向Flash 播放器的Adobe HDS live streaming
smoothstreamingpacketizer 对应面向Microsoft Silverlight®的 Smooth Streaming
mpegdashstreamingpacketizer 对应Mpeg Dash流

你可以在源(origin)服务器的/conf/liveorigin/Application.xml中添加你需要的streaming packetizers :
<!-- LiveStreamPacketizers (separate with commas): cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, cupertinostreamingrepeater, smoothstreamingrepeater, sanjosestreamingrepeater, dvrstreamingpacketizer, dvrstreamingrepeater -->
<LiveStreamPacketizers>cupertinostreamingpacketizer, smoothstreamingpacketizer, sanjosestreamingpacketizer, mpegdashstreamingpacketizer</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
mpegdashstreamingrepeater 对应Mpeg Dash流的Dash Streaming live stream repeater

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

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



Wowza edge

在每一个边缘服务器的Application.xml文件中配置源服务器的服务地址(URL):
<Repeater>
	<OriginURL>wowz://[wowza-origin-address]:1935/liveorigin</OriginURL>
	<QueryString><![CDATA[]]></QueryString>
</Repeater>
	
为了实现冗余备份,你可以配置多个源服务器服务地址,并将它们用竖线(|)隔开。例如:
<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连接。


注意:
  • Primary Origin URL 和可选的 Secondary Origin URL 必须使用这些URL前缀: wowz://, wowzs://, rtmp://, or rtmps://.

  • 重要: 如果你使用了wowzs:// 前缀,那么EDGE和Origin服务器将使用SSL连接,请注意到以下关于SSL加密的要求:

    • SSL 验证必须来自一个证书颁发机构(请参考如何从一个证书颁发机构申请一个SSL 证书)。自签名的证书是不支持。 但Wowza完全支持Wowza StreamLock™ 认证(请参考How to get SSL certificates from the StreamLock service).

    • 你必须使用域名,而不能使用IP地址。

    • 如果没有设置端口,则默认使用443端口。

    • 如果边缘(Edge)服务器和源(Origin)服务器之间没有成功建立SSL连接,它会反复尝试连接,这时在Wowza的日志中会显示下面的警告信息:

      WARN server comment - LiveMediaStreamReceiver.secureConnectionValidation: SSL Connection was not established: wowzs://[wowza-ip-address]:1935/live/_definst_/myStream

发布直播流


向Wowza源(Origin)服务器的liveorigin应用发布一个直播流。具体方式依赖你的直播流来源、编码器所支持的协议,例如RTMP、RTSP、TS over udp,以及从摄像头拉流,都可以,请参考相关资料。

对基本配置进行测试


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


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

对Wowza 源(Origin)服务器的直播流进行保护


你可以使用SecureToken阻止未经授权的边缘(Edge)服务器以及播放器直接访问Wowza源(Origin)上的直播流。

注意: 在这个例子中的共享密钥仅仅是为了举例说明,请记住要在你的实际项目中换上你的共享密钥。

对Wowza Streaming Engine 上的源(origin)流做保护

  1. 打开Wowza 源(Origin)服务器上的Wowza Streaming Engine Manager管理界面。

  2. Applications 菜单的 liveorigin应用下,点击Playback Security, 再点击Edit.



  3. Playback Security页面,按如下操作,然后点击Save:

    1. SecureToken,选择SecureToken的类型。 我们推荐你选择Protect all protocols using hash (SecureToken version 2). 这个选项会保护所有类型的流,并使用了最新的hash算法。

    2. Shared Secret中输入共享密钥,或点击Generate SecureToken Shared Secret 随机生成一个。 在边缘(EDGE)服务器和播放器端必须设置同样的这个共享密钥,如果不一样,连接将会被拒绝。


    注意: 要了解更多关于SecureToken的信息,请参考在播放Wowza的输出流时,如何使用SecureToken对播放URL做验证?.
  4. 对Wowza Streaming Engine 边缘(edge)的保护.


对Wowza Media Server 源(origin)流的保护



Wowza Media Server 3.5及更高版本

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


边缘(edge)服务器上的安全保护配置


注意: 下面例子中的共享密钥仅仅是举例说明,请记住在你的项目中换上你的共享密钥。

Wowza Streaming Engine 边缘(edge)服务器的安全保护配置

  1. 在Wowza边缘服务器上,启动Wowza Streaming Engine Manager管理界面。请参考如何启动和停止Wowza Streaming Engine软件.

  2. Applications菜单,在liveedge应用下,点击Source Security,然后点击Edit.



  3. Source Security 对话框中,输入Wowza源(Origin)服务器上配置的共享密钥,然后点击Save. 这使得这台Wowza边缘(edge)服务器可以连接到Wowza源(origin)服务器



  4. 若要用Secure Token 功能来组织未经授权的播放器播放边缘服务器上的流,请点击Playback Security, 再点击Edit.



  5. 请参考在播放Wowza的输出流时,如何使用Secure Token 对播放URL做验证? to create a shared secret.

Wowza Media Server边缘(Edge)服务器上的安全保护设置



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

  2. 在每一个边缘服务器的Application.xml 文件中,在文件的最后的<Properties> 列表中添加下面的属性(在secureTokenOriginSharedSecret 的下面):
    <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.