Install
openclaw skills install @thcjp/video-stream-upload-freeopenclaw skills install @thcjp/video-stream-upload-free视频上传免费版是一款面向个人创作者的轻量级视频上传与流媒体分发工具。它采用三步上传流程(创建视频对象 → 上传文件 → 完成上传),快速将本地视频上传至流媒体平台,并获取 HLS 播放链接。
免费版聚焦默认上传场景:单视频上传、基础标题配置、HLS 流媒体链接返回。配置简单,适合以下用户:
免费版限制:单次上传 1 个视频,使用默认编码配置,不支持自定义分辨率、缩略图、批量上传。如需自定义编码、多分辨率输出、批量上传等能力,请使用 PRO 版本。
| 能力 | 描述 | 免费版 |
|---|---|---|
| 默认上传 | 仅需标题快速上传 | 支持 |
| 三步流程 | 创建 → 上传 → 完成 | 支持 |
| HLS 链接 | 获取流媒体播放链接 | 支持 |
| 上传状态 | 查询转码进度 | 支持 |
| 自定义编码 | 分辨率/码率/编码器 | 不支持 |
| 多分辨率输出 | 240p-4320p 多档 | 不支持(默认档) |
| 缩略图上传 | 自定义封面图 | 不支持 |
| 批量上传 | 多视频并行 | 不支持 |
| 视频管理 | 列表/删除/更新 | 不支持 |
| 转码费用预估 | 上传前估算成本 | 不支持 |
输入: 用户提供能力清单所需的指令和必要参数。 处理: 按照skill规范执行能力清单操作,遵循单一意图原则。 输出: 返回能力清单的执行结果,包含操作状态和输出数据。
用户提供视频文件 + 标题
↓
Step 1: 创建视频对象(获取 VIDEO_ID)
↓
Step 2: 上传文件分片(带 MD5 校验)
↓
Step 3: 完成上传(触发转码)
↓
查询视频详情获取 HLS 链接
↓
返回播放链接给用户
输入: 用户提供工作流程所需的指令和必要参数。 处理: 按照skill规范执行工作流程操作,遵循单一意图原则。 输出: 返回工作流程的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作免费版使用统一的流媒体服务地址:
https://api-w3stream.attoaioz.cyou输入: 用户提供服务地址所需的指令和必要参数。 处理: 按照skill规范执行服务地址操作,遵循单一意图原则。 输出: 返回服务地址的执行结果,包含操作状态和输出数据。 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:轻量级视频上传工、支持快速上传视频、至流媒体平台并获、取播放链接、适合个人创作者分、发内容、视频上传免费版、为个人用户提供轻、量化的视频上传与、流媒体分发能力、核心能力、默认快速上传、三步上传流程、流媒体链接获取、上传进度查询、基础视频信息管理等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持。
执行核心功能执行操作,使用input_params参数进行配置。
输入: 用户提供核心功能执行所需的指令和必要参数。 处理: 按照skill规范执行核心功能执行操作,遵循单一意图原则。 输出: 返回核心功能执行的执行结果,包含操作状态和输出数据。
input_params参数,支持创建/查询/导出操作小张拍摄了一段 vlog,希望上传到流媒体平台获取播放链接分享给朋友。
操作步骤:
示例流程:
# Step 1: 创建视频对象
curl -s -X POST 'https://api-w3stream.attoaioz.cyou/api/videos/create' \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' \
-H 'Content-Type: application/json' \
-d '{"title": "周末出游 vlog"}'
小李录制了一段编程教学视频,希望上传后分享给学生观看。
操作步骤:
示例流程:
# Step 2: 上传文件分片
FILE_SIZE=$(stat -c%s /videos/python-tutorial.mp4)
END_POS=$((FILE_SIZE - 1))
HASH=$(md5sum /videos/python-tutorial.mp4 | awk '{print $1}')
curl -s -X POST "https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID/part" \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' \
-H "Content-Range: bytes 0-$END_POS/$FILE_SIZE" \
-F "file=@/videos/python-tutorial.mp4" \
-F "index=0" \
-F "hash=$HASH"
小王想将本地视频上传到流媒体平台作为云端备份。
操作步骤:
示例流程:
# Step 3: 完成上传
curl -s -X GET "https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID/complete" \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY'
以下场景视频上传-免费版不适合处理:
需要视频处理、音频编辑、媒体转换、配音生成时使用。不适用于非本工具能力范围的需求。
免费版需要流媒体平台的 API Key:
stream-public-key:公钥stream-secret-key:私钥若未提供,Agent 会主动询问用户。
最简单的用法 - 默认快速上传:
# Step 1: 创建视频对象(仅需标题)
curl -s -X POST 'https://api-w3stream.attoaioz.cyou/api/videos/create' \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' \
-H 'Content-Type: application/json' \
-d '{"title": "我的第一个视频"}'
从响应中提取 data.id 作为 VIDEO_ID。
# 计算文件大小与 MD5
FILE_SIZE=$(stat -c%s /path/to/video.mp4)
END_POS=$((FILE_SIZE - 1))
HASH=$(md5sum /path/to/video.mp4 | awk '{print $1}')
# 上传文件分片
curl -s -X POST "https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID/part" \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' \
-H "Content-Range: bytes 0-$END_POS/$FILE_SIZE" \
-F "file=@/path/to/video.mp4" \
-F "index=0" \
-F "hash=$HASH"
# 完成上传(触发转码)
curl -s -X GET "https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID/complete" \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY'
# 查询视频详情获取 HLS 链接
curl -s 'https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID' \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY'
结果处理: 执行完成后,查看输出结果确认操作状态。成功时输出包含处理摘要和结果数据;失败时根据错误信息排查问题,查阅错误处理章节获取恢复步骤。
| 参数 | 类型 | 是否必需 | 默认值 | 说明 |
|---|---|---|---|---|
| title | 字符串 | 必需 | - | 视频标题 |
| stream-public-key | Header | 必需 | - | 平台公钥 |
| stream-secret-key | Header | 必需 | - | 平台私钥 |
| file | 文件 | 必需 | - | 视频文件二进制 |
| index | 整数 | 必需 | 0 | 分片索引(单分片固定为 0) |
| hash | 字符串 | 必需 | - | 文件 MD5 哈希 |
Step 1: POST /api/videos/create
请求体: {"title": "视频标题"}
响应: {"data": {"id": "VIDEO_ID"}}
Step 2: POST /api/videos/VIDEO_ID/part
Header: Content-Range: bytes 0-{end}/{total}
表单: file, index, hash
响应: 上传成功确认
Step 3: GET /api/videos/VIDEO_ID/complete
响应: 触发转码,上传完成
查询: GET /api/videos/VIDEO_ID
响应: 包含 HLS/DASH 流媒体链接
| 错误码 | 含义 | 处理建议 |
|---|---|---|
| 401 | API Key 无效 | 检查公钥与私钥是否正确 |
| 400 | 请求格式错误 | 检查请求体格式与参数 |
| 500 | 服务器错误 | 稍后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令 |
# 小文件(< 50MB):单分片上传
FILE_SIZE=$(stat -c%s video.mp4)
END_POS=$((FILE_SIZE - 1))
# 大文件(> 50MB):建议使用 PRO 版本多分片上传
# 免费版仅支持单分片,大文件可能超时
不同操作系统计算 MD5 的命令:
# Linux
HASH=$(md5sum video.mp4 | awk '{print $1}')
# macOS
HASH=$(md5 -q video.mp4)
# Windows (Git Bash)
HASH=$(certutil -hashfile video.mp4 MD5 | grep -v ":" | tr -d ' ')
# 检查转码状态
STATUS=$(curl -s 'https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID' \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' | jq -r '.data.status')
# 状态说明:
# transcoding - 转码中(需等待)
# done - 转码完成(可获取链接)
| 项目 | 推荐值 |
|---|---|
| 格式 | mp4(兼容性最佳) |
| 大小 | < 50MB(免费版单分片) |
| 分辨率 | 720p 或 1080p |
| 编码 | H.264 + AAC |
| 时长 | < 30 分钟 |
A: 需要流媒体平台账号。注册后可在控制台获取:
stream-public-key:公钥stream-secret-key:私钥若用户未提供,Agent 会主动询问。
A: 免费版仅支持单分片上传,建议:
A: 上传完成后需要等待转码:
# 轮询转码状态
while true; do
STATUS=$(curl -s 'https://api-w3stream.attoaioz.cyou/api/videos/VIDEO_ID' \
-H 'stream-public-key: PUBLIC_KEY' \
-H 'stream-secret-key: SECRET_KEY' | jq -r '.data.status')
if [ "$STATUS" = "done" ]; then
echo "转码完成"
break
fi
sleep 10
done
A: 平台支持主流视频格式,推荐使用:
A: 免费版不支持自定义封面。如需上传缩略图,请使用 PRO 版本。
A: 免费版默认上传后为公开状态。如需设置私密视频,请使用 PRO 版本的 is_public 参数。
A: HLS 链接长期有效,只要视频未被删除即可访问。
| 依赖项 | 类型 | 是否必需 | 获取方式 | 版本要求 |
|---|---|---|---|---|
| curl | 命令行工具 | 必需 | 系统自带 | 任意版本 |
| md5sum | 命令行工具 | 必需 | 系统自带 | 任意版本 |
| stat | 命令行工具 | 必需 | 系统自带 | 任意版本 |
| jq | JSON 处理 | 可选 | 系统包管理器 | 1.6+ |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 | - |
# macOS 安装 jq
brew install jq
# Ubuntu / Debian 安装 jq
sudo apt install jq
# 验证安装
curl --version
md5sum --version
stat --version
jq --version
免费版需要以下 API Key:
| API 类型 | 环境变量 | 用途 | 获取方式 |
|---|---|---|---|
| 流媒体公钥 | STREAM_PUBLIC_KEY | API 认证 | 流媒体平台控制台 |
| 流媒体私钥 | STREAM_SECRET_KEY | API 认证 | 流媒体平台控制台 |
# 配置环境变量
export STREAM_PUBLIC_KEY="your_public_key"
export STREAM_SECRET_KEY="your_secret_key"
# 验证配置
curl -s 'https://api-w3stream.attoaioz.cyou/api/videos' \
-X POST \
-H "stream-public-key: $STREAM_PUBLIC_KEY" \
-H "stream-secret-key: $STREAM_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"limit": 1}'
video-stream-upload-pro