Android 使用自带的MediaCodec 框架进行本地视频压缩

原文出自
这是之前的项目
因为找不到原文作者 只是找到了一个转载的文章 所以就把链接放了进来 这个项目个人亲测是可以用的 速度也比较快 但是有一点点小问题 简单的做了一个说明
1.我把项目重新Fock了一下适配到了Androidx
2.经个人测试 当视频文件放到/storage/emulated/0/Android/data/xxx/file/xxx的时候压缩是不成功的 具体原因个人猜测可能是因为系统对data文件夹有限制 而放到/storage/emulated/0/Download/xxx/storage/emulated/0/Android/media/xxx/xxx下项目可以正常压缩
至于具体的原理学艺不精确实说不太明白 只能说这个压缩还是比较快的 压缩率大概是50%左右 比FFmpeg的上手难度要小 毕竟不需要再去集成so文件
最主要的代码其实就是这一块

 VideoCompress.compressVideoMedium(tv_input.getText().toString(), destPath, new VideoCompress.CompressListener() {
                    @Override
                    public void onStart() {
                    //开始压缩      
                    }

                    @Override
                    public void onSuccess() {
                      //压缩成功
                    }

                    @Override
                    public void onFail() {
                        //应该是压缩失败 但是我没触发过
                    }

                    @Override
                    public void onProgress(float percent) {
                       //压缩的进度条
                    }
                });

使用方法 可以直接把项目里面的videocompress这个module拿出来复制到自己的项目里 剩下的看下demo就好了
新的Demo地址
如果哪里写的不对 希望大佬予以指正

你可能感兴趣的:(android,视频编解码)