|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
: @( H0 J# @1 u用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif+ q! A% B/ p; I+ z: N(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
( [2 F6 Q+ s, {& t+ d7 jdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):" c: s/ l( B% C) {' w/ G(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
2 |& B+ b) a" t% r' _+ h os.makedirs(output_folder, exist_ok=True)/ G+ [ y+ \: o- \+ ~; U9 B+ [(欢迎访问老王论坛:laowang.vip)
# 打开视频文件- U& k3 {4 F: U(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path): s/ v m Y: e. f3 I(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间/ J9 J5 h& q/ F+ a. [" G8 {(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration# D7 Z+ c9 a; v6 M# l' |& b9 r! A(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)$ T: m4 i, T- Q( h4 q' d(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
3 z, z8 N8 v) Q, T7 s # 生成随机时间点1 y8 a8 w' L; Y1 P% a" Z5 w( W9 G7 u(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
' t% {$ f5 D. A. Z # 在循环外加载视频文件
, }/ V$ \& S, M, a0 W video_clip = VideoFileClip(video_path)9 A! G9 E9 y# ]# H* n(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
% l( D7 a' g4 } for i, t in enumerate(random_times):
. d5 Z) b) \* E* s # 提取剪辑
& u( @) s. u, E9 h3 q" s clip = video_clip.subclip(t, t + gif_duration)
! `6 T" [8 h& I7 G # 调整 GIF 图片大小
4 _; d8 ?6 i. Y: M9 B resized_clip = clip.resize((target_width, target_height)) t6 D- S* a. Y+ L$ j3 N; q7 I(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径 Y W% A, U7 F9 T ^: D* V(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
% s$ O2 x3 g2 P, ^ # 输出处理信息- ^ O3 z$ P+ B+ O8 \1 ^8 J(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片"): I0 B. E! C: I7 q1 }: G% J/ B3 S$ f(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件0 E- N' `" ^$ f* F% l(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
/ O( s' i, ^- b7 k" ]# u7 ] # 关闭视频文件
# g6 O2 z' ]. S) V* T i video_clip.close()
: k9 Z) {; G9 F$ a6 J4 ]
8 ?6 Q& w8 X5 N$ B3 q! l; _1 F
1 ` P' g2 G) F$ ~* H( ~1 W9 i, }1 R# B6 ~: P) D! T0 U(欢迎访问老王论坛:laowang.vip)
% ?0 o1 f! r. k$ j
+ s) \2 I& f& k2 g; u; j0 r' O; x4 k, J0 n6 v6 e(欢迎访问老王论坛:laowang.vip)
& s9 H/ }" v+ Z4 [; v$ [9 x |
|