我们在iPhone 6(A1586)上使用AES(使用JWT令牌身份验证)视频播放受保护的问题。以下错误拖欠:
0x50300000 - 视频播放因腐败问题而中止 或者因为视频使用了浏览器不支持的功能
当禁用加密时,同一视频播放没有任何问题。
问题是复制Azure Media Player团队发布的此类场景的示例无法正常工作并失败并出现同样的错误!它可以在这里找到:https://ampdemo.azureedge.net/。该样本命名如下:
AES(JWT令牌) - 按需[钢铁预告片]
如何通过iPhone上的Azure媒体服务/播放器进行受保护的视频流?是否支持场景?
以下是设置交付政策的相关代码:
deliveryPolicy = context.AssetDeliveryPolicies.Create(
DeliveryPolicyName,
AssetDeliveryPolicyType.DynamicEnvelopeEncryption,
AssetDeliveryProtocol.SmoothStreaming | AssetDeliveryProtocol.Dash | AssetDeliveryProtocol.HLS,
new Dictionary<AssetDeliveryPolicyConfigurationKey, string>
{
{ AssetDeliveryPolicyConfigurationKey.EnvelopeKeyAcquisitionUrl, contentKey.GetKeyDeliveryUrl(ContentKeyDeliveryType.BaselineHttp).ToString() }
}
);
答案 0 :(得分:3)
在Azure Media Player“已知问题”列表中找到了这个确切的场景:https://amp.azure.net/libs/amp/latest/docs/Known_Issues.html。
AES和受限制的令牌内容无法使用iOS及更早版本进行播放 Android设备。为了实现这种情况,代理必须是 已添加到您的服务中。
本文介绍了Azure团队提出的此解决方法:https://azure.microsoft.com/en-us/blog/how-to-make-token-authorized-aes-encrypted-hls-stream-working-in-safari/。我还没有亲自测试过它。
更新。解决方法在稍作更改后仍然有效 - 第二级HLS播放列表的网址编码存在问题。这是完整的WebAPI 2控制器代码,为我提供了诀窍:http://pastebin.com/kq7Zfw88。