-
Notifications
You must be signed in to change notification settings - Fork 729
Home
马北剑西 edited this page Jul 7, 2017
·
1 revision
主要是用于视频录制,与视频压缩,当然还支持以 FFmpeg 命令的形式调用,这样就将拥有 FFmpeg 的大部分功能!
你需要拥有ndk环境、AndroidStudio版本大于2.2、AndroidStudio装有Cmake插件。
small-video-record2和small-video-record是两个不同的项目,且不兼容,不过使用方法差不多。
compile 'com.mabeijianxi:small-video-record2:2.0.1@aar'
<activity android:name="com.mabeijianxi.smallvideorecord2.MediaRecorderActivity"/>
- 如果你是用的是 compile 'com.mabeijianxi:small-video-record2:2.0.0@aar' 这种远程方式依赖,那么2.0.0 正式版以后如果采用手动复制 SO 的做法,避免与大家项目不兼容,具体做法是进入本项目 "all_lib" 文件夹,选择你喜欢的架构然后 copy 到你主 module 的 jniLibs 下。
- 如果你采用直接下载源码导入 Module 的话不必如此,你需要做的是根据你喜好删除或保留源码 jniLibs 目录下的 so 文件夹,并修改 gradle 的 abiFilters 与之对应即可。比如你 jniLibs 目录下只剩 armeabi 文件夹了,那么就应该修改为:abiFilters "armeabi" 。
- 本工程用的 FFmpeg 是精简版,如果你觉得不够用或者想定制化那么可以前往https://github.com/mabeijianxi/FFmpeg4Android下载我编译好的一个增强版 FFmpeg SO 库,或者根据里面文档运行脚本重新定制即可。
public static void initSmallVideo() {
// 设置拍摄视频缓存路径
File dcim = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
if (DeviceUtils.isZte()) {
if (dcim.exists()) {
JianXiCamera.setVideoCachePath(dcim + "/mabeijianxi/");
} else {
JianXiCamera.setVideoCachePath(dcim.getPath().replace("/sdcard/",
"/sdcard-ext/")
+ "/mabeijianxi/");
}
} else {
JianXiCamera.setVideoCachePath(dcim + "/mabeijianxi/");
}
// 初始化拍摄
JianXiCamera.initialize(false,null);
}
// 录制
MediaRecorderConfig config = new MediaRecorderConfig.Buidler()
.fullScreen(false)
.smallVideoWidth(360)
.smallVideoHeight(480)
.recordTimeMax(6000)
.recordTimeMin(1500)
.maxFrameRate(20)
.videoBitrate(600000)
.captureThumbnailsTime(1)
.build();
MediaRecorderActivity.goSmallVideoRecorder(this, SendSmallVideoActivity.class.getName(), config);
// 选择本地视频压缩
LocalMediaConfig.Buidler buidler = new LocalMediaConfig.Buidler();
final LocalMediaConfig config = buidler
.setVideoPath(path)
.captureThumbnailsTime(1)
.doH264Compress(new AutoVBRMode())
.setFramerate(15)
.setScale(1.0f)
.build();
OnlyCompressOverBean onlyCompressOverBean = new LocalMediaCompress(config).startCompress();