【问题标题】:Ffmpeg - Exclamation Point Stopping WatermarkFfmpeg - 感叹号停止水印
【发布时间】:2019-01-31 22:31:40
【问题描述】:

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

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

我发现所有名称中带有感叹号 (!) 的视频都是这样做的。

如何让这些视频在标题中带有感叹号的水印?

【问题讨论】:

    标签: batch-file ffmpeg watermark ffprobe


    【解决方案1】:
    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 值,因此不要这样做,您不需要它。变量中的值已经作为for 可替换参数提供,因此,只需将ffmpeg 命令放在第二个for 中并直接使用检索到的值。

    【讨论】:

      猜你喜欢
      • 2015-05-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2012-01-27
      • 2012-03-06
      • 2011-09-15
      • 2018-02-08
      相关资源
      最近更新 更多