|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
* A1 O8 _. R" _1 D7 o$ R. `- \3 o(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif" R+ g1 @3 }+ m4 G! Y(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你6 B5 E1 q4 f3 A: `, \' {(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):3 C7 C; F3 t! t: W& P2 Q(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹1 ?/ ?- @4 ], c6 {# o, h(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)4 o5 k2 C( b" \0 e1 l(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
' K( \6 G; j, N" c Z: X video_clip = VideoFileClip(video_path)
! E( I/ r/ e' a7 h# ]' N # 获取视频的持续时间
7 ~5 H1 p. v: E6 K& J video_duration = video_clip.duration1 j3 k: k7 F5 m0 b1 B(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位); W( G$ [: \; w7 J, p5 ~. a4 X(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
( P: ?2 G! `% O4 L1 B& \1 F # 生成随机时间点9 K: J9 q2 E. X(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])1 r n0 H* d/ S2 v3 |' E/ G(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
9 `& Y( u3 o* y6 z0 e4 ^- V9 @ video_clip = VideoFileClip(video_path)4 Q8 q! f: l* L9 h& |4 T(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
* p# A6 W% a. g7 A! ?: m& z& O for i, t in enumerate(random_times):
8 z& P' ~0 O+ P) m9 x- S; O7 ~! i' a # 提取剪辑/ d( p/ F0 I, \(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
, d4 l5 w3 y/ @: O' m) b6 F # 调整 GIF 图片大小
, {6 k7 |5 c0 [ resized_clip = clip.resize((target_width, target_height))* m$ X6 n T+ t0 v% |; c(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
. j) ?, p- W- e% M gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")' \1 I% i j" S! g: _(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
8 l1 [% i5 E4 ?! A- S+ q. t print(f"正在处理第 {i + 1} 张图片")+ |! v" v0 h G4 k& ~- m# h(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件: j: S6 @ R% j' I/ R0 a0 J( P- \: A(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")/ @2 X9 E4 c1 F1 P4 {/ e(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
; }3 B/ O: c1 {' J Y' n, |" I/ R5 V video_clip.close()
8 e* k& f# X, L4 U) n n" U
. ]$ d. F) p0 f" u/ [9 h9 G: ~1 x- @( z1 |6 ?4 S, M) ^( P(欢迎访问老王论坛:laowang.vip)
) w, N: s* u3 s0 ?9 f& a$ K3 k8 q, d- O! \+ K, d$ d8 r(欢迎访问老王论坛:laowang.vip)
" B1 v A. n0 U0 |(欢迎访问老王论坛:laowang.vip)
' G& }, a/ ?. L$ Q4 F
4 _# X3 ^) J4 h4 [" d, u |
|