Android 音视频录制概述

相比于IOS健全的多媒体库,Android的多媒体库就显得非常的发育不全了,视频录制在安卓手机上是一个比较有挑战性的问题,当然我这里说的并不是那种用MediaRecorder做视频录制,那种说实话太low,很固化,灵活性为0。但是现在应用市场音视频的app比比皆是,视频录制在这类音视频应用中又是一种必须,虽然,安卓提供的音视频库是那么的“不堪”,但是,录制视频还是可行的。

抛开刚刚说的MediaRecorder不谈,一个安卓录制视频app中一共有两种不同的录制方式,但基本原理都是一样,都是通过视频的编码器将摄像头数据编码成视频文件。第一种方式叫做buffer录制,第二种是surface录制。buffer录制是将摄像头数据传递给编码器encode,然后在output出来编码出来的数据,最后写入视频文件。surface录制是将摄像头数据通过egl和opengl在编码器的surface中绘制,然后获取surface绘制的buffer,最后写入视频文件。对于音频的录制,buffer和surface方式的音频录制都一样,所以下面我只会在surface录制中讲音频录制。

可能有些小伙伴很疑惑,为什么一个app中视频录制需要两种方式都要呢?这就是因为繁杂的安卓机器问题了,虽然绝大部分手机支持两种录制,但是某些vivo/魅族手机却只支持buffer录制,当然从效率性能各方面上,surface录是比较好的,但遇到不支持的手机,也只能用buffer录制了。

视频录制分为两篇文章来说。在看这两篇文章之前,当然需要一些技术准备啦。首先需要对Android多媒体库有一些了解,其中关键的几个类是MediaCodec(编解码器),MediaMuxer(音视频合成器)等,其次需要一定OpenGL知识,然后对EGL需要一定的了解,知道它的基本使用流程(至少也要知道EGL是干什么的吧),最后录制过程中会涉及到很多线程逻辑,为了与时俱进,文章中的线程逻辑都是基于Java5的多线程模型Callable, Lock, Condititon这些类请务必要熟悉,此外摄像头Camera和GLSurfaceView/SurfaceView这些安卓基础也是必备的,这些知识都在视频录制的过程中用到。

另外的,我会在第一篇surface录制中讲述音频相关的录制,由于在buffer录制中音频录制是一样的,所以在buffer录制中就不再讲述音频的录制,只详述视频数据的录制。

第一篇Android音视频录制(1)——Surface录制
第二篇Android音视频录制(2)——Buffer录制

另外,还有好东西,Android全关键帧视频录制——视频编辑必备

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值