Ffmpeg - 感叹号停止水印
Ffmpeg - Exclamation Point Stopping Watermark
我正在使用下面的代码自动为文件夹中的视频添加水印:
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
值,所以不要这样做,您不需要它。变量内的值已经作为 for
可替换参数可用,因此,只需将 ffmpeg
命令放在第二个 for
内并直接使用检索到的值。
我正在使用下面的代码自动为文件夹中的视频添加水印:
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
值,所以不要这样做,您不需要它。变量内的值已经作为 for
可替换参数可用,因此,只需将 ffmpeg
命令放在第二个 for
内并直接使用检索到的值。