README.md

    XVideo

    xv api

    一个能自动进行压缩的小视频录制库

    关于我

    github csdn

    特征

    • 支持自定义小视频录制时的视频质量。

    • 支持自定义视频录制的界面。

    • 支持自定义最大录制时长和最小录制时长。

    • 支持自定义属性的视频压缩。

    演示(请star支持)

    Demo下载

    Github

    xvideo_download.png

    添加Gradle依赖

    1.在项目根目录的 build.gradle 的 repositories 添加:

    allprojects {
         repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }

    2.在主项目的 build.gradle 中增加依赖。

    dependencies {
        ···
        implementation 'com.github.xuexiangjys:XVideo:1.0.2'
    }

    3.进行视频录制存储目录地址的设置。

    /**
     * 初始化xvideo的存放路径
     */
    public static void initVideo() {
        XVideo.setVideoCachePath(PathUtils.getExtDcimPath() + "/xvideo/");
        // 初始化拍摄
        XVideo.initialize(false, null);
    }

    视频录制

    1.视频录制需要CAMERA权限和STORAGE权限。在Android6.0机器上需要动态获取权限,推荐使用XAOP进行权限申请。

    2.调用MediaRecorderActivity.startVideoRecorder开始视频录制。

    /**
     * 开始录制视频
     * @param requestCode 请求码
     */
    @Permission({PermissionConsts.CAMERA, PermissionConsts.STORAGE})
    public void startVideoRecorder(int requestCode) {
        MediaRecorderConfig mediaRecorderConfig = MediaRecorderConfig.newInstance();
        XVideo.startVideoRecorder(this, mediaRecorderConfig, requestCode);
    }

    3.MediaRecorderConfig是视频录制的配置对象,可自定义视频的宽、高、时长以及质量等。

    MediaRecorderConfig config = new MediaRecorderConfig.Builder()
            .fullScreen(needFull)  //是否全屏
            .videoWidth(needFull ? 0 : Integer.valueOf(width)) //视频的宽
            .videoHeight(Integer.valueOf(height))  //视频的高
            .recordTimeMax(Integer.valueOf(maxTime)) //最大录制时间
            .recordTimeMin(Integer.valueOf(minTime)) //最小录制时间
            .maxFrameRate(Integer.valueOf(maxFrameRate)) //最大帧率
            .videoBitrate(Integer.valueOf(bitrate)) //视频码率
            .captureThumbnailsTime(1)
            .build();

    视频压缩

    使用libx264进行视频压缩。由于手机本身CPU处理能力有限的问题,在手机上进行视频压缩的效率并不是很高,大约压缩的时间需要比视频拍摄本身的时长还要长一些。

    LocalMediaConfig.Builder builder = new LocalMediaConfig.Builder();
    final LocalMediaConfig config = builder
            .setVideoPath(path)  //设置需要进行视频压缩的视频路径
            .captureThumbnailsTime(1)
            .doH264Compress(compressMode) //设置视频压缩的模式
            .setFramerate(iRate)  //帧率
            .setScale(fScale) //压缩比例
            .build();
    CompressResult compressResult = XVideo.startCompressVideo(config);

    混淆配置

    -keep class com.xuexiang.xvideo.jniinterface.** { *; }

    特别感谢

    https://github.com/mabeijianxi/small-video-record

    联系方式

    qq交流群

    项目简介

    一个能自动进行压缩的小视频录制库

    发行版本 4

    修复在视频录制时,点击home键导致出现黑屏的问题

    全部发行版

    贡献者 1

    xuexiangjys @xuexiangjys

    开发语言

    • C 83.8 %
    • Java 10.8 %
    • C++ 4.7 %
    • CMake 0.5 %
    • Objective-C 0.3 %