|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
9 ]1 E( `- F* ^# K- f(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
3 p- h( Z& Z+ e- y下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你* q O5 [, k" F* j( Z(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):% d" R& ^: i5 q/ M' {$ n) L# _3 H8 K(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹4 I( v3 k! y! L" l1 x(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)9 A' g# d0 F* Q* L(欢迎访问老王论坛:laowang.vip)
# 打开视频文件4 X# i+ N! h6 c# G7 l" l. g(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path): V; U7 i- J5 \, I; B(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间8 ?0 P& K; O; _5 @9 _(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
. `( O; y' f3 `" ?' I" Y* O" S3 e1 V # 确定每个 GIF 的持续时间(以秒为单位)
, N- \ m @- f8 N6 B gif_duration = min(duration_per_gif, video_duration / num_gifs)1 I2 l8 U1 L% @$ _0 h(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点 W, q4 l7 q( t; V, G _/ ^1 a5 c- s/ ^(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
0 I5 k' h) B. U, f& \5 h # 在循环外加载视频文件
/ r- L8 `4 k# T' o6 o video_clip = VideoFileClip(video_path)
8 j/ N6 S; W2 h- D # 为每个时间节点生成 GIF 图片* H/ U4 E' i% j4 X2 t$ m(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
; ?3 v! Y9 T0 H4 M4 p # 提取剪辑
' F+ }) B- s8 G% u* i% [ clip = video_clip.subclip(t, t + gif_duration) J1 q+ j/ ?: Q; p1 }( c% j(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小
) s0 ^) O( A1 C% [5 [6 H: K$ ^1 s9 A resized_clip = clip.resize((target_width, target_height))
8 J' W' i1 G% S+ Y K6 { # 生成 GIF 文件的路径
3 D. |1 o x" w# Z* Q( S% C4 e gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")( B6 o3 q3 T j5 Q! K* p3 ]* v(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
" b% C, f; X# r& c H+ e6 ?- I print(f"正在处理第 {i + 1} 张图片")
+ M0 E% ~ V* I8 z! M/ O5 L # 写入 GIF 文件
$ s* @6 c1 Y9 L" z' o/ B/ M% @ resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
9 z" S, l; L+ x9 y7 u' t9 E # 关闭视频文件
$ F, k e! [0 e' i- {2 i video_clip.close()) W5 P3 e3 J1 f) _3 ^(欢迎访问老王论坛:laowang.vip)
$ _4 U4 }( p n1 O1 E1 n- x- k& i! x$ @" j- t(欢迎访问老王论坛:laowang.vip)
F' {+ \ b: M' Z0 ~. X; u(欢迎访问老王论坛:laowang.vip)
( C- s4 \. B+ K, x: }(欢迎访问老王论坛:laowang.vip)
2 e9 t e! t9 _# M Q B6 Z, \! ](欢迎访问老王论坛:laowang.vip)
4 m5 l u" q& ]- Y J& @2 q
5 P4 B; H4 T x) x" o |
|