2

我想播放视频并使用 Core Image 过滤器对其进行处理。我有以下设置:

  • 视频作为AVAsset
  • 用于AVPlayer控制视频播放
  • AVAsset传递给AVPlayerItem玩家
  • 核心图像过滤器是使用AVMutableVideoComposition初始化init(asset:applyingCIFiltersWithHandler:)并分配给播放器项目的
  • anAVPlayerItemVideoOutput用于获取处理后的帧copyPixelBuffer(forItemTime:itemTimeForDisplay:)

这按预期工作。但是,我在使用 向后搜索播放器时观察到奇怪的行为seek(to:completionHandler:)AVPlayerItemVideoOutput突然停止提供新的像素缓冲区并hasNewPixelBuffer(forItemTime:)返回false但这仅在视频合成中应用的过滤器更昂贵时才会发生。当使用非常简单的过滤器或根本不使用过滤器时,搜索按预期工作。

受此技术说明的启发,我发现了一种解决方法,即在完成后将合成重新分配给播放器项目seek,但这感觉非常糟糕——尤其是因为它适用于简单的过滤器管道。

以前有人遇到过吗?有什么我需要配置不同的吗?

4

0 回答 0