[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