|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
% m* b( X; J1 b; \) R9 D用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
$ e `, S8 B, p6 J0 ^- l# |. }% S下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你* B- d: E6 Z, H0 G2 k+ t$ o(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
7 m/ ?6 D6 O' e+ x% l2 ] # 创建输出文件夹) |9 G3 V) E( ~6 H(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)+ A. {/ v/ }9 W0 }+ u(欢迎访问老王论坛:laowang.vip)
# 打开视频文件, k8 x6 ?( d: V3 r) S$ E(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
4 E E+ n$ P0 u8 @- M- k" C # 获取视频的持续时间
6 }: d- k7 T3 H% F: Z) G5 q, j! F video_duration = video_clip.duration& b+ ]3 m- k- j8 ^(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)" b9 ~; D+ \5 t; P1 D' z4 a(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)$ Q2 _6 r0 y* {% K, k(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
. A: Z) {. r% I random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]). e0 w" d; o0 X; i(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件2 Z" k0 T) l6 \(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)$ V8 c" {! b y5 U(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片1 p: H( m, M& R" h(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):% b% y6 q% J7 x% P3 X0 c(欢迎访问老王论坛:laowang.vip)
# 提取剪辑7 U! R& k d$ R6 i* w" w+ t(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)- [8 c1 Z; @6 ^9 V- W! r5 F0 Y$ \% G(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小( B4 c1 [0 l* }+ W* e$ y/ a(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
: t" T+ s7 C! _; i. V # 生成 GIF 文件的路径
9 w) r2 S7 N; c5 }% h6 i, f gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
- c: c% [' w3 @3 { # 输出处理信息
- n5 {; \! g9 S& _1 T3 G print(f"正在处理第 {i + 1} 张图片")9 Z/ w6 p7 d' Y& i3 h, N5 b% g(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
8 E2 c y; i2 K w; K% T resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")' w0 V& {! }; k(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件6 M7 `. J' e5 K$ a/ n" c5 ?(欢迎访问老王论坛:laowang.vip)
video_clip.close()
% o) }1 e1 d9 s, H- Z, X4 }* L a+ s$ h(欢迎访问老王论坛:laowang.vip)
+ V" z; ^% B9 r0 @- J(欢迎访问老王论坛:laowang.vip)
. ^) C* [0 P- e5 h. J8 K(欢迎访问老王论坛:laowang.vip)
% o6 D9 w _3 \$ H" B1 i% K
! w" M/ o8 t. ^# o( r8 Y. } H$ A- A& O
/ j$ s+ ` j8 {! m
; D) u1 R+ l) p) t( t& g# \% V |
|