|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
6 J: {2 X0 v2 z$ u6 ^- n+ \用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
( B0 h0 z2 w$ W9 \5 B$ h下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你$ r T; D3 s5 O% A(欢迎访问老王论坛: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 ]) X: f; f u! t$ I+ Q # 创建输出文件夹
5 f" r+ c- z) S3 G! p. X os.makedirs(output_folder, exist_ok=True)
8 S! i6 m/ D$ [: R& t # 打开视频文件
; B; w- s3 d% P2 w. i7 [6 | video_clip = VideoFileClip(video_path)
. B9 e/ d+ e. [7 S # 获取视频的持续时间& L' I6 h) w) Z6 y* Q( B" l(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration1 M. D* G# O, I( h) r! ~3 F5 Q(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)' {: Q4 D* {3 @# B F* i1 A+ E) W" ?+ f(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
6 `8 k( y; Y _+ \! N; S # 生成随机时间点) P$ _+ q; v2 ]6 @) `(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
5 z, m4 l" Z* x v- z1 B: b( ?& { # 在循环外加载视频文件* l9 O) N. I% y9 d, E5 j) H(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
4 m9 o3 I# i' M( E1 X # 为每个时间节点生成 GIF 图片6 G" I$ s4 L! }7 b5 h4 u(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
0 k% W5 b2 w% q* _$ Q+ Z8 ?; a # 提取剪辑
; {' p9 k" W4 q: e4 D clip = video_clip.subclip(t, t + gif_duration); \% g% j, V6 c6 q, I(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小. V3 H+ z: p, C(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
" x, k; @9 v; z7 I( r # 生成 GIF 文件的路径
" R7 e" m1 R5 I- `' p( V gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
9 Y* r. n7 @, e0 V( ]7 A4 l # 输出处理信息
7 t5 p) k) m! S" h n print(f"正在处理第 {i + 1} 张图片"). v8 L# O1 E2 w(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
- U+ T/ A, J, S% o0 V' H' | resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")+ V! h) x" z' p/ w, Y2 p$ t5 g(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
8 e! b; p, ?, u. i; d n video_clip.close()
7 N0 {9 W! [$ w1 }, y% P- [" z( C, m5 I(欢迎访问老王论坛:laowang.vip)
) J, d, m' u8 q, \. o1 t9 Z(欢迎访问老王论坛:laowang.vip)
" f4 E4 n& Z0 B. u" b9 z' \8 r( }* Z# u5 e, K9 b(欢迎访问老王论坛:laowang.vip)
8 ?; [) _1 r2 ~, ?/ Q( O. R* M(欢迎访问老王论坛:laowang.vip)
8 S D" v( X" P& g2 _1 ?) e7 n# p2 B" }/ K8 X(欢迎访问老王论坛:laowang.vip)
|
|