|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
! g: @5 \: F% L0 D; I. r用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
& [" d) U0 x8 ~7 ]下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
/ o& ^: m9 h, `5 zdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):/ r5 f& f, [1 `, P/ U# N+ J0 m! Q: ?(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
8 h( R( y2 S' Z* m* ~. m4 ^4 n9 U os.makedirs(output_folder, exist_ok=True)6 U0 d+ T. l+ d- F0 Z- q8 ?0 Z3 \% G(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
& k6 E& z5 S- f( A8 ] video_clip = VideoFileClip(video_path)
0 r& z) r# E8 `% ^4 f) U # 获取视频的持续时间
! \2 P- L7 ~2 R# u video_duration = video_clip.duration
$ t. P; j+ t) F: t0 A# b: p* q A # 确定每个 GIF 的持续时间(以秒为单位)8 w& T# X6 A% ~% {3 @* e(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
+ y3 c w- K" H% ` # 生成随机时间点5 W% v1 p6 i! i# n) F6 e9 m(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]); R3 A9 P. {. @' L: [(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件! ~0 B/ h1 n) }( b9 v+ l; x! |(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)! D& L( ~% Z/ ?7 Z1 L% E(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
h% ]' R0 h, c `7 [ for i, t in enumerate(random_times):/ C4 P' T" H* m* m# G3 C(欢迎访问老王论坛:laowang.vip)
# 提取剪辑: ]; O0 d1 o A(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)) O' u5 b, }. ~/ W(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小3 X* {/ @/ M% Q) j( N(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))% l+ h( E8 e {5 E" L v(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
* M. U @6 n1 I# J( v gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
3 Y) o. E6 S8 o+ ?5 Y # 输出处理信息: d9 R9 h4 h1 [$ i(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
0 F. b ?( ~- b: _' j$ r # 写入 GIF 文件1 Z/ R: {" j5 S(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")% ~8 U! C3 S/ v1 n2 [. i$ m(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件- |3 b9 h# S, y0 P: B3 Q(欢迎访问老王论坛:laowang.vip)
video_clip.close()% G% R5 g' D3 f+ ]* }(欢迎访问老王论坛:laowang.vip)
" R+ t8 r" Z3 t5 p, }, Z: S" O/ x8 a1 X `6 g: d6 t3 [% Q6 R(欢迎访问老王论坛:laowang.vip)
/ y8 {1 d% ]) T2 V
% b+ l: E) z3 g7 G+ h) f, t3 l0 m/ f$ k4 |" ]. F8 q# Q(欢迎访问老王论坛:laowang.vip)
' w% q. A& W4 P N) a(欢迎访问老王论坛:laowang.vip)
- J+ t1 l" _0 l, [) M(欢迎访问老王论坛:laowang.vip)
|
|