|
楼主 |
发表于 2024-3-9 11:59:15
|
显示全部楼层
) t" c: V) D$ E8 G! B用python写的软件,给原片导入进去,输入图片数量,按照要生成的数量从视频中截取片段随机生成gif" l3 S8 Y9 B% s- n V. T$ J(欢迎访问老王论坛:laowang.vip)
下面是部分生成函数,如果没有程序员基础就算了,你要是想要软件你留个qq啥的我发你; [* l8 D' [9 p(欢迎访问老王论坛:laowang.vip)
def generate_random_gifs(video_path, output_folder, num_gifs=None, duration_per_gif=1.5,target_width=960, target_height=540):. c: ]4 V0 M1 q: w. r/ `(欢迎访问老王论坛:laowang.vip)
# 创建输出文件夹: e2 d H* }4 ^0 l8 ?4 h(欢迎访问老王论坛:laowang.vip)
os.makedirs(output_folder, exist_ok=True)
/ L0 G! A3 F! Q/ N+ w1 b w # 打开视频文件1 ? B9 f V9 e4 j5 m(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
, ~( c. ]' t8 B0 [0 w" Y* T # 获取视频的持续时间
6 z# L) E3 A3 P3 e, t video_duration = video_clip.duration" O) X/ R% { ~" ](欢迎访问老王论坛:laowang.vip)
# 确定每个 GIF 的持续时间(以秒为单位)
9 M* c7 i8 u# f* z8 d* V+ G e; } gif_duration = min(duration_per_gif, video_duration / num_gifs)6 ]8 G6 F# [' D5 c! K- q+ f. V8 o(欢迎访问老王论坛:laowang.vip)
# 生成随机时间点9 h$ X& l, D6 i+ ]5 n(欢迎访问老王论坛:laowang.vip)
random_times = sorted([random.uniform(0, video_duration) for _ in range(num_gifs)]). ?5 [1 R/ Y7 |* @% \ U7 k(欢迎访问老王论坛:laowang.vip)
# 在循环外加载视频文件 l1 ~& C$ y6 K8 M$ U(欢迎访问老王论坛:laowang.vip)
video_clip = VideoFileClip(video_path)
- G0 M C* T; t& z2 | # 为每个时间节点生成 GIF 图片, Y- z3 n! K% h" Y9 Q(欢迎访问老王论坛:laowang.vip)
for i, t in enumerate(random_times):
N0 C% M, C$ d0 Q0 k" n7 c # 提取剪辑
' D: t8 r; o$ u' G clip = video_clip.subclip(t, t + gif_duration)
`- O6 Q& L) f # 调整 GIF 图片大小
X# C( i G M L9 ` X resized_clip = clip.resize((target_width, target_height))
. n7 T! T! ]3 b; n. N, ^7 I8 b, [ # 生成 GIF 文件的路径
/ J I; ? u3 W- w) m* d gif_path = os.path.join(output_folder, f"gif_{i + 1}.gif")
4 e; `) B; N1 k; ^* i L9 b, l2 @/ Y # 输出处理信息* H8 u, t; v2 u- S4 _* q0 x9 x(欢迎访问老王论坛:laowang.vip)
print(f"正在处理第 {i + 1} 张图片")
# }3 T, \( L) Y7 k9 q7 R # 写入 GIF 文件5 G; b/ E. g5 I+ A(欢迎访问老王论坛:laowang.vip)
resized_clip.write_gif(gif_path, fps=10, program='ffmpeg', opt="optimizeplus")7 K. h2 [6 R+ G% B8 L' j5 W+ n* e(欢迎访问老王论坛:laowang.vip)
# 关闭视频文件$ h: X7 Z# g, L(欢迎访问老王论坛:laowang.vip)
video_clip.close()
; P A7 a" U( N0 [9 h0 x& R" C7 B' T9 L2 K+ x! f: S$ m6 ^(欢迎访问老王论坛:laowang.vip)
m( y9 q7 G) C# X; X2 I; k E; o0 R+ b2 M9 Q+ C(欢迎访问老王论坛:laowang.vip)
1 ?+ L4 d2 q+ j+ \8 k% Z6 I m" R8 [(欢迎访问老王论坛:laowang.vip)
/ A- ?' Z; W, h
) _* C5 j: F9 i( _ |
|