如何将 dash DRM 许可证添加到 m3u 播放列表?
How to add dash DRM license to m3u play list?
在过去的几天里,我们正在尝试将 DRM 许可证密钥添加到 m3u 列表上的破折号流中。
我们可以通过 shaka 网络播放器播放这个,但管理人员需要通过 Android 框与 KODI/任何客户端应用程序播放这个。
选项很少,但它不适用于 IPTV 客户端。
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://link.to.license.server.com
#EXTINF:-1,Office VOD 1
https://cdn.ouroffice.com/manifest.mpd
用 Kodi 和其他可用的 IPTV 应用程序尝试了上面的代码,但没有成功。
有什么办法,我们可以通过 m3u 列表传递 DRM 密钥?
我认为您的示例可能混淆了几个不同的概念。
DASH 和 HLS 是流式传输协议,它们实质上将视频分成块并在清单文件中提供块的索引。
DASH 使用“.mpd”作为其清单文件类型。
HLS 使用“.m3u”作为其清单文件类型。
所以第一点是,如果您使用的是 M3U 文件,那么看起来您使用的是 HLS 而不是 DASH。
DASH 和 HLS 都可以支持加密轨道,并且它们可以在清单中包含指示正在使用的加密方案以及在某些情况下如何访问密钥的信息。
对于 DASH,您可以在此处查看示例(来自:https://dashif-documents.azurewebsites.net/Guidelines-Security/master/Guidelines-Security.html):
<ContentProtection
schemeIdUri="urn:uuid:d0ee2730-09b5-459f-8452-200e52b37567"
value="FirstDRM 2.0">
<cenc:pssh>YmFzZTY0IGVuY29kZWQgY29udGVudHMgb2YgkXBzc2iSIGJveCB3aXRoIHRoaXMgU3lzdGVtSUQ=</cenc:pssh>
<dashif:authzurl>https://example.com/tenants/5341/authorize</dashif:authzurl>
<dashif:laurl>https://example.com/AcquireLicense</dashif:laurl>
</ContentProtection>
以上是虚构的 DRM - 例如,对于 widevine,您可以替换为 widevine schemeIdUri。
HLS DRM 信息看起来像(来自:https://www.rfc-editor.org/rfc/rfc8216):
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:2.833,
http://media.example.com/fileSequence52-A.ts
#EXTINF:15.0,
http://media.example.com/fileSequence52-B.ts
#EXTINF:13.333,
http://media.example.com/fileSequence52-C.ts
没有绝对的规则,但通常在不同的应用和设备上使用不同的 DRM。粗略指南:
- Android 台设备 - Widevine
- Chrome PC 上的浏览器或 MAC - Widevine
- iOS 设备 - FairPlay
- Safari 浏览器 - FairPlay
- Internet Explorer 浏览器 - PlayReady
在过去的几天里,我们正在尝试将 DRM 许可证密钥添加到 m3u 列表上的破折号流中。 我们可以通过 shaka 网络播放器播放这个,但管理人员需要通过 Android 框与 KODI/任何客户端应用程序播放这个。 选项很少,但它不适用于 IPTV 客户端。
#KODIPROP:inputstream.adaptive.license_type=com.widevine.alpha
#KODIPROP:inputstream.adaptive.license_key=https://link.to.license.server.com
#EXTINF:-1,Office VOD 1
https://cdn.ouroffice.com/manifest.mpd
用 Kodi 和其他可用的 IPTV 应用程序尝试了上面的代码,但没有成功。 有什么办法,我们可以通过 m3u 列表传递 DRM 密钥?
我认为您的示例可能混淆了几个不同的概念。
DASH 和 HLS 是流式传输协议,它们实质上将视频分成块并在清单文件中提供块的索引。
DASH 使用“.mpd”作为其清单文件类型。
HLS 使用“.m3u”作为其清单文件类型。
所以第一点是,如果您使用的是 M3U 文件,那么看起来您使用的是 HLS 而不是 DASH。
DASH 和 HLS 都可以支持加密轨道,并且它们可以在清单中包含指示正在使用的加密方案以及在某些情况下如何访问密钥的信息。
对于 DASH,您可以在此处查看示例(来自:https://dashif-documents.azurewebsites.net/Guidelines-Security/master/Guidelines-Security.html):
<ContentProtection
schemeIdUri="urn:uuid:d0ee2730-09b5-459f-8452-200e52b37567"
value="FirstDRM 2.0">
<cenc:pssh>YmFzZTY0IGVuY29kZWQgY29udGVudHMgb2YgkXBzc2iSIGJveCB3aXRoIHRoaXMgU3lzdGVtSUQ=</cenc:pssh>
<dashif:authzurl>https://example.com/tenants/5341/authorize</dashif:authzurl>
<dashif:laurl>https://example.com/AcquireLicense</dashif:laurl>
</ContentProtection>
以上是虚构的 DRM - 例如,对于 widevine,您可以替换为 widevine schemeIdUri。
HLS DRM 信息看起来像(来自:https://www.rfc-editor.org/rfc/rfc8216):
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:7794
#EXT-X-TARGETDURATION:15
#EXT-X-KEY:METHOD=AES-128,URI="https://priv.example.com/key.php?r=52"
#EXTINF:2.833,
http://media.example.com/fileSequence52-A.ts
#EXTINF:15.0,
http://media.example.com/fileSequence52-B.ts
#EXTINF:13.333,
http://media.example.com/fileSequence52-C.ts
没有绝对的规则,但通常在不同的应用和设备上使用不同的 DRM。粗略指南:
- Android 台设备 - Widevine
- Chrome PC 上的浏览器或 MAC - Widevine
- iOS 设备 - FairPlay
- Safari 浏览器 - FairPlay
- Internet Explorer 浏览器 - PlayReady