通用视频格式转换
更新时间:2026-05-18
通用视频格式转换
简介
视频格式转换算子,基于 FFmpeg 实现,支持将视频在多种格式之间进行转换。
功能描述
使用 FFmpeg 将视频从一种格式转换为另一种格式。支持 mp4、avi、mov、mkv、flv、webm 等常见视频格式。转换过程中会保留视频流和音频流,并使用高质量的编解码器。
算子参数
输入
| 输入 | 含义 |
|---|---|
| input_path | 输入视频文件路径(支持本地路径或远程 URL) |
| output_path | 输出视频文件路径 |
输出
| 输出 | 含义 |
|---|---|
| convert_result | 转换后的视频路径,转换失败返回 None |
参数
| 参数名称 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| output_format | str | 必填 | 输出视频格式,支持 mp4、avi、mov、mkv、flv、webm |
| timeout | int | None | 单个视频转换超时时间(秒) |
| extra_params | list[str] | None | 额外的 FFmpeg 参数 |
调用示例
Plain Text
1from __future__ import annotations
2
3import os
4import subprocess
5
6import daft
7from daft import col
8
9from daft.aihc.common.udf import aihc_udf
10from daft.aihc.functions.video.video_convert import VideoConvert
11
12if __name__ == "__main__":
13 if os.getenv("DAFT_RUNNER", "native") == "ray":
14 import ray
15 ray.init(dashboard_host="0.0.0.0", ignore_reinit_error=True)
16 daft.set_runner_ray()
17 daft.set_execution_config(actor_udf_ready_timeout=6000, min_cpu_per_task=0)
18
19 # 检查 ffmpeg 是否可用
20 try:
21 subprocess.run(["ffmpeg", "-version"], capture_output=True, check=True)
22 except (subprocess.CalledProcessError, FileNotFoundError):
23 print("SKIP: ffmpeg not available")
24 exit(0)
25
26 samples = {
27 "input_path": [
28 "/tmp/test_raw1.avi",
29 "/tmp/test_raw2.mov",
30 ],
31 "output_path": [
32 "/tmp/test_output_raw1.mp4",
33 "/tmp/test_output_raw2.mp4",
34 ],
35 }
36 ds = daft.from_pydict(samples)
37 constructor_kwargs = {
38 "output_format": "mp4",
39 "timeout": 120,
40 }
41 ds = ds.with_column(
42 "convert_result",
43 aihc_udf(
44 VideoConvert,
45 construct_args=constructor_kwargs,
46 num_cpus=1,
47 concurrency=2,
48 batch_size=4,
49 )(col("input_path"), col("output_path")),
50 )
51 ds.show()
评价此篇文章
