2013-04-29 95 views
5

我正在研究一個項目,我們需要記錄渲染的OpenGL表面。 (例如,如果我們使用GLsurfaceView,我們需要記錄表面以及來自MIC的音頻)Android視頻錄製的OpenGL表面(GLSURFACEVIEW)

目前,我通過將視頻源設置爲VIDEO_SOURCE_GRALLOC_BUFFER來使用MediaRecorder API。

我使用以下sample作爲基礎代碼

我想知道....

  1. 這是正確的方式? 。有更好的替代嗎?
  2. 鏈接中給出的示例測試是記錄EGLSURFACE的音頻和視頻,但不能正確顯示。

可能是什麼原因?
任何幫助/指針真的很感激。

感謝,
薩蒂什南比亞

回答

6

您引用的代碼是不是一個樣,而是內部測試代碼,行使非公共接口。在未來的版本中,SurfaceMediaSource可能會改變或消失,並破壞您的代碼。

更新: 的Android 4.3(API 18)允許Surface inputMediaCodecEncodeAndMuxTest示例演示將OpenGL ES幀記錄到.mp4文件。

MediaRecorder類不接受Surface輸入,因此在您的情況下,您需要單獨錄製音頻,然後將其與新的MediaMuxer類相結合。

更新#2: 的Android 5.0(API 21)允許Surface input到MediaRecorder,這往往比MediaCodec方便得多。如果您需要使用MediaCodec,則有一個示例顯示了在「記錄總帳活動」中記錄OpenGL ES輸出的三種不同方式,即Grafika's

MediaProjection類也可用於屏幕錄製。

+0

嗨,感謝您的信息。目前我們正在進行降低FPS的glreadpixels。 – 2013-05-23 04:35:19