【问题标题】:How to play video without AVPlayer or Movie Player on iOS如何在 iOS 上播放没有 AVPlayer 或 Movie Player 的视频
【发布时间】:2012-06-20 08:08:37
【问题描述】:

我需要在 iOS 上播放自定义格式的视频,所有的渲染都是我自己完成的。

我目前的选择是 OpenGL ES,但它从分析结果中占用了太多 CPU(主要在 glTexImage2D 中)。

是否有更快的替代方案满足我的需要?

谢谢!

【问题讨论】:

  • 您是仅使用glTexImage2D() 来创建纹理,还是每帧都使用?
  • 我怀疑通过 OpenGL ES 在屏幕上显示视频是你的限制因素。在一个视频处理应用程序中,我能够从 iPhone 4 摄像头捕捉并以简单的 60 FPS 将其反馈到屏幕上:sunsetlakesoftware.com/2010/10/22/…。您的瓶颈必须在其他地方,很可能在您的解码程序中。
  • @genpfault 我对每一帧都使用 glTexImage2D,因为我知道这是将图像绘制到屏幕上的方式。我对 OpenGL 很陌生
  • @Brad 我正在阅读您的颜色跟踪示例代码。看来您还在 processNewCameraFrame 方法中使用了 glTexImage2D 。也许我做了一些错误的设置。我将尝试分析您的代码以找出差异。只是出于好奇,为什么 AVPlayer 运行得这么快?它根本不使用 OpenGL(从 OpenGL 仪器观察到)

标签: iphone ios video opengl-es


【解决方案1】:

AVPlayer 会很快,因为代码已经过优化,可以使用 GPU 加速和 llvm 优化进行解压缩。如果您想使用 OpenGL ES,您可能最终会使用 EAGLContext,创建纹理着色器并进行其他低级优化。我们的应用可以以高帧速率在视频之上合成多个图层,同时 CPU 负载非常低。

【讨论】:

  • 但是 AVPlayer 无法处理我的视频压缩格式。它看到这个类仅用于标准文件或流播放
【解决方案2】:

我猜你可以使用使用 egl 的 openmax 应用程序层集成,它将通过 egl 将视频流式传输到 opengl es 2.0,并且可以存储或显示到 opengl es 屏幕。如果我有 sn-p 可以帮助你:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多