视频自适应压缩
输入列名 | 说明 |
|---|---|
video_paths | 视频文件路径列(本地、TOS、HTTP等),与video_binaries二选一 |
video_binaries | 视频二进制数据列,与video_paths二选一 |
video_formats | 视频格式字符串列,配合video_binaries使用 |
output_basenames | 输出文件基础名称列(不含扩展名) |
压缩后的视频路径列
如参数没有默认值,则为必填参数
参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
output_tos_dir | str | 将压缩后的视频保存到该TOS目录中,如果为空则不保存。 格式:"tos://bucket/path/" 默认值:"" | |
max_output_size_mb | float | 50.0 | 最大输出文件大小(MB)。 默认值:50.0 |
target_fps | float | 5.0 | 帧率调整的目标值。 默认值:5.0 |
min_resolution_height | int | 360 | 最小分辨率高度(像素),保持宽高比。 默认值:360 |
allowed_formats | list | [mp4, avi, mov] | 当视频大小满足时,允许直接输出的视频格式列表。 默认值:["mp4", "avi", "mov"] |
rank | int or None | 指定使用的GPU设备编号(多卡环境有效)。 默认值:None |
下面的代码展示了如何使用 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 import VideoAdaptiveCompress if __name__ == "__main__": TOS_TEST_DIR = os.getenv("TOS_TEST_DIR", "tos_bucket") samples = { "video_path": [f"tos://{TOS_TEST_DIR}/video_adaptive_compress/sample.mp4"], } ds = daft.from_pydict(samples) output_tos_dir = f"tos://{TOS_TEST_DIR}/video_adaptive_compress" constructor_kwargs = { "output_tos_dir": output_tos_dir, "max_output_size_mb": 50.0, "target_fps": 5.0, "min_resolution_height": 360, "rank": None, } ds = ds.with_column( "compressed_video_path", las_udf(VideoAdaptiveCompress, construct_args=constructor_kwargs, num_gpus=1, batch_size=1, concurrency=1)( col("video_path") ), ) ds.show() # ╭────────────────────────────────┬──────────────────────────────────╮ # │ video_path ┆ compressed_video_path │ # │ --- ┆ --- │ # │ Utf8 ┆ Utf8 │ # ╞════════════════════════════════╪══════════════════════════════════╡ # │ tos://tos_bucket/video_adapt… ┆ tos://tos_bucket/video_adapt… │ # ╰────────────────────────────────┴──────────────────────────────────╯