Sar*_*eph 6 video opengl-es avfoundation ios tvos
之前已经讨论过如何循环AVPlayer播放视频项目,但没有"解决方案"足够无缝以提供无延迟的视频循环.
我正在开发一个tvOS应用程序,它的一个视图背景中有一个高质量的10秒"风景"剪辑,只需重新启动它的AVPlayer"标准"方式(订阅NSNotification捕获它)太疯狂了注意并减损用户体验.
似乎实现真正无缝循环的唯一方法是在较低级别(在OpenGL中)手动管理帧...
尽管我已尽最大努力阅读此内容,并且作为操纵视频流水线的新手,我还没有达到一个易于理解的解决方案.
我知道存在外部库可以更容易地执行此行为; 最值得注意的是GPUImage.但是,我正在开发的应用程序是针对tvOS的,因此很难使用相当多的第三方iOS库,包括GPUImage.我遇到的另一个库是AVAnimator,它为轻量级动画视频提供了强大的功能,但不能用于.H264中编码的源素材的密集,高质量视频剪辑.
到目前为止,我最接近的是Apple自己的AVCustomEdit源代码,但这主要涉及静态生成"过渡",虽然无缝,但过于复杂,我无法辨别如何使其执行简单的循环功能.
如果任何人都可以在AVPlayer较低级别操作,即使用图像处理/缓冲区(或者不依赖于外部库的iOS开发),我会非常有兴趣知道如何开始.
m.e*_*tka 16
流式传输视频时遇到同样的问题.第一次播放后,第二次加载视频时出现黑屏.我通过向前5ms寻找视频摆脱了黑屏.它几乎形成了一个无缝的视频循环.(斯威夫特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()
}
Run Code Online (Sandbox Code Playgroud)
如果视频很短(几秒钟),您可以将每一帧提取为 CGImage 并使用 CAKeyframeAnimation 对其进行动画处理。我正在使用这种技术在我的应用程序上播放 GIF 图像,并且动画非常流畅。
| 归档时间: |
|
| 查看次数: |
8204 次 |
| 最近记录: |