我目前正在尝试向我的视频批量添加 outros 和水印。
我是新来的。
这是我将视频转换为相同格式的代码
cd source
for %%f in (*.mp4) do (
ffmpeg -i "%%f" -c:v libx264 -b:v 1500k -s 720x720 -crf 22 -g 1 -keyint_min 1 -preset slow -shortest -ar 44100 "../converted/c_%%f"
)
cd outro
for %%f in (*.mp4) do (
ffmpeg -i "%%f" -c:v libx264 -b:v 1500k -s 720x720 -crf 22 -g 1 -keyint_min 1 -preset slow -shortest -ar 44100 "../../converted/outro/c_%%f"
)
call concat.bat
pause
这是我用来连接文件的代码:
cd converted
for %%f in (*.mp4) do (
echo.>%%f.list
echo file '%%f' >> %%f.list
echo file 'c_outro.mp4' >> %%f.list
)
for %%f in (*.list) do (
ffmpeg -f concat -i %%f -c copy concatenated/%%f.mp4
)
call final.bat
pause
这是我用来添加水印的代码:
cd concatenated
for %%f in (*.list) do
ffmpeg -i "%%f" -i logo.png -filter_complex "overlay=10:10" "../../final_%%f"
)
pause
我在哪里做错了?它可以毫无问题地转换视频并将它们连接起来,但给它们加水印似乎不起作用。请指教。
最佳答案
正如@LN 所说,在一个命令中完成。
ffmpeg -i main.mp4 -i outro.mp4 -loop 1 -i logo.png
-filter_complex "[0]scale=720:720,setsar=1[m];[1]scale=720:720,setsar=1[o];
[m][0:a][o][1:a]concat=n=2:v=1:a=1[v][a];[v][2]overlay=10:10:shortest=1[vid]"
-c:v libx264 -ar 44100 -map [vid] -map [a] "../converted/final_%%f"
当然,您将不得不遍历源视频,就像在 Q 中一样:
for %%f in (*.mp4) do (
ffmpeg -i "%%f" -i outro.mp4 -loop 1 -i logo.png
-filter_complex "[0]scale=720:720,setsar=1[m];[1]scale=720:720,setsar=1[o];
[m][0:a][o][1:a]concat=n=2:v=1:a=1[v][a];[v][2]overlay=10:10:shortest=1[vid]"
-c:v libx264 -ar 44100 -map [vid] -map [a] "../converted/final_%%f"
)
最好将 outro 转换一次以匹配源视频属性:
ffmpeg -i outro.mp4 -vf scale=720:720,setsar=1 -ar 44100 -g 1 outro-new.mp4
如果您这样做,请跳过
[1]scale=720:720,setsar=1[o];
并替换 [o]
与 [1:v]
关于windows - ffmpeg - 2 个文件 - 转换 -> 连接 -> 水印不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39216906/