[FFmpeg-trac] #10365(avformat:new): Order of metadata in mkv changes on its own

FFmpeg trac at avcodec.org
Wed May 17 12:55:41 EEST 2023


#10365: Order of metadata in mkv changes on its own
-------------------------------------+-------------------------------------
             Reporter:  yumu         |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:  avformat
              Version:  git-master   |               Resolution:
             Keywords:  mkv          |               Blocked By:
  matroska metadata order            |
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Description changed by yumu:

Old description:

> Summary of the bug:
> The order of metadata changes on its own each time mkv is processed.
>
> How to reproduce:
> 1. Create a mkv with some metadata. (or an existing one)
> {{{
> ffmpeg -f lavfi -i smptehdbars=d=2 -f lavfi -i sine=d=2 -metadata
> artist=ARTIST -metadata comment=COMMENT -metadata date=20230101 ".mkv"
> }}}
> 2. Copy
> {{{
> > ffmpeg -i ".mkv" -c copy "copied.mkv"
> ffmpeg version N-110589-g30c71ef98e-20230514 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=20230514
>   libavutil      58.  7.100 / 58.  7.100
>   libavcodec     60. 11.100 / 60. 11.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 '.mkv':
>   Metadata:
>     DATE            : 20230101
>     ARTIST          : ARTIST
>     COMMENT         : COMMENT
>     ENCODER         : Lavf60.5.100
>   Duration: 00:00:02.00, start: 0.000000, bitrate: 43 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.11.100 libx264
>       DURATION        : 00:00:02.003000000
>   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
>     Metadata:
>       ENCODER         : Lavc60.11.100 libvorbis
>       DURATION        : 00:00:02.003000000
> Output #0, matroska, to 'copied.mkv':
>   Metadata:
>     DATE            : 20230101
>     ARTIST          : ARTIST
>     COMMENT         : COMMENT
>     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
>     Metadata:
>       ENCODER         : Lavc60.11.100 libx264
>       DURATION        : 00:00:02.003000000
>   Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 44100 Hz, mono, fltp
>     Metadata:
>       ENCODER         : Lavc60.11.100 libvorbis
>       DURATION        : 00:00:02.003000000
> Stream mapping:
>   Stream #0:0 -> #0:0 (copy)
>   Stream #0:1 -> #0:1 (copy)
> Press [q] to stop, [?] for help
> [out#0/matroska @ 000001efc70c2f00] video:2kB audio:3kB subtitle:0kB
> other streams:0kB global headers:3kB muxing overhead: 85.019422%
> frame=   50 fps=0.0 q=-1.0 Lsize=      11kB time=00:00:01.99 bitrate=
> 44.0kbits/s speed= 663x
> }}}
>
> Then the order of the metadata changes.
>
> For some reason, it does not change in the output of step 2, but you can
> see it in the output of ffprobe.
> in the output of ffprobe, the COMMENT tag is moved to the top, but in
> binary, the DATE tag is moved to the top and the order is from
> ARTIST,COMMENT,DATE,ENCODER to DATE,ARTIST,COMMENT,ENCODER.
> Why ffprobe's output is not in binary order is a mystery.
> {{{
> > ffprobe ".mkv"
> ffprobe version N-110589-g30c71ef98e-20230514 Copyright (c) 2007-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=20230514
>   libavutil      58.  7.100 / 58.  7.100
>   libavcodec     60. 11.100 / 60. 11.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 '.mkv':
>   Metadata:
>     DATE            : 20230101
>     ARTIST          : ARTIST
>     COMMENT         : COMMENT
>     ENCODER         : Lavf60.5.100
>   Duration: 00:00:02.00, start: 0.000000, bitrate: 43 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.11.100 libx264
>       DURATION        : 00:00:02.003000000
>   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
>     Metadata:
>       ENCODER         : Lavc60.11.100 libvorbis
>       DURATION        : 00:00:02.003000000
> }}}
>
> {{{
> > ffprobe "copied.mkv"
> ffprobe version N-110589-g30c71ef98e-20230514 Copyright (c) 2007-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=20230514
>   libavutil      58.  7.100 / 58.  7.100
>   libavcodec     60. 11.100 / 60. 11.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 'copied.mkv':
>   Metadata:
>     COMMENT         : COMMENT
>     DATE            : 20230101
>     ARTIST          : ARTIST
>     ENCODER         : Lavf60.5.100
>   Duration: 00:00:02.01, start: 0.000000, bitrate: 43 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.11.100 libx264
>       DURATION        : 00:00:02.003000000
>   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
>     Metadata:
>       ENCODER         : Lavc60.11.100 libvorbis
>       DURATION        : 00:00:02.013000000
> }}}
>
> Copying copied.mkv again will change the order of the metadata.
> {{{
> > ffmpeg -i "copied.mkv" -c copy "copied2.mkv"
> ...
> > ffprobe -hide_banner "copied2.mkv"
> Input #0, matroska,webm, from 'copied2.mkv':
>   Metadata:
>     ARTIST          : ARTIST
>     COMMENT         : COMMENT
>     DATE            : 20230101
>     ENCODER         : Lavf60.5.100
>   Duration: 00:00:02.01, start: 0.000000, bitrate: 43 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.11.100 libx264
>       DURATION        : 00:00:02.003000000
>   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
>     Metadata:
>       ENCODER         : Lavc60.11.100 libvorbis
>       DURATION        : 00:00:02.013000000
> }}}
>
> My ffmpeg is the Windows version downloaded from https://github.com/BtbN
> /FFmpeg-Builds/releases.
>
> I just want to change another place, but I don't want the metadata order
> to change on its own as well.

New description:

 Summary of the bug:
 The order of metadata changes on its own each time mkv is processed.
 I think it's a mkv (matroska) problem because it didn't reproduce for avi,
 mov, mp4, ogg containers.

 I don't think metadata should be reordered unintentionally.

 How to reproduce:
 1. Create a mkv with some metadata. (or an existing one)
 {{{
 ffmpeg -f lavfi -i smptehdbars=d=2 -f lavfi -i sine=d=2 -metadata
 artist=ARTIST -metadata comment=COMMENT -metadata date=20230101 ".mkv"
 }}}
 2. Copy
 {{{
 > ffmpeg -i ".mkv" -c copy "copied.mkv"
 ffmpeg version N-110589-g30c71ef98e-20230514 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=20230514
   libavutil      58.  7.100 / 58.  7.100
   libavcodec     60. 11.100 / 60. 11.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 '.mkv':
   Metadata:
     DATE            : 20230101
     ARTIST          : ARTIST
     COMMENT         : COMMENT
     ENCODER         : Lavf60.5.100
   Duration: 00:00:02.00, start: 0.000000, bitrate: 43 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.11.100 libx264
       DURATION        : 00:00:02.003000000
   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
     Metadata:
       ENCODER         : Lavc60.11.100 libvorbis
       DURATION        : 00:00:02.003000000
 Output #0, matroska, to 'copied.mkv':
   Metadata:
     DATE            : 20230101
     ARTIST          : ARTIST
     COMMENT         : COMMENT
     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
     Metadata:
       ENCODER         : Lavc60.11.100 libx264
       DURATION        : 00:00:02.003000000
   Stream #0:1: Audio: vorbis (oV[0][0] / 0x566F), 44100 Hz, mono, fltp
     Metadata:
       ENCODER         : Lavc60.11.100 libvorbis
       DURATION        : 00:00:02.003000000
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 [out#0/matroska @ 000001efc70c2f00] video:2kB audio:3kB subtitle:0kB other
 streams:0kB global headers:3kB muxing overhead: 85.019422%
 frame=   50 fps=0.0 q=-1.0 Lsize=      11kB time=00:00:01.99 bitrate=
 44.0kbits/s speed= 663x
 }}}

 Then the order of the metadata changes.

 For some reason, it does not change in the output of step 2, but you can
 see it in the output of ffprobe.
 in the output of ffprobe, the COMMENT tag is moved to the top, but in
 binary, the DATE tag is moved to the top and the order is from
 ARTIST,COMMENT,DATE,ENCODER to DATE,ARTIST,COMMENT,ENCODER.
 Why ffprobe's output is not in binary order is a mystery.
 {{{
 > ffprobe ".mkv"
 ffprobe version N-110589-g30c71ef98e-20230514 Copyright (c) 2007-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=20230514
   libavutil      58.  7.100 / 58.  7.100
   libavcodec     60. 11.100 / 60. 11.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 '.mkv':
   Metadata:
     DATE            : 20230101
     ARTIST          : ARTIST
     COMMENT         : COMMENT
     ENCODER         : Lavf60.5.100
   Duration: 00:00:02.00, start: 0.000000, bitrate: 43 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.11.100 libx264
       DURATION        : 00:00:02.003000000
   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
     Metadata:
       ENCODER         : Lavc60.11.100 libvorbis
       DURATION        : 00:00:02.003000000
 }}}

 {{{
 > ffprobe "copied.mkv"
 ffprobe version N-110589-g30c71ef98e-20230514 Copyright (c) 2007-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=20230514
   libavutil      58.  7.100 / 58.  7.100
   libavcodec     60. 11.100 / 60. 11.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 'copied.mkv':
   Metadata:
     COMMENT         : COMMENT
     DATE            : 20230101
     ARTIST          : ARTIST
     ENCODER         : Lavf60.5.100
   Duration: 00:00:02.01, start: 0.000000, bitrate: 43 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.11.100 libx264
       DURATION        : 00:00:02.003000000
   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
     Metadata:
       ENCODER         : Lavc60.11.100 libvorbis
       DURATION        : 00:00:02.013000000
 }}}

 Copying copied.mkv again will change the order of the metadata.
 {{{
 > ffmpeg -i "copied.mkv" -c copy "copied2.mkv"
 ...
 > ffprobe -hide_banner "copied2.mkv"
 Input #0, matroska,webm, from 'copied2.mkv':
   Metadata:
     ARTIST          : ARTIST
     COMMENT         : COMMENT
     DATE            : 20230101
     ENCODER         : Lavf60.5.100
   Duration: 00:00:02.01, start: 0.000000, bitrate: 43 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.11.100 libx264
       DURATION        : 00:00:02.003000000
   Stream #0:1: Audio: vorbis, 44100 Hz, mono, fltp
     Metadata:
       ENCODER         : Lavc60.11.100 libvorbis
       DURATION        : 00:00:02.013000000
 }}}

 My ffmpeg is the Windows version downloaded from https://github.com/BtbN
 /FFmpeg-Builds/releases.

--
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10365#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list