本文介绍 Flutter 播放器 SDK 播放火山引擎私有加密视频的客户端接入流程。客户端从播放器 SDK 获取设备绑定信息,业务服务端据此签发短期有效的 PlayAuthToken,客户端再使用 Vid 和 PlayAuthToken 创建播放源。
PlayAuthToken 的能力。AK、SK 等长期凭证只能保存在服务端。getEngineUniqueId() 获取 UnionInfo,并调用 getEngineUniqueKek() 获取 DrmKEK。UnionInfo 和 DrmKEK 发送给经过业务鉴权的服务端接口。FileType=private_evideo 的短期 PlayAuthToken。PlayAuthToken 返回客户端。TTVideoEngineVidSource,设置播放源并开始播放。播放前,检查当前设备是否支持 DRM,并获取设备绑定信息:
final unionInfo = await FlutterTTSDKManager.getEngineUniqueId(); final drmKek = await FlutterTTSDKManager.getEngineUniqueKek(); if (unionInfo == null || unionInfo.isEmpty || drmKek == null || drmKek.isEmpty) { throw StateError('播放器 SDK 未返回设备绑定信息'); }
客户端向业务服务端请求 PlayAuthToken 时,服务端签发字段如下。
| 服务端签发字段 | 值或来源 |
|---|---|
Vid | 待播放私有加密视频的 Vid。 |
FileType | 固定为 private_evideo。 |
UnionInfo | 客户端 getEngineUniqueId() 的返回值。 |
DrmKEK | 客户端 getEngineUniqueKek() 的返回值。 |
Format | 根据实际视频和服务端签发接口配置,例如 hls、dash 或 mp4。 |
警告
请勿在客户端保存 AK、SK 或实现 Token 签发逻辑。业务服务端应先完成用户和播放权限校验,再签发短期有效的 PlayAuthToken。
客户端获取业务服务端返回的 PlayAuthToken 后,通过 Vid 模式设置播放源:
final playAuthToken = await requestPrivatePlayAuthToken( vid: vid, unionInfo: unionInfo, drmKek: drmKek, ); final player = VodPlayerFlutter(); await player.createPlayer(); final source = TTVideoEngineVidSource.init( vid: vid, playAuthToken: playAuthToken, ); await player.setMediaSource(source); await player.play();
requestPrivatePlayAuthToken 代表业务方自己的鉴权接口,用于根据 Vid、UnionInfo 和 DrmKEK 生成 PlayAuthToken。
确认播放器 SDK 已初始化、License 有效,并检查当前设备是否支持 DRM。
检查 Vid、FileType、UnionInfo、DrmKEK 和 Token 有效期是否一致,并确认签发信息来自当前播放设备。
不可以。客户端只负责获取设备绑定信息和使用 Token 播放,长期凭证和签发逻辑必须保留在服务端。