|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
6 U) m" ~7 Y% G8 }* |- G' `# j& c用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
+ e# e- F( g: |# V" C下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
z& u" k' ^' T* Edef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):$ O# f1 ~. i4 O+ Z(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹8 @5 N; {, G' Q8 K(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
" r1 W; I2 ^# r% } # 打开视频文件0 @ y7 [* H8 A: q(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
5 q0 ^) E1 E2 S1 f6 p9 z # 获取视频的持续时间. T! y, P s( P T$ f" L(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration4 V" i$ |7 {4 { o(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)4 O+ a- X; b* O5 e l# S6 W(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
. b: {% p) a% w4 w2 C$ \ # 生成随机时间点; x# f; p; x5 o3 p- Y(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])4 k/ O1 w( n7 I/ y: f, J) x5 i(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件9 k ~4 p; a% j(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)# e; V/ j; }' D, m) D- ^(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片6 Y: x( C$ W9 b(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
' G5 j# U3 F% Z # 提取剪辑( f" O/ q( w% u(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
) h/ x# r, I$ n* g2 [! c( F # 调整 GIF 图片大小( C* g8 \/ }# I8 J+ k ^(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))9 m% V% B- J' F* r2 q5 e6 r% b(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
- ~: i" ?6 K* b, h# v; m gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")2 }* e$ j3 k! C! b; F1 N! F$ [(欢迎访问老王论坛:laowang.vip)
# 输出处理信息) g/ o! c8 X9 u) _! c(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片") q7 [1 c6 M5 o(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
& p" w& k. J$ ~7 f, S resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")1 r* y4 F# O6 Q' J& Q(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件1 A* \3 Y N( ?. z8 m, p/ W l(欢迎访问老王论坛:laowang.vip)
video_clip.close()7 I L* R" M4 }5 K# P2 g7 _. W(欢迎访问老王论坛:laowang.vip)
8 N: e- j4 i3 Q; `' O
, ^7 H8 r% j# X3 D
$ y4 Z3 E/ j2 b* x: O" \, J" ~% b
7 P: i7 s* {0 G: V/ j7 m- X0 {+ \( v( c: e(欢迎访问老王论坛:laowang.vip)
& N2 r5 q, i* i) ~7 U(欢迎访问老王论坛:laowang.vip)
! I1 I. J+ w6 [5 v(欢迎访问老王论坛:laowang.vip)
|
|