|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
% B0 T) K+ {" ~用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif+ }) W0 y/ j C. w! q(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
1 \" B0 o/ N1 s+ L8 |' `def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
% f; P2 x: o) r6 `! N' l # 创建输出文件夹 A8 @0 I7 b" V; b) ^1 k(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
1 B: v; d% E/ P* E # 打开视频文件
; ~$ @$ {, [/ I video_clip = VideoFileClip(video_path)) U$ A$ o8 x* f+ |* L(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
) e7 p5 d; h. l% K video_duration = video_clip.duration$ {1 E' ^. c' u% Q `" _(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)# P, B- F, f6 N) V2 l(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)" T5 _- ? k/ Y1 \ A1 ]% }1 W* z(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
) G% }; O4 l& g# K random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
. K" O* Y2 {8 A$ u0 d # 在循环外加载视频文件
$ f( g5 b6 p# ?, g* v video_clip = VideoFileClip(video_path)# O' W$ x5 I5 h" n; t$ a(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
1 u0 v5 v! h. R1 I( Q' v5 M for i, t in enumerate(random_times):
3 d0 V0 h$ K: `- D. O( g9 i # 提取剪辑4 y) o' F0 ^) n" z. Z l- t(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
& o$ m' J) n. I8 D; T # 调整 GIF 图片大小6 [2 S( u. b( j' ?* M(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
( k/ g' S3 X% m # 生成 GIF 文件的路径
' @! ^1 c8 R! u- V+ t' D gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
8 x( M5 J' P' q$ c: ?4 \2 v5 ^" o # 输出处理信息
$ m$ E# l: T0 d. Z% z# J6 v print(f"正在处理第 {i + 1} 张图片")
+ L7 H, b C! O2 Q" x # 写入 GIF 文件3 S, ` ?( R% w* `1 X9 L(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")! r. ?! @% \' a2 Q7 c6 Q# W(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
( B" S$ [$ F! S4 v video_clip.close()
, k, ?8 S, \/ m. l) N$ P/ p1 B: M
* o, E% F' r! w+ S3 _. g8 b5 {
) @2 c, P& p! q" c7 q. c( Q! X( n: Q8 S+ U/ Z(欢迎访问老王论坛:laowang.vip)
+ T* p* y+ C$ G4 H0 z W(欢迎访问老王论坛:laowang.vip)
3 r1 s& W$ A2 g- R(欢迎访问老王论坛:laowang.vip)
- g/ i: [" z( V7 ^# D(欢迎访问老王论坛:laowang.vip)
4 H) |. ?- m+ [/ r2 Z3 ?9 V; [! x |
|