# CVLib **Repository Path**: osard/cv-lib ## Basic Information - **Project Name**: CVLib - **Description**: **第三方内存泄漏严重,无法正常使用** 此仓库暂时仅作为发布jitpack演示使用。 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-08-03 - **Last Updated**: 2022-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CVLib [](https://android-arsenal.com/api?level=21) [](https://jitpack.io/#com.gitee.osard/cv-lib) #### 介绍 基于javacv 1.5.6版本进行封装处理,引入此依赖时默认带入javacv 1.5.6相关的依赖 目前仅支持 图片组转Mp4视频文件,且必须保证存储的文件夹不会受到分区存储的干扰。 #### 依赖说明 ``` //主依赖必须和so库版本一致,用以避免出现问题,引入越多安装包越大 //主要依赖,必须引入 implementation 'com.gitee.osard.cv-lib:cvlib:0.1.1' //以下为so库,需要哪个引入哪个,至少引入一个,推荐“arm64-v8a 架构so库”能满足当前大部分手机的需求 //armeabi-v7a 架构so库 implementation 'com.gitee.osard.cv-lib:cvlib-arm:0.1.1' //arm64-v8a 架构so库 implementation 'com.gitee.osard.cv-lib:cvlib-arm64:0.1.1' //x86 架构so库 implementation 'com.gitee.osard.cv-lib:cvlib-x86:0.1.1' //x86_64 架构so库 implementation 'com.gitee.osard.cv-lib:cvlib-x86_64:0.1.1' ``` #### 依赖引入 **工程的build.gradle文件添加** ``` allprojects { repositories { google() mavenCentral() //jitpack 仓库 maven { url 'https://jitpack.io' } } } ``` **APP的build.gradle文件添加** ``` dependencies { ... implementation 'com.gitee.osard.cv-lib:cvlib:0.1.1' implementation 'com.gitee.osard.cv-lib:cvlib-arm64:0.1.1' } ``` **如果编译时出现.json文件冲突时,添加下面的代码到APP的build.gradle文件** ``` android { ... //解决JavaCV中文件重复问题,远程依赖时一般无需添加,工程依赖时必须添加 packagingOptions { pickFirst 'META-INF/native-image/android-x86_64/jnijavacpp/jni-config.json' pickFirst 'META-INF/native-image/android-x86_64/jnijavacpp/reflect-config.json' pickFirst 'META-INF/native-image/android-x86/jnijavacpp/jni-config.json' pickFirst 'META-INF/native-image/android-x86/jnijavacpp/reflect-config.json' pickFirst 'META-INF/native-image/android-arm64/jnijavacpp/jni-config.json' pickFirst 'META-INF/native-image/android-arm64/jnijavacpp/reflect-config.json' pickFirst 'META-INF/native-image/android-arm/jnijavacpp/jni-config.json' pickFirst 'META-INF/native-image/android-arm/jnijavacpp/reflect-config.json' } } ``` #### 提供的API **ImagesToVideoUtils.java工具类** ```Java /** * 图片组转视频 *
* 视频使用30帧率 * 每张图不停留 * 使用 “时间戳“ + ”.mp4” 作为文件名 * 固定MP4格式 *
* 保存的文件名相同时将会进行线程等待,且只会保留最后一个视频
*
* @param savePath 视频保存的文件夹路径,要求可正常访问,不能是分区存储限制的文件夹
* @param imgPaths 图片文件全路径列表,按照顺序放入
* @param videoWidth 生成视频的宽度
* @param videoHeight 生成视频的高度
* @param listener 生成视频成功的回调
* @param failListener 生成视频失败的回调
*/
public static void convertMp4(String savePath,
List
* 视频使用30帧率
* 每张图不停留
* 固定MP4格式
*
* 保存的文件名相同时将会进行线程等待,且只会保留最后一个视频
*
* @param savePath 视频保存的文件夹路径,要求可正常访问,不能是分区存储限制的文件夹
* @param saveName 文件名,未填写时使用 “时间戳“ + ”.mp4” 作为文件名
* @param imgPaths 图片文件全路径列表,按照顺序放入
* @param videoWidth 生成视频的宽度
* @param videoHeight 生成视频的高度
* @param listener 生成视频成功的回调
* @param failListener 生成视频失败的回调
*/
public static void convertMp4(String savePath,
String saveName,
List
* 每张图不停留
* 固定MP4格式
*
* 保存的文件名相同时将会进行线程等待,且只会保留最后一个视频
*
* @param savePath 视频保存的文件夹路径,要求可正常访问,不能是分区存储限制的文件夹
* @param saveName 文件名,未填写时使用 “时间戳“ + ”.mp4” 作为文件名
* @param imgPaths 图片文件全路径列表,按照顺序放入
* @param videoWidth 生成视频的宽度
* @param videoHeight 生成视频的高度
* @param frameRate 生成视频的帧率,每秒几张图
* @param listener 生成视频成功的回调
* @param failListener 生成视频失败的回调
*/
public static void convertMp4(String savePath,
String saveName,
List
* 视频固定MP4格式
*
* 保存的文件名相同时将会进行线程等待,且只会保留最后一个视频
*
* @param savePath 视频保存的文件夹路径,要求可正常访问,不能是分区存储限制的文件夹
* @param saveName 文件名,未填写时使用 “时间戳“ + ”.mp4” 作为文件名
* @param imgPaths 图片文件全路径列表,按照顺序放入
* @param videoWidth 生成视频的宽度
* @param videoHeight 生成视频的高度
* @param frameRate 生成视频的帧率,每秒几张图
* @param stayFrame 生成视频时停留的帧,即每张图额外停留的帧数,小于等于1时为不停留
* @param listener 生成视频成功的回调
* @param failListener 生成视频失败的回调
*/
public static void convertMp4(String savePath,
String saveName,
List