Hello,
We have problem with ModuleLoopUntilLive module to stream a “waiting” video until live stream is available.
We have configured a live application, activated ModuleLoopUntilLive and streamPublisher modules on this application.
We have also set 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
Transcoder is activated for the application to generate 4 stream for HLS.
The tlsloop.smil contains the following lines :
<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>
For the “real” live stream, the smil file is :
<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>
When no live streaming is sent via rtmp to the Wowza server, the “waiting” video is correctly transcoded and streamed.
When we start the live streaming via rtmp, what we can see in the log is :
- - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET publish stream INFO 200 _1024x576 - - - - 0.001 - - - - - - - - - - 6 0 0 0 _1024x576 - - - - - /_1024x576 /_1024x576 - - -
2016-11-14 15:58:55 CET create stream INFO 200 - - - - - 0.001 - - - - - - - - - - 7 0 0 0 - - - - - - - - - - -
2016-11-14 15:58:55 CET comment server INFO 200 - LiveStreamPacketizerCupertino.init[tlsloop/_definst_/]: chunkDurationTarget: 10000 - - - 1857.209 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET comment server INFO 200 - LiveStreamPacketizerCupertino.init[tlsloop/_definst_/]: audioGroupCount: 3 - - - 1857.209 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to live [_320x180] - - - 1857.209 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET comment server INFO 200 - LiveStreamPacketizerCupertino.init[tlsloop/_definst_/]: playlistChunkCount:3 - - - 1857.209 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET publish stream INFO 200 _320x180 - - - - 0.001 - - - - - - - - - - 7 0 0 0 _320x180 - - - - - /_320x180 /_320x180 - - -
2016-11-14 15:58:55 CET comment server INFO 200 - MediaStreamMap.getLiveStreamPacketizer[tlsloop/_definst_/]: Create live stream packetizer: cupertinostreamingpacketizer: - - - 1857.21 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET create stream INFO 200 - - - - - 0.0 - - - - - - - - - - 8 0 0 0 - - - - - - - - - - -
2016-11-14 15:58:55 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to live [_1280x720] - - - 1857.21 - - - - - - - - - - - - - - - - - - - - - - - - -
2016-11-14 15:58:55 CET publish stream INFO 200 _1280x720 - - - - 0.0 - - - - - - - - - - 8 0 0 0 _1280x720 - - - - - /_1280x720 /_1280x720 - - -
2016-11-14 15:58:55 CET create stream INFO 200 - - - - - 0.0 - - - - - - - - - - 9 0 0 0 - - - - - - - - - - -
2016-11-14 15:58:55 CET comment application INFO 200 - ModuleLoopUntilLive.StreamListener.onPublish Swapping to live [_640x360] - - - 1857.211 - - - - - - - -
And we can see that the transcoder transcodes correctly to HLS the incoming rtmp live stream.
The problem is that in the distributed stream, the live stream is never sent, we always have the waiting video.
We don’t understand what’s wrong.