|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
6 F2 ^+ _: k. U7 ? |! {. m0 J6 X(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
* L6 y6 Q" J* i% p. ]下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你7 C3 Z6 K1 B5 l+ d(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
) x4 |* U0 v* O4 v- T* X, _. J # 创建输出文件夹
P0 e) m+ Z; u/ }; d: `! [ os.makedirs(output_folder, exist_ok=True)% P6 n9 B, J' M) G8 e d2 i(欢迎访问老王论坛:laowang.vip)
# 打开视频文件* T& m7 l8 X- O( q% l/ B. D3 U(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
' q/ a2 r; j- f8 H' v3 L # 获取视频的持续时间6 z# F( y& G( j6 j z) g(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration( t1 V# u% b( M(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)* O. o$ m3 z: R' o(欢迎访问老王论坛:laowang.vip)
gif_duration = min(duration_per_gif, video_duration / num_gifs). H) P9 L" _- X, ~8 N4 `(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点4 f3 V$ ^; N3 P5 V; P" P+ F; ~(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
- H9 {2 q) o% g* J) A # 在循环外加载视频文件
8 ^. G/ y c& t7 Z video_clip = VideoFileClip(video_path)) |/ q% c1 o7 A+ w; |/ y(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片. z8 Q0 s& N0 |2 v* U8 H(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):' a/ Z9 F9 b# j2 p9 P1 T* u(欢迎访问老王论坛:laowang.vip)
# 提取剪辑
( _& W% b; y' u8 P1 ^6 h# o! o clip = video_clip.subclip(t, t + gif_duration)
% C; P+ j. I3 G' ]6 A # 调整 GIF 图片大小 ~0 T; u/ a5 U& G; p" ^1 K(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))
9 B2 w: [) g$ m$ H' X # 生成 GIF 文件的路径$ a3 ]3 v \* Q7 ?(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif"): _ Y& k& t. v# F, \; ?" f2 @(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
; \2 k# W _. ?7 n5 y/ R print(f"正在处理第 {i + 1} 张图片"). B& w. E, W5 e/ @(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
+ S* M) I7 J3 y4 o! s, I' J3 i5 w2 C' E resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
2 @: O. z/ p- L: E' U# ~( B # 关闭视频文件
3 Z! i$ Y' ]. J, ` video_clip.close()
U: F4 p3 i( I
" D! v' f; J1 Y7 Z* X2 D' ~+ p+ x8 w# S, @" N) I2 G( o# N* l H) V, @(欢迎访问老王论坛:laowang.vip)
' c! X6 O% c9 x7 t+ u
# S; C4 v- A. R7 j, O/ P; X: ^: A! H5 U(欢迎访问老王论坛:laowang.vip)
- t: R/ j. B, a# `(欢迎访问老王论坛:laowang.vip)
' R: F- b" \" G# b(欢迎访问老王论坛:laowang.vip)
|
|