Hello everyone,
I am trying to find a way to combine several unstable live streams into one output. The streams are broadcasted via rtp_mpegts on several ports. What I've attempted is here:
ffmpeg -i rtp://0.0.0.0:1001 -i rtp://0.0.0.0:1003 -filter_complex "nullsrc=size=1280x720[base];[0:v]scale=640x380[vid1];[1:v]scale=640x380[vid2];[base][vid1]overlay[tmp1];[tmp1][vid2]overlay=x=640[output]" -map "[output]" -an -f mpegts udp://192.168.255.255:4567
What I do here is capture two streams and combine them on a nullsrc canvas. This works fine, as does using hstack and vstack for the same purpose. The problem is, not all of the streams are available all the time, some drop in and out. If a stream on port 1003 is unavailable at startup, per-se, ffmpeg awaits an initial connection until the stream is available. In other words, my udp broadcast only starts once all the streams have appeared in some point in time since I ran the command.
The question: is there some way to not wait for all streams and only display the ones available, the others remaining black or at the last frame meanwhile?
Best regards,
JasonX
Combining live streams
Re: Combining live streams
i have this idea (not tested)
but firstly: not sure how fast is null source, perhaps using picture and repeating picture in loop will be faster https://ffmpeg.org/ffmpeg-filters.html#movie-1
Idea:
try to re-arange signal flow - use two independent null sources, overlay on top of each null source your rtp source, combine both - as such there will be always video even if rtp source is not present so process should progress smoothly
I believe there are option to loop last frame in case of source ending prematurely - please check:
https://ffmpeg.org/ffmpeg-filters.html#framesync
overlay filter should support it accordingly to documentation:
https://ffmpeg.org/ffmpeg-filters.html#overlay-1
but firstly: not sure how fast is null source, perhaps using picture and repeating picture in loop will be faster https://ffmpeg.org/ffmpeg-filters.html#movie-1
Idea:
try to re-arange signal flow - use two independent null sources, overlay on top of each null source your rtp source, combine both - as such there will be always video even if rtp source is not present so process should progress smoothly
I believe there are option to loop last frame in case of source ending prematurely - please check:
https://ffmpeg.org/ffmpeg-filters.html#framesync
overlay filter should support it accordingly to documentation:
https://ffmpeg.org/ffmpeg-filters.html#overlay-1
'