[Libav-user] How to foce h264 encoder to duplicate the same frame into the stream?

Gustav González xtingray at gmail.com
Wed May 11 15:03:36 EEST 2022

On Wed, May 11, 2022 at 6:24 AM Aleksei Komarov <abkomarov at gmail.com> wrote:

> Hi,
> I'm encoding VFR frame sequence to Constant Frame Rate output stream (in
> real-time)
> E.g. to maintain 60 fps I have to DUPLICATE frames from 30 fps stream (or
> any VFR video streams).
> To do this I`m copying the same frame binary data and feed it to
> avcodec_receive_packet() once again. (It works but is not optimal)
> What is the proper way to tell the encoder that the new frame is the same
> as the last one besides timestamp data (PTS/DTS). In other words how
> to duplicate last frame in the stream without reencoding the frame again?
> I've seen  this type of video ( generated by OBS ) where MANY frames were
> really duplicated, where pkt_size=48 or lower!

I'm just shooting in the dark, but what if you don't focus on the AVFrame
data but on saving a copy of the AVPacket of the previous frame after it is
encoded? In that way, you could avoid calling the whole encoding process
again. Just guessing.

  Gustav Gonzalez
  xtingray at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20220511/63546a6c/attachment.htm>

More information about the Libav-user mailing list