MediaCodec.configure(MediaFormat format,Surface surface, MediaCrypto, crypto, int flags)
方法需要传一个surface参数。
- 如果不是输出视频流,或者将输出是ByteBuffer,就传null
- 如果你不对视频帧任何编辑,可以直接传
SurfaceView.getHolder().getSurface()获得的surface。这时候用SurfaceView即可,不需要用GLSurfaceView- 如果你想要编辑视频帧,就需要获取和编辑纹理SurfaceTexture。这时候传入的surface就是通过Surface(SurfaceTexture surfaceTexture)函数构造的。获取SurfaceTexture的方法如下:
(1)在使用TextureView的情况下,可以通过TextureView.getSurfaceTexture() 方法获得SurfaceTexture 代码示例
(2)在使用GLSurfaceView的情况下,可以通过GLES20.glGenTextures()获得texture,然后构造一个SurfaceTexture(传入 int texId) 代码示例