[Libav-user] How to corretly setting container and stream information when using an external encoder and using libavformat to pack the movie container
Ingmar Rieger
dev at irieger.net
Sat Oct 26 15:13:51 EEST 2019
Hey,
On 26.10.19 10:59, Carl Eugen Hoyos wrote:
> That's at least a surprising argumentation given the number of encoders
> included in FFmpeg.
Did I miss something? For me the relevant codecs I know for intermediate
work are ProRes, DNxHR and Cineform with the later being seldomly used
but the only open standard and as I recently found out supported in
Resolve for some time now so as my main target is Resolve it seems worth
giving it a try. ProRes and DNxHR are both proprietary with only reverse
engineered codecs available.
>> - Bit rate is just the value from one sample and depends very much on
>> the input resolution, I think the value is from a 4K sample file. Does
>> this really matter? The value reported from "ffmpeg -i testout.mov" is
>> completely different anyway, I assume it is calculated when calling
>> "av_write_trailer"?
>
> And is the written value correct?
Looking at my example with just below 800 KB per frame and 5 frames
written (at 120fps) and calculating it it makes sense. Also after retime
without reencoding to 5 fps it matches the file size. Was just wondering
if this is something one has to take care of or if it will be done by
libav based on actual data?
>> 2. Correct frame rate/time base settings. Tried several examples, tried
>> replicating what I extracted from them and made of the documentation
>> regarding libav I found about this topic but as the link below (ffmpeg
>> -i output) shows, the framerate is always wrong. Had combinations of
>> parameters where I had clips with 16k fps etc.
>
> You have to read back the actual timebase used by the muxer (can
> be different than the one you requested) and calculate the timestamps
> accordingly.
Is there a good introduction how to correctly set time bases and
calculate frame numbers/timecodes from it?
Whatever I change I get different frame rates but never what I intend
like in this example 24fps. (This shall be variable later on but would
be nice to at least understand it)
So basically I have an input like frame_rate (in integer for simplicity,
don't care about the crazy 23.98 and other strange rates), a frame
number from 0 to NUM_FRAMES-1 and ideally a start time input -> How to
set the correct time base/rates and calculate the frame dts/pts?
--
Kind regards,
Ingmar
More information about the Libav-user
mailing list