@echo off
title 视频转码
rem logo的分辨率为136 x 42 仅供参考
setlocal enabledelayedexpansion
rem ffmpeg所在路径
set "ffmpeg_dir=D:\videos-水印工具\"
rem 视频所在路径
set "video_dir=E:\videos"
rem 输出文件夹
set "output_root=E:\output"
:menu
cls
echo 请选择一个选项:
echo 1. 视频全部在当前文件夹下
echo 2. 视频在子文件和当前文件夹下
echo.
set /p choice="输入选项(1或2): "
if "!choice!"=="1" goto SingleFolder
if "!choice!"=="2" goto MultipleFolders
if not "!choice!"=="" echo 无效的选择,请重新输入。 & goto menu
echo 没有输入选择,退出程序。
goto end
:SingleFolder
rem 指定文件(*.mp4)都在一个文件夹(E:\videos)下面
if not exist "%output_root%" mkdir "%output_root%"
for %%i in (%video_dir%\*.mp4) do (
%ffmpeg_dir%ffmpeg.exe -i "%%i" -i %ffmpeg_dir%logo.png -filter_complex "overlay=main_w-overlay_w-10:10" -c:v libx264 "%output_root%\%%~ni.mp4"
)
goto end
rem 指定文件(*.mp4)在文件夹(E:\videos)和它的子目录下面
:MultipleFolders
for /R "%video_dir%" %%i in (*.mp4) do (
set "rel_path=%%~dpi"
set "rel_path=!rel_path:%video_dir%=!"
if "!rel_path!"=="\" set "rel_path="
set "output_dir=!output_root!\!rel_path!"
if not exist "!output_dir!" mkdir "!output_dir!"
set "output_file=!output_dir!\%%~nxi"
%ffmpeg_dir%ffmpeg.exe -i "%%i" -i %ffmpeg_dir%logo.png -filter_complex "overlay=main_w-overlay_w-10:10" -c:v libx264 "!output_file!"
)
goto end
:end
endlocal
echo.
echo 按任意键退出&pause
exit
rem 提取关键帧 D:\ffmpeg.exe -i D:\out\20200727094807919380.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 1920*1080 -f image2 D:\out\keyframe-%02d.png
rem 插入关键帧 -x264opts keyint=1 每一帧都插入关键帧
rem 设置分辨率 -vf scale=1280:720
rem 设置码率 -b:v 2.5M -vf scale=800:450 -b:v 2M
rem for %%i in (*.mp4) do "ffmpeg.exe" -i "%%i" -c:v libx264 -x264opts keyint=1 "out\%%~ni.mp4" ---x264opts keyint=1:scenecut=0
rem 加水印 %ffmpeg_dir%ffmpeg.exe -i "%%i" -i %ffmpeg_dir%logo.png -filter_complex "overlay=main_w-overlay_w-10:main_h-overlay_h-10" -c:v libx264 "%video_dir%out\%%~ni.mp4"
rem ffmpeg.exe 所在路径 -vf scale=800:450 -b:v 2.5M -x264opts keyint=30000:scenecut=0