|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
; E/ x. t( w( d! ?$ z( @用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif$ l$ {& Q" ^: z# m# f(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你& e- v, ~( {, X* \% Q(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
: J8 p( _, Q; v: }; } # 创建输出文件夹" L% l/ V, Q9 @8 g& ?(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
7 G$ V$ @ u8 m # 打开视频文件
% W6 L- n" j7 O4 ?) g, u7 G video_clip = VideoFileClip(video_path)7 U% E3 W; A* u! _: W9 M! e) e(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间; X+ m0 v+ R5 }, x) u( J1 s8 v(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
$ n9 G7 Y* q; ?; G1 ^' R$ W: [ # 确定每个 GIF 的持续时间(以秒为单位)6 b1 q# I/ G" C1 ]/ H% \(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)+ H% ^% W% S( G/ o `# c$ @(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点) N! h# ]4 X7 F$ Z! q# S1 Q(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]): s/ R- B8 p% f2 S" M3 G5 |(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
; r, @' t0 D0 F' F5 L video_clip = VideoFileClip(video_path)
- h' r) F5 ]. d' L% b; c' T+ }; Y2 k # 为每个时间节点生成 GIF 图片' V" @1 G% L8 x! {' n/ W(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):6 r5 j1 [ W4 i7 X( `3 P" s. F(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
9 F2 F8 L, S; ?. C clip = video_clip.subclip(t, t + gif_duration)# t' f% Z4 [. m(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小0 @5 {. v) [' u1 l(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))/ [& y: L$ ]( G# f& x2 @$ X(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
) S( O! q3 D" E gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
, j: }4 K* d, v # 输出处理信息
; W: j l7 A+ ?9 |5 g. n, V' H print(f"正在处理第 {i + 1} 张图片")9 l/ I9 ~) P+ i5 Y(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件# }+ X# B; w! Y) y5 |3 r(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")# h2 R8 ], a$ i. |' |(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件. a9 j J0 W. B7 X7 z(欢迎访问老王论坛:laowang.vip)
video_clip.close()
+ Y5 |- Z$ n! G
5 v5 P6 P4 v. l+ f( m* y
/ J/ }3 G. b+ u ?* ]" C* L! n2 b# b! R2 C; J(欢迎访问老王论坛:laowang.vip)
; B( N, o& z$ i$ [) K& f6 d8 E, R _& r0 r5 f3 A(欢迎访问老王论坛:laowang.vip)
- l0 P. Y( r4 |(欢迎访问老王论坛:laowang.vip)
6 t, i: |4 H+ n |
|