|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
' Z* O" y' i, y" J; |(欢迎访问老王论坛:laowang.vip)
用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif
" c$ z* \* p% Y* h下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你/ ~5 D& q) w9 b5 D7 \) 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):2 k5 U4 v6 g( ~* A8 c0 H' {6 i(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹4 r1 v8 N5 t$ K* ^9 P4 d6 F) X! b S+ ~(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
7 B) i/ d) T) C3 g # 打开视频文件
9 y( m5 n/ j4 F) y: ~ video_clip = VideoFileClip(video_path)
2 T/ Q1 C. J& l. |. ] # 获取视频的持续时间4 l+ X9 a/ Y; {* D2 s& T7 s s(欢迎访问老王论坛:laowang.vip)
video_duration = video_clip.duration! L, k6 h( u' f6 Y; @! B# @(欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
4 f) K- ^' m2 U/ t: d gif_duration = min(duration_per_gif, video_duration / num_gifs)
" H1 a8 y& d- f% Q- Y8 H: _ # 生成随机时间点! P) p" c% a/ I) A2 \, g& o2 Q(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)])) C! t3 n5 [2 R! A* m! ?% V(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件! g+ d% X0 [1 R# Q5 P* o. U2 E(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
4 f$ \, C! E; u1 c # 为每个时间节点生成 GIF 图片" W' p) Z3 e f. I$ ~' A# x(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
6 L: k5 p5 o2 r8 ] # 提取剪辑
, e6 |' o9 X* H clip = video_clip.subclip(t, t + gif_duration)
- S" g& A, _, N% |6 i # 调整 GIF 图片大小
& c: z2 |6 v3 W" t( @% n H resized_clip = clip.resize((target_width, target_height))& c: S& Z1 c$ d h(欢迎访问老王论坛:laowang.vip)
# 生成 GIF 文件的路径
; r, u3 a. O6 d& F gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")7 w3 \* T" g) t0 A& U(欢迎访问老王论坛:laowang.vip)
# 输出处理信息
" I- [- [, _3 e# M1 ?+ y print(f"正在处理第 {i + 1} 张图片"); g6 w- r1 I4 {' i& O& _; w, T(欢迎访问老王论坛:laowang.vip)
# 写入 GIF 文件
+ S7 {( n$ t7 ]3 H" J! t+ B$ o resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus"); D0 N! x. O$ _(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件
( l, V. T9 P; @. s4 X& a% X* A video_clip.close()
6 G9 U0 {2 }0 ?: o' ^
2 m2 ?) v) T7 E+ n! A( `) e; u8 R, b
/ Y' _3 E3 u' W* O) ?
x2 T* R n, _4 [5 f- V$ j( ]& V" ^% A$ D! M; ~$ d(欢迎访问老王论坛:laowang.vip)
! d7 g0 y4 _2 {- X# Y9 Y
$ R2 C( {, N" u" N7 ]. D) m" t$ P! F) x+ N& d7 C+ F; |- b(欢迎访问老王论坛:laowang.vip)
|
|