|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
- x7 o5 b3 U- F(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
% j; M6 l; m5 _, @4 u/ x下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你% |4 \6 N) r: Y' f$ ^(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):) M0 b# c7 [0 T' B) P: J(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
& E0 C: z+ h, Q+ o os.makedirs(output_folder, exist_ok=True)
' T( S) I4 ?/ |3 X8 f9 s # 打开视频文件
' s0 G6 y5 f8 v# n$ ]4 Z video_clip = VideoFileClip(video_path)$ d6 f- q$ I0 N7 E, Z# d(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
8 E, u( v7 p3 N video_duration = video_clip.duration |, v" h* h8 l' v5 ^, \(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
9 x. c/ f9 |7 s2 A v& C gif_duration = min(duration_per_gif, video_duration / num_gifs)
2 v# h, a3 _" G, ~% C( T* n% _ # 生成随机时间点
! k' ?8 R5 m( U& \/ x random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
5 q0 K2 g! G; k! H ^- K # 在循环外加载视频文件( ]& x; J! Q, l& _) Y h- c(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)8 w) D4 s5 [7 ~: h/ ~8 q(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片# j6 b: B' s+ m, z9 F8 s(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):4 p! F0 e3 u, N& W) c(欢迎访问老王论坛:laowang.vip)
# 提取剪辑! N! E- Y& \; S1 J(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration); M7 Q* \% b4 K$ @, y+ O(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
1 k) C- i: L3 _9 L# U. E- r5 J" V) z resized_clip = clip.resize((target_width, target_height))
# |' `4 e7 M8 v" E' Z # 生成 GIF 文件的路径( c+ W/ Z1 n8 [5 l( Q- z+ Y(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif"). R- }( j$ h" n3 z; ~ u( q$ Z(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
f) a( {4 g. N& i print(f"正在处理第 {i + 1} 张图片")
& V+ j5 c/ O* U X # 写入 GIF 文件0 f3 B2 H) R7 x/ X' i. r, a(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"): z! T% A/ l% E. M(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
: D! N! f# n; I4 R) G video_clip.close()
@- o" j1 q, O# V+ H% D9 f+ Y9 ^6 Z" M5 v/ f" J! s(欢迎访问老王论坛:laowang.vip)
* `& Z( R# E6 F+ Q4 g- {2 B( B6 {; d' b2 D(欢迎访问老王论坛:laowang.vip)
) c' L& g5 ~! B# i8 x(欢迎访问老王论坛:laowang.vip)
7 {. w) U. m: o G& p2 ^) Y$ U0 o( @: T9 p: Y9 I7 z7 g8 Q) ~! m" _(欢迎访问老王论坛:laowang.vip)
& N n/ K5 E- f! r3 W" B |
|