有没有人曾在Fairplay上使用HLS并成功检索像素缓冲区?
我正在使用AVURLAsset
委托集的resourceLoader
。我的AVAssetResourceLoaderDelegate
负责处理Fairplay流程。
它在AVPlayerLayer
上显示正常,但是,当我尝试使用附加到AVPlayerItemVideoOutput
的AVPlayerItem
并在其上使用copyPixelBufferForItemTime
时,返回的pixelBuffer始终为NULL。
另一方面,当我使用非加密流而不使用resourceLoader时,copyPixelBufferForItemTime返回预期的pixelbuffer。
这是按预期工作吗? (即,受FairPlay保护的流不会公开其像素缓冲区以防止误用。)
如果没有,是否有任何方法可以从iOS上使用FairPlay保护的流中获取像素缓冲区?
最佳答案
在进一步研究了这个问题之后,我得出的结论是,苹果对AVPlayer进行了设计,使您一旦使用FairPlay保护的HLS,解密数据copyPixelBufferForItemTime
的唯一退出点(请参阅A :)始终返回nil。
copyPixelBufferForItemTime
按预期返回了对像素缓冲区的引用。 看来,一旦使用FairPlay,显示受保护的视频内容的唯一方法就是使用
AVPlayerLayer
。到目前为止,似乎还没有办法从Apple的API中检索受FairPlay保护的HLS媒体,以使其在3D空间中的OpenGL纹理上显示。答:
copyPixelBufferForItemTime
是唯一的退出点,因为在AVPlayerLayer上调用renderInContext
不起作用