我目前正在尝试批量添加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
我在哪里犯了错误?它正在转换视频而没有问题并将它们联合起来,但是对它们加水印似乎不起作用。请指教。
答案 0 :(得分:2)
正如@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]