mp4转圆角gif.bat

mp4转圆角gif.bat

@echo off
chcp 65001 >nul
title MP4 转 GIF 工具(240x240 四角 2px 圆角透明)

echo ============================================
echo   MP4 转 GIF 工具(240x240 四角 2px 圆角透明)
echo ============================================
echo.
echo 请将 MP4 视频文件拖拽到本窗口,然后按回车。
echo 生成的 GIF 会保存在原视频同目录下,文件名相同。
echo.

set /p "input=请拖入视频文件: "

rem 去掉拖拽时可能带上的引号
set "input=%input:"=%"

if not exist "%input%" (
    echo.
    echo [错误] 找不到文件:%input%
    echo.
    pause
    exit /b
)

rem 检查扩展名是否为 mp4
for %%F in ("%input%") do (
    set "ext=%%~xF"
    set "name=%%~nF"
    set "dir=%%~dpF"
)

if /i not "%ext%"==".mp4" (
    echo.
    echo [错误] 只支持 MP4 文件,当前文件是:%ext%
    echo.
    pause
    exit /b
)

set "output=%dir%%name%.gif"

echo.
echo 正在转换……
echo 输入:%input%
echo 输出:%output%
echo.

rem ============================================================
rem 四角 2px 圆角透明:
rem
rem 左上角:
rem   (X=0,Y=0) (X=1,Y=0)
rem   (X=0,Y=1)
rem
rem 右上角:
rem   (X=238,Y=0) (X=239,Y=0)
rem   (X=239,Y=1)
rem
rem 左下角:
rem   (X=0,Y=238)
rem   (X=0,Y=239) (X=1,Y=239)
rem
rem 右下角:
rem   (X=239,Y=238)
rem   (X=238,Y=239) (X=239,Y=239)
rem
rem 满足任意一个条件,alpha=0,否则 alpha=255
rem ============================================================

ffmpeg -y -i "%input%" -vf "fps=8,scale=240:240:force_original_aspect_ratio=decrease,pad=240:240:(ow-iw)/2:(oh-ih)/2:color=white,format=rgba,geq=r='r(X,Y)':g='g(X,Y)':b='b(X,Y)':a='if(eq(X,0)*eq(Y,0)+eq(X,1)*eq(Y,0)+eq(X,0)*eq(Y,1)+eq(X,238)*eq(Y,0)+eq(X,239)*eq(Y,0)+eq(X,239)*eq(Y,1)+eq(X,0)*eq(Y,238)+eq(X,0)*eq(Y,239)+eq(X,1)*eq(Y,239)+eq(X,239)*eq(Y,238)+eq(X,238)*eq(Y,239)+eq(X,239)*eq(Y,239),0,255)',split[s0][s1];[s0]palettegen=max_colors=128:reserve_transparent=1[p];[s1][p]paletteuse=alpha_threshold=128" -loop 0 "%output%"

if exist "%output%" (
    echo.
    echo [成功] GIF 已生成:%output%
) else (
    echo.
    echo [失败] 转换未成功,请检查 ffmpeg 是否正常运行。
)

echo.
pause
posted @ 2026-09-17 10:21  彭成刚  阅读(6)  评论(0)    收藏  举报