|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
( \3 H- I& d+ R(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif2 w1 {1 I7 J ^$ Q1 H) S(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
/ ~5 D! Y9 M5 D% x2 edef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
+ F6 K- L1 m9 P+ A/ J1 J( Z: V; a # 创建输出文件夹0 E; L5 q: l9 f) }3 g* F0 e6 z(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)) l2 x- I$ d1 l6 J(欢迎访问老王论坛:laowang.vip)
# 打开视频文件/ D3 d0 B& M& _' R X' T(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
# V& s1 ?* W9 L # 获取视频的持续时间& s8 c+ v& l3 ~/ }/ f% U(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration) l3 U% [4 V' A4 d2 R4 F(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
; j1 K% b, P) [# @' n) Q gif_duration = min(duration_per_gif, video_duration / num_gifs)) B# m6 {0 _( ?(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点' |! B: N& a8 y(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]) k w2 R0 V0 j# f6 M& X C(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件) i) z: E+ K3 ` t6 k( w(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
6 y. k" ?: K# `! U0 r/ ~% h( t # 为每个时间节点生成 GIF 图片
. \8 @1 `! ?% v; n0 P# Z for i, t in enumerate(random_times):
$ l# U$ k, C( u7 F # 提取剪辑
( v+ a0 }9 P# Y% k0 F" h clip = video_clip.subclip(t, t + gif_duration)$ j3 E( _$ R3 H& C9 [9 G(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小( e$ J' p, C' ` g. w(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
" @( n' E9 i) t7 i \9 Z8 v- ~ # 生成 GIF 文件的路径
1 k- |; H9 Z1 _% n- ] gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")% ]! p. g& _4 U+ f6 H2 }0 W, u7 Q! Z(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
3 I: L& R" J3 Z0 R print(f"正在处理第 {i + 1} 张图片"); s R! p. Y, `' h(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件( e d2 |* z. s$ }+ o) o4 X |(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")- w; [5 ^4 |8 ~! W3 g, U3 g(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
* n$ Z8 I' g0 V0 F+ x, S. _' p video_clip.close(): S' B g8 f$ F(欢迎访问老王论坛:laowang.vip)
( P3 q% S# ?7 o7 ]0 J(欢迎访问老王论坛:laowang.vip)
/ T& {6 I, P0 s(欢迎访问老王论坛:laowang.vip)
5 H+ [ f& E* r& S$ s# E2 C. W3 l(欢迎访问老王论坛:laowang.vip)
9 N- S& r( r* A0 l8 h( b, O3 e: V; n+ \
% }+ {7 R$ O$ p
: a( b, p* p& {1 T( j# }. S) G9 L; v& J4 S( n(欢迎访问老王论坛:laowang.vip)
|
|