|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
% ^* X0 r8 y' b(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif4 O6 g. \/ A- \. f% N" n; Y1 A(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你- M. E7 R# W) Z# ]6 b9 h(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
1 ?# o- S( ?- u0 S" ]8 w' P # 创建输出文件夹2 o" X, U- g! _7 _; r* [(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)0 O& U8 i' l9 i) m3 b1 \(欢迎访问老王论坛:laowang.vip)
# 打开视频文件3 ?# S" d# X4 X9 S' q(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path); |# a! V) m' N9 _0 h(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
2 W$ g# B% n/ w `% D G! L5 q5 f video_duration = video_clip.duration
! R |0 o' S, x( t: | # 确定每个 GIF 的持续时间(以秒为单位)
+ l/ b% D* u4 ` gif_duration = min(duration_per_gif, video_duration / num_gifs)/ S/ @4 o' ?. p4 L# O/ ^) z(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点5 q$ i4 W( ^! }9 y0 V: T! j(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
, T$ `+ {1 h/ P7 P8 g8 z) _1 ~ # 在循环外加载视频文件/ A7 i& Z [, ^4 j0 v(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
! e! U7 i5 y, ]; }0 T) ? # 为每个时间节点生成 GIF 图片
+ `+ |. U& z7 w% h( z% j5 A for i, t in enumerate(random_times):
& {$ v4 @+ ?( K" J! u # 提取剪辑
! C+ X r( t/ m clip = video_clip.subclip(t, t + gif_duration)
9 W' e& ]4 L, b0 m # 调整 GIF 图片大小& x& j4 }5 e* _' `/ G' X* h Y(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
6 T9 h* e; B7 B1 i7 q. S # 生成 GIF 文件的路径 U/ ?& Q0 e$ _4 g(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
, T+ ~9 G/ P- Y0 x c* N # 输出处理信息8 R* } k) Y' @9 T3 R, m(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
& _7 K+ l$ H! U( H5 M # 写入 GIF 文件
* w0 r$ Q+ l6 y8 d% ?1 Z: Q) ~; t resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")/ W* O5 |, J, e/ K' M. }(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件 | P! Y& \$ T9 \- A(欢迎访问老王论坛:laowang.vip)
video_clip.close(); w" p$ }' D' e; P V(欢迎访问老王论坛:laowang.vip)
* i9 C0 ~$ g/ {3 W5 X8 N B(欢迎访问老王论坛:laowang.vip)
7 `1 P; V, M x7 x1 A& x9 X1 _, ?4 j(欢迎访问老王论坛:laowang.vip)
5 |% Y2 Q: Z; h W6 ?
7 _; |6 i+ V! Q: X: x4 @, R* h& V4 s(欢迎访问老王论坛:laowang.vip)
, I+ k8 f, D; @! ?0 z- y$ ~9 X |
|