|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
2 m! ^" M) C; }4 b用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif% @" W! D* s* Q0 z$ T5 L% K9 o7 a(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
1 ~8 B1 n5 q2 f: x T. d" @/ Jdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):* T2 t e8 D! }! W' b; n! X(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
" b1 d3 x8 i; {% e' S. [; y os.makedirs(output_folder, exist_ok=True)% D* U% F- ]- ~% k d0 M( _(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
; y/ Z7 v( J, {1 @& v, k6 G' e video_clip = VideoFileClip(video_path)
) |& D8 m5 C" A& |6 @/ I. C% M # 获取视频的持续时间5 X C4 `! ]' \9 e2 C(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration5 U7 w: i) J1 [. N% [- i! a+ o(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位) S1 {& b, y4 R, \* q/ F6 Q+ N(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs), |& A8 ^1 f1 ~) [( ?(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
( j) R, _/ x) W random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
: u; {3 i) R0 u$ C% G! ?3 D: c # 在循环外加载视频文件
. d- v; s" z# r r0 Q' P7 m video_clip = VideoFileClip(video_path)* c. I2 V2 \! T0 Y(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片 Z- c- y' h' G. i: s(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):6 c/ B" b; A9 q! V- g3 e R(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
1 J4 T$ z P, y5 U- r( Z1 o clip = video_clip.subclip(t, t + gif_duration)
/ s4 e8 v A! M) A+ c1 O, }9 I- @3 ? # 调整 GIF 图片大小& x2 }& @, a! k* g) h+ d(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))7 ~. j" J: D# ]! f. F(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
5 F. u' F" P0 h) C5 @& |- L N, s gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
) }# U* s; N7 C8 _/ n # 输出处理信息
' V% y8 b, l3 Y2 t+ D( ~5 A print(f"正在处理第 {i + 1} 张图片")4 Y; @! @& x! T4 x( b0 X/ E9 L(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件/ l8 N" c0 I) h(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")0 u. s/ U# s( M+ c" a(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件! }6 Z5 Y! B, O. E(欢迎访问老王论坛:laowang.vip)
video_clip.close()
3 _8 I! {; a! { P/ }1 M/ B2 R* m6 q4 ~3 g5 @) u- M! b1 k0 [( Z(欢迎访问老王论坛:laowang.vip)
! y1 O5 } @8 f, Y2 ]3 R! C/ }(欢迎访问老王论坛:laowang.vip)
0 M& K& m* S. O- ^2 b# m+ N, ^( a9 f7 x( r6 d% A7 F& C(欢迎访问老王论坛:laowang.vip)
9 p; I6 n6 q) S. J0 G
8 _4 G; B5 m: X- E( f0 x, [9 F$ q% ^+ n0 z8 d; ?# c(欢迎访问老王论坛:laowang.vip)
|
|