|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
9 H, `# r9 }9 c( w8 J" o用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif% \4 x" _7 h% E$ L) A. n; {(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
5 I: d; r/ E. N! J: Zdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
, N( t) @; B2 k4 ^/ S4 E! J: X # 创建输出文件夹
8 [' k$ p1 z+ \) J os.makedirs(output_folder, exist_ok=True)7 k% y, Z/ Z6 Q(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
" h( |7 v6 t8 B, c) T2 g7 u q video_clip = VideoFileClip(video_path)
4 A# a P8 F$ @) J } # 获取视频的持续时间2 N) d5 i5 x0 V3 ?# ~8 x(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
/ t1 D9 R& E8 o. r0 }! J5 q* t # 确定每个 GIF 的持续时间(以秒为单位)) A% l( X" z' z$ N! A(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)7 Z( \4 g) B% s- M4 {+ D' U# K(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
1 V8 Z0 {- g: `# b; D6 K4 x. D random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]). {5 l5 ^4 T2 e! n }. w' X(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
' o- y/ R3 f, ^" e, H video_clip = VideoFileClip(video_path)
5 }7 P* g) z- W( W) X) E$ L' M- a # 为每个时间节点生成 GIF 图片- N; J' ?* B2 @ D( n(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):3 r$ A* v; j" W, G- B1 k8 K(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
3 q/ G; e$ h' \. M i clip = video_clip.subclip(t, t + gif_duration)' s+ m( e4 B! \(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
9 m+ V8 n; V! |; d( B0 j% w resized_clip = clip.resize((target_width, target_height))
: ]# {) L, C- i& ]1 M C # 生成 GIF 文件的路径! Y2 L9 R ]& @. t* f( Y) Q(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")' h% ?5 V( q7 S# e5 L(欢迎访问老王论坛:laowang.vip)
# 输出处理信息3 {4 m+ }, i6 u g& j& m8 N(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
! f) I6 r/ T K5 ] # 写入 GIF 文件5 P( W2 ^) m3 m3 d) V. z(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
5 o5 F& o. d0 m1 z # 关闭视频文件% K" B5 T- s' h+ o# [(欢迎访问老王论坛:laowang.vip)
video_clip.close()3 I% G6 J, R0 Z" s* \* }; b, q8 q: ](欢迎访问老王论坛:laowang.vip)
) |( ?4 P% W2 O8 I$ {6 k# |8 w, l4 X(欢迎访问老王论坛:laowang.vip)
2 Z+ _6 j) P8 R2 V
# o/ k: A! F6 } E: w4 s! ^7 v
9 `( y' y2 L+ d. z( a# E. A% g4 [# M0 Q! n(欢迎访问老王论坛:laowang.vip)
- w5 }" T d3 F0 d |
|