Install
openclaw skills install @thcjp/audio-stream-upload-2openclaw skills install @thcjp/audio-stream-upload-2功能说明: 本技能涵盖 自动化配置和灵活的参数设置、多种应用场景、时使用、化配置和灵活的参数设置 等核心能力。
通过 AIOZ Stream API 将本地音频文件上传至 AIOZ 流媒体平台。完整上传流程包含三次 API 调用:创建音频对象 → 上传文件分片 → 完成上传。上传完成后服务端自动触发转码,最终返回 HLS/DASH 流媒体播放链接.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | AIOZ音频上传处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| AIOZ音频上传默认与自定义编码配置 | 不支持 | 支持 |
| 高清分辨率与无损输出 | 不支持 | 支持 |
| 批量生成与风格预设 | 不支持 | 支持 |
| 自定义模型微调 | 不支持 | 支持 |
| 商用版权授权 | 不支持 | 支持 |
本技能使用 API Key 认证,用户需提供以下两个密钥,作为 HTTP 请求头附加到所有 API 调用:
stream-public-key:AIOZ Stream 公钥stream-secret-key:AIOZ Stream 密钥若用户未提供密钥,主动询问获取。密钥通过 AIOZ Stream 控制台创建与管理.
用户发起上传请求时,询问选择以下方式:
默认上传(快速):仅提供标题即可创建音频对象并上传,使用默认编码配置,适合快速发布场景. 自定义上传(高级):完整配置编码参数,包括质量预设、码率、采样率、标签、元数据等,适合对音质有明确要求的发布场景.
默认上传:仅需标题与类型.
curl -s -X POST "${AIOZ_API_URL:?请设置环境变量}/api/videos/create" \
-H "stream-public-key: ${STREAM_PUBLIC_KEY:?请设置环境变量}" \
-H "stream-secret-key: ${STREAM_SECRET_KEY:?请设置环境变量}" \
-H 'Content-Type: application/json' \
-d '{
"title": "AUDIO_TITLE",
"type": "audio"
}'
自定义上传:包含完整编码配置.
请设置环境变量}/api/videos/create" \
-H 'Content-Type: application/json' \
-d '{
"title": "AUDIO_TITLE",
"type": "audio",
"description": "DESCRIPTION",
"is_public": true,
"tags": ["tag1", "tag2"],
"metadata": [
{"key": "KEY", "value": "VALUE"}
],
"qualities": [
{
"resolution": "highest",
"type": "hls",
"container_type": "mpegts",
"audio_config": {
"codec": "aac",
"bitrate": 320000,
"channels": "2",
"sample_rate": 48000,
"language": "en",
"index": 0
}
},
{
"resolution": "standard",
"type": "hls",
"container_type": "mpegts",
"audio_config": {
"codec": "aac",
"bitrate": 128000,
"channels": "2",
"sample_rate": 44100,
"language": "en",
"index": 0
}
}
]
}'
从响应中提取 data.id,作为后续步骤的 AUDIO_ID.
上传音频文件二进制数据到创建的音频对象。首先获取文件大小并计算 MD5 哈希:
FILE_SIZE=$(stat -f%z /path/to/audio.mp3 2>/dev/null || stat -c%s /path/to/audio.mp3)
END_POS=$((FILE_SIZE - 1))
# ...
HASH=$(md5sum /path/to/audio.mp3 | awk '{print $1}')
然后通过 multipart form-data 上传,必须包含 Content-Range 请求头:
请设置环境变量}/api/videos/AUDIO_ID/part" \
-H "Content-Range: bytes 0-$END_POS/$FILE_SIZE" \
-F "file=@/path/to/audio.mp3" \
-F "index=0" \
-F "hash=$HASH"
Content-Range 头格式为 bytes {start}-{end}/{total_size}。单分片上传时 start=0、end=file_size-1、total_size=file_size;多分片上传时按分片调整 start/end 位置。表单字段:file 为音频文件二进制,index 为分片序号(单分片为 0),hash 为分片的 MD5 哈希.
文件分片上传完成后调用完成接口触发转码:
curl -s -X GET "${AIOZ_API_URL:?请设置环境变量}/api/videos/AUDIO_ID/complete" \
-H 'accept: application/json' \
调用后上传流程结束,服务端开始转码.
上传完成后获取音频详情以取得流媒体链接:
curl -s "${AIOZ_API_URL:?请设置环境变量}/api/videos/AUDIO_ID" \
从响应的 assets 或 hls 字段解析 HLS 流媒体链接返回给用户。音频输出没有 mp4_url 字段,仅提供 HLS/DASH 流媒体链接.
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
详细的输入输出格式请参考下方章节说明。
standard:标准质量,适合语音类内容good:良好质量,适合日常音乐播放highest:最高质量,适合高品质音乐发行lossless:无损质量,适合母带级存档hls:HTTP Live Streaming,容器格式为 mpegts 或 mp4dash:Dynamic Adaptive Streaming,容器格式为 fmp4codec:仅支持 aacbitrate:整数,单位 bits/sec(如 128000、256000、320000)channels:声道数,"2" 表示立体声sample_rate:采样率,可选值 8000、11025、16000、22050、32000、44100、48000、88200、96000language:BCP 47 语言代码(如 en、zh)index:音频流索引,默认 0播客创作者需要将录制好的音频节目快速上传到流媒体平台分发。使用默认上传方式,仅提供节目标题即可完成上传并获取 HLS 播放链接,嵌入播客网站或分发给订阅者。适合追求发布效率、对编码参数无特殊要求的日常更新场景.
音乐人或厂牌需要将音乐作品以高品质编码上传发布。使用自定义上传方式,配置 highest 质量预设、320kbps 码率、48000Hz 采样率,确保流媒体播放音质满足发行标准。同时通过 tags 与 metadata 字段标注曲目信息、专辑归属、版权声明,便于内容管理与检索.
教育或媒体机构需要为同一份语音内容提供多档位质量,适配不同网络环境的听众。使用自定义上传的 qualities 数组配置 standard 与 highest 两档 HLS 输出,低带宽听众播放标准档,高带宽听众播放高品质档,由播放器自适应切换.
企业或机构需要将大量历史音频资料批量上传至流媒体平台归档托管。通过脚本化调用三步上传流程,配合 metadata 字段记录原始日期、来源、分类等归档元数据,实现音频资产的结构化托管与检索.
用户提供音频文件路径与节目标题"科技脱口秀第50期",选择默认上传方式。流程执行:调用 create 接口创建 type 为 audio 的音频对象,获取 AUDIO_ID;计算文件 MD5 哈希与大小,通过 part 接口上传文件分片;调用 complete 接口触发转码;查询音频详情获取 HLS 播放链接返回用户。用户将链接嵌入播客网站供订阅者收听.
用户提供音乐文件路径,要求以最高品质 HLS 格式上传,码率 320kbps,采样率 48000Hz,标签为"pop,2024"。流程执行:调用 create 接口,请求体包含 qualities 数组配置 highest 预设与完整 audio_config,tags 字段设为指定标签;获取 AUDIO_ID 后上传文件分片并完成转码;返回 HLS 播放链接。用户在音乐平台嵌入该链接供听众高品质播放.
用户提供有声书音频文件,要求同时生成标准与最高两档 HLS 输出以适配不同网络环境。流程执行:调用 create 接口,qualities 数组包含两个质量配置(standard 档 128kbps/44100Hz,highest 档 256kbps/48000Hz),metadata 字段记录书籍章节信息;上传完成后返回 HLS 播放链接,播放器根据听众网络状况自适应选择档位.
data.id 作为 AUDIO_ID注册并登录 AIOZ Stream 平台后,在控制台的 API 设置或开发者页面创建 API 密钥。系统会生成一对 stream-public-key(公钥)与 stream-secret-key(密钥)。公钥用于标识账户身份,密钥用于签名验证,两者均需妥善保管。密钥作为 HTTP 请求头(stream-public-key、stream-secret-key)附加到所有 API 调用中.
AIOZ Stream 的音频类型输出仅提供 HLS/DASH 流媒体链接,不生成 mp4_url 字段。这是因为音频内容以自适应流媒体格式分发,播放器根据网络状况动态选择码率档位。如需直接下载音频文件,需在本地保留原始文件,平台不提供音频文件的直接下载链接。视频类型上传后才会有 mp4_url 字段.
单分片上传适合小文件(通常 100MB 以下),一次上传整个文件,start=0、end=file_size-1。多分片上传适合大文件,将文件分割为多个分片分别上传,每个分片有独立的 index、Content-Range 与 hash。多分片上传支持断点续传,单个分片失败只需重传该分片。根据文件大小与网络稳定性选择上传方式.
转码耗时取决于音频时长、编码配置复杂度与服务端负载。短音频(数分钟)通常在 1-2 分钟内完成转码;长音频(数小时如有声书)可能需要更长时间。多档位质量配置会增加转码工作量。上传完成后通过查询音频详情接口检查转码状态,状态从 transcoding 变为 ready 即表示完成,此时可获取播放链接.
AIOZ Stream 服务端转码接受常见音频格式输入,包括 MP3、WAV、FLAC、AAC、OGG 等。上传后服务端统一转码为配置的 HLS 或 DASH 输出格式,音频编码为 AAC。输入格式不影响输出格式,但建议使用无损或高码率源文件以保证转码后的音质。避免使用已高度压缩的低码率文件作为源,以免二次压缩导致音质损失.
tags 是字符串数组,用于音频内容的分类标签,便于按主题检索与筛选,如 ["podcast", "tech"]。metadata 是键值对数组,每项包含 key 与 value 字段,用于记录结构化元数据,如章节信息、版权声明、原始日期等。tags 适合扁平分类,metadata 适合结构化属性记录。两者可在自定义上传时同时配置.
{
"success": true,
"data": {
"result": "AIOZ音频上传处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "audio-upload-aioz-stream"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 创建音频对象 | 10分钟 | 2分钟 | 8分钟 | 20% |
| 上传文件分片 | 30分钟 | 5分钟 | 25分钟 | 25% |
| 完成上传并触发转码 | 1小时 | 10分钟 | 50分钟 | 50% |
| 检查上传状态 | 20分钟 | 2分钟 | 18分钟 | 10% |
| 获取播放链接 | 10分钟 | 1分钟 | 9分钟 | 10% |
| 总耗时 | 1小时50分钟 | 20分钟 | 1小时30分钟 | 20% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 上传效率 | 高效,自动化处理 | 低效,手动操作 | 较高效,需要编程知识 | 高效,但成本高 |
| 编码配置 | 支持自定义配置 | 无 | 可自定义,但需编程 | 支持自定义,但操作复杂 |
| 流媒体格式 | 自动生成HLS/DASH | 无 | 可生成,但需额外工具 | 支持多种格式,但操作复杂 |
| 成本 | 低 | 高 | 中等 | 高 |
| 易用性 | 高 | 低 | 中等 | 低 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 手动操作繁琐 | 音频上传过程复杂,需要多次手动操作 | 影响工作效率,增加错误率 | 自动化上传流程,简化操作步骤 | 提高效率20%,降低错误率10% |
| 音质控制困难 | 手动调整编码参数复杂,难以保证音质 | 影响用户体验 | 提供自定义编码配置,简化音质控制 | 提高用户满意度15% |
| 流媒体格式转换 | 需要额外工具进行格式转换,增加操作步骤 | 影响工作效率 | 自动生成HLS/DASH流媒体格式 | 提高效率10% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 上传失败 | 网络连接问题 | 检查网络连接,重试上传 | 确保网络连接稳定,重试上传 |
| 创建音频对象失败 | API密钥错误 | 检查API密钥是否正确 | 重新获取API密钥,重新尝试 |
| 文件上传失败 | 文件损坏或格式不支持 | 检查文件完整性,使用支持格式 | 使用支持格式且完整的文件,重新上传 |
| 转码失败 | 转码资源不足 | 检查服务器资源,等待资源释放 | 确保服务器资源充足,等待转码完成 |
| 播放链接无效 | 上传未完成或链接过期 | 检查上传状态,获取最新链接 | 确保上传完成,获取最新播放链接 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对AIOZ音频上传使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |