问题标签 [fairplay]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2386 浏览

ios11 - 应用关闭时离线 HLS Fairplay 播放错误,代码 16227

在使用 AVContentSessionKey 的 FairPlay Streaming Server SDK v4.0.1 中的演示之后,我正在使用 HLS Fairplay 实现离线播放。我下载了三个内容,每个内容都正确下载并保存,文件目录上的.movpkg及其内容键,当我关闭WIFI时,这三个下载的内容可以正常播放,没有任何问题,在播放之前我使用这个代码:

到目前为止,一切都很好。但问题是当我关闭应用程序(主页按钮关闭应用程序)然后播放下载的内容时,只有最后下载的内容正确播放,其他内容(第一个和第二个)在控制台上发送这些错误。

我用文档目录中的键仔细检查 .movpkg 并正确显示

在错误发生之前,调用 ContentKeyDelegate 并正确加载密钥并将其传递给请求。

如果persistableContentKeyExistsOnDisk(withContentKeyIdentifier:assetIDString){

如果我打印 contentKeyRecipients 三个内容正确显示

我的测试在 iOS 11.1.2 和 iOS 11.2 beta 2 中

我不确定发生了什么,但似乎是持久密钥的问题,我不知道是否每个内容都需要与一个 AVContentKeySession 相关联。

如果有人遇到类似的问题,任何帮助将不胜感激。

提前致谢

0 投票
0 回答
207 浏览

ios11 - 模仿 Apple Airplay 接收器

我已经阅读了很多关于 Airplay 的资料,但由于该协议是一个可移动的盛宴,因此很难判断哪些位适合 ios11 设备。

我特别想在 Unity 应用程序中运行一个播放接收器,以便让 VR 游戏玩家也将自己的内容播放到 HUD(基本上是在观看 Netflix 的同时拍摄东西!)

在获得了 mDNS/Zeroconf 位广播之后,airplay 接收器在设备上的特定端口上可用,我有一个小节点快速服务器在该端口上等待 http 请求。我的印象是,在必须进行一些密钥服务器协商之前,我会看到来自设备的 /setup 或 /fp-setup 请求,但目前,当我在远程 ios 设备上选择 airplay 接收器时,我看不到任何传入请求。在 http 请求开始之前,airplay 和 rtsp 甚至 ntp 服务器是否存在一些先决条件?

假设我超越了这个问题,我想知道是否有人可以在统一应用程序中使用带有独角兽臂模拟器的 airtunesd 二进制文件......听起来运行本机二进制文件是这些天让 airplay 工作的唯一方法,但是,如何找出在本质上是一个黑匣子的情况下调用的本机方法呢?我是编译二进制逆向工程的新手,所以放轻松!

0 投票
0 回答
424 浏览

ios - AVAssetResourceLoaderDelegate 中的错误处理

在 AVAssetResourceLoaderDelegate 中处理错误的推荐方法是什么?shouldWaitForLoadingOfRequestedResource特别是/中的网络请求shouldWaitForRenewalOfRequestedResource

但是,在我开始播放视频之前,我的应用程序无法知道出了什么问题。我在委托呼叫中尝试过loadingRequest.finishLoading(with: err),但在下载完成并且用户开始播放视频之前没有报告任何内容。return falseshouldWaitForLoadingOfRequestedResource

代码是这样的..

设置后preloadsEligibleContentKeys = true,似乎shouldWaitForLoadingOfRequestedResource在 AVURLAsset 中设置资源加载器委托后立即调用。但是没有办法告诉资源加载器已经成功地获得了它想要的所有信息。

我尝试loadValuesAsynchronously在 AVURLAsset 上使用,但这也是不行的。

AVAssetDownloadURLSession 也不总是报告错误。

提前致谢。

0 投票
1 回答
948 浏览

ios - Google Chrome Cast iOS SDK 是否支持 Fairplay 和 AES 加密

我的应用播放 HLS 流并支持 Fairplay DRM 和基本的 AES 128 加密 HLS 流。

我的播放器实现AVAssetResourceLoaderDelegate了对这两种加密方法的解码。

AVAssetResourceLoaderDelegate现在我正在寻找 Chrome Cast 支持,但是在阅读文档时,我感觉在流式传输到 Chrome Cast 时我无法访问。

根据文档,开发人员应该使用媒体 URL 创建一个GCKMediaInformation,将其提供给 Chrome Cast SDK,它会发挥其秘诀。

有没有办法挂钩 HLS 清单读取并为 CCast 提供解密流的密钥?

0 投票
1 回答
2658 浏览

ios - Swift 中的 Fairplay 实现,AVAssetResourceDelegate

我观看了 Apple FairPlay 介绍视频,我阅读了以下代码: https ://gist.github.com/fousa/5709fb7c84e5b53dbdae508c9cb4fadc 我还浏览了苹果的 HLS 目录,最后一个问题是我只需要播放 DRM 视频而无需任何下载和所有这些东西,所以我从 GitHub 示例开始。我有证书、FairPlay 中的视频和密钥服务器模块。我的第一个也是主要的问题是当我给 AVURLAsset 提供视频 url 时 AVResourceDelegate 没有调用。我在堆栈中读到我需要将方案更改为其他内容,例如来自 https 的“DRM”和正确的 AVResourceDelegate 调用,但我没有 .m3u8 文件,因为视频链接错误!你能不能请男孩/女孩帮助我。

0 投票
0 回答
1161 浏览

javascript - 在 Safari 浏览器上播放 Fairplay 加密内容时出现问题

我们正在尝试用 Javascript 编写播放器,它应该在 safari 浏览器上播放 fairplay 加密内容。我们认为 Safari 浏览器不支持“加密”事件,我们为“WebKitNeedKey”事件添加了事件监听器。我们将流程编码如下。

现在我得到了 webkitneedkey 事件,在设置了密钥之后,我得到了 webkitkeymessage 事件。我计划按照https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/master/LayoutTests/http/tests/media/clearkey/clear-key-hls-aes128 实现联系服务器以获得许可证的逻辑。 html

我有以下问题。有人可以帮我解决以下问题吗?

0 投票
1 回答
468 浏览

objective-c - 需要调用哪个方法来获取 FairPlay DRM 实现的 contentKey?

我必须streamingContentKeyRequestDataForApp创建 SPC 消息并getContentKeyAndLeaseExpiryfromKeyServerModuleWithRequest获取 CKC 数据。我可以得到CKC数据。

我正在使用persistentContentKeyFromKeyVendorResponse方法来获取 ContentKey。因为我@{AVAssetResourceLoadingRequestStreamingContentKeyRequestRequiresPersistentKey: @YES} 在创建 SPC 时将其保留在选项中。

我得到的结果是nil内容键。

请建议在此之后如何进行。

非常感谢您抽出宝贵的时间!

0 投票
0 回答
606 浏览

macos - 如何解码 FPLY(Airplay Mirroring) DRM key

我正在为mac开发AirPlay Mirroring Server App(同AirServer),但是不知道怎么解码从SETUP中得到的“ekey”的值。

启动 Airplay 服务器

数据传输

下一个 SETUP Request 会返回 ekey(72 bytes)/eiv(16 bytes) 值。但是不知道如何将“ekey”的值解码为 aesKey(16bytes)?

接下来,初始化数据套接字、定时套接字、控制套接字。最后,通过上面的aeskeyeiv获得对视频/音频数据的解码。

0 投票
0 回答
231 浏览

fairplay - AVAssetDownloadTask 的下载性能

AVAssetDownloadTask用来下载一些 FairPlay 加密的音频。根据指南,音频被分成小块,以允许在流式传输期间在比特率之间切换。我们的块每个大约 6 秒,这意味着小于 100 kb。

这个过程的下载速度非常糟糕。我看到的速度在 85 KB/s 和 250 KB/s 之间。这是一个连接,当我下载一个新的 Xcode 测试版时,我每秒获得几兆字节。

我猜测速度慢是由于必须为每个段单独请求,这是很大的开销。我尝试使用Charles检查下载流量,即使它显示每个下载任务一个 HTTPS 连接,请求正文大小在下载的整个生命周期内不断向上滴答。我尝试从音频文件所在的同一台服务器下载一个 100MB 的测试文件,它以每秒几兆字节的速度下降。

我的问题:使用 获得良好下载性能的最佳实践是什么AVAssetDownloadTask?细分应该更大吗?是否应该有一个单独的文件是一大块供下载?还是这种行为很奇怪,表明我配置错误?

0 投票
1 回答
930 浏览

ios - 从服务器获取 CKC 后 iOS FairPlay 视频不播放

我正在尝试在我的应用程序中实现 FairPlay。

我可以使用 Apple 提供的 SDK 播放加密视频,但问题是 SDK 在 Swift 中,但我的项目在 Objective C 中。

所以我在我的项目中重新编写了代码,但我无法播放视频。

在此处输入图像描述

以下是我正在使用的链接:

  1. 播放列表:https://willzhanmswest.streaming.mediaservices.windows.net/92fc0471-0878-4eeb-80a3-e5b6fc497806/NoAudio.ism/manifest(format=m3u8-aapl)

  2. 证书:https ://openidconnectweb.azurewebsites.net/Content/FPSAC.cer

以下是我遵循的步骤:

  1. 向 AVURLAsset 添加了一个委托来调用此函数 shouldWaitForLoadingOfRequestedResource。
  2. 在这个函数中,我首先在 NSData 中获取证书的内容
  3. 然后,我正在获取资产字符串并将其转换为 NSData。
  4. 然后,我调用这个函数来创建 SPC 值。
  1. 收到的 SPC 和资产 ID 然后通过 application/x-www-form-urlencoded content-type 传递到 Azure 服务器。
  2. 然后对收到的 CKC 进行修剪以删除和标记,然后将其转换为 Base64String,然后调用这些函数

谁能帮我找出我在这里做错了什么?

谢谢。