|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
, I4 v: \9 q0 P" w# ^- {. F用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
, ~% W5 Q7 f! o7 V4 N下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你* C1 x: A6 E2 Z& Q& d(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
) @* s! L' S3 | # 创建输出文件夹
& H# q; W7 g1 A8 z" `! z, k os.makedirs(output_folder, exist_ok=True)
& G& {7 y! \8 n# a0 Z9 R& V # 打开视频文件; n3 n7 v3 b# `6 Z6 {# z9 L U(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path): i* k+ z3 C, ] p+ f y(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
6 |$ B& [& x; }1 N video_duration = video_clip.duration
. I7 X6 J1 ^ Z" Q3 V # 确定每个 GIF 的持续时间(以秒为单位)( v; m* x" p% W1 j: }3 O(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)6 Z- {6 n. R% q(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点* b' n0 C0 i$ b(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
9 P9 T8 u8 I) `1 @ W, h # 在循环外加载视频文件" v, C4 x7 ^7 p9 Q1 [9 j' K(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)1 h% j1 R, I' J(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
. q: u: g8 k1 X8 |' w# G! w for i, t in enumerate(random_times):
$ J; j$ f; ^) T1 z. \ # 提取剪辑9 G5 a2 q1 H7 X8 T8 t8 ?) b' F. Z(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration) c A* L# u4 e- t" d(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小& j+ e6 T5 H& G# H& c4 \(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))& a. r2 O. Z. L) W(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
- G: D4 V5 {1 p$ @, F2 o4 [ gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")) K$ r4 n9 a6 @(欢迎访问老王论坛:laowang.vip)
# 输出处理信息. I% M& m1 p& X. t3 ](欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")) X8 Z: h1 t Z6 {0 R7 ?(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件. C( o. ~ K2 a8 o+ p(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
5 ~8 U4 ^* P+ C8 O+ H # 关闭视频文件2 G0 g$ T, |5 u2 g$ _9 a" _7 R(欢迎访问老王论坛:laowang.vip)
video_clip.close()
2 a# o4 d3 X; J& ^: F6 b! A8 L' w( B9 [(欢迎访问老王论坛:laowang.vip)
* e6 m$ X+ C5 b" x5 N(欢迎访问老王论坛:laowang.vip)
$ l M5 Y2 O, L* G! P(欢迎访问老王论坛:laowang.vip)
. n+ X# i& H6 O6 I3 @) r) W% W' S" y3 d4 K8 u$ Y0 K, ](欢迎访问老王论坛:laowang.vip)
; }$ f. M4 T9 D& a4 m1 r(欢迎访问老王论坛:laowang.vip)
, x* x. W# H$ x, q/ a5 ]# W(欢迎访问老王论坛:laowang.vip)
|
|