多协议、性能稳定、丰富API的流媒体服务器软件
如何从一个流切换到另一个流?

通过建立一个server-side媒体流,你可以创建一个媒体流列表,当一个实时输入流不可用时,可以用这个列表里的视频流来替换这个实时输入流。 为了实现这个目标,你必须创建一个server-side媒体流,它会用来替代意外中断的实时输入流。ModuleLoopUntilLive 模块被用来检测这个实时输入流,当它恢复为可用时就会从你创建的服务端媒体流切换到这个实时输入流上,当它中断后,又会切换回你创建的媒体流。

这篇文章介绍如何配置这个模块。

作为配置的一部分,在Application中至少要配置一个服务端(server-side)媒体流。 有好几种方法可以做到这一点,您可以参见如何为Wowza Stream Engine 4的直播业务配置类似电视台的节目编排表?的介绍,使用一个自定义媒体流来实现这个功能。

你也可以用Streams API 来创建一个服务端(server-side)媒体流。请参考如何用Stream类实现一个最基本直播流发布?

注意:

  • 这篇文章在09-25-2013被整个重写了一边,介绍了ModuleLoopUntilLive模块中的新功能,包括对多个媒体流以及playlist item的支持,并可以和MediaCaster配合使用。

  • 这个模块用了一个应用实例级别的参数来说明每一个用Stream Publisher创建的服务端(Server-side)媒体流,如果你使用Streams API 来创建一个服务端(server-side)媒体流, 么在你的实现中,必须在媒体流被创建时创建这个参数,在媒体流被关闭时删除这个参数。
    Name: <name of the server side stream>
    Value: <The Stream class instance>
    Type: com.wowza.wms.stream.publish.Stream
    				
Wowza Module Collection有一个这个模块已经编译好的版本。

模块的配置



要启动这个模块,请在你的应用中添加以下Moudle定义。请参考Configure modules以了解更多。

Name
Description
完整的Java类包名
ModuleLoopUntilLive Loops filler video until live video is available. com.wowza.wms.plugin.collection.module.ModuleLoopUntilLive

参数设置



在启用这个模块后,你可以在应用中添加以下参数来调整这个模块的一些默认设置。请参考参数配置以了解更多。


必须设置的参数

Path
Name
Type
Value
Notes
Root/Application loopUntilLiveSourceStreams String myStream 请看下面注意中的提示 这是注入到这个应用中的原始输入流的列表,可以是一个流的名字,也可以是用逗号间隔开的多个流(例如: myStream, myOtherStream) (默认值: myStream)。
Root/Application loopUntilLiveOutputStreams String Stream1 请看下面注意中的提示 这是一个server-side定义的流列表,它是由Stream Publisher创建的。它可以是一个流的名字,也可以是用逗号间隔开的多个流(例如: Stream1, Stream2) (默认值: Stream1)。

注意:loopUntilLiveSourceStreamsloopUntilLiveOutputStreams 列表中流的个数必须相同,并且一一对应(第一个对第一个,第二个对第二个,以此类推)。 可选的参数配置

配置路径
名称
类型
参数值
备注
Root/Application loopUntilLiveReloadEntirePlaylist Boolean true 如果这个服务端(server-side)媒体流有多个item,请将loopUntilLiveReloadEntirePlaylist 设置为 true 来确保所有item可以被加载,并从这个列表中的下一个item开始播放。如果它被设置为false, 只有当实时输入流开始启动时加载的item会被播放(默认: true).
Root/Application loopUntilLiveHandleMediaCasters Boolean true 当这个实时输入流是MediaCaster流时,要特别小心,要确保当MediaCaster已经准备好了开始接收输入流时,它可以在正确的时间切换。请将loopUntilLiveHandleMediaCasters 设置为 true 来确保这个功能的实现。如果loopUntilLiveHandleMediaCasters 被设置为 false,这个切换会发生在当MediaCaster被创建时以及它被destroy时(默认: true)。

Stream Publisher 的配置



Stream Publisher会使用下面的SMIL文件,正如如何为Wowza Stream Engine 4的直播业务配置类似电视台的节目编排表?中的介绍,创建一个输出流Stream1。它会循环播放sample.mp4。 如果前面的输入媒体流使用了ModuleLoopUntilLive和上面默认的设置。当实时输入流(myStream)进入后,输出流将被切换到这个实时输入流。
<smil>
    <head>
    </head>
    <body>

        <stream name="Stream1"></stream>
        
        <playlist name="pl1" playOnStream="Stream1" repeat="true" scheduled="2009-12-11 16:00:00">
            <video src="mp4:sample.mp4" start="0" length="20"/>
        </playlist>
    </body>
</smil>