[FFmpeg-trac] #11150(avformat:new): Issue with processing HEVC Dolby Vision
FFmpeg
trac at avcodec.org
Wed Aug 21 17:49:08 EEST 2024
#11150: Issue with processing HEVC Dolby Vision
-------------------------------------+-------------------------------------
Reporter: duace | Type: defect
Status: new | Priority: important
Component: avformat | Version: git-
Keywords: | master
dolby_vision hevc conversion | Blocked By:
extraction corruption regression |
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
**Summary of the bug:**
When attempting to process video files containing HEVC Dolby Vision
streams, FFMPEG encounters issues that result in corrupted output files.
**How to reproduce:**
1. **Conversion from MKV to MP4**
- Command:
{{{
% ffmpeg -y -i P7.DT-DL.FEL.mkv -c copy -strict unofficial bad_convert.mp4
ffmpeg version N-116755-g28ad75c243-ga754ee0844+1 Copyright (c) 2000-2024
the FFmpeg developers
built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
configuration: --pkg-config=pkgconf --cc='ccache gcc' --cxx='ccache
g++' --ld='ccache g++' --extra-cxxflags=-fpermissive --extra-cflags=-Wno-
int-conversion --disable-autodetect --enable-amf --enable-bzlib --enable-
cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv
--enable-lzma --enable-nvenc --enable-zlib --enable-sdl2 --enable-
ffnvcodec --enable-nvdec --enable-cuda-llvm --enable-gmp --enable-
libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-
libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug
--enable-libfdk-aac --enable-libass --enable-libfreetype --enable-gpl
--enable-librav1e --enable-libsvtav1 --enable-libjxl --enable-gnutls
--extra-libs=-liconv --enable-version3 --enable-nonfree
libavutil 59. 34.100 / 59. 34.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
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
Input #0, matroska,webm, from 'P7.DT-DL.FEL.mkv':
Metadata:
encoder : libebml v1.4.5 + libmatroska v1.7.1
Duration: 00:00:25.61, start: 0.000000, bitrate: 77914 kb/s
Stream #0:0: Video: hevc (Main 10), yuv420p10le(tv,
bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98
tbr, 1k tbn (default)
Metadata:
BPS : 69000121
DURATION : 00:00:25.609000000
NUMBER_OF_FRAMES: 614
NUMBER_OF_BYTES : 220878013
_STATISTICS_WRITING_APP: mkvmerge v83.0 ('Circle Of Friends')
64-bit
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:1: Video: hevc (Main 10), yuv420p10le(tv,
bt2020nc/bt2020/smpte2084), 1920x1080 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98
tbr, 1k tbn (default)
Metadata:
BPS : 9255056
DURATION : 00:00:24.650000000
NUMBER_OF_FRAMES: 591
NUMBER_OF_BYTES : 28517144
_STATISTICS_WRITING_APP: mkvmerge v83.0 ('Circle Of Friends')
64-bit
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Side data:
DOVI configuration record: version: 1.0, profile: 7, level: 6, rpu
flag: 1, el flag: 1, bl flag: 0, compatibility id: 6, compression: 0
Stream mapping:
Stream #0:0 -> #0:0 (copy)
Output #0, mp4, to 'corrupt_out.mp4':
Metadata:
encoder : Lavf61.5.101
Stream #0:0: Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv,
bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], q=2-31, 23.98
fps, 23.98 tbr, 16k tbn (default)
Metadata:
BPS : 69000121
DURATION : 00:00:25.609000000
NUMBER_OF_FRAMES: 614
NUMBER_OF_BYTES : 220878013
_STATISTICS_WRITING_APP: mkvmerge v83.0 ('Circle Of Friends')
64-bit
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Press [q] to stop, [?] for help
[vost#0:0/copy @ 000001f8f7950480] Invalid DTS: 1968 PTS: 1328, replacing
by guess
[vost#0:0/copy @ 000001f8f7950480] Non-monotonic DTS; previous: 1328,
current: 672; changing to 1329. This may result in incorrect timestamps in
the output file.
[vost#0:0/copy @ 000001f8f7950480] Non-monotonic DTS; previous: 1329,
current: 1328; changing to 1330. This may result in incorrect timestamps
in the output file.
[out#0/mp4 @ 000001f8f7283280] video:215701KiB audio:0KiB subtitle:0KiB
other streams:0KiB global headers:0KiB muxing overhead: 0.006229%
frame= 614 fps=0.0 q=-1.0 Lsize= 215715KiB time=00:00:25.48
bitrate=69345.6kbits/s speed=52.1x
}}}
- Actual Behavior: FFMPEG generates a corrupted MP4 file that fails to
play correctly. The video stream does not play in standard media players,
acting as if it's disabled.
- FFprobe output:
{{{
[extract_extradata @ 000001f76173b180] No start code is found.
corrupt_out.mp4: Invalid data found when processing input
}}}
- Despite this, the output file has the correct metadata.
2. **Extraction of a Segment**
- Command: `ffmpeg -y -ss 00:00:10 -i P7.DT-DL.FEL.mp4 -t 5 -map 0 -c
copy -strict unofficial bad_extract.mp4`
- Actual Behavior: The conversion completes without any
warnings/errors, however the resulting MP4 file is also corrupted, and
FFprobe output is the same as in the previous case.
3. **Conversion from MP4 to MKV**
- Command:
{{{
% ffmpeg -y -i P7.DT-DL.FEL.mp4 -c copy -strict unofficial bad_convert.mkv
ffmpeg version N-116755-g28ad75c243-ga754ee0844+1 Copyright (c) 2000-2024
the FFmpeg developers
built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
configuration: --pkg-config=pkgconf --cc='ccache gcc' --cxx='ccache
g++' --ld='ccache g++' --extra-cxxflags=-fpermissive --extra-cflags=-Wno-
int-conversion --disable-autodetect --enable-amf --enable-bzlib --enable-
cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-iconv
--enable-lzma --enable-nvenc --enable-zlib --enable-sdl2 --enable-
ffnvcodec --enable-nvdec --enable-cuda-llvm --enable-gmp --enable-
libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-
libx264 --enable-libx265 --enable-libdav1d --enable-libaom --disable-debug
--enable-libfdk-aac --enable-libass --enable-libfreetype --enable-gpl
--enable-librav1e --enable-libsvtav1 --enable-libjxl --enable-gnutls
--extra-libs=-liconv --enable-version3 --enable-nonfree
libavutil 59. 34.100 / 59. 34.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
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
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'P7.DT-DL.FEL.mp4':
Metadata:
major_brand : mp42
minor_version : 1
compatible_brands: mp42dby1isom
creation_time : 2024-05-04T19:09:51.000000Z
Duration: 00:00:25.61, start: 0.000000, bitrate: 78241 kb/s
Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568),
yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9],
69000 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
Metadata:
creation_time : 2024-05-04T19:09:51.000000Z
handler_name : video handler
vendor_id : [0][0][0][0]
encoder : HEVC Coding
Stream #0:1[0x2](und): Video: hevc (Main 10) (dvhe / 0x65687664),
yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 1920x1080 [SAR 1:1 DAR 16:9],
9234 kb/s, 23.98 fps, 23.98 tbr, 24k tbn
Metadata:
creation_time : 2024-05-04T19:09:51.000000Z
handler_name : video handler
vendor_id : [0][0][0][0]
encoder : DOVI Coding
Side data:
DOVI configuration record: version: 1.0, profile: 7, level: 6, rpu
flag: 1, el flag: 1, bl flag: 0, compatibility id: 6, compression: 0
Stream mapping:
Stream #0:0 -> #0:0 (copy)
[out#0/matroska @ 000002bbf2f79280] Could not write header (incorrect
codec parameters ?): Invalid data found when processing input
Conversion failed!
}}}
- Actual Behavior: FFMPEG fails to write the output file with the
error.
**Environment:**
- FFMPEG version: N-116755-g28ad75c243-ga754ee0844+1 (built on Windows 11
23H2 with Media Autobuild Suite)
- Input file: `P7.DT-DL.FEL.mkv` and `P7.DT-DL.FEL.mp4` (Dolby Vision HEVC
video)
- Output file: `bad_extract.mp4` and `bad_convert.mp4` (Corrupted video)
**Additional Information:**
- The problem occurs with all Dolby Vision profile video samples (P5, P7,
P8).
- This issue appears to be a regression since commit
[https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/a696b288861a09403e316f4eb33bbc7cb6c03e5c
a696b288861a09403e316f4eb33bbc7cb6c03e5c].
- Link to sample files and results:
[https://drive.google.com/drive/folders/15F5kZWAr6-HWdKSCRd4Mix1wsretxZba?usp=drive_link
Google Drive]
--
Ticket URL: <https://trac.ffmpeg.org/ticket/11150>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list