#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 , 3 years ago
| Resolution: | → duplicate |
|---|---|
| Status: | new → closed |
comment:2 by , 3 years 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.