使用FFMPEG修改编码器元数据的问题

问题描述:

我正在尝试使用FFMPEG -metadata来更改FFMPEG编码器的编写应用程序,无论出于何种原因,它都在读取输入,但实际上并没有写出任何内容.

I'm trying to change FFMPEG encoder writing application with FFMPEG -metadata and for whatever reason, it's reading the input but not actually writing anything out.

-map_metadata -metadata:s:v:0 -metadata Writing_application,基本上每个堆栈溢出和堆栈交换线程,但它们根本不会写入文件.

-map_metadata -metadata:s:v:0 -metadata writing_application, basically every single stack overflow and stack exchange thread, but they all won't write to the file at all.

ffmpeg -i x.mp4 -s 1920x1080 -r 59.94 -c:v h264_nvenc -b:v 6000k -vf yadif=1 -preset fast -fflags +bitexact -flags:v +bitexact -flags:a +bitexact -ac 2 x.mp4
ffmpeg -i x.mp4 -c:v copy -c:a copy -metadata Encoder="TeXT Encoder" -fflags +bitexact -flags:v +bitexact -flags:a +bitexact test.mp4
ffmpeg -i x.mp4 -vcodec copy -acodec copy -map_metadata out.mp4
ffmpeg -i x.mp4 -vcodec copy -acodec copy -metadata encoder="Encoder" -metadata comment="XX" testmeta.mp4
ffmpeg -i x.ts -c:v copy -c:a copy -metadata:s:v:0 h264 ISFT='TeXT' x.mp4
ffmpeg -i x.mp4 -i FFMETADATAFILE -map_metadata 1 -codec copy testcopy.mp4
ffmpeg -i x.ts -f ffmetadata FF

METADATAFILE

METADATAFILE

我试图提取数据并用FFMETADATAFILE将其重写回去,但是没有显示出来.尝试强制ffmpeg在没有任何emtadata的情况下进行写入,然后将其写回,但不起作用.想知道我是否可以编写自己的编码器来写入特定的编码器名称,例如Handbrake/Lavf如何将编码器应用程序写入视频文件的METADATA中.或者只是使用FFMPEG并原生修改METADATA.

I tried to extracting the data and rewrite it back with FFMETADATAFILE but it doesn't show up. Tried forcing ffmpeg to write without any emtadata and write it back but doesn't work. Was wondering if I can write my own encoder that writes the specific encoder name, like how Handbrake/Lavf writes the encoder application into the METADATA of the video file. Or just use FFMPEG and modify the METADATA natively.

要设置MP4的编写应用程序(mediainfo)或编码器(ffmpeg),请使用

To set the writing application (mediainfo) or encoder (ffmpeg) for MP4s, use

ffmpeg -i input {-encoding parameters} -metadata:g encoding_tool=myapp out.mp4