美文网首页
ffmpeg实现视频高斯模糊拓边效果

ffmpeg实现视频高斯模糊拓边效果

作者: 码农私房菜 | 来源:发表于2023-11-29 18:49 被阅读0次
    
    
    ECHO OFF
    chcp 65001
    
    echo === start ===
    
    cls
    title 终极多功能修复
    :menu
    cls
    
    :start
    
    set NowTime=%time%
    ::读取起始时间,时间格式为:13:01:05.95
    echo 程序开始时间:%NowTime%
    
    color 0A
    echo.
    echo ==============================
    echo 请选择要进行的操作,然后按回车
    echo ==============================
    echo.
    echo 1. .mp4
    echo.
    echo 2. .mp3
    echo.
    echo 3. .avi
    echo.
    echo 4. 去水印
    echo.
    echo 5. 播放文件
    echo.
    echo 6. 操作视频
    echo.
    echo Q .退出
    echo.
    echo.
    :cho
    set choice= 
    set varVideo="D:\video\video.m4s"
    set varAudio="D:\video\audio.m4s"
    set varOutput="creOutput"
    set /p choice= 请选择:
    IF NOT "%choice%"=="" SET choice=%choice:~0,1%
    @REM if /i "%choice%"=="1" goto ip
    @REM if /i "%choice%"=="2" goto setsave
    @REM if /i "%choice%"=="3" goto kaiji
    @REM if /i "%choice%"=="4" goto clean
    @REM if /i "%choice%"=="Q" goto endd
    if /i "%choice%"=="1" set choice=mp4 & set setSuffix=mp4 & goto goOk
    if /i "%choice%"=="2" set choice=mp3 & set setSuffix=mp3 & goto goOk
    if /i "%choice%"=="3" set choice=avi & set setSuffix=avi & goto goOk
    if /i "%choice%"=="4" set choice=mp4 & set setSuffix=mp4 & goto GoToTheWatermark
    if /i "%choice%"=="5" set choice=mp4 & set setSuffix=mp4 & goto GoToPlayer
    if /i "%choice%"=="6" set choice=mp4 & set setSuffix=mp4 & goto GoOk1
    if /i "%choice%"=="Q" goto endd
    
    :goCho
    echo 选择无效,请重新输入
    echo. 
    goto cho
    
    :goOk
    set /p varVideo=请输入video文件绝对路径值:
    
    echo video文件绝对路径: %varVideo%
    
    set /p varAudio=请输入audio文件绝对路径值:
    
    echo audio文件绝对路径: %varAudio%
    
    set /p varOutput=请输入output文件名:
    
    echo 输出文件路径: D:\video\output\%varOutput%.%setSuffix%
    
    set /p varIsGo=是否数据准备就绪(Y/N):
    if /i "%varIsGo%"=="Y"   ( 
    echo 。。。 
    goto goOk1
    ) else ( goto exit )
    
    echo.
    echo  程序正在初始化. . . 
    echo.
    
    
    :goOk1
    
      echo video文件绝对路径: %varVideo%
      set /p varIsGo1=是否数据准备就绪(Y/N):
      if /i "%varIsGo1%"=="Y"   ( 
      echo 。。。 
      ) else ( 
      set /p varVideo=请输入video文件绝对路径值:
      echo video文件绝对路径: %varVideo% 
      )
      
    
     if "%varVideo%"=="" ( 
      echo 文件绝对路径不能为空!请重新输入
      goto goOk1
     ) 
    echo ==============================
    echo 请选择要进行的操作,然后按回车
    echo ==============================
    echo.
    echo 1. 原始比例
    echo.
    echo 2. 分辨率为480P(480*800)及以上
    echo.
    echo 3. 裁剪黑边
    echo.
    echo 4. 高斯模糊拓边效果 横转竖 480:800
    echo.
    echo 5. 高斯模糊拓边效果 竖转横 640:360
    echo.
    echo 6. 等比缩放 640:360
    echo.
    echo 7. 视频剪切
    echo.
    echo Q .退出
    echo.
    echo.
    :choChecked
    set checked=
    set checkedmax="ih"
    set /p checked= 请选择:
    IF NOT "%checked%"=="" SET checked=%checked:~0,1%
    @REM pad='w=max(iw,trunc((ih/sar*16/9)/2+0.5)*2):h=max(ih,trunc((iw*sar*9/16)/2+0.5)*2):x=(ow-iw)/2:y=(oh-ih)/2'
    if /i "%checked%"=="1"  ffmpeg -i %varVideo% -i %varAudio% -vcodec h264 -acodec aac D:\video\output\%varOutput%.%setSuffix% & goto choCheckOk
    if /i "%checked%"=="2"  ffmpeg -i %varVideo% -i %varAudio% -s 480x800 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    if /i "%checked%"=="6"  ffmpeg -i %varVideo% -i %varAudio% -vf scale=640:360 D:\video\output\%varOutput%.%setSuffix% -hide_banner  & goto choCheckOk
    if /i "%checked%"=="7"  echo 初始化。。。 & goto gvideoCut 
    if /i "%checked%"=="3"  echo 初始化。。。 & goto corpVideo
    @REM if /i "%checked%"=="4"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=iw:800,boxblur=10:5[1];[b]scale=iw:ih*iw/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    @REM if /i "%checked%"=="4"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=iw:1920,boxblur=10:5[1];[b]scale=iw:ih*iw/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    if /i "%checked%"=="4"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=1080:1920,boxblur=10:5[1];[b]scale=1080:ih*1080/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    @REM if /i "%checked%"=="4"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=480:800,boxblur=10:5[1];[b]scale=480:ih*480/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    @REM if /i "%checked%"=="5"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=640:%checkedmax%,boxblur=10:5[1];[b]scale=iw*%checkedmax%/ih:%checkedmax%[2];[1][2]overlay=(W-w)/2:0" -c:v libx264 -crf 18 -preset veryfast -aspect 16:9 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    if /i "%checked%"=="5"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=1280:720,boxblur=10:5[1];[b]scale=iw*720/ih:720[2];[1][2]overlay=(W-w)/2:0" -c:v libx264 -crf 18 -preset veryfast -aspect 16:9 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    @REM if /i "%checked%"=="5"  ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=640:360,boxblur=10:5[1];[b]scale=iw*360/ih:360[2];[1][2]overlay=(W-w)/2:0" -c:v libx264 -crf 18 -preset veryfast -aspect 16:9 -f mp4 D:\video\output\%varOutput%.%setSuffix%  & goto choCheckOk
    if /i "%checked%"=="Q" goto endd
    
    echo 选择无效,请重新输入
    echo. 
    goto choChecked
    @REM 分辨率为640X360
    @REM ffmpeg -i %varVideo% -i %varAudio% -vcodec h264 -acodec aac D:\video\output\%varOutput%.%choice%
    @REM 分辨率为480P(480*800)及以上
    @REM ffmpeg -i %varVideo% -i %varAudio% -s 480x800 D:\video\output\%varOutput%.%choice%
    
    @REM 裁剪黑边
    @REM ffmpeg -i %varVideo% -vf crop=640:360:(iw-ow)/2:0  D:\video\output\%varOutput%.%choice%
    
    @REM ffmpeg实现视频高斯模糊拓边效果 转移动端
    @REM ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=1080:1920,boxblur=10:5[1];[b]scale=1080:ih*1080/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%choice% -y
    @REM ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=480:800,boxblur=10:5[1];[b]scale=480:ih*480/iw[2];[1][2]overlay=0:(H-h)/2" -c:v libx264 -crf 18 -preset veryfast -aspect 9:16 -f mp4 D:\video\output\%varOutput%.%choice% -y
    @REM ffmpeg实现视频高斯模糊拓边效果 竖转横
    @REM ffmpeg -i %varVideo% -vf "split[a][b];[a]scale=640:360,boxblur=10:5[1];[b]scale=iw*360/ih:360[2];[1][2]overlay=(W-w)/2:0" -c:v libx264 -crf 18 -preset veryfast -aspect 16:9 -f mp4 D:\video\output\%varOutput%.%choice% -y
    
    echo %errorlevel%
    if "%errorlevel%"=="1" goto goErr
    :choCheckOk
    set /p MakePreview=预览生成文件?(Y/N):
    if /i "%MakePreview%"=="Y" ( ffplay -loop 1 D:\video\output\%varOutput%.%setSuffix% & goto GoToTheWatermark ) else ( goto GoToTheWatermark )
    
    :gvideoCut
    
    set /p varCropIsGo1=是否开始截取视频?(Y/N):
    if /i "%varCropIsGo1%"=="Y"   ( echo 进行截取打包 ) else ( goto exit )
    set varStarTime=0:0:0
    set varDurativeTime=
    set varEndTime=
    
    echo 输入截取开始时间:  例如:%varStarTime%
    echo.
    set /p varStarTime= 输入截取开始时间 :
    echo 视频宽: %varStarTime%
    echo.
    set /p varDurativeTime= 输入截取持续时间 :
    echo 视频宽: %varDurativeTime%
    echo.
    set /p varEndTime=  输入截取结束时间 :
    echo 起始位置X : %varEndTime%
    echo.
    
    set cutParams= "cutTime=开始:%varStarTime%持续:%varDurativeTime%  结束:%varEndTime%"
    echo 输入结果: %cutParams%
    echo.
    set /p varCropIsGo=是否生成文件?(Y/N):
    if /i "%varCropIsGo%"=="Y"   ( echo 进行打包 ) else ( goto exit )
    echo.
    if NOT "%varDurativeTime%"=="" ffmpeg -ss %varStarTime% -t %varDurativeTime% -i %varVideo% -i %varAudio%  -vcodec copy -acodec copy D:\video\output\%varOutput%.%setSuffix%  
    if NOT "%varEndTime%"=="" ffmpeg -ss %varStarTime% -i %varVideo% -i %varAudio% -to %varEndTime% -vcodec copy -acodec copy D:\video\output\%varOutput%.%setSuffix%  
    goto choCheckOk
    
    :corpVideo
    set /p varCropIsGo1=是否开始裁剪视频?(Y/N):
    if /i "%varCropIsGo1%"=="Y"   ( echo 进行裁剪打包 ) else ( goto exit )
    set varWCrop=640
    set varHCrop=360
    set varXCrop=2
    set varYCrop=2
    echo 输入裁剪尺寸: 输出宽:输出高:裁剪起始位置X:裁剪起始位置Y   例如:%varWCrop%:%varHCrop%:%varXCrop%:%varYCrop%
    echo.
    set /p varWCrop= 输入导出视频宽 :
    echo 视频宽: %varWCrop%
    echo.
    set /p varHCrop= 输入导出视频高 :
    echo 视频宽: %varHCrop%
    echo.
    set /p varXCrop= 裁剪起始位置X :
    echo 起始位置X : %varXCrop%
    echo.
    set /p varYCrop= 裁剪起始位置Y :
    echo 起始位置Y : %varYCrop%
    echo.
    set cropParams= "crop=%varWCrop%:%varHCrop%:%varXCrop%:%varYCrop%"
    echo 输入结果: %cropParams%
    echo.
    set /p varCropIsGo=是否生成文件?(Y/N):
    if /i "%varCropIsGo%"=="Y"   ( echo 进行打包 ) else ( goto exit )
    echo.
    ffmpeg -i %varVideo% -vf %cropParams%  D:\video\output\%varOutput%.%setSuffix%  
    
    goto choCheckOk
    
    :GoToTheWatermark
    set /p varGoToTheWatermark=是否需要去除水印(Y/N):
    if /i "%varGoToTheWatermark%"=="Y"   ( echo 进行去水印) else ( goto exit )
    
    set varX=510
    set varY=10
    set varW=120
    set varH=40
    
    echo ==============================
    echo 请按照步骤进行的操作,然后按回车
    echo ==============================
    if NOT "%varWatermark%"=="" goto argumentsRetype
    echo.
    set /p varWatermark=请输入需要去水印文件绝对路径值:
    echo 去水印文件绝对路径: %varWatermark%
    echo.
    if "%varWatermark%"=="" ( 
      echo 文件绝对路径不能为空!请重新输入
      goto GoToTheWatermark 
      ) 
    
    :argumentsRetype
    echo 水印位置值: "x=%varX%:y=%varY%:w=%varW%:h=%varH%"
    set /p varX=请输入水印起始位置X值:
    
    echo 水印起始位置X值: %varX%
    
    set /p varY=请输入水印起始位置Y值:
    
    echo 水印起始位置Y值: %varY%
    
    set /p varW=请输入水印宽度:
    
    echo 水印宽度: %varW%
    
    set /p varH=请输入水印高度:
    
    echo 水印高度: %varH%
    
    
    set varVideoWatermark="delogo=x=%varX%:y=%varY%:w=%varW%:h=%varH%"
    echo 水印位置参数: %varVideoWatermark%
    ffplay -i %varWatermark% -loop 1 -vf %varVideoWatermark%:show=1
    
    set /p varGoToTheWatermarkOk=是否生成去除水印后视频(Y/N):
    if /i "%varGoToTheWatermarkOk%"=="Y"   ( echo 导出去水印后的文件 ) else ( goto GoToTheWatermark )
    
    set /p setGoToTheWatermarkOk=是否手动设置多个水印位置(Y/N):
    if /i "%setGoToTheWatermarkOk%"=="Y"   ( 
      echo 设置格式例如: "delogo=x=49:y=50:w=221:h=75,delogo=x=1014:y=678:w=234:h=35"
      echo.
      set /p handleInput=输入多个位置参数:
      if NOT "%handleInput%" == "" set varVideoWatermark=%handleInput%
       ) else ( echo 正在导出去文件。。。 )
    @REM ffmpeg -i "原视频" -vf "delogo=x=数字:y=数字:w=数字:h=数字" -c:a copy "新视频"
    ffmpeg -i %varWatermark% -vf %varVideoWatermark% -c:a copy D:\video\output\去水印%varOutput%.mp4
    echo  ┌──────────────────────────────────────┐
    @REM set /p =  ■<nul
    @REM for /L %%i in (1 1 10) do set /p a=■<nul&ping /n 1 127.0.0.1>nul
    echo   100%%
    echo  └──────────────────────────────────────┘
    
    set /p varGoToPlay=是否预览文件(Y/N):   
    if /i "%varGoToPlay%"=="Y" ( goto GoToPlayer ) else ( goto exit) 
    :GoToPlayer
    set /p varGoToPlayer=输入预览文件路径:
    if NOT "%varGoToPlayer%"==""  ( ffplay -loop 1 %varGoToPlayer% ) 
    echo %errorlevel%
    if "%errorlevel%"=="1" goto goErr
     
    GOTO exit
    
    :goErr
    echo 生成视频文件失败!!!
    
    :exit
    PAUSE
    @REM echo === end ===
    

    相关文章

      网友评论

          本文标题:ffmpeg实现视频高斯模糊拓边效果

          本文链接:https://www.haomeiwen.com/subject/lwyfgdtx.html