|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
8 k* i, r) E' p P(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif2 A$ E- Z5 F5 T( H/ p4 C(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你7 E, D4 E8 l- h' T* E(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
3 u- R6 b! v( C9 X # 创建输出文件夹
! G, O* d) U, A4 b& Y) J1 Y os.makedirs(output_folder, exist_ok=True)
% e ~4 F6 C# c4 a # 打开视频文件: g- g* z, X! D! ?& K& f7 h% U(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
5 D- J8 ]& D4 l* y# C# d- W # 获取视频的持续时间9 d" G; O4 Z! B4 p(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration
4 C# v9 h- J' Z$ h- @9 y # 确定每个 GIF 的持续时间(以秒为单位)
* j8 `* J7 x1 j4 k7 |( g, [ gif_duration = min(duration_per_gif, video_duration / num_gifs)( l! H0 H2 `: A# ~3 J(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
( E% w( @& U: N) K' Y0 K random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])$ R: y) f: @6 M(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件5 P* S0 a: p$ e(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)& k& ?6 v' }# S; N& B$ D(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片
5 Q! q* Q5 ~0 T2 h for i, t in enumerate(random_times):
7 \ ^6 z5 S# }9 u/ q: R, m # 提取剪辑
' D$ G' c% x- r) o! C7 W z clip = video_clip.subclip(t, t + gif_duration)
) K3 l! M( y: w1 `2 q4 Q # 调整 GIF 图片大小7 F2 }$ s, J7 i0 O(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))- K$ [, f% f/ m" L% m& S(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径$ ~* ?" j! V, }(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")- b4 \6 _. L! M9 I(欢迎访问老王论坛:laowang.vip)
# 输出处理信息! q( n/ ~2 W# L, g, X* L(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")& R( j# i# ?- D/ E+ [, L(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件" A% q0 v5 f# h9 T) ^3 l(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
) w+ R9 z. H. J/ u! a/ Z # 关闭视频文件% u2 B: n) z# B2 `: h(欢迎访问老王论坛:laowang.vip)
video_clip.close()
: k7 Q7 _8 ~# b8 }% @) s- [7 d$ W1 ~5 G: B3 R0 O5 u- d, G(欢迎访问老王论坛:laowang.vip)
. o" J3 n0 v& b(欢迎访问老王论坛:laowang.vip)
; u; x& o9 f( J. z! a(欢迎访问老王论坛:laowang.vip)
8 h* T8 S7 M9 a% \! `(欢迎访问老王论坛:laowang.vip)
- a9 T6 K) R8 Z% N) ]; C(欢迎访问老王论坛:laowang.vip)
k3 F: k, N1 e3 X/ U/ H8 M: W1 i8 O' A' v(欢迎访问老王论坛:laowang.vip)
|
|