|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
# m0 n4 B! n* P(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
1 m' \- {" [, u& ^9 H! [. K" J下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你2 w$ M- Z% x( D& [% @# i(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):, W9 c8 P# _- a4 X: M$ a6 \- @(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹0 `* S- b0 k- T @- w, A$ S(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)& ], F, g: z0 T8 Y9 ~# X% O7 s, o(欢迎访问老王论坛:laowang.vip)
# 打开视频文件 n! @" @' ^" V(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path). F$ j* z' h% X* ]& m(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
4 A3 l2 ~& J" I( u$ _7 R video_duration = video_clip.duration
5 U9 w7 \3 E* M9 f # 确定每个 GIF 的持续时间(以秒为单位)
8 s2 R' ]1 M- @- G- g gif_duration = min(duration_per_gif, video_duration / num_gifs)
8 G3 c( t% r5 h1 M& f # 生成随机时间点
% m. J$ j& U/ c8 ]; J( O random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])0 u+ H% u( z4 o% y9 O4 M3 ?# E2 z(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
- j0 W' ]' F8 Z/ \0 k2 [ video_clip = VideoFileClip(video_path)$ f0 k/ r# w& l+ d* A* Z* S(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片; P* S( M: L- b4 E9 K& Q(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):: L$ H& V& p8 H& g3 P7 V(欢迎访问老王论坛:laowang.vip)
# 提取剪辑0 S9 j# [! D" U, T2 ?5 Z- O" X(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)5 |3 `0 m' ^$ w2 O- k(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
2 c- D) v$ m- `) K! k1 { resized_clip = clip.resize((target_width, target_height))
4 r8 g, S& h! u& T& c& X # 生成 GIF 文件的路径- }& T. g+ f' Y0 D! I& D1 X# ?(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")- r- J% }% @; Y1 o3 I- k(欢迎访问老王论坛:laowang.vip)
# 输出处理信息; i+ \9 B/ W$ j) z, h |(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
& F( B4 A. m$ w6 y1 ^( K # 写入 GIF 文件2 y8 E5 f8 h$ K- y(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
" i$ i3 e9 s; k # 关闭视频文件
9 s. v7 U& F5 l8 L video_clip.close()
, t2 i& Q& W# q% Y
1 y+ K/ d1 M5 S! j, s8 g
2 Z. `/ Z# j* B) V n4 o% x) J
" W$ n" F, g8 K+ g' ]/ W- d6 `7 F' u/ v. @. B6 B(欢迎访问老王论坛:laowang.vip)
, @& ~" b! Y9 t(欢迎访问老王论坛:laowang.vip)
& J1 m3 M) s3 }$ Z4 q! S; b7 H' j+ `- ]( d5 k(欢迎访问老王论坛:laowang.vip)
|
|