Opened 3 hours ago

Last modified 22 minutes ago

#11324 new defect

Corrupted HEVC bitstream generated by extracting it from MP4 file

Reported by: Diego de Souza Owned by:
Priority: important Component: ffmpeg
Version: git-master Keywords: mp4 atom dtsd sps pps hevc
Cc: Diego de Souza Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by Diego de Souza)

Summary of the bug:

When FFmepg is demuxing MP4 where the STSD information does not match the bitstream PPS/SPS information a corrupted bitstream is generated when trying to extract the video bitstream.

I assume the demuxer is passing the PPS/SPS from the MP4 container instead of the HEVC bitstream. Perhaps it is passing the PPS/SPS of the HEVC before the one from the STSD.

Setup:

Ubuntu 24.04
FFmpeg 6.1.1

Video file: https://streams.videolan.org/ffmpeg/incoming/11158/h265.mp4

How to reproduce:

        % ffmpeg -i h265.mp4 -c:v copy h265.hevc
(CRASH) % ffmpeg -i h265.hevc -f null -

ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)
  configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared
  libavutil      58. 29.100 / 58. 29.100
  libavcodec     60. 31.102 / 60. 31.102
  libavformat    60. 16.100 / 60. 16.100
  libavdevice    60.  3.100 / 60.  3.100
  libavfilter     9. 12.100 /  9. 12.100
  libswscale      7.  5.100 /  7.  5.100
  libswresample   4. 12.100 /  4. 12.100
  libpostproc    57.  3.100 / 57.  3.100

Change History (4)

comment:1 by Diego de Souza, 3 hours ago

Component: avformatffmpeg
Description: modified (diff)

comment:2 by Balling, 2 hours ago

Please check latest commit from master.

comment:3 by Diego de Souza, 32 minutes ago

Tested with the latest commit from master (3bfb6061fb54d24f0ba80f1b5ad01c0bbb196830)

Same problem, the issue remains.

        % ffmpeg -i h265.mp4 -c:v copy h265.hevc
(CRASH) % ffmpeg -i h265.hevc -f null -

ffmpeg version N-117948-g3bfb6061fb Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 13 (Ubuntu 13.2.0-23ubuntu4)
  configuration: --prefix=/home/ddesouza/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/ddesouza/ffmpeg_build/include --extra-ldflags=-L/home/ddesouza/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/home/ddesouza/bin --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable-avfilter
  libavutil      59. 47.101 / 59. 47.101
  libavcodec     61. 26.100 / 61. 26.100
  libavformat    61.  9.100 / 61.  9.100
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  6.101 / 10.  6.101
  libswscale      8. 12.100 /  8. 12.100
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100

comment:4 by Diego de Souza, 22 minutes ago

Version: 6.1.1git-master
Note: See TracTickets for help on using tickets.