[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