已经有some discussion之前关于如何循环播放 AVPlayer
的视频项目,但没有“解决方案”足够无缝以提供视频的无延迟循环 .
我正在开发一个 tvOS 应用程序,它在其中一个 View 的背景中有一个高质量的 10 秒“风景”剪辑,并且只需以“标准”方式重新启动它的 AVPlayer(订阅 NSNotification
来捕捉它)过于神经质以至于不会注意到并且会影响用户体验。
似乎实现真正无缝循环的唯一方法是在较低级别(在 OpenGL 中)手动管理帧...
尽管尽了最大努力阅读这篇文章,并且作为操纵视频管道的新手,我还没有足够接近一个可理解的解决方案。
我知道存在外部库可以更轻松地执行此行为;最值得注意的是 GPUImage .但是,我正在开发的应用程序是针对 tvOS 的,因此很难使用现有的很多第 3 方 iOS 库,包括 GPUImage。我遇到的另一个图书馆是 AVAnimator ,它为轻量级动画视频提供了强大的功能,但不适用于以 .H264 编码的源素材的密集、高质量视频剪辑。
到目前为止我最接近的是Apple自己的AVCustomEdit源代码,然而,这主要涉及“过渡”的静态生成,尽管它是无缝的,但对我来说太复杂了,无法辨别如何使其执行简单的循环功能。
如果有人能分享在较低级别操作 AVPlayer
的经验,即图像处理/缓冲区(或不依赖外部库的 iOS 开发),我将非常感兴趣了解如何开始。
最佳答案
我在流式传输视频时遇到了同样的问题。第一次播放后,第二次加载视频时出现黑屏。我通过提前 5 毫秒搜索视频摆脱了黑屏。它制作了几乎无缝的视频循环。 ( swift 2.1)
// Create player here..
let player = AVPlayer(URL: videoURL)
// Add notification block
NSNotificationCenter.defaultCenter().addObserverForName(AVPlayerItemDidPlayToEndTimeNotification, object: player.currentItem, queue: nil)
{ notification in
let t1 = CMTimeMake(5, 100);
player.seekToTime(t1)
player.play()
}
关于ios - 无缝循环 AVPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285826/