|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
6 v$ ]" n% G+ X# n1 }. |9 K用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
6 M8 W5 m+ C9 z) M3 N下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你5 v, c' ]5 _# j! A8 j; _/ m(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):' t, b- q/ b6 {3 M& B(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
n0 q& p1 I) M/ q: n2 {5 U+ W; M9 I os.makedirs(output_folder, exist_ok=True) e# p9 q% t) M) i; J/ R0 R+ ~(欢迎访问老王论坛:laowang.vip)
# 打开视频文件 Z: f' w: ?6 Q! e h8 j(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
0 T8 |: V: T: Z+ j# j# Y+ ? # 获取视频的持续时间/ H( S+ {; E9 A5 z l(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration6 I* [/ T/ ^5 p(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
9 n' m, Q E7 U) m8 K) N$ ?, M0 z5 o gif_duration = min(duration_per_gif, video_duration / num_gifs)6 V( A/ [9 v3 M: V( T(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
& \: i5 o# K) k# A! o% t, ~ random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])$ b S5 K" o) P" g7 N) N(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件1 D7 ^. g7 @% k(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)* N/ H/ m$ h$ s! O9 p* E(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
; S2 B/ v6 j( u' `9 }) ~. L for i, t in enumerate(random_times):
1 J3 s5 A3 y9 D8 T. J/ u/ E # 提取剪辑
7 T% J( L# i, O* u$ V! v& ^ clip = video_clip.subclip(t, t + gif_duration)( }. b# v; I& J8 S- o(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小$ {/ U6 h( g1 y: E6 Q" Z9 L" q(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height)): g/ V) m% R7 n% Q- Z(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
* a1 v7 O/ `4 G1 g* P gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")$ l' e4 b! B3 }! W2 H3 x8 w5 R(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
' @* j9 K% D i print(f"正在处理第 {i + 1} 张图片")
: q) |* [9 p7 G+ U- X" E6 {% H5 G # 写入 GIF 文件
7 o( N) O/ H7 R: {0 x; W, z; S# R% n resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")$ m0 w8 D$ e- c9 E% f1 @' ^(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件& a% E+ L+ R( x3 A5 [! f' R(欢迎访问老王论坛:laowang.vip)
video_clip.close()
" d, x* Y6 v! _+ _- S: h, |9 z! Q
. @. m; O: V" }# @ ]% B- @* K
( O: L4 x8 k( G* \0 t2 C
8 k- j2 W! Y1 A
, ^& @5 I! r5 w+ y) \
* ?' t* V0 K3 G8 Q& f7 Y
c5 n, h8 O( i2 K
O8 S5 P; h, G' j6 p( G |
|