|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
; e! j! u' u5 ~: ~' g/ |用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
4 E5 m, v% b1 a* ^9 ~' J5 M下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你# L/ j& }' H+ p( w6 {(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
* E: v6 i% e2 R # 创建输出文件夹: V: R" X( ^- |) z# S( i(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
; v ]1 \5 {# k4 T # 打开视频文件
, F' e/ b* h" r$ S video_clip = VideoFileClip(video_path)
M% i, f, D/ A1 _; S # 获取视频的持续时间+ Q) {1 C9 Q( c. p% S2 o4 P(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
, H: H5 |& I# L* p # 确定每个 GIF 的持续时间(以秒为单位)# q4 I0 M) c* `7 ^, M) m(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs); k! d& B3 Q. `" z4 N, {3 L# Q(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
. H& u, K j# ^# W( J# O9 m random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])' d6 R% O7 y$ d0 r- x(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件( S5 r- p; c0 S- B/ `" x' q+ r0 T# {(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
) U4 a( S3 `. b8 j G, x4 _ # 为每个时间节点生成 GIF 图片6 m4 K7 @% \, b' e8 m/ M0 |(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):. Z/ g! S7 o* q& g+ g. [2 R6 a `(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
$ m8 k3 X' n: [7 A( r9 Q: C* ` clip = video_clip.subclip(t, t + gif_duration)
- m) h: s/ n$ K* Q& [% f4 H # 调整 GIF 图片大小/ N- |3 M, |' G0 \. G) Q(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))6 n2 _2 v2 H, Z% D' C(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径1 X# Q, M' {) o4 o# E(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
* ?8 V0 c. ]5 [( w # 输出处理信息8 u4 K' J2 n' S(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")& S7 S$ I3 H7 h Z, h9 K(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
+ q& g3 U u# Y% X( A+ W resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
2 j- f! ?# W: ~1 K4 h # 关闭视频文件3 a; k P/ `: Q/ l2 r(欢迎访问老王论坛:laowang.vip)
video_clip.close()
2 [2 |, J! M" a# r" U
& P6 D! k C$ v/ m0 J2 r
+ d1 l% }: A( |( P# U: Z8 I7 `- T+ a! \(欢迎访问老王论坛:laowang.vip)
; i! N% ?) N4 ?9 N+ Y7 h5 m(欢迎访问老王论坛:laowang.vip)
% F5 g; j, P7 m3 {# M4 v0 H2 h4 S/ K. L1 M9 V+ n0 j* b, i(欢迎访问老王论坛:laowang.vip)
4 q7 M. i, M7 d) l q# [0 f |
|