|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
' N, H" {: a; M, _- T& j. f8 l( t用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
% ]. F7 _: B9 k9 x下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
: b% O: \6 _" `+ hdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):( }5 t& m* B& z$ K, Q1 F(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
: b8 Y8 l/ M( K! q2 U os.makedirs(output_folder, exist_ok=True)4 x. ?# g& A0 O. B) n! W(欢迎访问老王论坛:laowang.vip)
# 打开视频文件' @% A# K. ]. t6 Y(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
: x( q- D. I2 l4 z3 w # 获取视频的持续时间. V G! Q" h% H3 {& @; a% @6 c(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration. @8 @& W7 T! ~2 c2 [(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)! h w$ O2 n, b+ ?. X G(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)6 P! |" D8 B* K% o(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
) ^( j: Q1 l! f! q" Z random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
# |2 `* H7 h1 l0 t: d9 Y& I( I2 y # 在循环外加载视频文件
# ~' l7 w8 Z" T" h video_clip = VideoFileClip(video_path)" s4 l3 \* d' U! y1 H0 ](欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
& l/ S: Y' B3 n0 B m$ I/ a8 { for i, t in enumerate(random_times):+ f; D' J$ R( s7 m(欢迎访问老王论坛:laowang.vip)
# 提取剪辑8 o- S' P' X3 Z% U7 O(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)% U0 x+ j$ k" j+ M5 F(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小! v% @+ o2 C) g(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height)): J! x% Y) L; J, U, Y$ ](欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径( O- m9 Z- C! Q. p5 [* z# B( d(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")' E# w' c q& o8 Q+ b0 ~; n(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
4 n" C" f! k \) R) y5 X M print(f"正在处理第 {i + 1} 张图片")# K/ [. q1 L( |$ U' y(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
6 q, y) M. e( j resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
5 n" h3 s/ z1 l' z0 r # 关闭视频文件7 Q( ?5 Z& x) x6 D/ r(欢迎访问老王论坛:laowang.vip)
video_clip.close()1 \" T9 I P# Y. T% X(欢迎访问老王论坛:laowang.vip)
+ W; o( @1 `# o8 L1 J& z
( {' K, A% e1 Q) ^8 G4 P, l
3 f5 h- Q& c! X8 X8 f# M6 ~+ ]2 f+ _(欢迎访问老王论坛:laowang.vip)
, Y' W" |2 J: j k$ V(欢迎访问老王论坛:laowang.vip)
/ N) v! z6 w$ v+ T+ u x7 z7 C(欢迎访问老王论坛:laowang.vip)
5 W2 G/ W+ u( x+ a, @ |
|