|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
( k: e6 R1 q2 z2 {7 d用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
' {' @9 ~4 r" A6 j下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你/ q8 w! D- W. s, C" S- L(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):9 C* c8 t7 J3 h# R4 D, L(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
" e2 {2 j1 x' W5 i" n. a os.makedirs(output_folder, exist_ok=True)
) x( p" y5 ^0 ]9 m # 打开视频文件. v; c1 l: \# Y3 n(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
1 _! m4 P3 I5 v. O A& ^ # 获取视频的持续时间
7 Y/ T" f2 {7 N: g& a video_duration = video_clip.duration; r/ m3 g1 `6 ] ^, w' R# d7 a(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)+ S& E; _( P5 j2 Q: |( f1 D(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
" G! D) K3 u, b& ^ # 生成随机时间点9 `. G- a/ v+ I* b2 J1 S(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])7 L' Q3 I9 F4 v* J+ v4 ~, C- ^(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件0 u2 K; w& } y) s" d2 M& \(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
, y; k( C# I. O( ]/ b% T# @& M # 为每个时间节点生成 GIF 图片4 f- Q/ H/ I& e, u4 K: D(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
1 ^) v5 A/ T- t. p/ G+ u # 提取剪辑
/ k* u+ X: R7 O7 m7 r clip = video_clip.subclip(t, t + gif_duration)/ b; Z7 n5 X# U9 [( q+ f+ J. m6 l4 ?(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小+ }1 r; s( i( E. a( w7 l( D(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
6 G I0 j2 U; F& ]% X* ^+ f: F # 生成 GIF 文件的路径. M w8 D8 z$ {, v* q* S1 D! V(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif"): r3 h6 T D; m w$ q/ w(欢迎访问老王论坛:laowang.vip)
# 输出处理信息& t z) R1 n! V. W6 j" i' f" ~0 ~) V(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
/ A& n/ w, Z: m2 y, _( k2 E5 S& Y # 写入 GIF 文件
, a* H2 Q& y! ]% }7 i resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")! P- q( S" e/ K) c8 Z; w" J; ?(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
' W" X! F3 u# l+ a- {" y# | video_clip.close()3 Z4 _: p/ }% ^; Y+ O( g(欢迎访问老王论坛:laowang.vip)
! ^) B1 `* R. j- }7 U6 a(欢迎访问老王论坛:laowang.vip)
+ W5 Z1 |. u7 z, q. s7 L! p5 g* h0 e% ^) {4 ^. F. D! D U(欢迎访问老王论坛:laowang.vip)
$ @5 _# s9 G* V3 c2 c }* w- h d(欢迎访问老王论坛:laowang.vip)
- P) m/ I2 r3 n+ a( `# \2 _2 l4 L1 e/ H. ]* w(欢迎访问老王论坛:laowang.vip)
" D2 Z" ~, w( Q( E0 y' B% m(欢迎访问老王论坛:laowang.vip)
|
|