[FFmpeg-trac] #11136(ffprobe:new): FFprobe DTS and documentation errors
FFmpeg
trac at avcodec.org
Mon Aug 12 19:53:42 EEST 2024
#11136: FFprobe DTS and documentation errors
-------------------------------------+-------------------------------------
Reporter: markfilipak | Type: defect
Status: new | Priority: normal
Component: ffprobe | Version: git-
Keywords: ffprobe DTS | master
docs | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Thank you for considering this report. As you will see, '-show_frames'
says PTS = DTS = 25257 for frame.0. That is incorrect.
Command: ffprobe -flags2 +showall -sexagesimal -analyzeduration 240000000
-probesize 1000000000 -select_streams v -show_frames -of flat -i
y:\VIDEO_TS\VTS_01_1.VOB
C:\Windows\System32>ffmpeg -version
ffmpeg version 2024-05-20-git-127ded5078-full_build-www.gyan.dev Copyright
(c) 2000-2024 the FFmpeg developers
built with gcc 13.2.0 (Rev5, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
w32threads --disable-autodetect --enable-fontconfig --enable-iconv
--enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma
--enable-libsnappy --enable-zlib --enable-librist --enable-libsrt
--enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray
--enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libaribcaption
--enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libxevd
--enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxeve
--enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg
--enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r
--enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-
liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-
amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va
--enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec
--enable-nvenc --enable-vaapi --enable-libshaderc --enable-vulkan
--enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme
--enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb
--enable-libmp3lame --enable-libshine --enable-libtheora --enable-
libtwolame --enable-libvo-amrwbenc --enable-libcodec2 --enable-libilbc
--enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-
libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-
libflite --enable-libmysofa --enable-librubberband --enable-libsoxr
--enable-chromaprint
libavutil 59. 19.100 / 59. 19.100
libavcodec 61. 5.104 / 61. 5.104
libavformat 61. 3.103 / 61. 3.103
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
This is the final version that runs in Win7.
I tried to extract 5 seconds of y:\VIDEO_TS\VTS_01_1.VOB but not even
'-copyts' would stop FFmpeg changing TSes. So, I made a binary copy of the
first 4 frames that is suitable for examining with a hex editor in order
to confirm what I've written below. I saved it as 'FFprobe DTS and
documentation errors.bin'.
The following are extracts of the FFprobe output annotated by my parse of
y:\VIDEO_TS\VTS_01_1.VOB.
{{{
frames.frame.0.pts=25257
frames.frame.0.pkt_dts=25257
frames.frame.0.pict_type="I"
0x84E: 00 00 01 00 00 0A <== is I
0x80E: 00 00 01 E0 07 EC 81 C1 0D 31 00 01 C5 53 11 00 01 AD DD
0x80E: == == == == == == == C1 == == == == == == == == == == ==
.———''——.
PTS_DTS_flags 11-- ----
0x80E: == == == == == == == == == 31 00 01 C5 53 == == == == ==
.—————————————————' '————————————————.
marker bits 0011 1 1 1
PTS 000 0000 0000 0000 000 1100 0101 0101 001 <==
25257
0x80E: == == == == == == == == == == == == == == 11 00 01 AD DD
.—————————————————'
'————————————————.
marker bits 0001 1 1
1
DTS 000 0000 0000 0000 000 1010 1101
1101 110 <== 22254
+------------------------------------------+
¦ ERROR #1: FFprobe reports the wrong DTS. ¦
+------------------------------------------+
frames.frame.3.pts="N/A"
frames.frame.3.pkt_dts=34266
frames.frame.3.pict_type="P"
0x1016B: 00 00 01 00 00 D2 <== is P
0x1000E: 00 00 01 E0 07 EC 81 00 <== no PTS or DTS
frames.frame.1.pts=28260
frames.frame.1.pkt_dts=28260
frames.frame.1.pict_type="B"
0x16507: 00 00 01 00 00 5A <== is B
0x1600E: 00 00 01 E0 07 EC 81 00 <== no PTS or DTS
frames.frame.2.pts=31263
frames.frame.2.pkt_dts=31263
frames.frame.2.pict_type="B"
0x1AB5F: 00 00 01 00 00 9A <== is B
0x1A80E: 00 00 01 E0 07 EC 81 00 <== no PTS or DTS
}}}
Of course I have no idea why there's no PTSes. FFmpeg and MPV seem to be
doing the only sensible thing they could do in such a situation.
However...
{{{
+--------------------------------------------------------------------------------------------+
¦ ERROR #2, documentation:
¦
¦ I noticed that '-show_frames' is in PTS order. That's pretty vital
information that's not ¦
¦ shown in the docs. The doc says:
¦
¦ "-show_frames
¦
¦ "Show information about each frame and subtitle contained in the input
multimedia stream." ¦
¦ The "input multimedia stream", eh? Then the '-show_frames' frames should
be in DTS order, ¦
¦ shouldn't they? The correct thing would be to list the frames in DTS
order and add a ¦
¦ helpful note to the doc stating why they are in DTS order.
¦
+--------------------------------------------------------------------------------------------+
}}}
Kindly let me know if I can be of further service.
Thanks--Mark.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11136>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list