音视频合并算子,基于 FFmpeg 对输入的视频和音频素材进行顺序拼接、时长调整和最终合成。算子支持 1 对 1、1 对多、多对 1、多对多等多种输入组合;当视频和音频总时长不一致时,会根据配置自动选择变速对齐或按较短时长裁剪,并将结果视频与处理映射文件上传到 TOS。
video_urls 和 audio_urls 都必须传入,且都不能为空。http/https 和 tos://。output_tos_path 必须是当前账号可写的 TOS 目录。video_durations 与 audio_durations 如有传入,长度必须分别与展开后的 video_urls、audio_urls 数量一致,且每个时长都必须大于 0。max_speed_ratio 取值范围为 1.0 ~ 3.0。当音视频时长差异超出该范围时,算子会退化为按较短一侧裁剪,而不是继续大幅变速。细分项 | 注意与前提 |
|---|---|
开通 LAS |
|
费用 | 调用算子前,您需先了解使用算子时的模型调用费用,详情请参见大模型调用计费。 |
鉴权(API Key) | 调用算子前,您需要先生成算子调用的API Key,并建议将API Key配置为环境变量,便于更安全地调用算子,详情请参见获取 API Key 并配置。 |
BaseURL | 调用算子前,您需要先根据您当前使用的LAS服务所在地域,了解算子调用的BaseURL,用于配置算子调用路径参数取值。 |
调用音视频合并算子提交异步任务,支持多段视频、多段音频的拼接、时长调整和最终合成。
参数 | 类型 | 是否必填 | 示例值 | 描述 |
|---|---|---|---|---|
operator_id | string | 是 | las_video_audio_merge | 算子 ID |
operator_version | string | 是 | v1 | 算子版本 |
data | VideoAudioMergeUserReqParams | 是 | 音视频合并请求参数 | |
video_urls | array | 是 | ["https://example/sample_video_01.mp4", "https://example/sample_video_02.mp4"] | 视频输入列表。支持 http/https、tos://bucket/key。当元素为以 / 结尾的 TOS 目录时,会自动枚举目录下视频文件。 |
audio_urls | array | 是 | ["https://example/sample_audio.mp3"] | 音频输入列表。支持 http/https、tos://bucket/key。 |
output_tos_path | string | 是 | tos://bucket/output/ | 输出根目录。算子会在该目录下自动追加任务相关子目录保存结果。 |
output_basename | string | 否 | merged_result | 输出文件基名。最终生成 {output_basename}.mp4 和 {output_basename}_mapping.json;默认自动生成。 |
video_durations | array | 否 | [5.0, 5.0] | 每个视频片段的目标时长(秒)。列表长度必须与视频输入数量一致。 |
audio_durations | array | 否 | [5.0, 5.0] | 每个音频片段的目标时长(秒)。列表长度必须与音频输入数量一致。 |
max_speed_ratio | float | 否 | 1.25 | 音视频对齐时允许的最大变速比例,取值范围 1.0 ~ 3.0,默认 1.25。 |
speed_control_target | string | 否 | video | 优先调整的一侧。可选值: video、audio,默认 audio。 |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
metadata | metadata | 请求元信息 | |
task_id | string | task-xxx | 异步模式下的任务 ID,用于作业状态查询。 |
task_status | string | PENDING | 异步模式下的任务状态。
|
business_code | string | 0 | 业务码。 |
error_msg | string | 如有异常,会返回详细错误信息。 |
# 请将 OUTPUT_TOS_PATH 设置为本账号上可写入的 tos 路径 export OUTPUT_TOS_PATH="tos://path/to/merge_results" curl --location "https://operator.las.cn-beijing.volces.com/api/v1/submit" --header "Content-Type: application/json" --header "Authorization: Bearer $LAS_API_KEY" --data '{ "operator_id": "las_video_audio_merge", "operator_version": "v1", "data": { "video_urls": [ "https://las-demo.tos-cn-beijing.volces.com/las_video_audio_merge/v1/videos/seg_001_0.000-6.000.mp4", "https://las-demo.tos-cn-beijing.volces.com/las_video_audio_merge/v1/videos/seg_002_6.000-12.000.mp4" ], "audio_urls": [ "https://las-demo.tos-cn-beijing.volces.com/las_video_audio_merge/v1/audio/audio_001.mp3" ], "output_tos_path": "$OUTPUT_TOS_PATH" } }'
{ "metadata": { "task_id": "task-20260323153012-abc123", "task_status": "PENDING", "business_code": "0", "error_msg": "" } }
HttpCode | 错误码 | 错误信息 | 说明 |
|---|---|---|---|
400 | Parameter.Missing | Missing required parameter | 缺少必选参数。 |
400 | Parameter.Invalid | invalid parameter | 参数不合法。 |
400 | Url.Invalid | invalid url | 输入地址不合法。 |
400 | Video.Invalid | invalid video file | 视频文件无效或无法解码。 |
400 | Video.DownloadFailed | Video download failed | 视频下载失败。 |
400 | Video.FormatUnsupported | Video format not supported | 视频格式不支持。 |
400 | Video.Timeout | Video processing timeout | FFmpeg 处理超时。 |
400 | Video.UploadFailed | Video upload failed | 合成后视频上传失败。 |
400 | Video.DurationTooShort | Video duration is too short | 视频时长过短。 |
400 | Audio.DownloadFailed | Audio download failed | 音频下载失败。 |
400 | Audio.FormatUnsupported | Audio format not supported | 音频格式不支持。 |
400 | Audio.UploadFailed | Audio upload failed | 音频或映射文件上传失败。 |
400 | Tos.AccessFailed | Failed to access TOS path with provided credentials | TOS 访问失败。 |
400 | Task.NotFound | Task not found | 任务不存在。 |
500 | InternalError | Internal server error | 服务内部错误。 |
调用音视频合并算子提交异步任务,支持多段视频、多段音频的拼接、时长调整和最终合成。
参数 | 类型 | 必填 | 示例值 | 说明 |
|---|---|---|---|---|
operator_id | string | 是 | las_video_audio_merge | 算子 ID |
operator_version | string | 是 | v1 | 算子版本 |
task_id | string | 是 | task-xxx | 任务 ID |
参数 | 类型 | 示例值 | 描述 |
|---|---|---|---|
metadata | metadata | 请求元信息 | |
task_id | string | task-xxx | 异步模式下的任务 ID。 |
task_status | string | COMPLETED | 异步模式下的任务状态。
|
business_code | string | 0 | 业务码。 |
error_msg | string | 如有异常,会返回详细错误信息。 | |
data | VideoAudioMergeResponse | 返回的数据 | |
output_video_path | string | tos://bucket/output/123/trace/hash/merged_result.mp4 | 合并后视频的 TOS 地址。 |
output_video_url | string | https://video.mp4 | 合并后的视频预签名链接,24h有效。 |
mapping_json_path | string | tos://bucket/output/123/trace/hash/merged_result_mapping.json | 映射 JSON 文件地址,记录输入素材、时长和最终对齐策略。 |
curl --location "https://operator.las.cn-beijing.volces.com/api/v1/poll" --header "Content-Type: application/json" --header "Authorization: Bearer $LAS_API_KEY" --data '{ "operator_id": "las_video_audio_merge", "operator_version": "v1", "task_id": "task-20260323153012-abc123" }'
{ "metadata": { "task_id": "task-20260323153012-abc123", "task_status": "COMPLETED", "business_code": "0", "error_msg": "" }, "data": { "output_video_path": "tos://path/to/merge_results/123456/trace-20260323-abc123/4d8d4a3f0a3c1d2e_1742726400/merged_result.mp4", "mapping_json_path": "tos://path/to/merge_results/123456/trace-20260323-abc123/4d8d4a3f0a3c1d2e_1742726400/merged_result_mapping.json" } }