fei*_*sal 7 android decoder opengl-es-2.0 mediacodec
当我将视频解码到表面时,我想将我想要的帧保存为位图/ jpeg文件.我不想在屏幕上绘图,只想将SurfaceTexture的内容保存为图像文件.
fad*_*den 10
你必须渲染纹理.
如果它是正常纹理,并且您使用GLES 2或更高版本,则可以将其附加到FBO并直接从中读取.A SurfaceTexture由" 外部纹理 "支持,并且可能采用GL驱动程序不支持全套操作的格式,因此您无法执行此操作.您需要渲染它,并读取结果.
FWIW,您保存框架的方式可能会对性能产生重大影响.一个完整的示例演示使用MediaExtractor,MediaCodec,glReadPixels(),和PNG文件的创建是到现在为止在bigflake(ExtractMpegFramesTest).
aka*_*ppi 10
我最近在Android平台上一直在关注这个问题.总结各种选项以及它们为何不适用.
glReadPixels()Android Java编码器目前唯一的选择.据说很慢.从帧缓冲区读取,而不是纹理(因此必须首先将纹理渲染到内部帧缓冲区,除非有人想要记录屏幕本身).好的.有事要工作.
EGL_KHR_image_base()一个扩展,似乎在本机(NJK)级别上可用,但在Java中不可用.
glGetTexImage()看起来很有前途但在OpenGL 2.0 ES版本中不可用.
像素缓冲区对象可能是"正确"的做事方式,但需要OpenGL 3.0 ES(即选择Android 4.3+设备).
我不是说这会添加其他地方无法提供的任何信息.但是有这么多看似相似的选择(仍然无法发挥作用)令人困惑.我不是OpenGL专家,所以上面的任何错误都很乐意得到纠正.
| 归档时间: | 
 | 
| 查看次数: | 13565 次 | 
| 最近记录: |