2011-11-25 115 views
2

我在做安卓游戏。(使用andengine) 我需要记录游戏画面。 这不是为了制作宣传视频,而是让游戏玩家查看他们的游戏。 我的应用程序应该自己记录视频。 所以我不能解决这个问题,在市场上使用可用的录音应用程序。 我已经检查下面的代码。android支持比glreadpixels更好的方法吗?

http://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/ScreenCaptureExample.java?spec=svn66d3057f672175a8a21f9d06e7a045942331f65c&r=66d3057f672175a8a21f9d06e7a045942331f65c

它非常好.. 但我想记录的游戏视频,而不是一个屏幕截图。

至少我需要24fps的流畅重播,但如果我使用glreadpixels,我可以在我的xoom设备上获得5 fps。 我搜索了各种网站来解决这个优化问题。大多数人说glreadplxels是太慢,不能记录视频。

http://www.gamedev.net/topic/473794-glreadpixel-takes-tooooo-much-time/

他们建议glcopyteximage2d代替glreadpixels。 ,因为glcopyteximage2d比glreadpixels快得多。 但我找不到如何在引擎中使用glcopyteximage2d。 甚至有人说android opengl ES不支持glcopyteximage2d。

也许存在另一种方法来记录流畅的视频。 它是android设备的读帧缓冲。 使用这种方法在市场上的大部分录音应用程序。但这些应用程序需要root权限来抓取framebuffer。 我读过一些消息,姜饼后,android将支持从suface_flinger捕获屏幕。

但我无法找到如何使用没有root权限的framebuffer。 T_T

这些是我的猜测解决方案。

  1. 使用另一个比glreadpixels更好的速度的opengl API。

  2. 找到一些android API可以获得没有root权限的framebuffer。 (也许我可以访问android SURFACE_FLINGER ??)

  3. 绘制另一个离屏纹理来记录视频。

但我不知道如何实现这些方法。 哪种方法是正确的? 你有一个示例代码来记录android的视频? 请帮我解决这个问题。 如果您知道任何其他方法,那将会有所帮助。

任何帮助将不胜感激

回答