难得有点空闲,就想到了微信经常用的聊天是用什么做的,因为之前自己是做系统Camera的所以就看了一眼,就能发现,微信聊天使用的不是原生相机,那么问题来了,微信使用的是什么相机?
仔细一想,不同的手机平台原生相机相同的时间录制视频大小,码率大小,帧率大小都不可控,为了统一视频格式微信自己对视频进行自己生成,倒不如自己去进行视频的合成,想到了之前学习的
FFMPEG,FFMPEG其功能非常强大(图片和昌视频,视频进行抽帧等等功能)可以对输入的视频流进行独立的合成,不用受用于系统厂家原生相机的限制。原理其实非常简单,就是使用系统原生
的相机进行预览,然后将预览流输入到FFMPEG中进行视频的合成,这样的话就属于借用了原生系统的相机拿到数据流,自己对视频进行合成。
原理以及架构分析,可以下载代码自行研究,其中RecoderLib 可以作为单独的lib库
项目效果如下(gifb包含了拍照和切换摄像头操作):