|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
, ~ O9 h. h8 F2 X用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
' h2 ]( ~0 ]- x/ i+ ]" n下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你0 D* y/ h) t: Z# U- F7 L7 c! \5 Z/ z* |(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):
: p* U- Y0 j% h4 V8 u # 创建输出文件夹" b/ G8 n8 Y* U- }6 \. k(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
/ {0 X, F; u* X # 打开视频文件9 b) l$ M) j6 ?7 D7 F(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
2 S& S8 f9 P; y: p0 p; _0 W # 获取视频的持续时间
" e; P% ?8 E+ p video_duration = video_clip.duration
$ S; k* j( `+ c2 ]/ l4 b/ Z # 确定每个 GIF 的持续时间(以秒为单位)
1 @$ E$ y( T! N; _; T8 m9 F O gif_duration = min(duration_per_gif, video_duration / num_gifs). v# U8 p0 v8 [/ N5 z$ n(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点
- e( K) r4 [" S* C random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])5 d) d; \/ f2 p5 a( N1 g(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件, z$ a1 `; b6 J8 l; q+ f7 F( h(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
! {" K0 X( |2 A* b9 }0 c8 o # 为每个时间节点生成 GIF 图片5 F- R$ [- d, z$ z6 k6 j9 D, X(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
; O$ z' E% {4 [! J; l: ^1 l( {4 z # 提取剪辑3 k3 K5 M7 j; `/ _* ?7 M(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
% K7 C+ }9 u/ A # 调整 GIF 图片大小' p! ~, A- {2 W9 i3 b. @& A(欢迎访问老王论坛:laowang.vip)
resized_clip = clip.resize((target_width, target_height))6 p, X8 d4 O/ Q5 R. F: k6 m/ p- b(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
* J# c9 f0 |! A' @4 V, G9 ? gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
$ I* h0 m3 d) C # 输出处理信息; u2 o* m8 L% f1 o: R6 g(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
" d" L9 ~+ w- y # 写入 GIF 文件: K5 I5 Y6 K$ f) ~2 B& X$ d(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")$ C: \$ R# {' C5 Q0 P& n(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
" ^: V* n, K( l1 a9 t1 j3 j& \% m video_clip.close()
) i; ?4 u- v' Q& @4 o9 b# p+ {8 ^$ K: @& y3 n3 m' c9 W2 y$ `(欢迎访问老王论坛:laowang.vip)
! k) [6 n$ @% s1 F3 N) g `
, R C- k. k, ?0 [, Y
, Z. v* |/ G. i% d; p6 a S1 B/ z, X0 t6 D(欢迎访问老王论坛:laowang.vip)
4 H+ y& x. A' u- [* q(欢迎访问老王论坛:laowang.vip)
1 m; L" g* |% ? ~$ G& l |
|