我设法写了一个录像演示,我的实现与Grafika的ContinuousCaptureActivity相同。 在ContinuousCaptureActivity.java中,作者在UI线程中运行的SurfaceCreated中创建egl对象,并在UI线程中调用drawFrame。他在drawFrame中做了2件事情,画出画面并将数据推送给编码器。使用MediaCodec录制720p视频,但编码视频的fps太低
在这里看到的代码:ContinuousCaptureActivity
因为我设置编码视频尺寸为1280 * 720大,摄像头预览不顺畅和目标视频的FPS低。 我打算创建一个新线程来完成编码工作,但我不知道如何处理opengl的多线程。谁可以提供一些建议?
添加:我发现Texture2dProgram的drawFrame使用GLES20.glDrawArrays,请问GLES20.glDrawElements会获得更好的性能吗?
setRecordHint(true)在某些设备上导致异常,所以我放弃它。我终于使用了480 * 848的视频尺寸,视频的颜色也不错。 – dragonfly
请看看这个: http://stackoverflow.com/questions/32823341/use-opengl-es-to-render-video-to-surfaceview-but-concerned-about-more-overhead – dragonfly
嗨,请看看这个,我有更新的问题: http://stackoverflow.com/questions/30668846/record-video-with-mediacodec-and-mediamuxer-but-the-bitrate-and-framerate-are-i – dragonfly