Mac OS X中是否有任何公共API用于检查连接显示器的高带宽数字内容保护(HDCP)和/或显示端口内容保护(DPCP)合规性,或者要求仅在HDCP上显示应用程序的输出符合DPCP标准的显示器?
我希望我的应用程序能够拒绝播放某些内容,除非在所有相关的连接显示器上确保这些类型的保护.我相信Apple能够为iTunes商店高清内容做到这一点,但我不确定他们是否正在使用私有API.
如何保证我的应用程序输出受HDCP或DPCP保护?
我正在开发一个WPF应用程序,它将在Windows媒体播放器实例中播放受保护的视频.在播放视频之前,我必须确保显示设备已启用HDCP.如果设备未启用HDCP,则不允许播放视频.
如何在WPF应用程序中的c#中执行此操作?
我们对Android平板电脑应用程序有客户要求,该应用程序将用于直播,仅允许HDCP兼容设备进行镜像.如果连接了非HDCP兼容设备,则应用程序应阻止HDMI输出镜像.我已经浏览了android开发者网站,看到有一个drm api可以用于内容管理但是无法确定是否可以用于检查HDCP兼容.
关于我们如何实现这一点的任何提示都会有所帮助.
首先:这个问题不是直接编程相关的.但是,问题只存在于开发人员中,所以我试图在这里找到答案,因为这个社区中可能还有其他人已经解决了这个问题.
我想记录iPad 2的屏幕,以便能够创建应用程序的演示视频.
由于我正在使用运动数据,因此无法使用模拟器创建视频,必须使用实际的iPad本身.
我已经看到各种网站讨论了不同的方法.
iPad 2 <==> Apple Digital AV Adapter <==> Blackmagic Design Intensity Pro <==>播放软件<==> TechSmith Camtasia屏幕录像机上播放软件以规避HDCP标志
iPad 2 <==> Apple VGA适配器 <==> VGA2USB <==>录制软件
...
似乎每个人都有自己的hacky解决方案来解决这个问题.
我的设置如下:
录制必须在Mac上还是在PC上无关紧要.
我的问题:
那么Intensity Extreme盒子呢?我可以使用它然后连接到mac mini的Thunderbolt端口并从那里录制吗?
Mac mini的Thunderbolt端口是双向的,也适合捕获吗?mac mini HDCP是否合规?如果由于我的屏幕不符合HDCP而不起作用,如果我启动录制软件,它会工作,然后断开屏幕吗?如果我使用VNC上的iPad 2作为屏幕,它是否会起作用,因为如果它发送HDCP流,它必须符合HDCP标准?
我在C#Windows Forms中工作,并希望确保我的表单上的内容仅使用系统的硬件通过符合HDCP标准的流输出.这需要一个多步骤的过程.该过程的高级框图描述将是:
如果这些阶段中的任何一个报告失败,那么将表单删除是一件小事.
我已经对这种方式进行了少量研究,但似乎无法找到任何详细的例子,线索或完成此操作的说明.到目前为止,我一直在研究使用DirectX和Windows OPM,但是找不到足够的帮助.Windows PlayReady许可证似乎也解决了这个问题,但似乎是针对预加密的内容(并且也非常昂贵).也许有一种我没有注意到或想过的方法?
如果您需要任何其他信息,请告诉我.
先感谢您.
在Android Doc和Google上找不到任何明确的内容.
如果有API来检测这个,它是什么以及在HDMI输出上启用/禁用HDCP的API是什么?
如果没有API检测到这一点,是否可以使用设备检查HDMI端口上的HDCP标志?
在某些Android设备(最值得注意的是三星设备)上,HDMI端口始终启用了HDCP.但其他制造商的设备呢?在Google认证的设备上是否必须使用HDCP?如果不是强制性的,主要内容提供商的Android应用程序(来自Big cable company teleco)如何阻止视频输出到非HDCP保护的HDMI端口?
我目前正在切换到使用 Dash/Widevine DRM 的 ExoPlayer。通过测试,我发现很大比例的设备没有启用 HDCP 保护。由于合同协议,这是一个问题。我必须在允许播放之前检测到并记录它。
我从应用程序DRM 信息中获得灵感,认为这甚至是可能的

我的第一个想法是使用DrmManagerClient
我放弃了它,因为我没有得到结果并尝试使用MediaDrm
val mediaDrm = MediaDrm(WIDEVINE_UUID)
val vendor = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VENDOR)
val version = mediaDrm.getPropertyString(MediaDrm.PROPERTY_VERSION)
val description = mediaDrm.getPropertyString(MediaDrm.PROPERTY_DESCRIPTION)
val algorithms = mediaDrm.getPropertyString(MediaDrm.PROPERTY_ALGORITHMS)
var hdcp: String? = null
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
hdcp = mediaDrm.connectedHdcpLevel.toString()
}
Log.i("WideVine", "$vendor $version $description $algorithms $hdcp")
Run Code Online (Sandbox Code Playgroud)
哪个有效!惊人的问题解决了!
...除非如你所见,它只适用于 Pie 及以上...这是不行的。DrmInfo 适用于我尝试过的每个 Android 版本。我只是不知道如何使用DrmManagerClient,而且文档几乎不存在。
任何信息都将受到重视,谢谢。