batch-file - Ffmpeg - 感叹号停止水印

标签 batch-file ffmpeg watermark ffprobe

我正在使用下面的代码自动为文件夹中的视频添加水印:

for %%a in ("C:\Users\Work\Desktop\Redo\*.mp4") do (
   for /F "delims=" %%I in ('ffprobe -v quiet -show_entries stream^=width -of csv^=p^=0:s^=x %%a') do set "codec=%%I"
   ffmpeg -i logo.png -y -v quiet -vf scale=!codec!*0.25:-1 scaled.png
   ffmpeg -i "%%a" -vf "movie=scaled.png [watermark]; [in][watermark] overlay=10:main_h-overlay_h [out]" "C:\Users\Work\Desktop\Redo Done\%%~na.mp4"
)

部分视频无法加水印,并出现以下类似错误:
C:\Users\Work\Desktop\Redo\Arcade_h-overlay_h [out]: No such file or directory

我发现所有带感叹号的视频 (!) 在名义上这样做。

如何将这些视频添加到标题中带有感叹号的水印?

最佳答案

setlocal disabledelayedexpansion
for %%a in ("C:\Users\Work\Desktop\Redo\*.mp4") do (
    for /F "delims=" %%I in ('
        ffprobe -v quiet -show_entries stream^=width -of csv^=p^=0:s^=x "%%a"
    ') 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 [out]" "C:\Users\Work\Desktop\Redo Done\%%~na.mp4"
    )
)

扩展 for 时感叹号将丢失延迟扩展激活时的可替换参数。因为您只使用延迟扩展来检索 codec值(value),不要做,你不需要它。变量内的值已经作为 for 可用。可替换参数,因此,只需将 ffmpeg第二个 for 中的命令并直接使用检索到的值。

关于batch-file - Ffmpeg - 感叹号停止水印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52021469/

相关文章:

android - 检查adb设备连接情况

android - 使用 Android Q ffmpeg 拒绝权限” : error=13, 权限被拒绝

php - 页面关闭后继续 php exec() ffmpeg

java - 创建仅在使用 PDFBox 打印时显示的水印(pdf 可选内容)

batch-file - 在子文件夹中查找文件夹并获取文件夹路径的批处理脚本

windows - robocopy 将选项视为文件

c# - 使用 c# 或批处理自动使用 winrar 提取 ISO

python - FFMPEG 帧精确视频裁剪

ffmpeg - 通过 ffmpeg 向视频添加动态定位的水印

java - 使用 PDFBox 加水印