[FFmpeg-user] Switching live streams without interruption?
DopeLabs
dopelabs at dubstep.fm
Sun Oct 26 01:26:52 CEST 2014
i have the publisher/controller/loop until live all setup/automated with ffmpeg providing 4 live streams which rotate
this allows me to have a ‘main stream’ in which the wowza server rotates content on a time based schedule. the cut between streams is very subtle.
the 2 modules im using are stream publisher and loop until live
in wowza/conf/live/Application.xml
<Module>
<Name>ModuleStreamPublisher</Name>
<Description>ModuleStreamPublisher</Description>
<Class>com.wowza.wms.plugin.collection.module.ModuleStreamPublisher</Class>
</Module>
<Module>
<Name>ModuleLoopUntilLive</Name>
<Description>ModuleLoopUntilLive</Description>
<Class>com.wowza.wms.plugin.collection.module.ModuleLoopUntilLive</Class>
</Module>
<Property>
<Name>streamPublisherSmilFile</Name>
<Value>streamschedule.smil</Value>
</Property>
<!-- This property is the name of the dj stream or streams that will be published to your application. -->
<Property>
<Name>loopUntilLiveStream</Name>
<Value>djstream</Value>
</Property>
<!-- This property is the name of the server-side stream or streams that the live stream(s) will be inserted into. -->
<Property>
<Name>loopUntilLiveOutStream</Name>
<Value>dubstepfm</Value>
</Property>
<!-- Reload the entire stream playlist when switching back to the filler video. -->
<Property>
<Name>loopUntilLiveReloadEntirePlaylist</Name>
<Value>true</Value>
</Property>
<!-- Handle MediaCasters properly by only switching the stream when the MediaCaster is ready. -->
<Property>
<Name>loopUntilLiveHandleMediaCasters</Name>
<Value>true</Value>
</Property>
in wowza/content/streamschedule.smil
<smil>
<head>
</head>
<body>
<stream name=“dubstepfm"></stream>
<playlist name=“audioviz" playOnStream=“dubstepfm" repeat="true" scheduled="2014-01-01 12:59:59">
<video src="spectrum1.stream" start="-2" length="86400"/>
<video src="spectrum2.stream" start="-2" length="86400"/>
<video src="wavesline.stream" start="-2" length="86400"/>
<video src="wavespoint.stream" start="-2" length="86400"/>
</playlist>
</body>
</smil>
in wowza/content/wavespoint.stream
udp://127.0.0.1:10040
in wowza/content/wavesline.stream
udp://127.0.0.1:10030
in wowza/content/spectrum2.stream
udp://127.0.0.1:10020
in wowza/content/spectrum1.stream
udp://127.0.0.1:10010
and finally the ffmpeg instances that create the audio viz
ffmpeg -i http://stream.dubstep.fm:5000 -filter_complex showwaves=s=1280x720:mode=point,drawtext=fontfile=d3.ttf:fontsize=28:fontcolor=white:textfile=dsfm.tv.txt:y=10:x=10 -c:v libx264 -b:v 3000k -pix_fmt yuv420p -c:a copy -preset ultrafast -bsf h264_mp4toannexb -f mpegts udp://127.0.0.1:10040?pkt_size=1316
ffmpeg -i http://stream.dubstep.fm:5000 -filter_complex showwaves=s=1280x720:mode=line,drawtext=fontfile=/d3.ttf:fontsize=28:fontcolor=white:textfile=dsfm.tv.txt:y=10:x=10 -c:v libx264 -preset ultrafast -b:v 3000k -pix_fmt yuv420p -c:a copy -bsf h264_mp4toannexb -f mpegts udp://127.0.0.1:10030?pkt_size=1316
ffmpeg -i http://stream.dubstep.fm:5000 -filter_complex showspectrum=mode=separate:s=1280x720,drawtext=fontfile=d3.ttf:fontsize=28:fontcolor=white:textfile=dsfm.tv.txt:y=10:x=10 -c:v libx264 -b:v 3000k -pix_fmt yuv420p -c:a copy -preset ultrafast -bsf h264_mp4toannexb -f mpegts udp://127.0.0.1:10020?pkt_size=1316
ffmpeg -i http://stream.dubstep.fm:5000 -filter_complex showspectrum=s=1280x720,drawtext=fontfile=d3.ttf:fontsize=28:fontcolor=white:textfile=dsfm.tv.txt:y=10:x=10 -c:v libx264 -preset ultrafast -b:v 3000k -pix_fmt yuv420p -c:a copy -bsf h264_mp4toannexb -f mpegts udp://127.0.0.1:10010?pkt_size=1316
to sum it all up im generating 2 spectrograms and 2 waveforms using the audio from a shoutcast server. each one plays for 24 hours before switching to the next one in the list. if a stream is published with the name djstream, it will immediately switch to that content… once djstream is finished it goes back to the schedule again, rotating once every 24 hours to the next stream… the single
i believe the app type has to be ‘live’ for most of this stuff to work, and i dont think you can switch to a stream published to a different app.
results -> http://dsfm.tv
ok enough wowza on the ffmpeg list.. let me know if you have any q’s, etc
cheers!
> On Oct 25, 2014, at 1:54 PM, Felix E. Klee <felix.klee at inka.de> wrote:
>
> Thanks Luke! Hm, I thought it was standard feature. But being not, I
> guess I'll first look at Wowza which seems to be scriptable with
> ActionScript. Fortunately, I've used ActionScript before: Many years
> ago, I wrote a streaming video player, based on AMS.
>
> Anyhow, there must be a smooth solution. l just can't believe that
> it's not possible to run something akin to a TV station on the
> Internet.
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
More information about the ffmpeg-user
mailing list