|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
, t) v4 W. S) h6 K" B(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif! J& v2 O/ l8 y' t& X(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
6 G2 ^. g- q* Z; pdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):; g2 p5 r* o1 Y/ z; m(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
7 h# V+ s/ T6 i- y1 R: F os.makedirs(output_folder, exist_ok=True)
5 q, F. o1 Q* R5 W2 x5 K # 打开视频文件
- B( _! y) a$ ^2 D# V. ? video_clip = VideoFileClip(video_path)
5 G1 L& V* l3 W5 M0 _9 O; z, o # 获取视频的持续时间% [5 v8 R, `( w: ^% L3 m. r(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
: Q9 |$ O- [- e/ l # 确定每个 GIF 的持续时间(以秒为单位)& Z( e/ e5 {3 M+ X/ U. W' p(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
3 m4 V+ S) Y1 M/ o # 生成随机时间点- P. x& j+ }5 @* E' J, \# D(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])# H+ j" }- Z" Z! c2 c(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件2 J, ~3 O r$ d# O(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
* C" s# ?1 b+ c& Q6 z # 为每个时间节点生成 GIF 图片
- z) Y. t1 ]$ p a8 n4 ^. b for i, t in enumerate(random_times):8 A8 Z9 n z2 P3 s# a5 t# _(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
& s$ D6 E# m4 r2 u9 u clip = video_clip.subclip(t, t + gif_duration)
2 \: y! K [0 U # 调整 GIF 图片大小 L1 Z, ^; j Q(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))( f/ _: [9 Z; B, m$ _(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
; {( [9 g# L8 b9 \9 f! O+ } gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif"). y! A) B A. A$ t9 z(欢迎访问老王论坛:laowang.vip)
# 输出处理信息 o) g7 T' I# A6 @, L; @; }7 E* B(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")/ I3 k$ S( e8 h7 W2 ?(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
+ I& a: F* `6 P. v resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")( r% M8 i6 Z$ D( w5 M(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
& Q" T! X) ^. A video_clip.close()
1 ^: u/ {' p0 r6 N% ^2 b! X* v$ r, F$ G3 T; d& r(欢迎访问老王论坛:laowang.vip)
+ y# z/ v% Z+ E/ e2 j. m
7 T# S& |9 f' {8 A+ C: O4 G U
) `5 l: D* C9 h% S4 n
i( N9 K7 e; O2 j& w$ a: [2 w8 G3 `- Y7 F$ j) H/ ]' S0 C! N, _(欢迎访问老王论坛:laowang.vip)
4 M0 d$ ^' x4 j1 A |
|