|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
5 a+ Z s. g0 G, ~. |用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
. B) O2 T% v5 F. v) q0 T' G2 m7 g下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你/ T1 R1 ~3 k: w0 ?; {(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
4 _- \& H o$ e2 }* @ # 创建输出文件夹4 a! ^( `% B3 [% F+ T' J(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)1 }( p G3 X% r. n(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
+ g( d4 ?2 T4 a1 W, G video_clip = VideoFileClip(video_path)
/ Y( D: X7 H5 O0 c/ r # 获取视频的持续时间
* {; k* r- w) Z$ W0 w5 p1 z video_duration = video_clip.duration( H6 p W+ n) M4 p, [(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)9 J9 I' M( P# c& m: n( z. y1 O, I) e0 y(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
7 `2 h$ J2 X# J0 A6 S+ G # 生成随机时间点
- R, s: z0 }) s$ V( Y random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])6 j m* e) G1 L, I$ x: v; A(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
2 u; D5 L+ J+ X9 |/ ?6 x9 N3 k video_clip = VideoFileClip(video_path)# W- }7 D5 w" V8 ~5 Y(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
" M) f1 S C \1 W! l for i, t in enumerate(random_times):
+ `$ k. i) j0 o7 s3 }" Y # 提取剪辑8 E; _% }' _9 ~/ `$ ~9 X(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)8 o2 p+ ^# `2 r* v7 v+ f+ ^4 J(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
8 D, C, i+ I- e/ |' n# R resized_clip = clip.resize((target_width, target_height))' O( D: R5 Z7 }6 J, L(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径! I3 {- U4 B* Q" n* W0 G(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")2 W/ \# q# w" N3 W' r- U(欢迎访问老王论坛:laowang.vip)
# 输出处理信息! L9 B/ _- E1 I% u; V! _- [1 k(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")& Z. U( C' F# O(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
1 [6 I& |' P9 s7 p; S+ R; {5 e resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")1 r, r/ ~- s' N" g, w( o(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件: A7 [6 [0 W( m; Y# a- _(欢迎访问老王论坛:laowang.vip)
video_clip.close()8 \3 r& E# }0 ?/ M1 D(欢迎访问老王论坛:laowang.vip)
( }7 |/ k% D6 W
: W2 }1 N. q) S4 l8 G& N. B( j. K* o9 ~; I: y8 r7 f(欢迎访问老王论坛:laowang.vip)
8 d# l# d" L& D(欢迎访问老王论坛:laowang.vip)
7 e7 u4 M6 s* \% g( o; c; C8 u3 M3 Y5 M7 V- C( K7 j2 M. E(欢迎访问老王论坛:laowang.vip)
, K' Z: i1 J8 P k2 i |
|