|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
. ]% Z# A. Y' X6 x4 ~用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif& H( L, v5 }5 l9 Q' E8 b(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你# b# }5 H# Q$ d- \* _9 i# y(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):7 e5 N; K2 W; \6 Q% o7 P" [0 c(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹
7 Z9 I" \- i2 c! I) s( j os.makedirs(output_folder, exist_ok=True); a( i5 ]$ |2 v' ~" S8 k( C(欢迎访问老王论坛:laowang.vip)
# 打开视频文件8 s# k2 ^( S, n/ ^- u* w, O/ o(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)8 F: D g# g* H* Z' O(欢迎访问老王论坛:laowang.vip)
# 获取视频的持续时间- Y4 f0 F0 V6 Z, J* B; D% N0 [8 L& C(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration- W+ j- \( G7 w5 h2 g- z/ M9 M1 ]. U(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
) l# A) o) j2 j* @! c gif_duration = min(duration_per_gif, video_duration / num_gifs)
; f0 A/ h. u/ |( J6 g6 `) V # 生成随机时间点
6 }" @3 O" j4 Q- X0 x" \ random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])
. z7 }% z( n2 h$ G9 @6 R$ @* _- X # 在循环外加载视频文件
9 T% w' T x4 `, g* R& Q video_clip = VideoFileClip(video_path)/ G7 J. U# _8 Y5 H" R" P(欢迎访问老王论坛:laowang.vip)
# 为每个时间节点生成 GIF 图片- E: t) T* Y! m% f(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
: C, M: j3 c; w, w5 p0 @; C # 提取剪辑) e' v6 l+ F7 l1 m' _4 p(欢迎访问老王论坛:laowang.vip)
clip = video_clip.subclip(t, t + gif_duration)
1 v' G: {/ w& ~/ I" P4 w$ W # 调整 GIF 图片大小
$ I( \' i% W/ P; u! q& p resized_clip = clip.resize((target_width, target_height))
/ l9 S/ E: L# a5 U! t7 l # 生成 GIF 文件的路径; Y$ o U q4 G I: i+ v(欢迎访问老王论坛:laowang.vip)
gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
O7 x3 W+ H, I( c4 c( U. B# Q # 输出处理信息
) S9 G" w/ [1 i7 k& j print(f"正在处理第 {i + 1} 张图片")$ c" W, }# t# D(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
/ y. [6 E6 d v% a! }3 M resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")
2 N2 Q9 l* L5 @. j # 关闭视频文件$ Y, k5 Z( m2 W(欢迎访问老王论坛:laowang.vip)
video_clip.close()
6 e& D( A' N6 t1 h( W' @& X8 Q
6 I4 I% w: |4 ]" t8 h3 P/ _/ G1 R: }8 ~; x9 b(欢迎访问老王论坛:laowang.vip)
$ V+ ~% X# W P3 g! D- D9 z
- Z7 \2 |$ I) P& U; R
+ t W% ^, \4 w- ~! T. h2 g
2 b/ b \- v5 H$ `* Q, Z5 ]) ?, a( s4 R- l; z) c) S(欢迎访问老王论坛:laowang.vip)
|
|