|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
2 D! A) B5 u3 X$ |(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
( @: g+ a& i. L7 Q$ N, D下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
9 N$ g* I" ~3 Ydef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):7 v. \* ^( B6 R' I(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
, D& S# Y: E2 O4 A os.makedirs(output_folder, exist_ok=True)
) W5 B- y6 x0 Z1 `' [ # 打开视频文件5 {) g3 X; F5 j$ l' d6 o0 ~/ r(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
/ l# h8 ~% J/ _2 | # 获取视频的持续时间" i" Z2 i4 b: R+ f. |6 k. f(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration9 u; B, s& {) H7 b(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
( k. Z$ g& q' \7 n9 w gif_duration = min(duration_per_gif, video_duration / num_gifs)6 I9 i S( W, Y! H; ?4 \4 O(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
# p9 K! e; n- }! J/ |# E random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])5 ~& s' Q4 V. j0 M( ^(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
' ~8 U( T, Y* V' t/ j video_clip = VideoFileClip(video_path)# k4 g. w+ A* ^) t9 e2 n+ {(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
3 D1 v% f. q' Q# T9 C+ H2 ? for i, t in enumerate(random_times):6 \0 m% \" K B: J, g(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
" B) c1 V u: g" Z" M6 G6 s u q clip = video_clip.subclip(t, t + gif_duration)0 u* x# _. Y0 j) ]( e# C$ H3 [# [(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
$ b" T7 [# p+ ^# `% W" o6 b. q# H resized_clip = clip.resize((target_width, target_height))# q/ P; `3 r: s$ S2 m(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径. R$ W' `, n5 T6 _% T(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")0 C4 ~5 J" d- ]- R( J4 V. }$ e(欢迎访问老王论坛:laowang.vip)
# 输出处理信息5 [6 e' h1 g' P* s& B(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")0 K2 {2 k. g" {0 q: P(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
) @% j, q8 s4 a- M resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"): v+ I. M" V7 l3 [6 U$ F(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件0 P3 N( a, o" v$ K+ A. o, u7 u(欢迎访问老王论坛:laowang.vip)
video_clip.close()8 V; C$ b) | Y# s" j5 m% G7 O( L/ l2 V(欢迎访问老王论坛:laowang.vip)
0 K9 `8 z( G7 t% o- G- \/ q; L(欢迎访问老王论坛:laowang.vip)
6 ~$ {, j7 H2 [: x# Z Q8 e(欢迎访问老王论坛:laowang.vip)
2 U. v+ g& S" ^: G9 N; ?
/ j/ L7 I ~1 r
+ F' w1 O1 y9 g g5 b6 O
/ j! y& C0 P: c+ Q% _0 g
8 m' G, _- G* c" h+ e& V: Q |
|