|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
; v, m5 ~4 O- v: o+ c( n用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif z+ ?% b7 h# d5 ~! u(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你
- l: B& X, ]0 n4 r+ C6 P1 [def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
5 `! N' F2 W6 e # 创建输出文件夹
j0 l0 Q0 j$ Y os.makedirs(output_folder, exist_ok=True)' @( e6 s; e2 A9 c* ^$ z1 ?( P% u: F$ o(欢迎访问老王论坛:laowang.vip)
# 打开视频文件
- J+ J7 X7 G0 @& q- e( T& ` video_clip = VideoFileClip(video_path)- ? V' }8 a9 j7 Z(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间
- o: [$ {' P Z video_duration = video_clip.duration
5 j- m: W7 g8 W F1 l # 确定每个 GIF 的持续时间(以秒为单位)7 L6 K- i# v1 V: h. `, Y* I+ `(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs)/ c, @- a. [0 O+ W8 }$ W(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点2 i" _& X- x7 M" g4 E2 U, c(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
! `5 s/ `- o1 Q, z3 r5 _% v" h # 在循环外加载视频文件 P, D) D( G* ]& Y0 ^ i(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)4 K: b6 ?$ @/ ` W% Z4 m4 A- l# _(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片( J( ~, P( P% d+ K1 n+ [(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):) m9 L N1 [2 c* @4 Q3 O5 f" ~(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
8 g% y/ l! b2 ^& V( y" G clip = video_clip.subclip(t, t + gif_duration)
3 q& ]; `" ~* k# e! o& |2 X6 P/ u # 调整 GIF 图片大小0 q: O$ J) Y$ Z/ C! h* L(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
8 y" d, y6 S" L8 u # 生成 GIF 文件的路径7 x( R" V4 l h) Y3 g(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
! I* O( f* ~# }6 p! E4 R( b # 输出处理信息
! |+ |' R( e" x9 q$ a/ D print(f"正在处理第 {i + 1} 张图片")+ N* z7 I$ g6 ~2 W(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
/ q# i3 e6 A0 |9 I- L2 T resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")$ |* u4 N, w g) ^* W" i' g(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
U- w5 {# e' `8 A' N video_clip.close()+ f5 E, X3 o9 F( S5 N(欢迎访问老王论坛:laowang.vip)
$ H! u) T% J! {% h(欢迎访问老王论坛:laowang.vip)
) \6 s' a8 F' P& ^
w0 H$ c2 C8 e8 E' P) j* N" S
1 H* T+ N; n: b2 A$ F7 S9 l& J3 v# M6 _; g(欢迎访问老王论坛:laowang.vip)
: ]4 q; t6 f9 \% c$ b4 O(欢迎访问老王论坛:laowang.vip)
" S0 u f- B# e% W! M( p3 `5 ]) F(欢迎访问老王论坛:laowang.vip)
|
|