- @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
复制代码 以上代码每段动态视频的持续时间通过以下公式计算:
持续时间= 帧率(fps)/d参数值(帧)
我想对每张图片生成动态视频时的持续时间做出以下修改:
目录内有同名的txt和srt,例如:“真的爱你.txt”和“真的爱你.srt”
txt里面是多行文本,需要根据每一行的文本内容,去计算srt里面的文本内容持续时间是多少~
txt文本内容:
无法可修饰的一对手,带出温暖永远在背后。
总是啰嗦始终关注,不懂珍惜太内疚。
srt字幕内容:
1
00:00:00,366 --> 00:00:02,066
无法可修饰的一对手
2
00:00:02,116 --> 00:00:05,166
带出温暖永远在背后
3
00:00:05,216 --> 00:00:09,000
总是啰嗦始终关注
4
00:00:09,050 --> 00:00:12,400
不懂珍惜太内疚
需要计算txt第一行对应的srt时间戳,也就是第一行的持续时间是:00:00:00,000至00:00:05,166,00:00:05,166减去00:00:00,000就是第一张图片变为动态视频的持续时间为:05,166。
第二行对应的srt时间戳,00:00:05,216至00:00:12,400,00:00:12,400减去00:00:05,216等于07,184,07,184为第二张图片的持续时间!
有些复杂,大佬们是否理解~
欢迎77七大佬 与各位大佬出手相助~
万分感谢大家! |