如何连续向左滑动多幅图像?

问题描述 投票:0回答:1

我使用 ffmpeg 将图像从左到中心滑动,如下所示:

#slide 1st image from right to center
#countdown 10 seconds
#slide 1st image from center to left and in the same time
#slide 2nd image from right to center
#countdown 10 seconds
#...

ffmpeg -loglevel quiet -loop 1 -i input.png -filter_complex "split=2[bg][slider];[bg]drawbox=c=black:t=fill[bg];[bg][slider]overlay=x='max(W-w*t,0)':y=0" -t 10 -y output.mp4

两张图片之间有黑色背景,我想让上一页从中心向左滑动,下一页从右向中心滑动,我该怎么办? enter image description here

ffmpeg
1个回答
0
投票

一些Python脚本,部分改编:

#!/usr/bin/python3
import os

LST=[]
DIR="/mnt/public/upload/jpgs+audio/"
LSD=os.listdir(DIR)
LSD.sort()
for f in LSD:
  if (f.endswith(".jpg")):
    print(f)
    LST.append(f)

FLV=''
OFS=0
XFO=5
OFE=OFS+XFO
CNT=0

INP=[]
f=DIR+LST[0]
INP.append(f' -loop 1 -i "{f}"')
PDV='[s0]'
WID=1280
HEI=720
SPS=f'scale={WID}:{HEI}:force_original_aspect_ratio=decrease,pad={WID}:{HEI}:-1:-1,setsar=1'
FLT=f"""
[0:v]{SPS}[s0];
"""

for CNT in range(1, len(LST)):
  FLT+=f"""[{CNT}:v]{SPS}[s{CNT}];
"""
  FLV+=f'{PDV}'
  PDV=f'[v{CNT}]'
  FLV+=f"""[s{CNT}]overlay=x='if(between(t,{OFS},{OFE}),max(W-w*(t-{OFS}),0),max(0-w*(t-{OFE}),0-W))'{PDV};
"""
  f=DIR+LST[CNT]
  INP.append(f' -loop 1 -i "{f}"')
  OFS+=XFO
  OFE=OFS+XFO

OFS+=2
s='ffmpeg'
for t in INP:
  s=s+t
s=s+f' -filter_complex "{FLT}{FLV}" -map {PDV} -c:v h264_nvenc -cq 20 -t {OFS} /tmp/output.mp4 -y -hide_banner'
print(s)
os.system(s)
os.system(f'mpv /tmp/output.mp4')
© www.soinside.com 2019 - 2024. All rights reserved.