开始使用
Orbit 账户的组织方式、控制台各处的功能,以及从登录到让我们的网络开始应答一个域名的最短路径。
直播通过 RTMPS 推送到一座城市,从所有城市被观看。本页讲创建频道、开播、观看地址,以及修改密钥时会发生什么。
频道是拥有地址的那个东西,直播是它上面的一次会话。频道只需创建一次,可以反复使用 —— 观看地址在两次直播之间不会改变。
curl -X POST https://dash.yunzheng.space/api/v1/stream/streams \
-H "Authorization: Bearer $ORBIT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Sunday service"}'应答中包含推流密钥。它只出现这一次,之后无法再读取 —— API 读不到,控制台看不到,我们也拿不到。如果丢失,只能重新签发。
| 字段 | 含义 |
|---|---|
name | 频道名称,最多 60 个字符。 |
visibility | unlisted(默认)或 public。平台没有目录页,两者都只能通过地址访问。 |
city | 推流落在哪座城市。不填则由还有余量的城市接收。 |
unlisted 的含义是地址不可被猜到,它不是访问控制:拿到地址的人都能观看。任何支持 RTMP 的推流软件都只需要填两项:服务器与密钥。连接是 RTMPS —— 我们不开放明文端口,因为密钥就在推流指令里,明文端口意味着软件每次重连都把它送上线路。
Server: rtmps://ingest-<city>.edge.yunzheng.space:1936/live
Key: osk_…两者都能在控制台以及创建频道的应答里找到。在命令行下,同样的事情是这样:
ffmpeg -re -i input.mp4 \
-c:v libx264 -preset veryfast -g 60 -c:a aac -ar 48000 \
-f flv rtmps://ingest-<city>.edge.yunzheng.space:1936/live/$STREAM_KEY| 接受的内容 | 说明 |
|---|---|
| 视频 | H.264。 |
| 音频 | AAC。 |
| 关键帧 | 每两秒一个或更密。分片在关键帧处切分,间隔越长,观众开播等待越久。 |
两种形式,都来自播放标识 —— 它与推流密钥是两个不同的字符串。密钥不会出现在浏览器发起的任何请求里。
https://live-<city>.edge.yunzheng.space/p/<playback id> a page that plays it
https://live-<city>.edge.yunzheng.space/s/<playback id>/index.m3u8 HLS, for your own player地址里的城市是推流落在的那一座,不是观众所在的那一座 —— 观众永远由离自己最近的城市应答。两个地址都随频道一起返回,不需要自己拼。
播放由承载网络上所有主机名的同一套边缘提供,因此观众由离自己最近的城市应答;直播内容按城市回源一次,而不是按观众回源一次。
| 内容 | 边缘保留时长 |
|---|---|
| 码率清单 | 10 秒。 |
| 分片列表 | 1 秒 —— 它随直播推进而变化。 |
| 单个分片 | 2 分钟。分片一旦写出就不再改变。 |
任何时候都可以签发新密钥。默认情况下,正在播出的直播会继续使用旧密钥直到结束,新密钥从下一次开播起生效 —— 因此可以在活动进行中轮换密钥而不中断播出。
curl -X POST https://dash.yunzheng.space/api/v1/stream/streams/<id>/key \
-H "Authorization: Bearer $ORBIT_TOKEN"传入 {"revoke_now": true} 可以同时结束正在播出的直播。密钥外泄时应当使用这一种。
频道会显示它是否在播、从何时开始、在哪座城市。历史直播会留存记录:每一次的时间、时长、推送量与分发量,以及结束的方式。
curl https://dash.yunzheng.space/api/v1/stream/streams/<id>/sessions \
-H "Authorization: Bearer $ORBIT_TOKEN"无法开播的频道会在自己身上写明原因,是一句话:套餐额度用尽,或密钥已被吊销。推流软件只会告诉你连接失败,原因在这里。