开始使用
Orbit 账户的组织方式、控制台各处的功能,以及从登录到让我们的网络开始应答一个域名的最短路径。
视频在文件存在之前就已创建,所以它的地址先被定下来。本页讲如何创建、如何上传文件、产物是什么、私有播放,以及计量的是什么。
一个资产就是一个视频。它在文件之前就存在:创建时就定下它将来播放的地址,因此上传还在进行时,你就可以把这个地址写进页面。
curl -X POST https://dash.yunzheng.space/api/v1/vod/assets \
-H "Authorization: Bearer $ORBIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"Launch keynote","visibility":"unlisted"}'| 字段 | 含义 |
|---|---|
title | 视频标题,最多 200 个字符。 |
visibility | public、unlisted(默认)或 private。只有 private 需要签名地址。 |
tags | 供你自己检索使用,不会随视频对外发布。 |
description | 可选,最多 2000 个字符。 |
unlisted 的含义是地址不可被猜到,它不是访问控制:拿到地址的人都能观看。真正做访问控制的是 private。三步:先声明文件多大,再逐片上传,最后声明结束。声明大小是必填的,并在收尾时校验 —— 与声明不符的文件会被拒绝,而不是转码到一半。
B=https://dash.yunzheng.space/api/v1/vod/assets/$ID
curl -X POST $B/upload \
-H "Authorization: Bearer $ORBIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"size":734003200,"content_type":"video/mp4"}'
# -> {"upload_id":"ovu_...","part_size":8388608}
split -b 8388608 video.mp4 part-
n=1; for f in part-*; do
curl -X PUT $B/upload/$UPLOAD_ID/parts/$n \
-H "Authorization: Bearer $ORBIT_TOKEN" --data-binary @$f
n=$((n+1))
done
curl -X POST $B/upload/$UPLOAD_ID/complete \
-H "Authorization: Bearer $ORBIT_TOKEN"
# -> {"asset_id":"ovd_...","job_id":"ovj_..."}每一片的应答都会带上已经到达的分片列表,因此中断的上传只需补发缺的那几片。分片可以乱序发送;除最后一片外,每片的大小都必须等于返回给你的 part_size。
每个视频一套 HLS 梯度:你上传的分辨率,以及它之下的标准档位,档数不超过套餐允许值。视频为 H.264,音频为 128 kbit/s 的 AAC,切成 6 秒一片,并设置 independent_segments —— 正是这一点让播放器切换画质时画面不中断。
| 套餐 | 最高画质 | 每个视频的档数 |
|---|---|---|
| Free | 720p | 2 |
| Pro | 1080p | 4 |
| Business | 2160p(4K) | 6 |
| Unlimited | 2160p(4K) | 6 |
封面取自首帧;首帧接近全黑时改用稍后的一帧。reprocess 会以原始文件为源重新生成梯度,套餐变更后应当使用它;新梯度完成之前,当前的一套照常播放。
curl https://dash.yunzheng.space/api/v1/vod/assets/$ID/renditions \
-H "Authorization: Bearer $ORBIT_TOKEN"公开与不公开的视频都在同一个地址播放,而且这个地址不会变:
https://vod.yunzheng.space/a/<asset_id>/master.m3u8
https://vod.yunzheng.space/a/<asset_id>/poster.jpg任何支持 HLS 的播放器都能直接用这个地址。我们的播放器额外提供清晰度菜单、画中画与统计面板,只需两行:
<script src="https://vod.yunzheng.space/v1.js"></script>
<div id="p"></div>
<script>
OrbitPlayer.mount(document.getElementById('p'), {
src: 'https://vod.yunzheng.space/a/<asset_id>/master.m3u8',
vod: true, latency: 'standard'
})
</script>private 的视频在那个地址上会被拒绝。改为申请一个签名地址:它带有过期时间与签名,过期之后就不再应答。
curl -X POST https://dash.yunzheng.space/api/v1/vod/assets/$ID/playback \
-H "Authorization: Bearer $ORBIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ttl_s":3600}'
# -> {"master_url":"https://vod.yunzheng.space/a/ovd_.../master.m3u8?exp=...&sig=...",
# "expires_at":"..."}如果想在自己的后端签名 —— 每位观众一条链接,且不必向我们发请求 —— 就持有一把播放密钥。密钥在创建时出现一次,之后无法再读取;吊销密钥会让所有已用它签过的链接立即失效,包括观众正打开着的那一条。
curl -X POST https://dash.yunzheng.space/api/v1/vod/keys -H "Authorization: Bearer $ORBIT_TOKEN"
curl https://dash.yunzheng.space/api/v1/vod/keys -H "Authorization: Bearer $ORBIT_TOKEN"
curl -X DELETE https://dash.yunzheng.space/api/v1/vod/keys/$KEY_ID -H "Authorization: Bearer $ORBIT_TOKEN"| 限额 | 含义 |
|---|---|
| 视频数 | 同时可以拥有多少个资产 |
| 存储 | 原始文件、由它生成的每一档画质,以及封面 |
| 每月转码时长 | 已编码的视频分钟数,每一档各计一次 |
| 每月分发流量 | 从边缘发往观众的流量 |
| 最高画质 | 按套餐决定的梯度上限 |
| 每个视频的档数 | 梯度最多有几级 |
删除视频会立即释放存储,播放地址也在同一刻停止应答。重新转码会再计一次,因为那是又一次编码。
GET /v1/account/quota 里也是同一组名字。