|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
& }/ W; l1 K4 Z(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
0 p9 b* ^ |1 V下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你, l) _6 u1 d4 R3 u: v. V(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
4 p. G M$ L$ D2 s( r& t0 e: J # 创建输出文件夹
* q0 H# F: o' U- m) ~# ^ os.makedirs(output_folder, exist_ok=True)
( ?" N* Z% s' W# T # 打开视频文件
: ] {( \$ N! r$ f5 J' |+ d. ] t& s: U video_clip = VideoFileClip(video_path)
4 Z3 W6 x8 H! s$ L3 k # 获取视频的持续时间
0 \' n% W% Z/ Y1 Y video_duration = video_clip.duration( U8 Z$ v- w. u# k$ d(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)% e6 ^2 M% f# e1 f(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
# M; S- q4 @; ?. f1 J2 @, _: Q+ ~ # 生成随机时间点! p; j7 N( h& [$ r(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
2 Y0 S+ W4 G/ l- m1 @1 W2 R, q # 在循环外加载视频文件8 g5 g, f/ l. ?3 v' E(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)4 k( x3 r6 }3 k/ h(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
, L% \% F3 m& I0 k! M for i, t in enumerate(random_times):$ D0 c# W7 s! |/ a2 o' r9 c6 c. ~(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
% Z- x( G+ R9 B( w p/ m3 Y$ @ clip = video_clip.subclip(t, t + gif_duration) B9 @3 O; g6 v& s(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
6 D2 h, e1 W% h9 b1 x3 n resized_clip = clip.resize((target_width, target_height))# U6 ]$ A2 {7 a* q3 ]3 k, ]5 C(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径$ P8 x% O: b3 J! Z" w1 B# J(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
* w6 p- D0 n& b" J8 M# ]+ Y # 输出处理信息
4 ? p; X/ a4 U print(f"正在处理第 {i + 1} 张图片")
$ _2 r2 i5 A' E0 w+ c5 Y# o # 写入 GIF 文件
+ h0 _1 j: s+ \1 D resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")/ [, Z+ x' A6 i: N7 P+ ](欢迎访问老王论坛:laowang.vip)
# 关闭视频文件) i2 W% i& k* i% V) R3 G. q5 v(欢迎访问老王论坛:laowang.vip)
video_clip.close()
/ F+ D* o2 p3 j% {, A8 I0 k0 v$ v/ U. W% u" ]% y$ J& ]$ O6 F; R# j(欢迎访问老王论坛:laowang.vip)
~" L: {* r* U* H2 |- ?(欢迎访问老王论坛:laowang.vip)
3 D \+ \6 V" c( c, L3 r(欢迎访问老王论坛:laowang.vip)
, A. R3 \: U0 W
; l+ e( ~ h: X5 g$ a5 z. J: F) g1 M& d& a(欢迎访问老王论坛:laowang.vip)
& |3 b& q, I- F" w, F3 _ |
|