有没有人有使用HLS和Fairplay并成功地检索像素缓冲区的经验?
我使用的是AVURLAsset
及其resourceLoader
委托集。我的AVAssetResourceLoaderDelegate
负责处理公平游戏过程。
但是,当我尝试使用附加到AVPlayerLayer
上的AVPlayerItemVideoOutput
并在其上使用copyPixelBufferForItemTime
时,返回的pixelBuffer总是为NULL。
另一方面,当我使用非加密流而不使用resourceLoader时,copyPixelBufferForItemTime会按预期返回一个像素缓冲区。
这是按计划进行的吗?(也就是说,使用FairPlay进行保护的流不公开其像素缓冲区以防止误用。)
如果没有,是否有任何方法从使用FairPlay在iOS上保护的流中获取像素缓冲区?
发布于 2017-03-18 02:43:08
在进一步研究这个问题之后,我得出的结论是,苹果设计他们的AVPlayer时,一旦使用了FairPlay保护的HLS,就会成为解密数据copyPixelBufferForItemTime
总是返回零的唯一出口点(参见A:)。
copyPixelBufferForItemTime
按预期返回对像素缓冲区的引用。看来,一旦使用FairPlay,显示受保护的视频内容的唯一方法就是使用AVPlayerLayer
。到今天为止,似乎还没有办法从苹果的API中检索受FairPlay保护的HLS媒体,以便在3D空间的OpenGL纹理上显示它。
答:copyPixelBufferForItemTime
是唯一的出口点,因为在AVPlayerLayer上调用renderInContext
不起作用
https://stackoverflow.com/questions/42839831
复制相似问题