[FFmpeg-devel] Developer wanted: Repeat last frame when no packets are received from real time source

Jonathan W. sedcmail at gmail.com
Wed Apr 13 04:56:44 CEST 2016


I use ffmpeg to receive a live input stream in real time, transcode it and then
output it via various live protocols and as an archived mp4 locally. The input
data is always received in real time.

Sometimes the live input stream stops sending data for a while but the input
stream remains open. Currently when this happens, ffmpeg stops encoding until
more data is received from the input stream.

I would like a facility in ffmpeg that, when no data is received from the live
input stream, it continues to send the last decoded packet of video from the
input stream (plus silent audio) to the encoder (in this case for transmission
via udp/rtmp/rtsp etc and for local storage as an mp4) with increasing pts/dts
as required and with keyframes at the correct interval etc so the stream still
decodes correctly for new clients who connect during a period where the input
stream is not sending any data. In this case they would see the last frozen
frame, then, when data is once again received from the live input stream, it
would continue as normal until the next break in transmission and so on.

(Sending just the last video keyframe to the client to trigger a frozen image is
not acceptable as I need to record an exact copy of the stream in the archived
mp4 as it appeared to viewers and that includes any breaks in transmission.)

As a bonus it would be nice if there could be a max timeout option after which
time the connection is closed if no more input is received from the stream after
that time period.

I am not capable or competent enough to implement this functionality in ffmpeg
myself so I am requesting a time/money quotation from any of you good developers
who could take this on.

Many thanks

More information about the ffmpeg-devel mailing list