|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
: l- H, K& A E- o0 C(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif- o: K" l) |9 q @(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
& e. ]7 \2 q5 J1 M0 q7 A/ _& Pdef generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):0 i& ~. P2 {. ?" B(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹2 ?" J7 {4 F" F4 ]$ F(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)5 r, f* j+ F/ S7 U, n(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
" _# D! ~& S, N( D5 x video_clip = VideoFileClip(video_path), G5 o9 G7 l3 y/ t- w7 k(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间2 r" g/ @, X% ^/ X4 A(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration; E. X2 ?4 H( N+ E7 E z(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
' w5 |* t) R- E9 u( {# T gif_duration = min(duration_per_gif, video_duration / num_gifs); ?5 u' p/ O- ?' K(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
R! _' p2 l0 s+ ~; j" e random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])& r i5 o& X3 I2 H2 C' ^" v(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件 \/ D, Y. k0 m# \3 E' n, I(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
; W6 B; J( N+ A. T # 为每个时间节点生成 GIF 图片1 O# ^5 w' I( ](欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
: a" O. @1 Z; b F # 提取剪辑) T3 T# V: {7 z! p, \$ i2 p' y(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)9 _ {, q, O' j0 {, _/ v(欢迎访问老王论坛:laowang.vip)
# 调整 GIF 图片大小4 Y; o+ J+ d: R; u, Q' D) Y; i( h(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
& D7 u- f, A. U! r5 B( u# ^ # 生成 GIF 文件的路径: u# y$ u8 R# N0 |6 {(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")/ `- Q! K, A+ l2 r* m(欢迎访问老王论坛:laowang.vip)
# 输出处理信息0 z) }2 h- e$ N6 Y(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")- W F3 n/ Q" I& H9 S( }/ T(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
0 m/ t5 w. P! _# p. b8 Q" ~0 Q8 j resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")) J3 K9 |9 F {# j(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
. X8 N3 g5 D7 U# y0 g1 M video_clip.close()) D+ j! I, E& _& J(欢迎访问老王论坛:laowang.vip)
8 _: x$ S2 t8 r/ @5 i3 l8 p
$ H7 B4 p6 v0 A7 N3 I
2 ?2 |7 K! {- F/ W. {, s* z
C& S6 ^ z( e( X. j% M% \
2 n; N) m/ X9 i. v y/ m: ?% @- N$ E0 Q(欢迎访问老王论坛:laowang.vip)
4 S- R( C/ Z$ y(欢迎访问老王论坛:laowang.vip)
|
|