一款视频录像机,支持AudioRecord录音、MediaCodec输出AAC、MediaMuxer合成音频视频并输出mp4,支持自动对焦、屏幕亮度调节、录制视频时长监听、手势缩放调整焦距等git
目前包含基本的音频、视频录制与合成操做,功能以下:github
未实现:ide
手动点击屏幕聚焦缩放预览画面测试
横屏预览、录制时上下滑动屏幕左半部分调节屏幕亮度、右半部分调节音频音量编码
预览滤镜贴纸、美颜等其它滤镜功能code
音频录制时回声消除、静音降噪cdn
未实现缘由 : 该部份内容须要对OpenGL ES绘制原理、音频数据存储、手势滑动处理、Camera相机聚焦等须要有深刻理解视频
先后摄像头切换 目前测试的华为P8max上由后置切换为前置时,始终报setParameters failed,通过逐行代码验证,是因为设置parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO) 自动对焦致使,部分华为、三星手机前置摄像头不容许聚焦(目前自有测试机如此,若是有华为、三星手机测试可行欢迎提供型号)blog
自动对焦失效问题 目前项目中自动对焦采用的是 : parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);遇到的问题就是移动屏幕时对焦会屏幕闪烁, 包括Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO;因手动点击聚焦未实现,此处未深刻研究适配全部机型,欢迎测试其它机型并给出有效方案!图片
设置Camera预览大小、图片大小致使setParameters failed 目前项目CameraManager管理类中,经过获取手机设备支持的预览大小、图片大小,取最适合当前预览的尺寸,解决上述问题;通常报setParameters failed须要检查 对Camera.Parameters设置的参数仔细检查
MediaCodec.queueInputBuffer参数中的时间戳问题 以前对该处时间戳计算公式理解有误,致使录制的视频始终没法播放,一帧音频帧大小 int size = 采样率 x 位宽 x 采样时间 x 通道数,此处时间戳单位时微秒, pcm录制的原始单位是bit,双声道16bit,采用byte[]、short[]装载数据须要进行换算,1 byte = 8 bit,项目中有详细注释,欢迎查证!
目前该项目直接是以单个Activity承载预览、录制、闪光灯、切换镜头、黑白滤镜、手势缩放、SeekBar显示缩放进度等功能,library提供的是aop权限申请库
初始预览 :
闪光灯 :
滤镜:
录制中 :
后置切换前置 :
播放水印视频 :
欢迎加入星球一块儿讨论项目、研究新技术,共同成长!