[FFmpeg-user] Changing the input of a live stream on the fly

Michael Pastore mpastore at accela.com
Tue Jul 7 00:10:34 CEST 2015

We are looking into using FFMPEG as a replacement for Microsoft Expression Encoder for live streaming. It seems FFMPEG can almost do everything we need, except that Expression lets you easily switch input sources on the fly for a live stream. I haven't found a way to do the same thing in FFMPEG.

We want to stream live audio over a static, looping video. The stream outputs to an IIS Smooth Streaming publishing point. We are able to do this with the following command:

ffmpeg.exe -y -i "<looping video.mp4>" -f dshow -i audio="<my audio device>" -movflags isml+frag_keyframe -c:a libvo_aacenc -c:v libx264 -pix_fmt yuv420p -vf scale=320:240 -b:v 16k -f ismv <output>

Our problem is that the software needs to support a special feature. At any time, the person controlling the live stream can "pause" it. What this means is any person who views this stream in their browser will see, instead of the looping image file, an image saying something like "We will be right back". The user will also hear pause music, instead of the feed from the microphone. When they "resume" the live stream, then viewers will once again see the looping video file and hear the audio from the microphone.

I found a thread from 2012 asking about dynamic overlays: (https://ffmpeg.org/pipermail/ffmpeg-user/2012-August/008703.html ). The replies suggest that this is not possible through the CLI, but is that still the case today? I could accomplish what I want if I was able to add an overlay to a live stream on the fly.

Is there any way I can accomplish this goal, short of writing a custom filter? Thanks in advance!

More information about the ffmpeg-user mailing list