从一个文件到一个播放器
它是什么
点播是一个已经做完的文件,谁来要就给谁播 —— 这和正在进行的直播是两回事。你上传文件,我们据此生成套餐允许的每一档画质和一张封面,你拿到一个交给播放器的地址,以及一段可以贴进页面的代码。
它如何运作
文件分片上传,因此中断的上传会从停下的那一片继续,而不是从头再来。最后一片到达后,转码任务排进承载平台其余部分的同一批节点:一次处理生成整套梯度,并切成 6 秒一片。产物存入存储,经 Shield 分发 —— 所以每个分片在每个位置只从存储取一次,之后由该位置应答附近的所有人:在存储这一端,一个观众和一万个观众的成本相同。
画质
梯度从你上传的分辨率开始,向下展开。我们从不向上拉伸:720p 的文件最高就是 720p,选择 4K 也不会凭空造出画面里原本没有的细节。每一档都是一次独立编码,所以一个视频能有几档由套餐决定。播放器在第一个分片时选定一档,并随网络变化在各档之间切换,画面不会因此中断。
播放
播放端是一个 HLS 清单,任何支持 HLS 的播放器都能直接用,包括 Safari 与各家移动浏览器内置的那个。我们自己的播放器只需两行代码,额外提供清晰度菜单、画中画,以及观众在觉得不对劲时可以打开的统计面板。私有视频只能通过带签名且会过期的地址访问:可以让控制台替你签,也可以持有播放密钥自己签,这样每位观众都能拿到不同的链接。
通过 API
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"}'
# -> {"asset_id":"ovd_...","state":"uploading"}
curl -X POST .../vod/assets/$ID/upload \
-d '{"size":734003200,"content_type":"video/mp4"}'
# -> {"upload_id":"ovu_...","part_size":8388608}
curl -X PUT .../vod/assets/$ID/upload/$UPLOAD/parts/1 --data-binary @part-001
curl -X POST .../vod/assets/$ID/upload/$UPLOAD/complete
https://vod.yunzheng.space/a/$ID/master.m3u8对比
常见问题
有免费额度吗?
有。Free 计划包含 100 个视频、50 GB 存储、每月 600 分钟转码、每月 200 GB 分发流量、画质上限 1080p。各项上限见本页的额度表;需要更多时,请在帮助中心提交工单。
转码要多久?
在生成四档画质的套餐上,大致与视频本身的时长相当;档数更多则更久,因为每一档都是一次独立编码。运行期间控制台会显示状态,最后一档完成的那一刻,播放地址就开始应答。
原始文件会保留吗?
会。重新转码就是以它为源,它与由它生成的各档画质一起计入你的存储用量。删除视频时两者一并删除。
能用自己的播放器吗?
可以。那个地址就是标准的 HLS 清单,里面没有任何私有的东西。我们提供播放器是为了省掉你自己写清晰度菜单,而不是因为必须用它。
它和 Stream 有什么区别?
Stream 承载的是正在进行的直播;VOD 提供的是已经做完的文件。两者共用播放器和同一张边缘网络 —— 区别在于:被观看的东西,在有人来要之前是否已经完整存在。
不公开的视频需要密钥吗?
不需要。不公开的含义是地址无法被猜到,拿到地址的人都能观看。需要签名地址的是「私有」,而那个地址会过期。