|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
6 ^0 X. u# H& F用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif6 |$ O$ K3 B% J( v(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
" F) h- s$ {) X3 K3 udef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):0 p, Z0 t! f: n) _% I8 U; B(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹 e+ D8 I. Y" l7 U(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
; \' F- E7 }7 o6 Z% @* E, n: ^ # 打开视频文件
$ h7 g' A0 K) ]0 ~1 [ video_clip = VideoFileClip(video_path); b& L) T$ g, l9 s& f7 d% d4 P(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
: o, j( \- S7 v, H8 ]4 u video_duration = video_clip.duration7 Q4 X4 N+ J, X- d(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位). |9 ]0 Z- o4 {$ C# P" q6 u u(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)' ^/ c7 c: [$ Z7 ^# ~) W(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点% [5 f! a: I( E0 T(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])3 J* W5 [$ Z4 M- p( [(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件/ u+ |, I6 Y3 t0 E. W. V7 g* y(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
6 ?3 x& s/ W4 e1 V: X # 为每个时间节点生成 GIF 图片- K8 ~4 K6 u8 q! J1 x. E9 ? x(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):4 z8 w% I% F+ t( x0 Y(欢迎访问老王论坛:laowang.vip)
# 提取剪辑" v" E6 p2 |) c+ {2 b, x' r(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
& a) G* S/ ? ~+ H8 x2 n0 c8 e- x- x # 调整 GIF 图片大小4 x5 M3 s; W" I& I4 i% ](欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
4 G' n1 r+ u! U4 P # 生成 GIF 文件的路径
6 |( I; ^5 o( \ F9 E# ^7 y gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
" E" Q: ?0 m, g # 输出处理信息
4 a4 v1 P/ s8 C) S" P print(f"正在处理第 {i + 1} 张图片")- Q' D: n; c) |(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件8 j6 j* g0 s+ u' @) ^(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")) z: p1 E1 G1 J2 [% P- l: N(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
3 {# S- e. J7 }& M- C2 j2 Z video_clip.close()
5 Q+ J9 E* z0 ^" L; t X" l! w1 t G1 t @0 h# m; o4 u: p; l(欢迎访问老王论坛:laowang.vip)
c: v& Y0 U/ K8 H' }) ]; S" T- Y* d$ W(欢迎访问老王论坛:laowang.vip)
* |* Q3 f* K: k, {9 U' d; G# i1 j
, c! D( L& m3 ?8 Y; D
) v, U) X# |' z6 _& q. C$ x- n5 m7 H% X5 g& e7 b O(欢迎访问老王论坛:laowang.vip)
|
|