请尊重原创,转载请注明出处:http://blog.csdn.net/mabeijianxi/article/details/63335722()
说明:
本库1.0是在秒拍开源库上做的二次开发,2.0已经重写底层库,从C到Java全面开源,旨在开发简单好用高效的视频录制库。本篇文档只涉及Java层次逻辑,正在业余修炼c语言与JNI相关的东西,如果有幸写第二篇文章,那时将对其做更深入的剖析,如FFmpeg编译、JNI相关代码编写。ps:利用FFmpeg玩转Android视频录制与压缩(二)现已完成
效果图:
功能描述:
利用FFmpeg录制定制化的视频,并可对其定制化的压缩处理。如设置视频尺寸、设置码率、码率模式、帧率、视频质量等级、压缩速度等等,当然这些只是暂时的,后期会继续维护。
项目地址:
https://github.com/mabeijianxi/small-video-record.
原理讲解:
基本过程就是调用系统camera与AudioRecord得到视频和音频的byte回调,然后出入配置好参数FFmpeg,结束后得到目标视频。
1、配置Camera参数:
- 首先我们录制的视频是竖着的,所以需要旋转90°(默认是横屏录制):camera.setDisplayOrientation(90); 然后设置显示控件:camera.setPreviewDisplay(mSurfaceHolder); 帧率设置:这个参数是可传入的,但是每个摄像头所支持的大小是不一样的,所以你传入maxFrameRate我会再校验一遍,如果当前摄像头支持此帧率那么就使用,如果不支持那么就选择个最接近且小于它的,如果你值很小有可能还是找不到,这时就选择最小的一个,具体算法如下:
List<Integer> rates = mParameters.getSupportedPreviewFrameRates();
if (rates != null
List<Integer> rates = mParameters.getSupportedPreviewFrameRates();
if (rates != null