rem 设定片头片尾长度,格式为 HH:mm:ss.fff set "s1=00:00:10.0" :: 需去除的片头时间 set "s2=00:00:00.0" :: 需去除的片尾时间
for /f "tokens=1-4delims=:." %%a in ("%s2%") do ( set /a "t2=(1%%a %% 100 *3600 + 1%%b %% 100 * 60 + 1%%c %% 100) * 1000 + 1%%d %% 1000" )
for %%i in (*.avi *.mkv *.mp4 *.flv) do ( for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do ( set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=t2,ms=t%%1000,t/=1000" set /a h=t/3600,m=t%%3600/60,s=t%%60,h+=100,m+=100,s+=100,ms+=1000 set "t=!h:~1!:!m:~1!:!s:~1!.!ms:~1!" set "filename=%%~na" ffmpeg -ss !s1! -to !t! -accurate_seek -i "%%i" -c copy -avoid_negative_ts 1 -y "!%%~dpi!%%~ni-ok.mp4" ) )
rem ====================================== set "s1=0" :: 淡入开始时间 set "s2=5" :: 淡入持续时间 set "s3=5" :: 淡出开始时间 set "s4=5" :: 淡出持续时间 rem ======================================
for /f "tokens=1-4delims=:." %%a in ("%s3%") do ( set /a "t2=("%s3%") * 1000 + 1%%d %% 1000" )
md 淡入淡出 2>nul for %%i in (*.avi *.mkv *.mp4 *.flv) do ( for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do ( set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=t2,ms=t%%1000,t/=1000 ffmpeg -i "%%i" -vf "fade=t=in:st=!s1!:d=!s2!,fade=t=out:st=!t!:d=!s4!" -c:a copy -c:v libx264 -preset 6 -crf 17 "淡入淡出\%%i" -y ) )
rem pause exit
rem 上面的pause为暂停命令,去掉rem者为启用(有错误的时候可开启-查看错误)。
rem ============fade=t=in:st=%s1%:d=%s2%,================ rem st=!s1!开始淡入时间:set "s1=0"第0秒开始淡入 rem d=!s2!持续淡入时间:set "s2=5"持续5秒 rem ============fade=t=out:st=!t!:d=%s4%================ rem st=!t!开始淡出时间:t=视频总秒数-减去s3设定的值 rem d=!s4!持续淡出时间:set "s4=5"持续5秒
rem CRF参数:取值范围通常在 0 到 51 之间,其中 0 表示无损编码,51 表示最差质量编码。(通常17-20)
rem Preset参数:指定编码速度和质量的平衡。数字越小,速度越慢,质量越高,体积越大-preset ultrafast等于-preset (通常6-8)
rem ====================================== set "s1=0" :: 淡入开始时间 set "s2=5" :: 淡入持续时间 set "s3=5" :: 淡出开始时间 set "s4=5" :: 淡出持续时间 rem ======================================
for /f "tokens=1-4delims=:." %%a in ("%s3%") do ( set /a "t2=("%s3%") * 1000 + 1%%d %% 1000" )
md 淡入淡出 2>nul for %%i in ("%~1") do ( for /f "tokens=2-5delims=:., " %%a in ('ffmpeg -i "%%i" 2^>^&1 ^| find "Duration:"') do ( set /a "t=(1%%a%%100*3600+1%%b%%100*60+1%%c%%100)*1000+1%%d0%%1000,t-=t2,ms=t%%1000,t/=1000 ffmpeg -i "%%i" -vf "fade=t=in:st=!s1!:d=!s2!,fade=t=out:st=!t!:d=!s4!" -c:a copy -c:v libx264 -preset 6 -crf 17 "淡入淡出\%~n1".mp4 -y ) )
rem pause exit
rem 上面的pause为暂停命令,去掉rem者为启用(有错误的时候可开启-查看错误)。
rem ============fade=t=in:st=%s1%:d=%s2%,================ rem st=!s1!开始淡入时间:set "s1=0"第0秒开始淡入 rem d=!s2!持续淡入时间:set "s2=5"持续5秒 rem ============fade=t=out:st=!t!:d=%s4%================ rem st=!t!开始淡出时间:t=视频总秒数-减去s3设定的值 rem d=!s4!持续淡出时间:set "s4=5"持续5秒
rem CRF参数:取值范围通常在 0 到 51 之间,其中 0 表示无损编码,51 表示最差质量编码。(通常17-20) rem Preset参数:指定编码速度和质量的平衡。数字越小,速度越慢,质量越高,体积越大-preset ultrafast等于-preset (通常6-8)
rem 上面的pause为暂停命令,去掉rem者为启用(有错误的时候可开启-查看错误)。 rem 1.截取的图片用IrfanView 64软件打开,会在左上方出现(Selection:79,36;95x88) rem 2.其中的"delogo=x=79:y=36:w=95:h=88:show=0" rem show=0表示关闭跑码
rem 上面的pause为暂停命令,去掉rem者为启用(有错误的时候可开启-查看错误)。 rem 1.截取的图片用IrfanView 64软件打开,会在左上方出现(Selection:79,36;95x88) rem 2.其中的"delogo=x=79:y=36:w=95:h=88:show=0" rem show=0表示关闭跑码