FFMPEG 将 mp4 合并为 mp4 批量

FFMPEG 将 mp4 合并为 mp4 批量

嗨,抱歉,如果这个问题已经被问过了,但是我有 intro.mp4 和另一个文件夹中的 1000 多个 mp4,我需要将 intro.mp4 添加到文件夹中的每个 mp4 中,我使用 ubuntu,最好的方法是什么。

所有 mp4 都有相同的编码

ffmpeg -i intro.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i 1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy output.mp4

此命令一次只显示一个单词,这是我批量尝试,但 var 不起作用

for f in *.mp4; do ffmpeg -i "$f" -c copy -bsf:v h264_mp4toannexb -f mpegts "$f.ts"; done

此代码运行良好

 for i in *.mp4;  
do
test="concat:intro.mp4.ts|"${i%.*}".mp4.ts";
ffmpeg -i  "$test" -c copy anime2/"${i%.mp4}.mp4"; done

使用这两个命令可以在一个脚本中完成整个批处理

 for f in *.mp4; do ffmpeg -i "$f" -c copy -bsf:v h264_mp4toannexb -f mpegts "$f.ts"; done


     for i in *.mp4;  
    do
    test="concat:intro.mp4.ts|"${i%.*}".mp4.ts";
    ffmpeg -i  "$test" -c copy anime2/"${i%.mp4}.mp4"; done

谢谢

答案1

参数必须匹配,因此首先必须使简介符合其他视频(反之亦然)。

用于ffprobe查看差异:

ffprove -loglevel error -show_streams intro.mp4
ffprove -loglevel error -show_streams 1.mp4

重新编码intro.mp4以匹配1.mp4

ffmpeg -i intro.mp4 -filter_complex "[0:v]fps=500/21,scale=848:480:force_original_aspect_ratio=increase,crop=848:480,setsar=171/170[v]" -map "[v]" -map 0:a -c:v libx264 -profile:v main -c:a aac -ar 44100 intro_b.mp4

现在使用连接解复用器. 制作一个文本文件,列出要连接的输入:

file 'intro_b.mp4'
file '1.mp4'

然后连接:

ffmpeg -f concat -i input.txt -c copy output.mp4

相关内容