|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
: c8 _: D/ z+ t(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
: q, R& Q' t8 I/ O: Y下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你9 J: i: r% M8 K" O" t# B& u(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):* B/ j7 f" a9 ]/ a(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
* C) t: _& P$ Y. F9 e* S' h os.makedirs(output_folder, exist_ok=True)& ~2 u1 I8 d! F3 F ?% N d(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
. f2 {2 U+ S% P: S" a( O video_clip = VideoFileClip(video_path)! G% `8 R' c! e- q(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间% `* P) `4 U) e- a3 _(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration8 ]3 P5 s& R- J; W/ [; N% H2 {(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位) ?1 i& {; R d: V- V# M$ X/ V(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)8 [$ ^. P, r7 Y. b" U(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
7 F2 E- O; h4 C6 K1 u E* k random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
7 T) Y+ h% X. V, \, ?' K # 在循环外加载视频文件* Q) u) j! E# l1 f(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
- S: C' n: Q/ A( w # 为每个时间节点生成 GIF 图片( p* R, H* p0 C0 ](欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
% n+ H7 h+ O7 p' V' L# g) o # 提取剪辑: V+ V6 X- n' N F(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)- S1 `6 ]+ E* i- k(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
/ w5 |' \' U" n- J1 l resized_clip = clip.resize((target_width, target_height))
; N" i- F( S6 b, T; r # 生成 GIF 文件的路径
' P" n7 d0 j* }" L0 n2 ~6 V gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif"), L* D/ G1 F$ T( ]" o5 K( [(欢迎访问老王论坛:laowang.vip)
# 输出处理信息4 |& m+ j1 }3 O5 k8 o(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")5 P" |1 Q+ e( d! p4 p" d(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件, h+ P$ c/ y6 q$ j; }: h& b(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")& N/ u2 y( M+ ^. Z; B) f(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
; e% A$ X: @* E; Y! F$ F video_clip.close()
% _5 O9 P6 e) O) i- y
& V, V; P- Y% }
+ `0 A5 X, A( R
; z% W/ H. R# r" Q) |, l' N( V4 H5 N* V" i+ P0 N; }( X+ h0 Z(欢迎访问老王论坛:laowang.vip)
+ k& {, E" B+ n! [5 g1 }(欢迎访问老王论坛:laowang.vip)
* T; Y; }! p% d( X2 p; G9 T9 W, n; a: n
' H* I- B9 C" O( C1 g! ^ |
|