视频片段切分-关键帧
更新时间:2026-05-18
视频片段切分(关键帧)
简介
视频按关键帧分割算子,基于 FFmpeg 实现,在关键帧位置将视频分割成多个片段。
功能描述
检测视频中的关键帧位置,在关键帧处将视频分割成多个片段。可设置分割数量,使用均匀采样选择关键帧,支持输出到 BOS 存储。
算子参数
输入
| 输入 | 含义 |
|---|---|
| video_paths | 视频文件路径列表 |
| video_binaries | 视频二进制数据列表 |
| video_formats | 视频格式列表 |
| output_basenames | 输出基础文件名列表 |
输出
| 输出 | 含义 |
|---|---|
| segments | 分割后视频片段的路径列表 |
| segments_binary | 分割后视频片段的二进制数据列表 |
| video_format | 各片段的视频格式列表 |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| method | str | "I_frame" | 关键帧检测方法 |
| threshold | float | 0 | 检测阈值 |
| keyframes_cnt | int | 10 | 关键帧数量 |
| seconds_per_frame | int | -1 | 每帧秒数 |
| output_bos_dir | str | "" | BOS 输出目录 |
| output_segments_binary | bool | False | 是否输出二进制数据 |
| output_video_format | str | None | 输出视频格式 |
关键帧检测方法
| 方法 | 说明 |
|---|---|
| I_frame | 基于 I 帧检测(默认) |
| difference | 基于帧差异 |
| optical_flow | 基于光流 |
| histogram | 基于直方图比较 |
调用示例
Plain Text
1from __future__ import annotations
2
3import os
4
5import daft
6from daft import col
7
8from daft.aihc.common.udf import aihc_udf
9from daft.aihc.functions.video.video_split_by_keyframes import VideoSplitByKeyframes
10
11if __name__ == "__main__":
12 if os.getenv("DAFT_RUNNER", "native") == "ray":
13 import ray
14 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
15 daft.set_runner_ray()
16 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
17
18 samples = {
19 "video_path": ["/tmp/long_video.mp4", "/tmp/long_video2.mp4"]
20 }
21 ds = daft.from_pydict(samples)
22
23 constructor_kwargs = {
24 "method": "I_frame",
25 "keyframes_cnt": 5,
26 }
27 ds = ds.with_column(
28 "segments",
29 aihc_udf(
30 VideoSplitByKeyframes,
31 construct_args=constructor_kwargs,
32 num_cpus=1,
33 concurrency=2,
34 )(col("video_path"), None, None, None),
35 )
36 ds.show()
评价此篇文章
