|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
2 k6 L4 }2 }2 V& s |(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif; P8 e X" g Y6 V2 G(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你$ g# Y* M% R! z- q) f% x(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):3 z% z- e5 j8 F- H(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹5 r- f4 N$ y* a- }) f(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)# T. j9 w( n5 [( _8 [# Q2 L1 n! B5 I(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
- @4 W% c# U! Z$ r7 |3 } video_clip = VideoFileClip(video_path)
$ `; D# n2 z6 |- r0 W& r4 ^$ B! E( N # 获取视频的持续时间; v8 r: }0 N( L( T(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
: I/ j: }1 E' K7 n5 p; S% @ # 确定每个 GIF 的持续时间(以秒为单位)
" ~+ l, B+ u# D) e. P I gif_duration = min(duration_per_gif, video_duration / num_gifs)
$ e+ {/ p( g) {5 C- X3 J # 生成随机时间点2 i* y1 y" t' P/ ^- D(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])2 c! R1 h+ A8 r& `(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件
/ O# n2 u* l. `' E9 o4 @ video_clip = VideoFileClip(video_path)
5 @! V7 Q; l: e6 s # 为每个时间节点生成 GIF 图片: `! V* q( |/ `2 @(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):9 c2 x6 y' H. W2 A; b, y1 c D0 H(欢迎访问老王论坛:laowang.vip)
# 提取剪辑# O) I4 q2 n; P, z% ^ s5 ^(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
+ w$ s: y: U1 Q8 G, F4 R # 调整 GIF 图片大小
& }; J' r1 ?# a& u# w resized_clip = clip.resize((target_width, target_height))
# S7 Q1 O$ ]$ i% |% F5 ~3 h' Z # 生成 GIF 文件的路径4 u d( Y( w) M8 N1 H% h5 ~(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")/ }+ N1 Y' n& |% s, _(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
Y+ i* y% e' l2 |( \0 h8 L print(f"正在处理第 {i + 1} 张图片")4 Z. I4 S. E1 P) J! a+ ~(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件' t7 b t% Y& Q" V3 a5 I(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
/ A. W6 W' g; v # 关闭视频文件
. b- X4 {, I* y N, x4 H video_clip.close()
( f [+ g0 @+ }9 S: M8 t$ E9 L2 s% a' T- L: F2 e(欢迎访问老王论坛:laowang.vip)
[+ o4 Y5 h8 c2 o
, |( c. w1 h" ]6 M& }$ H
Y$ x" y, {4 e- K0 g W
2 j% p( m5 u$ k) A
/ g: D' G& F1 F2 Z1 N# X, z: r- |! @1 s- x- A(欢迎访问老王论坛:laowang.vip)
|
|