|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
& F8 _, B1 ]: m2 N: O p(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif7 }1 p1 f0 S' D \5 K) U1 n(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你, I) n: V- I8 g$ E(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):% r; J/ ?: P% x; M& e# |3 Q6 g(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹: T. `7 A9 {" o, F# W(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)' I, p; d& s( m/ A2 m) {(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
: S* ^6 Q$ k9 Q' N# A2 G. D video_clip = VideoFileClip(video_path)$ V6 i% |) z0 p5 `( j% Z$ G(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间+ k7 o G- x4 j. Q. M+ @7 p, b(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
( v( a5 @, c' q& S2 K4 t # 确定每个 GIF 的持续时间(以秒为单位)9 @4 z% c# e6 M; G1 S, J! h(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
. l/ l" c0 P4 r# [0 t2 N0 f6 J& i # 生成随机时间点& k$ v, s1 q! p(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
0 w! l3 `% w; P4 O # 在循环外加载视频文件& P! r0 c& {/ {(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)4 q0 _8 z8 b1 x& T(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
3 q+ q" f% `) c& ^ for i, t in enumerate(random_times):
; a7 ~1 b% ?8 I2 b H5 l* O # 提取剪辑
5 F8 U, s2 R3 Y2 @4 H2 Q! Z$ P clip = video_clip.subclip(t, t + gif_duration)
, Z! `) g# A- }6 M+ j3 ` # 调整 GIF 图片大小9 u' a/ n) F7 k, X- @2 M(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
$ U& u1 r E) K # 生成 GIF 文件的路径
3 o6 }9 U: M5 g0 Y; t1 P% ` gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")' _) U+ L; H0 u+ S' z(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
8 U/ m/ {/ B% y; B) p# f print(f"正在处理第 {i + 1} 张图片")
9 J T. F/ x9 u. t# d2 t" M) u) P8 o # 写入 GIF 文件 t* o0 }. c; Y4 v3 o& S, M/ H(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"). d8 n. e/ ]* d" J, k(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
+ O2 x" a( n! o3 P6 {) p2 ] video_clip.close()
) ^$ Y9 z# y# b* l. x" g Y& a2 _' S(欢迎访问老王论坛:laowang.vip)
; N* N& H1 H& K5 \(欢迎访问老王论坛:laowang.vip)
* C/ N* z9 m, C% j! e1 e% K% {1 \! I- d2 }& @4 w' j2 {(欢迎访问老王论坛:laowang.vip)
' x; S! H/ N r* _$ }(欢迎访问老王论坛:laowang.vip)
$ n" e# p& Y# i" @ n4 ~(欢迎访问老王论坛:laowang.vip)
- t3 g' M, G4 D4 m' m' s |
|