使用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播放
4.0 其他知识
EGL
OpenGL
MediaCodec
MediaCodec参照资料
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!