|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
/ }# W: O+ M- x9 G' @用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif" B# ?& M2 n2 l8 V0 E: K: p1 `(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你! y' G5 }8 |) B(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
; |1 c& @* Z4 H # 创建输出文件夹% d8 A# k4 g6 ]/ c/ a+ L4 W(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)2 q0 V$ f; t( R, N& ~(欢迎访问老王论坛:laowang.vip)
# 打开视频文件& E3 |# v4 X! q2 D! X(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
/ f$ B r+ [ d* J0 _% N # 获取视频的持续时间% n8 L) y4 v% o" V$ Y(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration" {/ U+ ?4 d* f# Q( {5 c+ U% E(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位). h9 N3 k7 P* B5 ^4 C8 l& R) L(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)& { n1 u( Y2 ?0 P7 O(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
1 @& b! v8 H$ Q F- { random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]). l9 @6 r1 f C7 O8 b% j C5 O(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件) M+ [8 l6 y; e) D( r(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
; z6 H: N; \1 |& c7 ? # 为每个时间节点生成 GIF 图片& P8 K- ~/ V$ m, Y9 F P(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):1 E- u$ ~7 i% ?0 s9 ]6 k! q(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
; X. Y( C M7 P. N clip = video_clip.subclip(t, t + gif_duration)
+ O- K/ `4 C( [6 R+ ]1 Q8 R ] # 调整 GIF 图片大小) i3 w" G2 n5 ?- {! d+ @6 Z/ Z- s(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))$ W7 @, e0 O2 h, B3 O(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径! _7 f$ f' {5 ^2 ]1 F q(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
9 w/ Y N0 Q# U6 o" L9 U" L # 输出处理信息3 K3 Y. L k4 v" T5 c(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
9 v& @( P, w7 t # 写入 GIF 文件0 q/ U* `- i, |* d(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"): e- C( v! W& _( h( v3 }; ]6 q3 }(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件7 ^, u$ f R" j. Q' ]: A, [(欢迎访问老王论坛:laowang.vip)
video_clip.close()
. d4 w# U9 r7 C- Q
+ U: F. n2 P" ]! r# j9 a
& L0 Q) _& a. }+ ~, `: V. U4 n- H1 p; s2 R! S4 K+ L1 i! B(欢迎访问老王论坛:laowang.vip)
7 t, K$ h1 v6 X D0 `- |(欢迎访问老王论坛:laowang.vip)
& `! C& g4 x# {5 k8 |, K7 O9 u! G# e4 U' `' A: a(欢迎访问老王论坛:laowang.vip)
4 Q7 _" c0 ?0 X1 z% g+ ~' O; f |
|