|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
+ y- B U) J/ L, [- t, c+ j(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif; y0 g8 H$ Y' v( i. I$ X(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
& A7 H) K% w; r& Z' z+ c6 \def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):! E. G8 S. a5 O(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹3 d, {9 O2 t* |+ s6 k(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)" h, f1 z3 e, A(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
& _1 L$ F1 Z' x8 N9 `) ~ video_clip = VideoFileClip(video_path)3 `: R0 V3 f" F! n* u7 y8 @9 y, M(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间- E+ h* ~1 I7 x(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
# P) Q( d$ `7 B5 j+ Q$ {' b # 确定每个 GIF 的持续时间(以秒为单位)
( q* z% @* V, Z3 h* X7 ~ gif_duration = min(duration_per_gif, video_duration / num_gifs)0 y/ [5 z5 w; H6 \/ ?( U, x& d(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
& n( [: e( h: y+ _$ M& g o random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
" A, v- g; v. F( M' p/ V # 在循环外加载视频文件
6 E9 ~. P- e6 D/ q6 h. X& B% u video_clip = VideoFileClip(video_path)% Y8 v N& K9 b4 ]+ T z(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片3 t' b) y+ q$ U, P: w(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
! X8 k! j- k$ ?: @ # 提取剪辑
) I3 D$ e- G! C( b3 S$ \+ f1 M4 W clip = video_clip.subclip(t, t + gif_duration)
: b0 Z" {/ y* ^; F5 N # 调整 GIF 图片大小
4 m) [/ Y6 l" c& L resized_clip = clip.resize((target_width, target_height))- O1 l3 e/ V; v! W$ A& B(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径* z; Y2 \- ?( N* h. a(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
$ L' J v3 A. ^. Y5 w # 输出处理信息; [" @6 \; ^% a% {3 d! B/ {5 v(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")9 U4 e8 h1 X6 ?# E, P(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
5 K) b& g9 Y y resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
i4 D6 s5 ~- E7 V5 Y # 关闭视频文件3 t8 A& {1 I4 @# e: q4 n(欢迎访问老王论坛:laowang.vip)
video_clip.close()
7 |3 G% E+ q) ?; D# g! Y; |9 a) N
5 V% N9 k7 j: w* B( }& R0 z0 {/ s( L0 |! g [" _(欢迎访问老王论坛:laowang.vip)
* Q/ a/ z o+ E- A7 F
: K6 }: f; x8 |# s: X" I2 N, N- C/ \1 P# Q2 n* V5 c(欢迎访问老王论坛:laowang.vip)
7 b; k) P4 L! \4 U' Y(欢迎访问老王论坛:laowang.vip)
# ^. h3 d" Y3 ~7 u7 I(欢迎访问老王论坛:laowang.vip)
|
|