ffmpeg - 2个文件 - 转换 - > Concate->水印不工作

时间:2016-08-29 23:56:59

标签: windows batch-file ffmpeg concatenation converter

我目前正在尝试批量添加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

我在哪里犯了错误?它正在转换视频而没有问题并将它们联合起来,但是对它们加水印似乎不起作用。请指教。

1 个答案:

答案 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]