|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
1 l" u/ M" Y6 ?用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif4 U) m; F6 ?8 [(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
. g" _8 ?/ d& v- @3 t# U) S( Ydef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):* C+ t x: M7 E* e(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
5 V& _4 [6 _5 o) ]7 H" W9 F. G os.makedirs(output_folder, exist_ok=True)1 l. M% _+ H6 Y(欢迎访问老王论坛:laowang.vip)
# 打开视频文件1 B1 m9 W; c" c% b S(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
: x: I+ ] R+ | # 获取视频的持续时间! H3 c6 l( {/ k# {4 X) }# z/ P4 `(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
& w# N2 ]" b8 c |/ f # 确定每个 GIF 的持续时间(以秒为单位)
! z# ]3 U8 n5 M3 l' D0 A5 X. T gif_duration = min(duration_per_gif, video_duration / num_gifs)6 \; _" G* p' T$ j' p# s% w/ y0 s, e(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
$ P7 C# B0 L' U X random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
7 B( [% R8 H' y. f& w+ ]. \: j3 J/ Q # 在循环外加载视频文件
+ r6 {% ~& I, q1 V+ W/ D/ A video_clip = VideoFileClip(video_path)
3 H8 h5 Z$ {1 p& ^6 ]4 w # 为每个时间节点生成 GIF 图片, \* ~4 P8 T$ e6 E5 |, S( r(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
& q3 S- R) ~* f0 `4 g # 提取剪辑
$ \6 N5 D) I3 `) k clip = video_clip.subclip(t, t + gif_duration). T* x j4 U D+ o3 U' Q(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小) o) H0 w2 c1 {(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
- R3 J ], d, ~5 \& D7 V # 生成 GIF 文件的路径
4 T( A. G$ w+ W0 I7 | gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")6 c$ k9 Y' d; ^(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
/ ?3 z3 g) \6 {% k; _ print(f"正在处理第 {i + 1} 张图片")* ]- u. T, |( s7 ^$ M; p+ G(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
* U2 L+ H+ o: N/ Y3 ` resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")0 I4 Z- W/ o, l. r( c(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
- _ H2 I" n2 x5 U6 X; m" } video_clip.close()
9 {# G9 Z0 q, X( i4 Y
: ` Q9 H! h5 `( g2 w9 X- a6 _( @% F(欢迎访问老王论坛:laowang.vip)
& N" M! ?# W4 H& |$ ~6 {(欢迎访问老王论坛:laowang.vip)
: E# y3 V+ \- P5 @3 c. A(欢迎访问老王论坛:laowang.vip)
/ g0 g, ~ L- o5 r/ N(欢迎访问老王论坛:laowang.vip)
, W3 {& c/ _! M; h
. q& p* A# g0 g |
|