Batch file FFmpeg水印的延迟

Batch file FFmpeg水印的延迟,batch-file,ffmpeg,video-processing,ffprobe,video-watermarking,Batch File,Ffmpeg,Video Processing,Ffprobe,Video Watermarking,您好,我正在尝试使用.bat文件对上传到网站的视频进行水印。我希望水印在视频中开始2/3。我已经编写了下面的代码来实现这一点: set ffmpeg="C:\ffmpeg\bin\ffmpeg.exe" set ffprobe="C:\ffmpeg\bin\ffprobe.exe" setlocal disabledelayedexpansion for %%a in ("H:\4 - Watermark Process\Before\*.mp

您好,我正在尝试使用.bat文件对上传到网站的视频进行水印。我希望水印在视频中开始2/3。我已经编写了下面的代码来实现这一点:

set ffmpeg="C:\ffmpeg\bin\ffmpeg.exe"
set ffprobe="C:\ffmpeg\bin\ffprobe.exe"

setlocal disabledelayedexpansion
for %%a in ("H:\4 - Watermark Process\Before\*.mp4") do (
    for /F "delims=" %%I in ('ffprobe -v quiet -show_entries format^=duration stream^=width -of csv^=p^=0:s^=x "%%a"') do set "duration=%%I"
    echo Duration is: %duration%
    do (
    
         ffmpeg -i logo.png -y -v quiet -vf scale=%%I*0.25:-1 scaled.png
         ffmpeg -i "%%a" -vf "movie=scaled.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h:enable=gte(t\,duration*2/3) [out]" "H:\4 - Watermark Process\After\%%~na.mp4"
    )
)

pause 10
问题是我犯了一些错误

第一个是当我使用echo查看它是否正常工作时,持续时间没有输出:

回波持续时间为:

我的叠加代码中还有其他错误


您的持续时间问题是本站点此特定区域中最常见的问题,这是一个延迟扩展问题。不能在同一代码块(
for
)中同时定义和使用变量。存在孤立的
do(
在您的代码中,需要删除它!无论如何,如果/F%%I的内部循环
只运行一次,只需将整个
ffmpeg
内容移动到其中,直接使用
%%I
而不是分配变量
持续时间
,这样您就不必考虑延迟扩展之类的事情…