|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
8 g4 ?, P8 n$ o v# p% I用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif# B& l7 K. J: I! Y8 B7 S(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
8 Z& X3 v& P" N# k2 G, _! l# L4 ldef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
/ y8 N7 j! x) a" c) P2 y9 Q # 创建输出文件夹
+ U- E' ^# q0 [1 t os.makedirs(output_folder, exist_ok=True)
' u% U0 S- o/ d # 打开视频文件
, t2 h. H) N, a9 U1 L* p, f2 g& I video_clip = VideoFileClip(video_path)& D' E1 Y( F9 I(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间 g; W6 s9 e0 ?# S( |(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
E. ?2 K) h, ]6 D, h5 q/ Q # 确定每个 GIF 的持续时间(以秒为单位)# m/ {; k# [4 f7 `2 h! `' ?; p(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)* b8 Y3 G f+ j y6 N(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
( c, L% M/ a, }: I5 I, h" D" I$ X) a random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])2 l' l+ ]9 q9 J# k9 o0 _(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件0 j' U( B7 n2 o1 k(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
. s0 c* {' H' k( E # 为每个时间节点生成 GIF 图片! A6 Y P e; w- H1 x(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
# W( s7 w. z: q7 q( ?/ ^3 l4 A # 提取剪辑" H h- T/ F5 w- d$ s; P$ B(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
: G0 Z4 v3 a) g4 K* P/ y0 [; a; t. W # 调整 GIF 图片大小
5 W; h; k4 E* d+ A" L resized_clip = clip.resize((target_width, target_height))+ X4 y+ t, s" S1 a2 U \6 K+ s. L8 u(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
+ M. k$ h2 f5 x& Z" C1 S$ s8 `: r- T gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")- `# P4 q1 y+ N2 H8 T# s4 b- u! }: e(欢迎访问老王论坛:laowang.vip)
# 输出处理信息 w# u- J5 o* y3 n$ c) N' k(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
) c+ g l6 n2 M8 G9 d7 Z # 写入 GIF 文件2 ]. r/ Y/ Q0 l(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"); z- j! d# `; X$ g% |(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
8 @- t1 E, y; d5 f M" h( e$ ` video_clip.close()
) k) i7 f9 ~/ \% F7 j. A8 R! \: L& d" D; s, _! S2 o(欢迎访问老王论坛:laowang.vip)
$ D6 D# C9 r+ I
- l2 Z: |% R: d' k
; g1 {7 N3 r8 }" {3 h
7 l! `7 V2 D' {, g3 O% g7 I6 e. l; \$ G' a
/ L3 y4 d; Q. O. X3 T! g% r) N* M+ L. x' N(欢迎访问老王论坛:laowang.vip)
|
|