其他分享
首页 > 其他分享> > 批量加水印Batch版代码(依赖:FFMPEG)

批量加水印Batch版代码(依赖:FFMPEG)

作者:互联网

@echo off
::CONST
set AWM_CORE_VERSION=1.7.20220623
set BL_CORE_VERSION=3.2
set TITLE=批量加水印工具
set AUTHOR=panpanpan
set CONTACT=pxxh0120
set PROJECT_ADDRESS=https://github.com/PanXXHH/VideoWatermark

::GLOBAL/CONFIG
set skipDefaultVariable=n
set FFMPEG_EXE=ffmpeg
set FFPROBE_EXE=ffprobe

::PRELOAD
setlocal EnableDelayedExpansion

::README
echo **********[%TITLE%(依赖:FFMPEG), 版本号:%AWM_CORE_VERSION%, 作者:%AUTHOR%, 改进建议/意见:%CONTACT%, 开源:%PROJECT_ADDRESS%]**********
echo ********************
echo 注:提前装好FFMPEG工具
echo 注:mp4视频存放在同目录下
echo 注:mp4文件名不能出现空格,否则会出错
echo 注:同目录下要放logo.png文件
echo 注:"-d"为跳过默认参数
echo 注:水印图片尺寸不能大于视频帧宽或帧高

::变量输入区(选填)

::导入目录变量
::变量名
set variableName=inputdir
::默认变量值
set defaultVariableValue=.\
::变量描述
set variableDescription=视频导入目录【必须以"\"结尾】
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::导出目录变量
::变量名
set variableName=outputdir
::默认变量值
set defaultVariableValue=.\output\
::变量描述
set variableDescription=视频导出目录【必须以"\"结尾】
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片文件名称变量
::变量名
set variableName=WMFileName
::默认变量值
set defaultVariableValue=logo.png
::变量描述
set variableDescription=水印图片文件名称
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片输出X起始位置变量
::变量名
set variableName=WMPlaceX
::默认变量值
set defaultVariableValue=10
::变量描述
set variableDescription=水印图片输出X起始位置
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片输出Y起始位置变量
::变量名
set variableName=WMPlaceY
::默认变量值
set defaultVariableValue=15
::变量描述
set variableDescription=水印图片输出Y起始位置
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片输出宽度变量
::变量名
set variableName=WMw
::默认变量值
set defaultVariableValue=default
::变量描述
set variableDescription=水印图片输出宽度【default为图片宽度】
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片输出高度变量
::变量名
set variableName=WMh
::默认变量值
set defaultVariableValue=default
::变量描述
set variableDescription=水印图片输出高度【default为图片高度】
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::水印图片输出背景是否模糊变量
::变量名
set variableName=background_blurred
::默认变量值
set defaultVariableValue=n
::变量描述
set variableDescription=水印图片输出背景是否模糊
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%【y/n】(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::视频文件格式变量(遍历核v3.2 加装)
::变量名
set variableName=videoType
::默认变量值
set defaultVariableValue=mp4
::变量描述
set variableDescription=视频文件格式(遍历核v3.2 加装)
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

::文件完整性报告变量(遍历核v3.2 加装)
::变量名
set variableName=isWriteReport
::默认变量值
set defaultVariableValue=y
::变量描述
set variableDescription=是否写文件完整性报告【y/n】(遍历核v3.2 加装)
if [%skipDefaultVariable%] == [y] (
	set %variableName%=%defaultVariableValue%
)else (
	set /p %variableName%=输入%variableDescription%(默认:%defaultVariableValue%):
	if not defined %variableName% (
		set %variableName%=%defaultVariableValue%
	)else (
		call set "variableValue=%%%variableName%%%"
		if [!variableValue!] == [-d] (
			set %variableName%=%defaultVariableValue%
			set skipDefaultVariable=y
		)
	)
)

:: 变量预处理区

if not [%WMw%] == [default] goto skip_get_WMw
%FFPROBE_EXE% -v error -of flat=s=_ -select_streams v:0 -show_entries stream=width %WMFileName% >> _temp_width.txt
FOR /f "tokens=5 delims==_" %%i in (_temp_width.txt) do @set WMw=%%i
del _temp_width.txt
:skip_get_WMw
::水印图片高度变量
if not [%WMh%] == [default] goto skip_get_WMh
%FFPROBE_EXE% -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height %WMFileName% >> _temp_height.txt
FOR /f "tokens=5 delims==_" %%i in (_temp_height.txt) do @set WMh=%%i
del _temp_height.txt
:skip_get_WMh

:: 执行区

mkdir %outputdir%
:: ---------------(遍历核v3.2 加装)
echo 执行过程记录表>%outputdir%过程记录.txt
for /f "delims=" %%a in ('dir /b %inputdir%*.%videoType%') do (
echo processing:%%a>>%outputdir%过程记录.txt
if [%background_blurred%] == [y] (
	%FFMPEG_EXE% -i %inputdir%%%a -vf "[in]delogo=x=%WMPlaceX%:y=%WMPlaceY%:w=%WMw%:h=%WMh%[a];movie=%WMFileName%,scale=%WMw%:%WMh%[watermark];[a][watermark] overlay=%WMPlaceX%:%WMPlaceY% [out]" %outputdir%%%a
)else (
	%FFMPEG_EXE% -i %inputdir%%%a -vf "movie=%WMFileName%,scale=%WMw%:%WMh%[watermark];[a][watermark] overlay=%WMPlaceX%:%WMPlaceY% [out]" %outputdir%%%a
)
echo success:%%a>>%outputdir%过程记录.txt
)

::生成检查完整性
if not [%isWriteReport%] == [y] goto behindWriteReport
echo 文件完整性报告>%outputdir%文件完整性报告.txt
echo file_Exist:file_Name>>%outputdir%文件完整性报告.txt
for /f "delims=" %%i in ('dir /b %inputdir%*.mp4') do (
if exist %outputdir%%%i (echo true:%%i>>%outputdir%文件完整性报告.txt) else echo false:%%i>>%outputdir%文件完整性报告.txt
)
:behindWriteReport

  

标签:set,FFMPEG,%%,variableValue,Batch,else,defaultVariableValue%,加水,variableName%
来源: https://www.cnblogs.com/xiaopanpan0120/p/16412399.html