我正在尝试修复一些旧视频的元数据,因此我想复制所有流音频视频和字幕并合并来自 txt 文件的元数据。
我首先使用以下命令转储元数据:
avconv -i out.mp4 -f ffmetadata metadata.txt
然后尝试使用元数据进行复制:
avconv -i MOV_0732.mp4 -f ffmetadata -i metadata.txt -c:v copy -c:a copy -c:s copy -map 0 out.mp4
但最终的元数据未受影响,如果我将元数据参数移动到末尾,avconv 就不会启动:
[buffer @ 0x2128d40] w:1280 h:720 pixfmt:yuv420p
[mpeg4 @ 0x2124660] Invalid pixel aspect ratio 65536/65536, limit is 255/255
Output #0, mp4, to 'out.mp4':
Metadata:
major_brand : isom
minor_version : 0
compatible_brands: isom3gp4
creation_time : 1947-03-24 14:12:20
Stream #0.0(eng): Video: mpeg4, yuv420p, 1280x720 [PAR 65536:65536 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 90k tbc
Metadata:
creation_time : 1947-03-24 14:12:20
Stream #0.1(eng): Audio: [0][0][0][0] / 0x0000, 48000 Hz, mono, s16, 200 kb/s
Metadata:
creation_time : 1947-03-24 14:12:20
Stream mapping:
Stream #0:0 -> #0:0 (h264 -> mpeg4)
Stream #0:1 -> #0:1 (aac -> libvo_aacenc)
Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
答案1
阅读文档并进行大量搜索后,我终于得到了我想要的答案,最终的命令是:
avconv -i IN.mp4 -i METADATA.txt -map_metadata 1 -codec copy -map 0 OUT.mp4
这意味着:
- 使用输入:
IN.mp4
和METADATA.txt
- 映射输入 1 的元数据(
METADATA.txt
) - 复制所有编解码器(无转码)
- 从输入 0 映射所有流 (
IN.mp4
) - 写给
OUT.mp4