|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
: W7 g* k5 u! Z2 ^' y& Y2 }5 r. x- U用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif4 V) w; w" N1 X/ R(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你) G# J9 O* J% c4 y- y(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):' X/ @/ k3 {3 S6 |' L/ t(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
; n, [; \/ w4 b& e- D os.makedirs(output_folder, exist_ok=True)
$ x1 U ~, q- |, H8 n # 打开视频文件0 x8 j3 V& O* @(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
. w, M. K% j3 L( G4 Y* Q3 m # 获取视频的持续时间+ c2 b0 E' k- A7 l+ s(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
0 @$ X/ a- c9 X # 确定每个 GIF 的持续时间(以秒为单位)% @/ z+ B+ U# B! N; w# x$ a" Q$ B(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)
1 ?' X) r" z. w' `( L! M' [ # 生成随机时间点6 b3 N1 S9 E ]+ M% }1 h. l(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
^, \0 A& ]6 F# {5 C1 {1 X8 M: t) L$ i+ _ # 在循环外加载视频文件" L: u0 N9 U7 \ V0 J* B! U2 y* Z(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
% L& Z; ]: d U # 为每个时间节点生成 GIF 图片1 n1 X+ m8 {" R6 L9 c(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
, k# H* t* A" J8 D- V6 s" a: | # 提取剪辑) h/ X$ b/ {% l% S7 n$ V(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)$ ?$ ^/ c& k+ j* }(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小& h' t$ D- d9 D$ F! m3 a0 f(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
: {- X: A. I& E: a/ \ # 生成 GIF 文件的路径
, ]+ h I2 ~6 [2 j' A gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
8 j6 ]( [" Y( M( @9 H9 ] # 输出处理信息5 p; J E7 f/ u(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
0 O4 f- k& X {0 y' t # 写入 GIF 文件2 |6 r, i! Y1 m" A7 D$ T) D, E(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")4 K) }& J) ^. N2 u(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件: N n p( N" D$ m. p(欢迎访问老王论坛:laowang.vip)
video_clip.close()( q7 `4 ~' j, ]7 |(欢迎访问老王论坛:laowang.vip)
, e! z" A% a& m* d3 A0 O4 _* m/ D) w
8 r. f5 O" V/ C! J( _1 K
5 j' ?( A' q8 X+ l! o9 _+ D5 @
% A+ H7 }6 L6 {) Y
) v* ^7 J/ P0 @
7 v+ ?3 T. r7 v% R. N) d$ v+ i c. @, @' Q ~(欢迎访问老王论坛:laowang.vip)
|
|