|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
3 E7 ~* a8 J1 L# f(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
$ |& X: f( W1 G; j1 O1 U下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你% V; g+ A' K6 S# O(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):8 d& W! w3 ^$ c" a+ s( m; q) q(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
- @6 H" _4 l3 Y- L- N4 u os.makedirs(output_folder, exist_ok=True)
, \, P# | Y$ r( o& E6 E # 打开视频文件. `9 T; h3 ^7 R' W4 S4 N w(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)% Z' K, Z' p3 A5 F' I(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
/ d. b7 i3 V) g- P5 K video_duration = video_clip.duration! k( b6 _1 u: {% l0 [(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)" E) W1 Q6 u3 E' }! }6 c8 O(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
. h0 Z0 L; r. k1 Y( z # 生成随机时间点! @: J* g, d0 T" T; |6 j(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]), ], l0 {4 h* k9 p/ ~( H4 v, \(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件3 {( u3 P$ @+ }6 y/ L/ e' G(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)% _) h" c/ ^3 ^( U/ L; B. z& A(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
0 M0 E% ~. ~; ^( Q' R, Z/ y for i, t in enumerate(random_times):
* o' h' @* ^! u# x3 C1 m; O5 e # 提取剪辑8 j; v# L# B/ \0 a/ Q& A(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)4 z9 s9 V8 f0 J. z& F* ?' j1 v(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
, }3 C& m7 p6 X. T resized_clip = clip.resize((target_width, target_height))
- f# Z# W9 n8 z # 生成 GIF 文件的路径7 j, [2 r# c, D& r r3 s7 G(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")* r; N; s W7 t# n(欢迎访问老王论坛:laowang.vip)
# 输出处理信息8 p+ e i& X% ]" [- _0 ](欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")4 [) f6 _" N6 T) j(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
6 s8 N u$ `0 E* ^+ h resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")! a' j5 s' ]: E/ Z% S5 G9 ?& Y(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件0 k- h: z4 x7 D4 S& N+ r3 ^(欢迎访问老王论坛:laowang.vip)
video_clip.close()) ~3 p4 ~* ]) k7 y! ^ F(欢迎访问老王论坛:laowang.vip)
& `2 I3 ?. e# }+ P" ?(欢迎访问老王论坛:laowang.vip)
& u9 |9 M3 {, s0 O. _3 S: ?(欢迎访问老王论坛:laowang.vip)
8 t% ~8 _3 S+ M) p( z/ U) N& f8 J Z$ w(欢迎访问老王论坛:laowang.vip)
. ~. U( V- H4 h2 F& p y4 P: I) R
+ {* a2 T t' K0 H- p% R1 a9 K* P( f! q. R(欢迎访问老王论坛:laowang.vip)
|
|