如何设置 FFMPEGInterop 以使用 DRM playready

How to setup FFMPEGInterop to Use DRM playready

我正在使用 FFMPEGInterop class 播放 UWP 视频。我需要使用 playready 设置来播放它,但 运行 遇到了问题。

我可以只使用 mediaplayerelement 播放 playready 并创建保护管理器,但是当我创建一个 FFMPEGMSS 来流式传输它时,它失败了。将保护管理器添加到 MediaStreamSource 时说值超出范围。

var StreamSource = FFmpegMSS.GetMediaStreamSource();
var protectionManager = new Windows.Media.Protection.MediaProtectionManager();
Windows.Foundation.Collections.PropertySet cpSystems = new Windows.Foundation.Collections.PropertySet();
cpSystems.Add("{F4637010-03C3-42CD-B932-B48ADF3A6A54}", "Microsoft.Media.PlayReadyClient.PlayReadyWinRTTrustedInput"); //Playready
protectionManager.Properties.Add("Windows.Media.Protection.MediaProtectionSystemIdMapping", cpSystems);
protectionManager.Properties.Add("Windows.Media.Protection.MediaProtectionSystemId", "{F4637010-03C3-42CD-B932-B48ADF3A6A54}");
protectionManager.ServiceRequested += ProtectionManager_ServiceRequested;
protectionManager.ComponentLoadFailed += ProtectionManager_ComponentLoadFailed;

protectionManager.Properties.Add("Windows.Media.Protection.MediaProtectionContainerGuid", "{9A04F079-9840-4286-AB92-E65BE0885F95}");

var supportsHardwareDrm = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HardwareDRM);
if (!supportsHardwareDrm)
{
    protectionManager.Properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;
}
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

Header.Text = supportsHardwareDrm ? "SUPPORTED" : "NOT SUPPRTED";

StreamSource.MediaProtectionManager = protectionManager;

mediaElement.Source = MediaSource.CreateFromMediaStreamSource(StreamSource);

我应该能够使用设置保护管理器播放 playready DRM 开始,但我得到了关于它的任何信息,因此对下一步的操作感到困惑。

UWP MediaElement 未实现对来自外部源的 PlayReady 内容的必要支持。即没有UWP PlayReday播放带FFmpegMSS.

您只能将 PlayReady 与 Microsoft 自己的流媒体源一起使用。