|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
- ?/ \0 k3 ^" Y/ u用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif" Q/ w) \. c5 A& _5 K: D/ y(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你* ]3 L- n! \5 g$ L' u( y1 v4 s(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):, _* U" j1 i( m: O2 l8 [ p(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹% z4 @/ j' W0 ?' `$ e) v(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)! i+ l; q2 k" a$ @9 N(欢迎访问老王论坛:laowang.vip)
# 打开视频文件$ ~7 L* b3 M' {: a- x) z. q(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
8 M. m3 }/ K, s" S# N # 获取视频的持续时间9 L* R! N5 a) c# n7 N(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
2 d. I5 M( c4 o, z # 确定每个 GIF 的持续时间(以秒为单位)
) n& k6 ~3 v3 M. G6 o gif_duration = min(duration_per_gif, video_duration / num_gifs)0 R. H% }" r3 x3 w" e) S7 Z* Y5 I(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点7 E- h7 ?. ^2 {9 j6 v(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]) x, s5 m( o8 {5 W/ H& b(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
. P2 o) l0 n- s video_clip = VideoFileClip(video_path)
6 t/ U4 F5 ^. Z. c/ j1 g: ^, F3 W # 为每个时间节点生成 GIF 图片
7 _; p: K1 N0 K for i, t in enumerate(random_times):
, `- p3 R) _. c3 g% b" j0 L% ^ # 提取剪辑. E) F! P y! E+ ]# \7 I. ]. d(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
6 [/ Y7 u. Z( h+ ` # 调整 GIF 图片大小
" k4 E% M" p T6 q resized_clip = clip.resize((target_width, target_height))
- b1 ^5 r q7 T) h6 u$ G # 生成 GIF 文件的路径
: a- P f8 m) c gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")$ |: B' R o- G& v(欢迎访问老王论坛:laowang.vip)
# 输出处理信息, Z0 Z3 i& M% q/ c; [; s0 C- k(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")4 |7 K+ C2 {( n7 H(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
& V) J |7 g5 U# [; E) B resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")* Z9 o/ g+ h+ a* S/ e# J( a(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
0 f I+ ^6 r2 t% `* w& H video_clip.close()
# m8 d, n5 {* j- R
3 R* M$ S" B- e% ?5 `& m1 v4 `+ s$ ~" R5 ^ C- P(欢迎访问老王论坛:laowang.vip)
$ _2 [8 a9 O# w2 t/ {, W1 F n3 l6 K3 z(欢迎访问老王论坛:laowang.vip)
, x$ A' d- F. Y1 n# T+ ^5 E(欢迎访问老王论坛:laowang.vip)
: X9 c4 P# @: w s1 [9 N
, K2 w& l7 m. E) ]& O& D9 g |
|