[FFmpeg-devel] matroska encoder option -- force new Cluster on keyframe
bernt at wulfram.com
Sun Jul 21 11:31:29 CEST 2013
On Jul 21, 2013, at 2:26 AM, Nicolas George wrote:
> Le tridi 3 thermidor, an CCXXI, Bernie Habermeier a écrit :
>> This is why I think this should be an option, and one that you'd only turn
>> on if you thought this was something that makes sense to you. Overall,
>> when you transcode a movie, you have to make a lot of tradeoffs about size
>> and quality. This option just allows you to make an additional decision
>> regarding seek time efficiency -- for cases where you absolutely care
>> about this -- perhaps on mobile devices.
> Currently, the logic to start a new cluster seems to be:
> * If the output file is not seekable (streaming/net), whatever comes first:
> * after 32 ko;
> * after 1 s.
> * If the output file is seekable, whatever comes first:
> * after 5 Mo;
> * after 5 s;
> * before a video key frame if the current cluster is already > 4 ko.
> The most obvious seems to make all these values options:
> -max_stream_cluster_size 32k
> -max_stream_cluster_duration 1000
> -max_cluster_size 5M
> -max_cluster_duration 5000
> -min_cluster_size 4k
> (with a word in the doc that the max size/duration can be exceeded by up to
> one packet)
> It would also probably be the easiest.
> Note that the current logic seems to already implement what Michael and you
> have been discussing: start a new cluster at each keyframe except if they
> are too frequent (4 ko).
But I explicitly WANT to have an option that doesn't "take it under advisement".
Specifically, I want to control exact placement of my I-frames, and therefore CuePoints, and I want to a 100% guarantee that I have a new Cluster start for each such CuePoint. What you're proposing does not do that at all, and has a completely different feel to it. We can certainly add this kind of control, and I'm fine implementing that, but that is specifically not what I want.
More information about the ffmpeg-devel