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

Posted

技术标签:

【中文标题】使用 FFMPEG 修改编码器元数据的问题【英文标题】:Problems with modifying encoder metadata with FFMPEG 【发布时间】:2019-12-16 08:34:18 【问题描述】:

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

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

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

元数据文件

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

天哪,谢谢你,这几天我一直在为此苦苦挣扎。感谢您的帮助! 对于那些想要更多信息的人,:g 后缀是 metadata_specifier - 详细信息在 -map_metadata 文档中 非常感谢 encoding_tool 的价值!

以上是关于使用 FFMPEG 修改编码器元数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上使用修改后的元数据(无重新编码)保存原始图像数据

使用 ffmpeg 和 libvorbis 编码 webm 不起作用

ffmpeg转换视频编码

FFmpeg X264编码参数

FFmpeg X264编码参数

如何在c ++中使用ffmpeg编码视频时设置moov原子位置