【发布时间】:2012-08-06 15:19:22
【问题描述】:
在我的应用程序中,我应该以不寻常的方式播放视频。 诸如用于特殊用途的交互式播放器之类的东西。
这里的主要问题:
- 视频分辨率可以从 200*200px 到 1024*1024 px
- 我应该能够将速度从 -60 FPS 更改为 60 PFS(在这种情况下,视频的播放速度应根据所选速度变慢或加快,负数表示视频应向后播放)
- 我应该在视频上绘制线条和对象,并用图像对其进行缩放。
- 我应该能够缩放图像并在其内容超过屏幕大小时对其进行平移
- 我应该能够更改此视频的亮度、对比度和反转颜色
现在我正在做下一件事:
- 我将视频拆分为 JPG 帧
- 为每秒 N 次创建计时器(播放速度控制)
- 每个计时器都在使用 OpenGL 绘制新纹理(下一个 JPG 帧)
- 使用 OpenGL ES 转换(平移、缩放)进行缩放和平移播放
在我使用 320*240 像素之前,一切看起来都很好,但如果我使用 512*512 像素,我的播放率就会下降。也许是计时器行为问题,也许是 OpenGL。有时,如果我试图以高播放率(超过 10-15 FPS)打开大纹理,应用程序会因内存警告而崩溃。
解决此问题的最佳做法是什么?我应该挖什么方向?也许 cocos2d 或其他游戏引擎对我有帮助? Mb JPG 不是纹理的最佳解决方案,我应该使用 PNG 或 PVR 还是其他?
【问题讨论】:
-
为什么要转换成任何类型的图像?为什么不将原始帧作为纹理上传?将帧压缩为 JPG 或 PNG 图像对于视频来说会非常昂贵。
-
我在播放视频之前准备好这些 JPG 帧。我的意思是,我只是使用从文件中创建的 JPG。或者你说,我可以为我的纹理使用另一种(最有效的)格式?
标签: ios performance ipad video opengl-es