在播放器中使用 HLS 和 DASH + DRM 的推荐方法是什么?

What is the reccomended way to use HLS and DASH + DRM in a player?

我使用的是 VideoJS 播放器并且有一个 CMAF 视频,所以我使用的是 HLS 和 DASH。我也在使用所有 3 种类型的 DRM。 Fairplay for hls、widevine 和 playready for dash。

我的问题是我是否应该在播放器中同时包含 hls 和 dash 源并让播放器决定播放哪一个?还是我会检测浏览器并仅根据浏览器插入正确的 url? DRM 也是一样的。我可以将所有 DRM 添加到播放器吗?还是我应该只添加适用的那个?

HLS 与 DASH 的使用通常取决于终端设备和客户端的功能和规则。

iOS 和 Safari 通常使用 HLS 和 FairPlay,Android,Firefox 和 Chrome 使用 DASH 和 Widevine,Windows 和 Edge 使用 DASH 和 PlayReady。

请注意,Widevine 和 PlayReady 可以使用相同的 DASH 流 - 通用加密标准 CENC 允许相同的流包含 Widevine 和 PlayReady DRM 信息。

目前,Apple iOS 设备必须对移动网络上时长超过 10 分钟的内容使用 HLS:

2.5.7 Video streaming content over a cellular network longer than 10 minutes must use HTTP Live Streaming and include a baseline 192 kbps HTTP Live stream.

(https://developer.apple.com/app-store/review/guidelines/)

因此,提供给 Apple 设备的流通常是 HLS,而 DASH 则用于其他设备。

CMAF 允许将相同的分段媒体流用于 HLS 和 DASH,从而大大降低了这种影响,只有 'index' 或清单文件特定于每个协议。

对于加密内容,情况要复杂一些。此时,与使用 AES-CTR 的 Widevine 和 PlayReady 相比,FairPlay 使用不同的 AES 加密模式 AES CBC。这意味着您仍然需要媒体的两个副本来提供加密的内容流。

随着 Widevine 和 PlayReady 现在宣布支持 AES-CBC 和 AES-CTR,这种情况正在发生变化,但要将其推广到已部署的设备还需要一些时间。