题目重点:设计点播视频服务,拆分媒体制作、播放授权、清晰度切换和观看进度。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 训练点播目录、播放、跨设备进度,不含直播。版权地区、订阅状态、DRM与下载离线是否必须由面试给定。
- 媒体数据面与用户元数据控制面分离;不给没有依据的用户数量,按并发播放数与码率估带宽。
解题路线
- 入库pipeline校验源视频、转多码率/分辨率分片、生成manifest与字幕,完整variant可用后才发布assetVersion。对象存储是源,CDN分发immutable分片,manifest引用版本防止混片。
- playSession API校验user订阅/地区/并发策略,返回短期播放凭证、manifest与license流程。CDN签名或边缘鉴权控制内容访问,鉴权故障按政策失败或受控短暂续用,不能无条件公开媒体。
- 播放器依据带宽和buffer自适应选码率,seek按segment索引请求;prefetch受限减少浪费。QoE分开startup latency、rebuffer ratio、bitrate、error rate,缓存命中不等同流畅。
- 热门内容预热边缘,冷门回源请求合并与区域shield降低源压力。多CDN切换需地址/授权与QoE监测支持,不能只增加副本就解决最后一公里拥塞。
- 进度事件带sessionId、seq、position、updatedAt。多设备“最新操作位置”与“最远看到位置”是不同字段,不能max(position)实现用户回看。暂停/结束/离线同步的冲突政策必须明确。
- 播放日志异步上报用于质量分析,计费/授权账本另存。断线客户端可缓冲已经授权的分片,但不能由此假设离线下载许可证无期限有效。
手动走一遍
10万同时播放、平均4Mbps,数据出站约400Gbps,不是播放API每秒10万×4MB。视频切换版本需manifest和segments一致;用户从40分钟回看到10分钟,resume若只取最大位置会错误跳回40分钟。
规模与取舍
媒体容量是每片时长×全部编码码率之和;带宽约concurrentStreams×averageBitrate,CDN回源约未命中字节加填充流量。元数据读写按播放创建/进度频率另算,分片时长影响请求频率与首屏/切码率粒度。
易错点与追问
容易失分的边界
- 让应用服务器代理全部视频字节,会把控制面和大带宽数据面耦合。
- 使用用户时间戳决定全球最新会话,设备时钟偏差可能覆盖新状态。
继续深挖
- 热门新片同时首播如何预热又避免全量浪费?
- 视频版本撤回、许可证撤销与已缓存分片之间,产品允许什么可见延迟?
