|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
, v9 J, n$ y( }, H) G(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif* P$ y, b0 O( x1 a/ }5 \' T(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你3 j h& m; `0 j& t" G& b. C3 J" P(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
- `; r+ [9 z; u3 J0 K3 a # 创建输出文件夹2 l' l8 w7 Z0 e R' ?$ ^4 T(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)& l; v( V3 }4 E9 k# v0 J. @; S$ H(欢迎访问老王论坛:laowang.vip)
# 打开视频文件2 t5 l$ {4 s7 D0 [(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)/ n: P- B0 Q' W) d; ?1 P(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
, F1 d" D! G6 E video_duration = video_clip.duration
3 \& l' M# \2 T& y Y. t # 确定每个 GIF 的持续时间(以秒为单位)2 }$ y2 G3 U5 {* t(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
1 z6 V% N+ K8 j # 生成随机时间点
N4 Y0 ]6 I1 l, b& m5 R/ y- ] random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])+ w2 J* ^, Z( m6 w) ^ G(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
; Z6 b8 D3 f' Z# }# C video_clip = VideoFileClip(video_path)
! D) t) h1 o1 E. H, W% F # 为每个时间节点生成 GIF 图片6 P1 r0 O# m: l+ J* [! k6 h(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):" W) a3 H* ^3 E/ I(欢迎访问老王论坛:laowang.vip)
# 提取剪辑+ {! h1 u9 l. h8 R- z! P% Z: D(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
1 U$ I& `$ Z3 w) ~! x. P% u0 N # 调整 GIF 图片大小
0 X$ _: \2 ^, ] resized_clip = clip.resize((target_width, target_height))2 T' M2 s+ d# w" O" g f(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径2 u+ t1 S- K; ]- G2 q& ?(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
7 Z& w# x( K) l: g # 输出处理信息) C, q- L( }+ C. ?(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
* H6 C+ r. `/ \- h+ f- m # 写入 GIF 文件
: a, z+ N; R& i3 m) r6 Z% H8 l resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
2 D B% P, ]/ v' ]! C. L( Q; o9 g # 关闭视频文件6 W I. a1 z# n: W! u8 v5 E(欢迎访问老王论坛:laowang.vip)
video_clip.close()
1 I+ y/ T) Y2 f4 b: Z/ M4 _/ C: @& U3 S0 ?' Y(欢迎访问老王论坛:laowang.vip)
2 \: H8 L" Y& e( l3 y1 `/ K$ L9 P' c% i2 r. N8 t(欢迎访问老王论坛:laowang.vip)
* u; D& Y; N. z
5 i" R! X: Y, [. A) L7 q- N
5 Z0 w& u$ l/ c: Z' Q( f* m) h1 Y(欢迎访问老王论坛:laowang.vip)
|
|