2017-03-16 11 views
0

Fairplay에서 HLS를 사용해 본 경험이 있고 픽셀 버퍼를 검색하는 데 성공한 사람이 있습니까?FairPlay 스트리밍 : AVPlayerItemVideoOutput에서 copyPixelBufferForItemTime을 호출하면 NULL이 반환됩니다.

저는 을 resourceLoader 대리자 세트와 함께 사용하고 있습니다. 내 AVAssetResourceLoaderDelegate은 Fairplay 프로세스를 처리합니다. 나는 AVPlayerItem에 부착 된 AVPlayerItemVideoOutput를 사용하고 그 위에 copyPixelBufferForItemTime를 사용하려고하면 pixelBuffer 반환

그것은 그러나, AVPlayerLayer에서 잘 표시는 항상 NULL이다.

반면에 암호화되지 않은 스트림을 사용하고 resourceLoader를 사용하지 않으면 copyPixelBufferForItemTime이 예상대로 픽셀 버퍼를 반환합니다.

의도 한대로 작동합니까? (FairPlay를 사용하여 보호되는 스트림은 오용을 방지하기 위해 픽셀 버퍼를 노출시키지 않습니다.)

그렇지 않은 경우 iOS에서 FairPlay를 사용하여 보호되는 스트림에서 픽셀 버퍼를 가져 오는 방법이 있습니까?

답변

0

Apple이 FairPlay 보호 HLS를 사용하면 해독 된 데이터에 대한 유일한 종료 점 (A :) 참조)을 사용하는 것과 같은 방식으로 Apple에서 AVPlayer를 설계했다는 결론에 도달했습니다. copyPixelBufferForItemTime 항상 nil을 반환합니다. .

  • 정확한 스트림을 암호화하지 않고 테스트했으며 copyPixelBufferForItemTime은 예상대로 픽셀 버퍼에 대한 참조를 반환합니다.
  • AVPlayerLayer에서 정확히 동일한 스트림 암호화를 테스트했으며 비디오를 예외로 표시합니다.

FairPlay를 사용하면 보호 된 비디오 콘텐츠를 표시하는 유일한 방법은 AVPlayerLayer입니다. Apple의 API에서 FairPlay로 보호 된 HLS 미디어를 검색하여 3D 공간의 OpenGL 텍스처에 표시하는 방법은 현재 없습니다.

A : copyPixelBufferForItemTime

작동하지 않는 AVPlayerLayer에 renderInContext를 호출하기 때문에 유일한 출구 지점 인