使用GLSurfaceView+MediaCodec播放音视频

此部分仍有相关知识未理清,暂时仅用作记录,后续需要完善

1. 创建GLSurfaceView以及自定义Render

   GLSurfaceView无特殊,自定义Render这里需要留意需要公开方法返回一个Surface.
   Surface的创建与通过GLSurfaceView显示相机画面的套路一模一样,
   1.1 创建OES纹理ID
   1.2 绑定OES_ID到 SurfaceTexture上
   1.3 SurfaceTexture设置setOnFrameAvailableListener,用以调用刷新glSurfaceView.requsetRender()

2. MediaCodec使用(音视频使用相同策略)

   2.2 初始化Extractor
   2.2 创建MediaCodec
   2.3 设置Surface到MediaCodec中,开始解码
   2.4 将Extractor获取的数据压入解码器的缓冲区,将缓冲区的数据拉取渲染,释放当前缓冲区
   2.5 循环2.4步,直至获取EOS结束标志
   2.6 结束

3. 效果

   将相机FBO纹理通过EGL(EGLSurface)和MediaCodec编码后生成mp4文件,然后使用GLSurface+MediaCodec播放

GLSurfaceView+MediaCodec

4.0 其他知识

EGL
OpenGL
MediaCodec
MediaCodec参照资料


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!