我如何编译 ffmpeg 以使“-map_metadata -1”起作用?

我如何编译 ffmpeg 以使“-map_metadata -1”起作用?

我刚刚尝试了(静态)ffmpeg 构建https://johnvansickle.com/ffmpeg/我还尝试了 Linux Mint 21.2 发行版附带的 ffmpeg 版本,它们都能够使用“-map_metadata -1”删除元数据

下面的示例是使用我编译的 ffmpeg 时得到的:

前:ffmpeg -i 输入.avi

...
Input #0, avi, from 'input.avi':
  Metadata:
    software        : Lavf59.37.100
  Duration: 00:49:27.20, start: 0.000000, bitrate: 966 kb/s
  Stream #0:0: Video: mpeg4 (DX50 / 0x30355844), yuv420p, 352x260 [SAR 1:1 DAR 88:65], 793 kb/s, 25 fps, 25 tbr, 25 tbn
  Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, fltp, 160 kb/s
    Metadata:
      title           : Audio Stream

后:ffmpeg -i 输入.avi -map_metadata -1 -map 0:0 -map 0:1 -c:v 复制 -c:a 复制 输出.avi

...
Input #0, avi, from 'output.avi':
  Metadata:
    software        : Lavf60.18.100
  Duration: 00:49:27.20, start: 0.000000, bitrate: 966 kb/s
  Stream #0:0: Video: mpeg4 (DX50 / 0x30355844), yuv420p, 352x260 [SAR 1:1 DAR 88:65], 793 kb/s, 25 fps, 25 tbr, 25 tbn
  Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 44100 Hz, stereo, fltp, 160 kb/s
    Metadata:
      title           : Audio Stream

问题是:

当我使用编译版本的 ffmpeg 时,它不会删除任何元数据。

我已经使用(通用)指南编译了 ffmpeghttps://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu之前多次,除了这个“-map_metadata -1”不起作用的问题之外,其他一切都与我的 ffmpeg 配合良好,编码、解码、视频、音频......

那么,在构建 ffmpeg 时,是否存在配置选项或 --enable-*** 开关,在https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu指南,以便我的(编译的)ffmpeg 可以与“-map_metadata -1”一起使用来删除元数据。?

(本人整理的) ffmpeg-版本

ffmpeg version N-112838-g7212466e73 Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/home/user/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --extra-libs='-lpthread -lm' --extra-libs=-lpthread --ld=g++ --bindir=/home/user/bin --enable-gpl --enable-gnutls --enable-libaom --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-librav1e --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
libavutil      58. 32.100 / 58. 32.100
libavcodec     60. 34.100 / 60. 34.100
libavformat    60. 17.100 / 60. 17.100
libavdevice    60.  4.100 / 60.  4.100
libavfilter     9. 13.100 /  9. 13.100
libswscale      7.  6.100 /  7.  6.100
libswresample   4. 13.100 /  4. 13.100
libpostproc    57.  4.100 / 57.  4.100

还,

(本人整理的) ffmpeg --help | grep -i 元数据

...
-map_metadata outfile[,metadata]:infile[,metadata]  set metadata information of outfile from infile
-metadata string=string  add metadata

...关于元数据删除,一切看起来都已切换,但它却不起作用。?

答案1

由于您已经为音频流创建了映射,并且想要删除其元数据,请尝试在选项后指定元数据映射-map或设置一个空的标题元数据。

ffmpeg -i somefile.mp4 \
       -map 0:v:0 -map 0:a:0 -map_metadata -1 \
       -c copy \
       outputfile.mp4

相关内容