|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
v' f) e7 b" |" Z) @用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
+ g7 ~. z8 u/ _: g3 ?0 @下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你( H ~" Y) h) I7 N(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
. d) ~ z6 m: i/ A' G # 创建输出文件夹
/ G) ?$ z# G8 l( K3 \4 h" N os.makedirs(output_folder, exist_ok=True)
2 H, W8 w2 x1 b2 W, M( d # 打开视频文件$ \6 {+ k0 j; f% u+ a( ?(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)3 H$ E7 l2 m/ w" Q(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
1 I9 [1 P8 |) W2 l" }' i1 u6 ^) K video_duration = video_clip.duration1 b, w$ M! v+ Y: E) W(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)1 t1 b) K R. ^, `* |# n(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)( Z" B. d7 A0 F. }1 U) B- |1 A(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点4 E3 P8 G. ~1 \! o" {(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
. C/ h7 j- }- p6 U& Z6 c" ~/ F1 V # 在循环外加载视频文件$ N+ T# |* g" A5 U# ?, H(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)9 ~5 J* [! {! o$ N3 Q& b$ ` [' W0 h(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
# } c* V4 b7 I6 u* t. h for i, t in enumerate(random_times):7 m6 [, Y( e4 o m) a# p- w(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
* P1 L8 T+ j3 S( \+ e( T clip = video_clip.subclip(t, t + gif_duration)
. \/ p( \" F0 D8 I( O; Y # 调整 GIF 图片大小
% `9 O- u& N( ? i5 `$ a resized_clip = clip.resize((target_width, target_height))
4 g) B1 r5 ^$ N0 d1 q' y # 生成 GIF 文件的路径
7 f, D+ K" g d gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")# g* g0 L! E* `* |' D- d(欢迎访问老王论坛:laowang.vip)
# 输出处理信息7 @; a/ g- U; p! |(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")" Z) F4 q2 @7 ~& R+ q* y% j) j9 \8 ~1 c(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件% d; J$ ^ M$ M) N' Q(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"), [1 O% q0 M" V% z E/ O4 k& g(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
8 Y; S7 l5 s8 X1 F' z- f: J, o video_clip.close()0 s) L* ~/ F( O/ K+ X: g, O0 }) U(欢迎访问老王论坛:laowang.vip)
4 E6 a& c6 s* w% L7 h2 w4 {( n8 o
5 ^- m; Z7 \; E! K" }: Z3 h4 P0 y, @- ^(欢迎访问老王论坛:laowang.vip)
% O9 [* d/ k! F! d# ?, o5 d$ l(欢迎访问老王论坛:laowang.vip)
0 l9 _8 w [5 A# t# F(欢迎访问老王论坛:laowang.vip)
' S. h/ F* D: Z/ e) o(欢迎访问老王论坛:laowang.vip)
- @- [4 Z0 Q+ i. d, Q( ?" F, G(欢迎访问老王论坛:laowang.vip)
|
|