【问题标题】:FairPlay Streaming: Calling copyPixelBufferForItemTime on AVPlayerItemVideoOutput returns NULLFairPlay Streaming:在 AVPlayerItemVideoOutput 上调用 copyPixelBufferForItemTime 返回 NULL
【发布时间】:2017-08-07 23:12:26
【问题描述】:

有没有人有使用 HLS 和 Fairplay 并成功检索像素缓冲区的经验?

我正在使用带有resourceLoader 委托集的AVURLAsset。我的 AVAssetResourceLoaderDelegate 负责处理 Fairplay 流程。

它在 AVPlayerLayer 上显示良好,但是,当我尝试使用附加到 AVPlayerItemAVPlayerItemVideoOutput 并在其上使用 copyPixelBufferForItemTime 时,返回的 pixelBuffer 始终为 NULL。

另一方面,当我使用非加密流而不使用 resourceLoader 时,copyPixelBufferForItemTime 按预期返回像素缓冲区。

这是按预期工作吗? (即使用 FairPlay 保护的流不会暴露其像素缓冲区以防止滥用。)

如果没有,有什么方法可以从在 iOS 上使用 FairPlay 保护的流中获取像素缓冲区?

【问题讨论】:

    标签: ios http-live-streaming fairplay


    【解决方案1】:

    在进一步研究这个问题后,我得出的结论是,Apple 设计了他们的 AVPlayer,一旦你使用受 FairPlay 保护的 HLS,解密数据copyPixelBufferForItemTime 的唯一退出点(见 A:)总是返回无。

    • 我测试了完全相同的流,但没有加密,copyPixelBufferForItemTime 按预期返回对像素缓冲区的引用。
    • 我在 AVPlayerLayer 上测试了完全相同的流使用加密,它显示的视频为例外。

    看来,一旦您使用 FairPlay,显示受保护视频内容的唯一方法就是使用 AVPlayerLayer。到目前为止,似乎无法从 Apple 的 API 中检索受 FairPlay 保护的 HLS 媒体,以便将其显示在 3D 空间中的 OpenGL 纹理上。

    答:copyPixelBufferForItemTime 是唯一的退出点,因为在 AVPlayerLayer 上调用 renderInContext 不起作用

    【讨论】:

      【解决方案2】:

      在使用带有 resourceLoader 委托集的 AVURLAsset 时,我遇到了同样的问题。与您的情况不同,有两种直播解密内容,其中一种可以检索像素缓冲区,另一种则不能。不知道是不是和m3u8文件的内容有关。

      可以检索像素缓冲区的内容,并获取缩略图。

      #EXTM3U
      #EXT-X-VERSION:2
      #EXT-X-KEY:METHOD=AES-128,URI="http://xxx.xxxx.net/key/xxx",IV=0xxxx
      #EXT-X-TARGETDURATION:10
      #EXT-X-MEDIA-SEQUENCE:11601809
      #EXTINF:10, no desc
      #EXT-X-PROGRAM-DATE-TIME:2019-05-28T11:00:10Z
      stream_index_20190331T232744_1_11601809.ts
      #EXTINF:10, no desc
      #EXT-X-PROGRAM-DATE-TIME:2019-05-28T11:00:20Z
      stream_index_20190331T232744_1_11601810.ts
      

      无法检索像素缓冲区的内容

      #EXTM3U
      #EXT-X-VERSION:8
      #EXT-X-INDEPENDENT-SEGMENTS
      
      #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audiod",NAME="en",DEFAULT=YES,AUTOSELECT=YES,LANGUAGE="eng",URI="Audio3_2.m3u8"
      
      #EXT-X-STREAM-INF:BANDWIDTH=3000000,AVERAGE-BANDWIDTH=3000000,VIDEO-RANGE=PQ,CODECS="dvh1.05.06",RESOLUTION=1920x1080,FRAME-RATE=50.000,AUDIO="audiod",CLOSED-CAPTIONS=NONE,HDCP-LEVEL=TYPE-1
      Video1_1.m3u8
      

      【讨论】:

        猜你喜欢
        • 2017-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 2023-04-05
        • 2021-02-15
        • 2014-03-09
        相关资源
        最近更新 更多