标题: [文件操作] 【已解决】批处理ffmpeg多张图片各使用一种动态效果的问题 [打印本页]
作者: 877 时间: 2024-3-28 10:09 标题: 【已解决】批处理ffmpeg多张图片各使用一种动态效果的问题
本帖最后由 877 于 2024-3-28 12:57 编辑
以下代码可以正常运行处理当前目录内的1.jpg和2.jpg合成1个视频,1.jpg和2.jpg分别应用了不同的移动效果~
当前目录内还有很多jpg,我想让其按照数字序号从小到大依次使用移动效果
例如后面应该是3.jpg使用1.jpg的移动效果,4.jpg使用2.jpg的移动效果....以此类推...
求大佬出手~~~提前表示感谢!!- ffmpeg -y -hwaccel_device 0 -i 1.jpg -i 2.jpg -filter_complex "[0:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),(ih-ih/zoom)/2,y+3)':d=175[v0];[1:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-3)':d=175[v1];[v0][v1]concat=n=2:v=1:a=0,format=yuv420p[v]" -map "[v]" -c:v h264_nvenc -gpu 0 out.mp4
复制代码
作者: 77七 时间: 2024-3-28 11:38
- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /l %%l in (1,2,10000) do (
- set /a p1=%%l,p2=%%l+1
- if exist "!p2!.jpg" (
- ffmpeg -y -hwaccel_device 0 -i !p1!.jpg -i !p2!.jpg -filter_complex "[0:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),(ih-ih/zoom)/2,y+3)':d=175[v0];[1:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-3)':d=175[v1];[v0][v1]concat=n=2:v=1:a=0,format=yuv420p[v]" -map "[v]" -c:v h264_nvenc -gpu 0 out_!p1!.mp4
- )
- )
- endlocal
- pause
复制代码
作者: 877 时间: 2024-3-28 12:56
回复 2# 77七
感谢大佬,你真是太厉害了~
作者: 877 时间: 2024-3-28 13:58
回复 2# 77七
大佬好,生成的多个视频名称为:out_1.mp4、out_3.mp4、out_5.mp4、这样排序的,
我想把这些视频按照名称从out_1.mp4开始拼接为一个视频~
然后把之前生成的out_!p1!.mp4的视频删除。
我自己弄的合并并没有按照顺序合并,还是您帮我写一下代码吧~
作者: 77七 时间: 2024-3-28 14:32
回复 4# 877
- @echo off
- cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for /l %%l in (1,2,10000) do (
- set /a p1=%%l,p2=%%l+1
- if exist "!p2!.jpg" (
- ffmpeg -y -hwaccel_device 0 -i !p1!.jpg -i !p2!.jpg -filter_complex "[0:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),(ih-ih/zoom)/2,y+3)':d=175[v0];[1:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-3)':d=175[v1];[v0][v1]concat=n=2:v=1:a=0,format=yuv420p[v]" -map "[v]" -c:v h264_nvenc -gpu 0 out_!p1!.mp4
- )
- if exist "out_!p1!.mp4" (
- >>x.txt echo file '%~dp0out_!p1!.mp4'
- )
- )
- endlocal
- ffmpeg -f concat -safe 0 -i x.txt -c copy output.mp4
- del out_*.mp4;x.txt
- pause
复制代码
作者: Five66 时间: 2024-3-28 14:33
数字不连续
不包括0开头的数字- @echo off&pause
-
- for /f "delims=" %%i in ('dir /b *.jpg 2^>nul ^|findstr /x "[1-9][0-9]*\.jpg"') do (
- set _@var=10000%%~ni
- for /f %%j in ('echo %%_@var:~-5%%') do set _@@%%j=%%i
- )
-
- for /f "tokens=2 delims==" %%f in ('set _@@') do (
- if not defined _@file1 (
- set _@file1=%%~nf) else if not defined _@file2 (
- set _@file2=%%~nf) else (
- call :aaa
- set _@file1=&set _@file2=
- )
- )
-
- echo,&echo,
- if defined _@file1 echo warning : "%_@file1%.jpg" nothing to do
- pause&exit/b
-
- :aaa
- ffmpeg -y -hwaccel_device 0 -i "%_@file1%.jpg" -i "%_@file2%.jpg" -filter_complex "[0:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,-1),(ih-ih/zoom)/2,y+3)':d=175[v0];[1:v]zoompan='1.5':x='if(lte(on,1),(iw-iw/zoom)/2,x)':y='if(lte(on,1),(ih/zoom)/2,y-3)':d=175[v1];[v0][v1]concat=n=2:v=1:a=0,format=yuv420p[v]" -map "[v]" -c:v h264_nvenc -gpu 0 "out_%_@file1%_%_@file2%.mp4"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |