
bat調用ffmpeg,怎樣改成無論視頻分辨率多少,按自適應嵌入圖片呢通過AI寫了個,640*480的成功了,但是換個視頻分辨率,右上角位置就亂套,怎樣通過以下代碼基礎,實現無論視頻分辨率多少,都是同等頂部位置,右上角,圖標大小固定呢?
nclick="copycode($('code0'));">復制代碼
- @echo off
- setlocal enabledelayedexpansion
- :: 名稱: AddWatermarkToVideos.bat
- :: 版本: 1.4
- :: 功能列表:
- :: 1. 自動為當前目錄下所有 .mkv/.mp4/.m4v 視頻添加右上角BMP水印
- :: 2. 支持 BMP 格式水印圖片(默認 watermark.bmp)
- :: 3. 每次運行前會自動清理已有_watermarked文件
- :: 4. 水印尺寸、位置由全局變量控制,便于統一修改
- :: 參數說明:
- :: - WATERMARK_WIDTH/HEIGHT 控制水印大小
- :: - WATERMARK_RIGHT_MARGIN/TOP_MARGIN 控制位置偏移
- :: - 輸出文件名格式:原文件名_watermarked.擴展名
- :: 命令參數解釋:
- :: - -y 覆蓋輸出文件不提示
- :: - -i 輸入文件
- :: - -filter_complex使用濾鏡調整水印大小并疊加到視頻右上角
- :: - -c:a copy直接復制音頻流,提高效率
- :: 使用示例:
- :: 將腳本、watermark.bmp 和視頻放在同一目錄后雙擊運行
- :: 設置 ffmpeg 路徑
- set FFMPEG=F:Softwaresubalass.batch-batffmpegbinffmpeg.exe
- :: 設置水印尺寸(像素),便于統一修改
- set WATERMARK_WIDTH=90
- set WATERMARK_HEIGHT=37
- :: 設置水印位置偏移量(像素),便于統一修改
- set WATERMARK_TOP_MARGIN=49
- set WATERMARK_RIGHT_MARGIN=52
- :: 刪除已有的_watermarked結尾的視頻文件
- echo 正在清理舊的_watermarked文件...
- del /q *_watermarked.mp4 *_watermarked.mkv *_watermarked.m4v 2>nul
- :: 檢查是否存在水印圖片
- if not exist watermark.bmp (
- echo 錯誤:未找到水印文件 watermark.bmp!請確認文件存在。
- pause
- exit /b
- )
- :: 顯示開始處理信息
- echo 正在為當前目錄下的視頻添加右上角BMP水印...
- echo 支持格式:.mkv .mp4 .m4v .wmv
- echo.
- :: 初始化計數器用于判斷是否有匹配文件
- set index=0
- :: 遍歷當前目錄下的所有 .mkv、.mp4、.m4v .wmv文件
- for %%f in (*.mkv *.mp4 *.m4v *.wmv) do (
- set /a index+=1
- set filename=%%f
- echo 正在處理: !filename!
- :: 提取文件名和擴展名
- set basename=!filename:~0,-4!
- set ext=!filename:~-4!
- :: 構造輸出文件名
- set output_file=!basename!_watermarked!ext!
- :: 調用 ffmpeg 添加水印,位置為右上角,使用 overlay_w 更準確
- %FFMPEG% -y -i %%f -i watermark.bmp ^
- -filter_complex [1:v]scale=!WATERMARK_WIDTH!:!WATERMARK_HEIGHT![wm];[0:v][wm]overlay=main_w-overlay_w-!WATERMARK_RIGHT_MARGIN!:!WATERMARK_TOP_MARGIN! ^
- -c:a copy ^
- !output_file!
- )
- :: 判斷是否處理了任何文件
- if %index% equ 0 (
- echo.
- echo 沒有找到任何支持的視頻文件(.mkv、.mp4、.m4v *.wmv)!
- echo 請將視頻文件和水印圖片放在同一目錄下。
- echo.
- pause
- exit /b
- )
- :: 顯示處理完成信息及生成的文件列表
- echo.
- echo *********************************************
- echo 所有視頻已成功添加水印!
- echo 帶水印的文件列表:
- dir /b *_watermarked.*
- echo *********************************************
- echo.
- :: 等待用戶按鍵退出
- echo 按任意鍵退出...
- pause >nul
- endlocal
- exit /b

