Stream(直播)

一条连接进来,从每座城市出去。

直播通过 RTMPS 推送到一座城市,从所有城市被观看。本页讲创建频道、开播、观看地址,以及修改密钥时会发生什么。

01

创建频道

频道是拥有地址的那个东西,直播是它上面的一次会话。频道只需创建一次,可以反复使用 —— 观看地址在两次直播之间不会改变。

创建一个频道
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 个字符。
visibilityunlisted(默认)或 public。平台没有目录页,两者都只能通过地址访问。
city推流落在哪座城市。不填则由还有余量的城市接收。
unlisted 的含义是地址不可被猜到,它不是访问控制:拿到地址的人都能观看。
02

开播

任何支持 RTMP 的推流软件都只需要填两项:服务器与密钥。连接是 RTMPS —— 我们不开放明文端口,因为密钥就在推流指令里,明文端口意味着软件每次重连都把它送上线路。

服务器与密钥
Server:  rtmps://ingest-<city>.edge.yunzheng.space:1936/live
Key:     osk_…

两者都能在控制台以及创建频道的应答里找到。在命令行下,同样的事情是这样:

用 ffmpeg 推流
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。
关键帧每两秒一个或更密。分片在关键帧处切分,间隔越长,观众开播等待越久。
直播按推送时的样子传输。我们不做重新编码,因此观众收到的分辨率与码率就是推送时的那一套 —— 请按你想服务的最慢连接来选择。
03

观看地址

两种形式,都来自播放标识 —— 它与推流密钥是两个不同的字符串。密钥不会出现在浏览器发起的任何请求里。

页面与清单
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 分钟。分片一旦写出就不再改变。
内容不会被录制。直播结束后分片自然过期,地址随即显示为未在播;不存在可供日后回放的留存副本。
04

更换密钥

任何时候都可以签发新密钥。默认情况下,正在播出的直播会继续使用旧密钥直到结束,新密钥从下一次开播起生效 —— 因此可以在活动进行中轮换密钥而不中断播出。

签发新密钥
curl -X POST https://dash.yunzheng.space/api/v1/stream/streams/<id>/key \
  -H "Authorization: Bearer $ORBIT_TOKEN"

传入 {"revoke_now": true} 可以同时结束正在播出的直播。密钥外泄时应当使用这一种。

05

了解发生了什么

频道会显示它是否在播、从何时开始、在哪座城市。历史直播会留存记录:每一次的时间、时长、推送量与分发量,以及结束的方式。

历史直播
curl https://dash.yunzheng.space/api/v1/stream/streams/<id>/sessions \
  -H "Authorization: Bearer $ORBIT_TOKEN"

无法开播的频道会在自己身上写明原因,是一句话:套餐额度用尽,或密钥已被吊销。推流软件只会告诉你连接失败,原因在这里。

继续

相关文档

开始使用

Orbit 账户的组织方式、控制台各处的功能,以及从登录到让我们的网络开始应答一个域名的最短路径。

DNS 托管

建区、把注册商的 NS 指向我们、管理记录。含加权应答、带健康检查的记录、顶点 ALIAS 与区文件导入。

接入主机名

整域委派、单主机名委派,或加一条 CNAME 而完全不动现有 DNS。三者各自的代价与适用场景。

← 全部文档