|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
/ ~1 C7 H5 y1 V# T6 X8 Q(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif% g1 }5 C5 p# G" T6 G; b3 ?* ~" H(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
- C# r! d) V7 d; b4 V, V( Wdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):$ c. [3 o8 L+ G7 j) @# H(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
5 E0 U. [2 _) t. M+ J os.makedirs(output_folder, exist_ok=True)
5 ?, s$ h* ^* c0 l # 打开视频文件* h3 p y" y& z% n) g5 p& A(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
$ d- {; }- t$ M$ E+ I% {* H" g # 获取视频的持续时间" T! N5 K$ l; m0 X _' E(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration* G; b: x7 ]: s7 x! r(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)0 S1 f/ B N; k8 f o5 I(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
" B9 P) P& w' ]! [3 N8 B # 生成随机时间点
3 [9 k) k' o( s& n/ S random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])& u8 |! K& `2 r# f: ^: R(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
! E: D4 {8 O) K9 h! ? video_clip = VideoFileClip(video_path)2 A5 A5 U3 R5 _; \& H, v: w. J( f(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
8 s' }: Q, g% v/ X$ V$ V for i, t in enumerate(random_times):
8 f+ j/ K2 `3 \ # 提取剪辑6 U( g5 h$ c. \(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
+ `( G7 Y* _) X # 调整 GIF 图片大小, ~% Z& O' N! ^( `$ e9 v4 Y(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))& N; f9 s: z8 n% v& e(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径. I3 ]8 p+ Q/ H+ I/ b) u: K(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
/ j4 w/ B" t) |( | # 输出处理信息, ?; K( T, r1 V3 ^(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
5 z( x5 D8 F- G # 写入 GIF 文件9 q( W/ G5 J9 L9 ~(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")/ k' q. x, C1 j5 B: A, m8 e$ O8 W4 G(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件# b I- T, k* L# I) a(欢迎访问老王论坛:laowang.vip)
video_clip.close()
+ J/ @5 P- }2 [% B, M5 o5 ]2 y2 e' V3 Y0 W: {, P(欢迎访问老王论坛:laowang.vip)
; G& U4 T' q- x- l" W
& O9 q7 _' f, k# j
Y# E( y& Q9 y2 \/ B
+ b9 v: @/ }( S
! A% W# p, f8 f) H6 w/ L$ I2 d" A8 R) O/ _/ |% W; g& {. F0 s+ L$ i(欢迎访问老王论坛:laowang.vip)
|
|