|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
! [; d9 w6 b9 f) r(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
7 E- i' p. b! {1 I$ e下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你- f1 ]' V/ {: ?) Z(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):& I7 P7 f i: y: ]' v0 A; s(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
, R9 [5 {& O$ ` os.makedirs(output_folder, exist_ok=True)( k3 ~; Y' L, h2 K" H(欢迎访问老王论坛:laowang.vip)
# 打开视频文件1 G+ T( R% H; c5 {4 M2 A8 _( v, m(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
" @6 m3 k+ J: n5 G. B5 P. l4 U # 获取视频的持续时间4 ^2 n2 Q' \4 C+ O: e* Y& J2 W(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration+ s" S/ i. M9 D1 v; V) h(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
' \9 r; W, l" }0 Q4 S0 L6 Z ` gif_duration = min(duration_per_gif, video_duration / num_gifs)' ]. T. Q E% I" {! b% @(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
0 v2 d! z2 g! _: Q: a random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])9 b& [) f& v+ p! Y' A(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
% U: |7 m& w# U2 E, w$ p video_clip = VideoFileClip(video_path) l( e: R0 @( ~0 h& p3 L(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
- ~6 I9 ^! w# l+ ^8 | for i, t in enumerate(random_times):
9 ^, w! \. p8 a* w7 a0 S1 W # 提取剪辑" W' }7 T& W3 t9 z8 K. U6 U) r(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)0 Y' [4 x* G8 O# d0 Q6 }, b, @(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小1 Z* S. x1 ^* U) x* C) S& a" B(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))0 b% o( ~+ e" I% l" v(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径( q. g. r: J5 Y4 [% O0 s(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")% ~, r2 r; F) g5 A5 C* O9 F; Q, `- n+ p(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
/ H/ R4 N/ I' V5 s' U& S print(f"正在处理第 {i + 1} 张图片")- t7 Z0 f- `! f. k [' n( G(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件$ h. g# i; m1 r+ o+ @) E- s5 o4 H(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")9 z; Y9 |: `6 N( z(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
& d2 ^/ L |1 m) o+ c6 q( Q video_clip.close()
3 F, |5 L7 x9 M9 a9 l# f" z4 l' i/ l- a6 t: H- b+ w2 e4 Z(欢迎访问老王论坛:laowang.vip)
1 [) h/ o3 v. }* Z, n* {. d7 g0 [6 H: {6 n' U. t(欢迎访问老王论坛:laowang.vip)
9 t Q: G3 w7 k- }) m3 \& {7 U9 ?; A
' t- V7 q0 K) L( p& j) Q5 q' C4 m; M
. D% m2 R9 A2 F$ b, b3 h6 a6 k
& A5 x" z0 Q: b/ e/ n. c8 Q |
|