#10375 closed defect (duplicate)
Cannot copy mkv cover art
Reported by: | yumu | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | avformat |
Version: | git-master | Keywords: | mkv matroska coverart attachment |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
The mkv cover art is not copied as an attachment, but as a video.
I think it's a mkv (matroska) problem because the cover art of the avi, mov, mp4 container copied successfully.
How to reproduce:
- Create a mkv with cover art. (or an existing one)
ffmpeg -f lavfi -i smptehdbars=d=2 -f lavfi -i sine=d=2 ".mkv" ffmpeg -i ".mkv" -ss 0 -frames:v 1 ".png" ffmpeg -i ".mkv" -attach ".png" -c copy -metadata:s:t mimetype="image/png" -metadata:s:t:0 filename="cover.png" "with-cover.mkv"
- Copy
> ffmpeg -i "with-cover.mkv" -c copy -map 0 "with-cover_copied.mkv" ffmpeg version N-110654-g63767b79a5-20230518 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 12.2.0 (crosstool-NG 1.25.0.152_89671bf) configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20230518 libavutil 58. 7.100 / 58. 7.100 libavcodec 60. 14.100 / 60. 14.100 libavformat 60. 5.100 / 60. 5.100 libavdevice 60. 2.100 / 60. 2.100 libavfilter 9. 8.100 / 9. 8.100 libswscale 7. 2.100 / 7. 2.100 libswresample 4. 11.100 / 4. 11.100 libpostproc 57. 2.100 / 57. 2.100 Input #0, matroska,webm, from 'with-cover.mkv': Metadata: ENCODER : Lavf60.5.100 Duration: 00:00:02.01, start: 0.000000, bitrate: 59 kb/s Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 1k tbn Metadata: ENCODER : Lavc60.14.100 libx264 DURATION : 00:00:02.003000000 Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp Metadata: ENCODER : Lavc60.14.100 libvorbis DURATION : 00:00:02.013000000 Stream #0:2: Video: png, rgb24(pc, gbr/unknown/unknown), 320x240 [SAR 1:1 DAR 4:3], 90k tbr, 90k tbn (attached pic) Metadata: filename : cover.png mimetype : image/png Output #0, matroska, to 'with-cover_copied.mkv': Metadata: encoder : Lavf60.5.100 Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(tv, bt709/unknown/unknown, progressive), 320x240 [SAR 1:1 DAR 4:3], q=2-31, 25 fps, 25 tbr, 1k tbn (default) Metadata: ENCODER : Lavc60.14.100 libx264 DURATION : 00:00:02.003000000 Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 44100 Hz, mono, fltp Metadata: ENCODER : Lavc60.14.100 libvorbis DURATION : 00:00:02.013000000 Stream #0:2: Video: png (MPNG / 0x474E504D), rgb24(pc, gbr/unknown/unknown), 320x240 [SAR 1:1 DAR 4:3], q=2-31, 90k tbr, 1k tbn (attached pic) Metadata: filename : cover.png mimetype : image/png Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Stream #0:2 -> #0:2 (copy) Press [q] to stop, [?] for help [out#0/matroska @ 0000023e8c559740] video:6kB audio:3kB subtitle:0kB other streams:0kB global headers:3kB muxing overhead: 52.075660% frame= 50 fps=0.0 q=-1.0 Lq=-1.0 size= 15kB time=00:00:01.99 bitrate= 61.4kbits/s speed= 695x
Then the cover art becomes just a video stream instead of an attachment.
In the output of step 2, stream #0:2 has "(attached pic)", but in the actual output of ffprobe, "DISPOSITION:attached_pic" is 0 and it seems to be a normal video stream.
When played back in VLC, the cover art is not displayed in "Media information" and "Track 2" is displayed in "Video Track".
Below is the output of ffprobe.
> ffprobe -hide_banner -show_streams "with-cover.mkv" Input #0, matroska,webm, from 'with-cover.mkv': Metadata: ENCODER : Lavf60.5.100 Duration: 00:00:02.01, start: 0.000000, bitrate: 59 kb/s Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 1k tbn Metadata: ENCODER : Lavc60.14.100 libx264 DURATION : 00:00:02.003000000 Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp Metadata: ENCODER : Lavc60.14.100 libvorbis DURATION : 00:00:02.013000000 Stream #0:2: Video: png, rgb24(pc, gbr/unknown/unknown), 320x240 [SAR 1:1 DAR 4:3], 90k tbr, 90k tbn (attached pic) Metadata: filename : cover.png mimetype : image/png [STREAM] index=0 codec_name=h264 codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 profile=High codec_type=video codec_tag_string=[0][0][0][0] codec_tag=0x0000 width=320 height=240 coded_width=320 coded_height=240 closed_captions=0 film_grain=0 has_b_frames=2 sample_aspect_ratio=1:1 display_aspect_ratio=4:3 pix_fmt=yuv420p level=13 color_range=tv color_space=bt709 color_transfer=unknown color_primaries=unknown chroma_location=left field_order=progressive refs=1 is_avc=true nal_length_size=4 id=N/A r_frame_rate=25/1 avg_frame_rate=25/1 time_base=1/1000 start_pts=3 start_time=0.003000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=8 nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A extradata_size=48 DISPOSITION:default=0 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:ENCODER=Lavc60.14.100 libx264 TAG:DURATION=00:00:02.003000000 [/STREAM] [STREAM] index=1 codec_name=vorbis codec_long_name=Vorbis profile=unknown codec_type=audio codec_tag_string=[0][0][0][0] codec_tag=0x0000 sample_fmt=fltp sample_rate=44100 channels=1 channel_layout=mono bits_per_sample=0 initial_padding=0 id=N/A r_frame_rate=0/0 avg_frame_rate=0/0 time_base=1/1000 start_pts=0 start_time=0.000000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=N/A nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A extradata_size=3315 DISPOSITION:default=0 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:ENCODER=Lavc60.14.100 libvorbis TAG:DURATION=00:00:02.013000000 [/STREAM] [STREAM] index=2 codec_name=png codec_long_name=PNG (Portable Network Graphics) image profile=unknown codec_type=video codec_tag_string=[0][0][0][0] codec_tag=0x0000 width=320 height=240 coded_width=320 coded_height=240 closed_captions=0 film_grain=0 has_b_frames=0 sample_aspect_ratio=1:1 display_aspect_ratio=4:3 pix_fmt=rgb24 level=-99 color_range=pc color_space=gbr color_transfer=unknown color_primaries=unknown chroma_location=unspecified field_order=unknown refs=1 id=N/A r_frame_rate=90000/1 avg_frame_rate=0/0 time_base=1/90000 start_pts=0 start_time=0.000000 duration_ts=181170 duration=2.013000 bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=N/A nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A DISPOSITION:default=0 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=1 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:filename=cover.png TAG:mimetype=image/png [/STREAM]
> ffprobe -hide_banner -show_streams "with-cover_copied.mkv" Input #0, matroska,webm, from 'with-cover_copied.mkv': Metadata: ENCODER : Lavf60.5.100 Duration: 00:00:02.09, start: 0.077000, bitrate: 58 kb/s Stream #0:0: Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 320x240 [SAR 1:1 DAR 4:3], 25 fps, 25 tbr, 1k tbn (default) Metadata: ENCODER : Lavc60.14.100 libx264 DURATION : 00:00:02.080000000 Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp Metadata: ENCODER : Lavc60.14.100 libvorbis DURATION : 00:00:02.090000000 Stream #0:2: Video: png (MPNG / 0x474E504D), rgb24(pc, gbr/unknown/unknown), 320x240 [SAR 1:1 DAR 4:3], 1k tbr, 1k tbn Metadata: FILENAME : cover.png MIMETYPE : image/png DURATION : 00:00:00.077000000 [STREAM] index=0 codec_name=h264 codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 profile=High codec_type=video codec_tag_string=[0][0][0][0] codec_tag=0x0000 width=320 height=240 coded_width=320 coded_height=240 closed_captions=0 film_grain=0 has_b_frames=2 sample_aspect_ratio=1:1 display_aspect_ratio=4:3 pix_fmt=yuv420p level=13 color_range=tv color_space=bt709 color_transfer=unknown color_primaries=unknown chroma_location=left field_order=progressive refs=1 is_avc=true nal_length_size=4 id=N/A r_frame_rate=25/1 avg_frame_rate=25/1 time_base=1/1000 start_pts=80 start_time=0.080000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=8 nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A extradata_size=48 DISPOSITION:default=1 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:ENCODER=Lavc60.14.100 libx264 TAG:DURATION=00:00:02.080000000 [/STREAM] [STREAM] index=1 codec_name=vorbis codec_long_name=Vorbis profile=unknown codec_type=audio codec_tag_string=[0][0][0][0] codec_tag=0x0000 sample_fmt=fltp sample_rate=44100 channels=1 channel_layout=mono bits_per_sample=0 initial_padding=0 id=N/A r_frame_rate=0/0 avg_frame_rate=0/0 time_base=1/1000 start_pts=77 start_time=0.077000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=N/A nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A extradata_size=3315 DISPOSITION:default=0 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:ENCODER=Lavc60.14.100 libvorbis TAG:DURATION=00:00:02.090000000 [/STREAM] [STREAM] index=2 codec_name=png codec_long_name=PNG (Portable Network Graphics) image profile=unknown codec_type=video codec_tag_string=MPNG codec_tag=0x474e504d width=320 height=240 coded_width=320 coded_height=240 closed_captions=0 film_grain=0 has_b_frames=0 sample_aspect_ratio=1:1 display_aspect_ratio=4:3 pix_fmt=rgb24 level=-99 color_range=pc color_space=gbr color_transfer=unknown color_primaries=unknown chroma_location=unspecified field_order=unknown refs=1 id=N/A r_frame_rate=1000/1 avg_frame_rate=0/0 time_base=1/1000 start_pts=77 start_time=0.077000 duration_ts=N/A duration=N/A bit_rate=N/A max_bit_rate=N/A bits_per_raw_sample=N/A nb_frames=N/A nb_read_frames=N/A nb_read_packets=N/A DISPOSITION:default=0 DISPOSITION:dub=0 DISPOSITION:original=0 DISPOSITION:comment=0 DISPOSITION:lyrics=0 DISPOSITION:karaoke=0 DISPOSITION:forced=0 DISPOSITION:hearing_impaired=0 DISPOSITION:visual_impaired=0 DISPOSITION:clean_effects=0 DISPOSITION:attached_pic=0 DISPOSITION:timed_thumbnails=0 DISPOSITION:captions=0 DISPOSITION:descriptions=0 DISPOSITION:metadata=0 DISPOSITION:dependent=0 DISPOSITION:still_image=0 TAG:FILENAME=cover.png TAG:MIMETYPE=image/png TAG:DURATION=00:00:00.077000000 [/STREAM]
My ffmpeg is the Windows version downloaded from https://github.com/BtbN/FFmpeg-Builds/releases.
The detailed version is as output in step 2.
Change History (3)
follow-up: 2 comment:1 by , 18 months ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
comment:2 by , 18 months ago
I did not know this issue has been around that long. Sorry for the duplicate due to my lack of confirmation.
I hope it will be fixed.
Thank you mkver.
Duplicate of #2270, #4591. I have a patchset for this that I finally need to finish.