Hello,
We’re running Wowza Streaming Engine 4.4.1 on Unbuntu 14.04.
We have setup a live application which receives an RTMP stream and transcode it to an HLS stream with 4 stream.
To be able to stream a “waiting” video until the camera RTMP stream starts, we have setup 2 modules :
-
com.wowza.wms.plugin.streampublisher.ModuleStreamPublisher
-
com.wowza.wms.plugin.streampublisher.ModuleLoopUntilLive
For those modules, we added the following custom properties :
/Root/Application/streamPublisherSmilFile : tlsloop.smil
/Root/Application /loopUntilLiveSourceStreams: _320x180,_640x360, _1024x576, _1280x720
/Root/Application /loopUntilLiveOutputStreams : Stream1_320x180,Stream1_640x360, Stream1_1024x576, Stream1_1280x720
The tlsloop.smil contains the following configuration :
<?xml version="1.0" encoding="UTF-8"?>
<smil title="Thales Live Streaming 5 flux">
<body>
<stream name="Stream1"></stream>
<playlist name="pl1" playOnStream="Stream1" repeat="true" scheduled="2016-04-15 16:30:00">
<video src="mp4:sample.mp4" start="0" length="-1"/>
</playlist>
<switch>
<video height="180" src="Stream1_320x180" systemLanguage="fr" width="320">
<param name="videoBitrate" value="256000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="360" src="Stream1_640x360" systemLanguage="fr" width="640">
<param name="videoBitrate" value="1000000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="576" src="Stream1_1024x576" systemLanguage="fr" width="1024">
<param name="videoBitrate" value="1500000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="720" src="Stream1_1280x720" systemLanguage="fr" width="1280">
<param name="videoBitrate" value="2000000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
</switch>
</body>
</smil>
Another smil file has been configured for the real “live” stream :
<?xml version="1.0" encoding="UTF-8"?>
<smil title="Thales Live Streaming 5 flux">
<body>
<stream name="liveStream"></stream>
<switch>
<video height="180" src="_320x180" systemLanguage="fr" width="320">
<param name="videoBitrate" value="256000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="360" src="_640x360" systemLanguage="fr" width="640">
<param name="videoBitrate" value="1000000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="576" src="_1024x576" systemLanguage="fr" width="1024">
<param name="videoBitrate" value="1500000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
<video height="720" src="_1280x720" systemLanguage="fr" width="1280">
<param name="videoBitrate" value="2000000" valuetype="data"></param>
<param name="audioBitrate" value="128000" valuetype="data"></param>
</video>
</switch>
</body>
</smil>
When we start the application, the waiting video is correctly streamed,
But when we start the camera rtmp stream, the waiting video is still streamed.
Here are the logs :
2016-11-16 00:11:25 CET unpublish stream INFO 200 - - _defaultVHost_ tlsloop _definst_ 5473.701 10.0.0.2 1935 rtmp://37.35.2.25:1935/tlsloop 37.35.2.149 rtmp - FMLE/3.0 (compatible; Lavf57.41.100) 164653900 806472009 24844 1 0 805842220 0 - - - - - - rtmp://37.35.2.25:1935/tlsloop rtmp://37.35.2.25:1935/tlsloop - rtmp://37.35.2.25:1935/tlsloop -
2016-11-16 00:11:25 CET destroy stream INFO 200 - - _defaultVHost_ tlsloop _definst_ 5473.702 10.0.0.2 1935 rtmp://37.35.2.25:1935/tlsloop 37.35.2.149 rtmp - FMLE/3.0 (compatible; Lavf57.41.100) 164653900 806472009 24844 1 0 805842220 0 - - - - - - rtmp://37.35.2.25:1935/tlsloop rtmp://37.35.2.25:1935/tlsloop - rtmp://37.35.2.25:1935/tlsloop -
2016-11-16 00:11:25 CET disconnect session INFO 200 164653900 - _defaultVHost_ tlsloop _definst_ 5473.758 10.0.0.2 1935 rtmp://37.35.2.25:1935/tlsloop 37.35.2.149 rtmp - FMLE/3.0 (compatible; Lavf57.41.100) 164653900 806472009 25135 - - - - - - - - - - - - - rtmp://37.35.2.25:1935/tlsloop -
2016-11-16 00:11:25 CET comment server INFO 200 - TranscodingSession.close[tlsloop/_definst_/] - - - 117807.046 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET comment server INFO 200 - TranscodingSession.shutdown[tlsloop/_definst_/] - - - 117807.046 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET decoder-video-stop transcoder INFO 200 - - - - - 117807.046 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET encoder-video-stop transcoder INFO 200 - {name: "1280x720"} - - - 117807.046 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET encoder-video-stop transcoder INFO 200 - {name: "1024x576"} - - - 117807.047 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET encoder-video-stop transcoder INFO 200 - {name: "320x180"} - - - 117807.047 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET encoder-video-stop transcoder INFO 200 - {name: "640x360"} - - - 117807.047 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET unpublish stream INFO 200 _1024x576 - - - - 5470.874 - - - - - - - - - - 95 0 955264123 0 _1024x576 - - - - - /_1024x576 /_1024x576 - - -
2016-11-16 00:11:25 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to playlist [_1024x576] - - - 117807.047 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET destroy stream INFO 200 _1024x576 - - - - 5470.88 - - - - - - - - - - 95 0 955264123 0 _1024x576 - - - - - /_1024x576 /_1024x576 - - -
2016-11-16 00:11:25 CET unpublish stream INFO 200 _320x180 - - - - 5470.879 - - - - - - - - - - 96 0 191824597 0 _320x180 - - - - - /_320x180 /_320x180 - - -
2016-11-16 00:11:25 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to playlist [_320x180] - - - 117807.054 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET destroy stream INFO 200 _320x180 - - - - 5470.904 - - - - - - - - - - 96 0 191824597 0 _320x180 - - - - - /_320x180 /_320x180 - - -
2016-11-16 00:11:25 CET unpublish stream INFO 200 _1280x720 - - - - 5470.904 - - - - - - - - - - 97 0 1269377041 0 _1280x720 - - - - - /_1280x720 /_1280x720 - - -
2016-11-16 00:11:25 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to playlist [_1280x720] - - - 117807.079 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET destroy stream INFO 200 _1280x720 - - - - 5470.908 - - - - - - - - - - 97 0 1269377041 0 _1280x720 - - - - - /_1280x720 /_1280x720 - - -
2016-11-16 00:11:25 CET unpublish stream INFO 200 _640x360 - - - - 5470.907 - - - - - - - - - - 98 0 629270152 0 _640x360 - - - - - /_640x360 /_640x360 - - -
2016-11-16 00:11:25 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to playlist [_640x360] - - - 117807.082 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-16 00:11:25 CET destroy stream INFO 200 _640x360 - - - - 5470.908 - - - - - - - - - - 98 0 629270152 0 _640x360 - - - - - /_640x360 /_640x360 - - -
2016-11-16 00:11:25 CET connect-pending session INFO 100 37.35.2.149 - _defaultVHost_ tlsloop _definst_ 0.016 10.0.0.2 1935 rtmp://37.35.2.25:1935/tlsloop 37.35.2.149 rtmp - FMLE/3.0 (compatible; Lavf57.41.100) 1047868257 3232 3073 - - - - - - - - - - - - - rtmp://37.35.2.25:1935/tlsloop -
2016-11-16 00:11:25 CET connect session INFO 200 37.35.2.149 - _defaultVHost_ tlsloop _definst_ 0.016 10.0.0.2 1935 rtmp://37.35.2.25:1935/tlsloop 37.35.2.149 rtmp - FMLE/3.0 (compatible; Lavf57.41.100) 1047868257 3232 3073 - - - - - - - - - - - - - rtmp://37.35.2.25:1935/tlsloop -
2016-11-16 0
So we can see that the module detects the new incoming RTMP stream, but why the swith is not effective ?