算子ID:daft.las.functions.video.video_sharpness.VideoSharpness
视频清晰度计算处理器,支持多种清晰度评估方法和抽帧策略。
细分项 | 注意与前提 |
|---|---|
费用 | 调用算子前,您需先了解使用算子时的模型调用费用,详情请参见大模型调用计费。 |
鉴权(API Key) | 调用算子前,您需要先生成算子调用的API Key,并建议将API Key配置为环境变量,便于更安全地调用算子,详情请参见获取 API Key 并配置。 |
BaseURL | 调用算子前,您需要先根据您当前使用的LAS服务所在地域,了解算子调用的BaseURL,用于配置算子调用路径参数取值。 |
输入列名 | 说明 |
|---|---|
video_paths | 视频文件路径列(本地、TOS、HTTP等),与 video_binaries 二选一 |
video_binaries | 视频二进制数据列,与 video_paths 二选一 |
video_formats | 视频格式字符串列,配合 video_binaries 使用 |
包含所有池化方法的清晰度结果的结构体数组,每个元素包含:
如参数没有默认值,则为必填参数
参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
fps | float | 2.0 | 每秒抽帧数量。 |
method | str | "laplacian" | 清晰度计算方法。 |
max_frames | int | 100 | 最大抽帧数量。 |
下面的代码展示了如何使用 Daft(适用于分布式)运行算子进行视频清晰度计算。
from __future__ import annotations import os import daft from daft import col from daft.las.functions.udf import las_udf from daft.las.functions.video.video_sharpness import VideoSharpness if __name__ == "__main__": if os.getenv("DAFT_RUNNER", "native") == "ray": import logging import ray def configure_logging(): logging.basicConfig( level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) logging.getLogger("tracing.span").setLevel(logging.WARNING) logging.getLogger("daft_io.stats").setLevel(logging.WARNING) logging.getLogger("DaftStatisticsManager").setLevel(logging.WARNING) logging.getLogger("DaftFlotillaScheduler").setLevel(logging.WARNING) logging.getLogger("DaftFlotillaDispatcher").setLevel(logging.WARNING) ray.init(dashboard_host="0.0.0.0", runtime_env={"worker_process_setup_hook": configure_logging}) daft.set_runner_ray() daft.set_execution_config(actor_udf_ready_timeout=600) daft.set_execution_config(min_cpu_per_task=0) # 使用环境变量构建 URL tos_dir_url = os.getenv("TOS_DIR_URL", "las-cn-beijing-public-online.tos-cn-beijing.volces.com") samples = { "video_path": [ f"https://{tos_dir_url}/public/shared_video_dataset/sample.mp4" ] } ds = daft.from_pydict(samples) sharpness_calculator = las_udf( VideoSharpness, construct_args={ "fps": 2.0, "method": "laplacian", "max_frames": 100, }, num_gpus=1, concurrency=1, batch_size=1, ) # 使用 Daft 进行分布式处理 ds = ds.with_column("video_sharpness", sharpness_calculator(col("video_path"))) ds.show() # ╭────────────────────────────────┬──────────────────────────────────╮ # │ video_path ┆ video_sharpness │ # │ --- ┆ --- │ # │ Utf8 ┆ Struct[mean: Float64, median: F… │ # ╞════════════════════════════════╪══════════════════════════════════╡ # │ https://las-cn-beijing-publi-… ┆ {mean: 1234.56, median: 1200.00… │ # ╰────────────────────────────────┴──────────────────────────────────╯