|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
5 g& m! A% E) J( x) D, D用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif% b$ B! A$ A8 ~" _3 F3 M+ a- ?! }' F(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你" a! h E% ?* e( 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):
6 b* [ T% [9 s # 创建输出文件夹, }. E$ p2 ?2 E7 m(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True): ~) F5 M1 k' D6 n z L' S2 B(欢迎访问老王论坛:laowang.vip)
# 打开视频文件$ f0 D2 I; u( W$ c' Y. Y) p) E& a(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
1 R1 a/ K: k+ j # 获取视频的持续时间) }* m8 _ {8 }' I+ i* @(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
6 t: O% h; V* E, U # 确定每个 GIF 的持续时间(以秒为单位)3 b% C$ Z* t* f/ @$ ?(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)' |) a. v7 w j) P8 ~! c* r: U2 L2 w ?(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
9 _4 ~8 H; C( t, o random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
) s _) i8 J( m( J' E7 t) c # 在循环外加载视频文件
% l6 X( G! u. P; ?2 K video_clip = VideoFileClip(video_path)
: Z) U0 w8 q) Q! E # 为每个时间节点生成 GIF 图片& |% ]! O# B, R( z) b- O(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
* _2 [( T6 X. k$ t # 提取剪辑
8 m7 c# `5 i4 w& Z4 J+ i. [" c5 } clip = video_clip.subclip(t, t + gif_duration). j( X' \3 V: h8 x(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
: { A+ D$ B, q resized_clip = clip.resize((target_width, target_height))5 y. j5 r4 @# D% |5 I+ k" J(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
/ R6 ^; l2 l+ T" [( H1 [: j gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")* t: Z9 d' m' s! H1 J" s) G* J7 U(欢迎访问老王论坛:laowang.vip)
# 输出处理信息, Y) G+ a; O' l2 Z I% E2 y(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
) x% q( f1 `+ R9 h. q; J # 写入 GIF 文件# G, A4 \7 ~$ C; l# @$ y5 b(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")" o- y( y1 }- Z5 |! }( q7 \6 F2 U(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件* [9 d% N0 p1 r" z, C(欢迎访问老王论坛:laowang.vip)
video_clip.close()
1 ?; q4 {+ r. U5 U3 j& S
" Y# l q4 E8 S8 A- j& W% \2 L5 }
) H9 h2 e" ^. T2 q, h4 s+ R; {. }% S* Y% ~/ B; y. i(欢迎访问老王论坛:laowang.vip)
: q/ a4 ^& p1 Z3 w/ l6 V8 S" P, P. N: l0 T(欢迎访问老王论坛:laowang.vip)
" j V2 Y8 n3 @& G
4 P9 n& T( M; E+ i, H |
|