多协议、性能稳定、丰富API的流媒体服务器软件
如何将一个或多个VOD文件作为视频源发布到一个直播频道中?

将一个或多个VOD文件作为视频源发布到一个直播频道中,这在国内叫做"轮播",常见于某个电影频道,按时间点循环播放一些老电影。90年代遍布大街小巷的录像厅本质上也是这个模式。


本文向您介绍了如何使用ServerListenerStreamDemoPublisher 这个server listener 来将一个VOD文件作为视频源发布到一个直播频道中。 这个VOD文件将循环播放,永不停止。这个配置是非常简单和基础的,其它更复杂更底层的一些方案,请参考我们轮播栏目下的其它文章:


[install-dir]/conf/Server.xml文件中的<ServerListeners>列表中添加下面这个<ServerListener>:

当然,你也可以在Wowza Streaming Engine Manager的管理界面上添加这个ServerListener。(在顶部的Server菜单下)


<ServerListener>
	<BaseClass>com.wowza.wms.module.ServerListenerStreamDemoPublisher</BaseClass>
</ServerListener>
		

[install-dir]/conf/Server.xml文件中的最下面的<Properties>部分中,添加如下的property:

当然,你也可以在Wowza Streaming Engine Manager的管理界面上添加这个property。(在顶部的Server菜单下)

<Property>
	<Name>streamDemoPublisherConfig</Name>
	<Value>appName=live,srcStream=mp4:sample.mp4,dstStream=myStream,sendOnMetadata=true</Value>
</Property>
		

你也可以在这个参数中发布多个直播频道,它们之间用管道符(|)分隔开就可以了。例如:
<Property>
	<Name>streamDemoPublisherConfig</Name
	<Value>appName=live,srcStream=mp4:sample.mp4,dstStream=myStream,sendOnMetadata=true|appName=live,srcStream=mp4:sample.mp4,dstStream=myStream2,sendOnMetadata=true</Value>
</Property>
		

你也可以在一个文本文件中创建一个多个VOD文件的索引,再将这个文件存放在[install-dir]/content目录下,并以.m3u8作为扩展名。 在这个文件中,每一行是一个很简单的stream name,如下所示:

mp4:sample.mp4
mp4:file2.mp4
mp4:file3.mp4
		
在这个例子中,这个文件被命名为filelist.m3u8。要播放这个列表,你需要按下面的格式配置streamDemoPublisherConfig参数:
<Property>
	<Name>streamDemoPublisherConfig</Name>
	<Value>appName=live,srcStream=m3u8:filelist.m3u8,dstStream=myStream,random=false,timeBetweenItems=250</Value>
</Property>
		
如果要播放10秒,暂停2秒,然后再循环,请在streamDemoPublisherConfig中按如下配置:
<Property>
	<Name>streamDemoPublisherConfig</Name
	<Value>appName=live,srcStream=mp4:sample.mp4,dstStream=myStream,random=true,publishDuration=10,publishRepeat=true,publishPauseTime=2</Value>
</Property>
		

参数配置的详细介绍


  • appName - Application的名字,格式为application/appInstance (appInstance 可以省略)。
  • vhostName - Virtual host (VHost) 的名字. 如果省略,在这个流会被加载到所有VHost中。
  • dstStream - 要创建的直播流名字。
  • srcStream - 视频文件的名字(支持MP4, MP3, FLV, 以及M3U8 格式的文件)。
  • sendOnMetadata - 如果是true, 会将onMetadata信息发布到直播流中。
  • repeat - 如果是true, 这个列表将会循环播放。
  • timeBetweenItems - 间隔时间,单位为毫秒,是这个列表中两个文件中间的暂停时间(默认80毫秒)。
  • random - 如果是true ,并且使用的是M3U8索引,那么索引中的文件播放顺序将会是随机的。
  • speed - 播放速度。这是一个浮点型的数字,可以是负数,(默认是1.0,你要小心使用它,并不是所有场景下都好使)。 
注意: 从Wowza Streaming Engine™ 4.4.0开始,Wowza改进了ServerListenerStreamDemoPublisher,添加了以下几个参数:
  • repeat 改名为 playlistRepeat (当然,repeat也依然保留着,是支持的)。如果是true,文件或文件列表会循环播放。
  • 添加了publishDuration - 是一个时长,单位为精确到秒,是这个直播频道的总时长(格式为: HH:MM:SS.mmm)。
  • 添加了publishRepeat - 如果是true,在到达publishDuration约定的时间后,这个直播继续循环发布(publishDuration 必须大于0,默认是false)。
  • 添加了publishPauseTime - 是一个时长,单位为秒,如果publishRepeat被设置为true,它是在这个直播流被再次发布前暂停的时间(格式为: HH:MM:SS.mmm,默认是1秒)。