|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
' z0 U. d+ P" {(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
) }/ t5 C$ ^. ?" X0 f6 B. m下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你5 K. e' Q$ K, w/ m9 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):$ d% T. a8 z/ ?(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
8 J* |! b/ C' \% }2 b { os.makedirs(output_folder, exist_ok=True)
) O" J' @4 L! u1 i/ L # 打开视频文件; d* i5 B% i* ?! n4 T' ](欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)# W4 k# X' c7 p9 e" D. g' C(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
1 p3 f2 P. H% t3 A f video_duration = video_clip.duration8 [, y1 v! h" B8 a, h0 M4 M(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)) l+ k. w; ^8 a7 b' m* y ^(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
) `, c8 {0 P3 { # 生成随机时间点8 f, A3 g4 F* s4 T) j(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])) V F& p* l# N" j( W9 t E, h(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件3 j0 T# H/ a1 \6 j e5 f! p(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
/ N4 A/ D& {7 q2 Y) F) w2 H # 为每个时间节点生成 GIF 图片/ C' J3 @* Q$ S$ R' F, w! s( \(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):1 P# X) P2 }* T(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
& t" H7 W, O* H; g/ `( n, S clip = video_clip.subclip(t, t + gif_duration)
7 [# c$ A+ j* H7 b/ u% [% I # 调整 GIF 图片大小4 G) p( S1 I7 }(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height)). U0 L+ `6 s) X" p& \4 y- `(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
# U* t$ e, L3 \- x U& p" T" L7 c9 i5 |8 J gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
) U. w7 ?% Q! I# m1 A # 输出处理信息& D5 Q, u" \9 @) E2 k(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片"); j/ \* E3 K5 e" ~3 w6 N(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件. t$ c& |/ I3 C; u6 B$ p8 U(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
% d2 N% ^4 H7 K) K a9 ? # 关闭视频文件6 {' h2 X" i/ b7 h8 ?(欢迎访问老王论坛:laowang.vip)
video_clip.close()
X, r8 N, q' J* _ o; O" V
7 D7 [5 }3 {) Y$ Y/ A( q
7 F! [' R( ]3 m0 i* e/ q% t2 r
. z- k+ X2 J( ?! F5 N& p+ N( B3 z2 N(欢迎访问老王论坛:laowang.vip)
( @ |, g8 y! n/ p0 |' f3 L
4 k3 H1 M2 [! T2 d& b# X6 C8 ~0 Y: o7 E% @9 h2 a(欢迎访问老王论坛:laowang.vip)
|
|