[Libav-user] how to predict the size of destination clips

Peter Steinbach steinbach at scionics.de
Mon Jun 6 09:27:05 CEST 2016


Hi -

>
> How would that work? (in theory)

Pretty simple from what I understand. You simply assume the worst case 
scenario: (speaking in h264/hevc tongue) that would mean every frame is 
an reference frame (IIRC the terminology) and multiply by the number of 
frames you expect plus the overall encoding overhead. LZW-type encoders 
do it this way:
https://github.com/Cyan4973/lz4/blob/master/lib/lz4.h#L106

>
> Either you did set an (average) bitrate when starting the
> encoder, then you know which value you chose and if you
> also know the length of the input, you can calculate the
> size of the output file.

In my use case, this is not possible as I am after the highest encoding 
bitrate possible and on top, I do know the number of frames to come.

> FFmpeg generally cannot know the length of the input.

Well, because the API is built around a frame/packet concept rather then 
a complete input buffer. If I demux/convert a video, I also know the the 
length/size of the incoming video. It's only if you stream from a 
recording device that you don't know the length of the recording to come.

> If you did not set a bitrate (but constant quality) then
> it is impossible to calculate the output file size.

I doubt that. But feel free to prove me wrong. Of course, it will be 
hard to predict the exact size of the encoded buffer. But that is not 
what I am after. I would love to have an upper bound with some degree of 
confidence.

Best,
P


More information about the Libav-user mailing list