|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
5 L, Y3 ~$ w4 ]% U) D# W9 S$ k(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif7 c" }5 ^+ p4 c0 D# H(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你4 N- M" V& S4 R t(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
, L: l5 }; C- w5 ? j1 Q # 创建输出文件夹
_( }( L( h* X os.makedirs(output_folder, exist_ok=True)
) V* K" w0 [1 N2 k # 打开视频文件% Y2 h# Q, i; b' c" D; m1 s. T3 e(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path) g' d: [9 N2 O(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间5 }# l% o9 V# c* a- K) w3 S9 B(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration& A' \2 f8 n' i4 p F(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
4 U- J; t+ ?; E" G$ \3 Q+ G gif_duration = min(duration_per_gif, video_duration / num_gifs)& ]6 `! m- }' K$ r7 ?(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点& I& O2 O' _; k$ O4 n(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])+ ^( _: w# `) V(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件 N2 F* }! @9 A. ]+ k(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
, h; W5 r( l* v1 R) E/ | # 为每个时间节点生成 GIF 图片
% e0 b$ r8 @( _; f for i, t in enumerate(random_times):3 o: n/ C1 b. ~& f4 m. q% b2 e(欢迎访问老王论坛:laowang.vip)
# 提取剪辑0 c4 g+ Q* y3 n$ D(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
8 x0 _& y8 Y8 c! R: u+ O/ G+ r- Y, I # 调整 GIF 图片大小
: T8 c" D' a; n3 | resized_clip = clip.resize((target_width, target_height))
* ~' C, F+ [* }' i; T, {: N # 生成 GIF 文件的路径9 @3 b/ v9 j3 Z- Z/ \2 b( O, F(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")8 h. W. ? ]1 o2 Z(欢迎访问老王论坛:laowang.vip)
# 输出处理信息% b2 D/ o F8 K: X3 |8 o(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片"): g3 Q; \3 \6 y" t5 [$ Y' j(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
4 E! i2 _, P" q6 A, L& ] resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")- i6 J* c" J+ C$ I& d0 r(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件- f. z) M! P H(欢迎访问老王论坛:laowang.vip)
video_clip.close()/ s' Z. W, O4 h4 Q(欢迎访问老王论坛:laowang.vip)
7 z: n2 q7 \! t5 ^% D+ H(欢迎访问老王论坛:laowang.vip)
8 c; J, T2 h+ y& v- n/ F- I2 N(欢迎访问老王论坛:laowang.vip)
& [, Y0 K' X; h0 v, V3 Y% e: u# g/ T
6 ]" C4 _8 A) W7 ~: P r4 [& Y9 ?) b/ c: f3 @(欢迎访问老王论坛:laowang.vip)
- @+ f+ x5 G" D8 S, q' }(欢迎访问老王论坛:laowang.vip)
* V9 f# z4 A1 g# M8 [; L1 r, E |
|