我正在使用ffmpeg
进行一系列转换,我需要在其中为内容添加水印。我正在使用批处理文件来运行ffmpeg
应用程序,但我希望自动完成所有这些。
for %%a in ("*.mp4*") do ffmpeg -i "%%a" -i logo.png -filter_complex overlay "newfiles\%%~na.mp4"
pause
源视频文件:
video_a.mp4
video_b.mp4
video_c.mp4
源图像文件:
logo_x.png
logo_y.png
logo_z.png
logo_u.png
对于每个徽标PNG图像,应对所有MP4视频文件执行ffmpeg
输出应写入名为output_folder_
的新文件夹+徽标图像的名称,例如output_folder_logo_x
。
只要将整个文件夹(如logo_x输出视频)转换完毕,就可以将生成的文件压缩到RAR存档中,并将其最佳压缩到c:/users/admin/documents/dropbox
等保管文件夹中。
这样我就可以自动完成所有转换和上传过程。
最后我会在我的dropbox/megaSync
文件夹中:
output_folder_logo_x.rar
output_folder_logo_y.rar
output_folder_logo_z.rar
output_folder_logo_u.rar
更新代码:
@echo off
setlocal EnableDelayedExpansion
for %%g in ("*.png*") do (
echo %%~ng
md folder_prefix_%%~ng
for %%b in ("*.mp4*") do (
%%~ng
ffmpeg -i "%%b" -i %%g -filter_complex overlay "folder_prefix_%%~ng\%%~nb.mp4"
)
)
pause
答案 0 :(得分:1)
你几乎就在那里,在现有的
周围创建一个新的FOR
循环
这样每个png,
它会迭代所有mp4,在新目录中创建叠加层
最后将所有生成的文件放在一起
for %%a in (*.png) do (
md "out%%~na"
for %%b in (*.mp4) do (
ffmpeg -i "%%a" -i "%%b" -filter_complex overlay "out%%~na\%%b"
)
call :dorar "out%%~na.rar" "out%%~na\*"
)
答案 1 :(得分:1)
以下是我对批处理代码的建议:
@echo off
setlocal EnableDelayedExpansion
set "FolderBaseName=output_folder"
set "BaseOutputFolder=%TEMP%\%FolderBaseName%"
set "DropBoxFolder=%USERPROFILE%\documents\dropbox\megaSync"
md "%DropBoxFolder%" 2>nul
for %%I in (logo_*.png) do (
set "OutputFolder=%BaseOutputFolder%_%%~nI"
md "!OutputFolder!" 2>nul
for %%J in (*.mp4*) do (
ffmpeg.exe -i "%%~fJ" -i "%%~fI" -filter_complex overlay "!OutputFolder!\%%~nJ.mp4"
)
%ProgramFiles%\WinRAR\Rar.exe a -cfg- -ep1 -inul -m5 "%DropBoxFolder%\%FolderBaseName%_%%~nI" "!OutputFolder!\*"
rd /S /Q "!OutputFolder!"
)
endlocal
打开命令提示符窗口并在那里运行:
for /?
set /?
md /?
rd /?
这样可以显示已使用命令的帮助。