|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
( X) u K( H1 P1 N1 l% Q9 t用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif5 D$ K* B! s* t: M8 F(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
2 E1 ~; t0 X( q0 _& ~! mdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
; M# p% u" o/ p # 创建输出文件夹
4 f2 d' O. y8 [( b os.makedirs(output_folder, exist_ok=True)8 ~' P$ z! y; f' N& u(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
2 G; d* k* s4 ^# p- ?# r8 v5 D" u video_clip = VideoFileClip(video_path)
: B2 g1 A) ^% F9 [# `" E& ` # 获取视频的持续时间7 W* h& u' L, ]- N5 B' o(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration; F! W7 Y6 D2 O" `4 s- K/ D" t5 D. \(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)- m0 c$ x2 l g& U(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)+ r6 Q( o* m, ?% \) n- T/ {(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点8 b0 U- K' t' t, `! R2 u# ?& h(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])& }2 K# p% |% A(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件, P9 K- e8 }* R# G, L/ x9 W8 V(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)' b6 H/ a/ h. u(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
2 u u8 X' s% q, S) l( Q" d for i, t in enumerate(random_times):" B( i, n# G9 H9 {. Y- H* s/ F) D(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
, C+ ~8 Y3 C8 }4 t7 w" d clip = video_clip.subclip(t, t + gif_duration)
* L/ j& _; A* Z9 O/ |/ ^' m; L& M5 k" H # 调整 GIF 图片大小
$ R# B# v8 p7 L2 Z4 C resized_clip = clip.resize((target_width, target_height))
/ B1 |3 b! g/ a! ^ # 生成 GIF 文件的路径
% _; ?) ^3 u! r9 v1 Q: q gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
% E) S: j& x* R% S' q/ k& l # 输出处理信息/ P6 f( m' W8 u, E(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
2 v, s- \: O2 l1 ]) [5 K # 写入 GIF 文件% I7 W9 r0 J B3 l, { r(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")+ l+ I* }6 h% |( J S(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
; g; E+ ~8 [1 L video_clip.close()! q, [, q: s( T(欢迎访问老王论坛:laowang.vip)
; V6 a' U* x& ^, a6 U* q6 z# C(欢迎访问老王论坛:laowang.vip)
0 R# ]( `: n! [, u6 w5 ~(欢迎访问老王论坛:laowang.vip)
a7 t: c/ H6 D* F, v. S; V2 Z+ r& w1 J8 s- H2 \" k(欢迎访问老王论坛:laowang.vip)
( ~8 \/ k/ w9 N6 J6 h6 L: {(欢迎访问老王论坛:laowang.vip)
* O# c9 }- J' i(欢迎访问老王论坛:laowang.vip)
: v& t. b' L! Y( j2 C- |(欢迎访问老王论坛:laowang.vip)
|
|