0
I am using copy stream codec and I need not have negative PTS
values in output.
This is how the command looks
ffmpeg -y -ss 00:44.002292 -to 01:04.022292 -i "https://drive.google.com/uc?authuser=0&id=1tEt19OyfM0BH43WcoECwQnGzu8eallRC" -c copy -avoid_negative_ts 1 11.mp4 -hide_banner
.
values for -ss
and -to
are keyframe timestamps. But the output video starts at a timestamp previous(at pkt_pts_time=38.997292
) to what i specify. So i decided to specify next keyframe value for -ss
option but soon i realized that it works accurately on other videos.
ffmpeg version: 4.1.1
Why this happens? What is specific about this video?
Edit
Seek time is subtracting in my case by 3*AV_TIME_BASE / 23
value
(ffmpeg_opt.c:1179)
1This must be the saddest video of all time. Just from quick observation, once you go to 44.1, you get a more correct (?) starting point. Could be rounding. Run ffmpeg with
-debug_ts
to see what happens. – slhck – 2019-04-23T14:06:28.363@slhck yes it works for 44.1,
-debug_ts
printspkt_dts:1715200 pkt_dts_time:38.8934 off:-44002292
, i enabled debug logging and noticed this:Setting codecpar->delay to 2 for stream st: 1
and i found out that it is seeking based on DTS and the final seek_timestamp is subtracting by3*AV_TIME_BASE / 23
this value (ffmpeg_opt.c:1179) and i'm not an expert so i don't get it – Tiko – 2019-04-24T10:35:01.097