美文网首页Android开发经验谈Android开发Android技术知识
仿微信相机拍摄预览 MediaCodec硬编解码

仿微信相机拍摄预览 MediaCodec硬编解码

作者: 三木仔 | 来源:发表于2018-09-27 14:02 被阅读17次

    尝试利用Android仿照微信相机完成一个拍摄录制短视频的功能:

    1. 利用Android camera 和 SurfaceView实时预览
    2. 手动对焦、自动对焦、拍摄预览照片
    3. 利用MediaCodec 硬编码成H264视频数据
    4. 使用AudioRecord 录制音频数据
    5. 利用MediaMuxer 混合AAC和H264打包成MP4文件
    6. 利用MediaExtractor 分离MP4和MediaCodec硬解码、TextureView播放视频数据

    网上也有很多仿微信相机的应用,不过基本上是使用 MediaRecord 录制视频,相对比较简单。与他们不同的是,这里我更想学习整个 MP4 的录制流程,从采集、编码、封包成 MP4 到解析、解码、播放,这更能够加深对音视频的理解和后续的学习。

    附带的源码,具体的源码分析可以看《仿微信相机 利用 MediaCodec API 从录制 MP4 到解析播放》

    最后完成的效果如下:


    image.png

    存在很多不足,主要是学习使用,并且在github上不同的分支有实现不同的功能,如利用opengl增加水印等。


    增加水印.png

    这部分是在以上的基础上进行修改的:

    1. 利用GLSurfaceView进行预览
    2. 增加FBO将外部纹理绘制成普通纹理,以及blend混合增加水印绘制层,同时可以控制到预览层还是录制层
    3. 借助GLSurfaceView的EGL环境,共享EGLContext、和MediaCodec创建输出的Surface结合,将GLSurfaceView的纹理,绘制到MediaCodec创建的Surface中,实现录制视频功能

    OpenGLES mediaCodec 预览录制视频 添加水印

    相关文章

      网友评论

      • 米银:博主 ,为什么预览播放没声音

      本文标题:仿微信相机拍摄预览 MediaCodec硬编解码

      本文链接:https://www.haomeiwen.com/subject/xdjwgftx.html