On 08/28/2020 03:51 AM, Michael Koch wrote:
Hello all,
please comment if the following is right or wrong:
-- The timebase of a video (TB in setpts filter) is expressed in the unit [s]
(seconds).
-- The framerate of a video (FR in setpts filter) is expressed in the unit
[s^-1] (1/seconds).
-- In many cases the timebase is the reciprocal of the framerate, but this
isn't always the case.
-- If the timebase is the reciprocal of the framerate, a stream can be delayed by x frames using
setpts=PTS+x
-- In the more general case for arbitrary timebase and framerate, a stream can be delayed by x
frames using setpts=PTS+x/(FR*TB)
I don't know enough yet to know whether this helps, but PTS in H.222 (ยง2.1.57) is: "A field that may
be present in a PES packet header that indicates the time that a presentation unit is presented in
the system target decoder." It's a 33 bit field in the PES HEADER EXTENSION, starting at bit 4,
[0000.4] PTS: ---- 000- 0000 0000 0000 000- 1000 1001 1000 111-
and must be divided by 90KHz in order to yield seconds. I've seen it solely in
key frames.
I've computed PTS and the deltas between PTSs for several dozen professionally authored videos and
they do not correlate to frames, even for CFR video. H.222 presents a decoding model and PTS seems
to conform to that model, not to the frames in the stream. H.222 appears to be insufficiently
documented to resolve the discrepancy. It remains mysterious but I hope to eventually resolve it.
- Mark.
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-user
To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".