Opened 7 days ago

#11187 new defect

ffprobe -show_entries displays extra data (empty sub-blocks)

Reported by: qtmax Owned by:
Priority: normal Component: ffprobe
Version: 7.0 Keywords:
Cc: qtmax Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Description and steps to reproduce:

I use the following command to get video resolution:

$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 test.mp4
1080x1920

However, for some files 1080x1920x is printed. It happens when the [STREAM] entity contains a [SIDE_DATA] sub-entity:

$ ffprobe -v error -select_streams v:0 -show_entries stream test.mp4
[STREAM]
index=0
codec_name=vp9
codec_long_name=Google VP9
profile=Profile 0
codec_type=video
codec_tag_string=vp09
codec_tag=0x39307076
width=1080
height=1920
<...>
[SIDE_DATA]
side_data_type=Ambient viewing environment
ambient_illuminance=3140000/10000
ambient_light_x=15635/50000
ambient_light_y=16450/50000
[/SIDE_DATA]
[/STREAM]

When only width and height are requested, it still prints the empty [SIDE_DATA] block:

$ ffprobe -v error -select_streams v:0 -show_entries stream=width,height test.mp4
[STREAM]
width=1080
height=1920
[SIDE_DATA]
[/SIDE_DATA]
[/STREAM]

It apparently leads to printing the last empty field when using -of csv, which results in 1080x1920x with -of csv=s=x:p=0.

Expected result:

As side_data hasn't been requested, it should not be printed as an empty block with the default format, and it should not add an extra empty field with the CSV format.

Version info (package from Arch Linux):

ffmpeg version n7.0.2 Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 14.2.1 (GCC) 20240805
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-frei0r --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libdvdnav --enable-libdvdread --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libharfbuzz --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libplacebo --enable-libpulse --enable-librav1e --enable-librsvg --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpl --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-vapoursynth --enable-version3 --enable-vulkan
  libavutil      59.  8.100 / 59.  8.100
  libavcodec     61.  3.100 / 61.  3.100
  libavformat    61.  1.100 / 61.  1.100
  libavdevice    61.  1.100 / 61.  1.100
  libavfilter    10.  1.100 / 10.  1.100
  libswscale      8.  1.100 /  8.  1.100
  libswresample   5.  1.100 /  5.  1.100
  libpostproc    58.  1.100 / 58.  1.100

Change History (0)

Note: See TracTickets for help on using tickets.