On Sun, 29 Jan 2017, Peter Große wrote:

The current implementation creates new segments comparing

 pkt->pts - first_pts > nb_segs * min_seg_duration

This works fine, but if the keyframe interval is smaller than "min_seg_duration"
segments shorter than the minimum segment duration are created.

Example: keyint=50, min_seg_duration=3000000
segment 1 contains keyframe 1 (duration=2s <  total_duration=3s)
               and keyframe 2 (duration=4s >= total_duration=3s)
segment 2 contains keyframe 3 (duration=6s >= total_duration=6s)
segment 3 contains keyframe 4 (duration=8s <  total_duration=9s)
               and keyframe 5 (duration=10s >= total_duration=9s)
...

Segment 2 is only 2s long, shorter than min_seg_duration = 3s.

To fix this, new segments are created based on the actual written duration.
Otherwise the option name "min_seg_duration" is misleading.

Signed-off-by: Peter Große <[email protected]>
---
v2: use pts difference instead of fragile duration calculation

Seems ok to me.

// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to