【问题标题】:Rendering Video to an OpenGL texture in iOS with scrubbing使用擦洗将视频渲染到 iOS 中的 OpenGL 纹理
【发布时间】:2012-05-02 15:56:58
【问题描述】:

我已经使用下面的方法iOS4: how do I use video file as an OpenGL texture?在openGL中成功获取视频帧渲染。

但是,当您想要擦洗(跳转到播放中的某个点)时,此方法似乎失败了,因为它仅按顺序为您提供视频帧。

有谁知道可以成功实现这种行为的方法吗?

【问题讨论】:

  • Stephen 建议在他对类似问题的回答中使用timeRange 属性:stackoverflow.com/a/5508955/19679,但我认为如果不重新创建 AVAssetReader 就无法使用它。
  • AVAssetReader 是“一次性”的,必须重新创建才能从新位置读取(需要登录才能读取):devforums.apple.com/message/383762
  • 您确实需要重新创建 AVAssetReader,这似乎发生得足够快,不会对应用程序产生负面影响

标签: ios opengl-es


【解决方案1】:

实现此目的的一种简单方法是将视频导出为一系列帧,将每个帧存储为 PNG,然后通过查看特定偏移量的 PNG 来“清理”。这使您可以在图像流中进行随机访问,但代价是首先解码整个视频并将所有数据保存在磁盘上。这还涉及在访问每个帧时对其进行解码,这会占用 CPU,但现代 iPhone 和 iPad 可以处理它,只要您不做太多其他事情。

【讨论】:

  • 我不知道你有没有算过,但是如果PNG是自然场景,基本上是未压缩的,所以10分钟的1024x1024视频将是10分钟*60秒*30fps*1024*1024* 4/1e9 - 即 75 GB 你必须存储在某个地方。所以这不会发生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 2014-07-22
相关资源
最近更新 更多