Hi!请登陆

android视频压缩库fishwjy/VideoCompressor与yellowcath/VideoProcessor 的比较

2020-10-17 102 10/17

android压缩视频的传统方式一般采用ffmpeg操作库,但是由于ffmpeg需要比较专业的技能,所以在android 4.4以后提供了MediaCodec类来进行视频操作,当然也支持视频压缩功能。

封装MediaCodec是个麻烦的事情,好在有人已经帮忙弄好。这里提供两个大神库,方便大家对比使用。

fishwjy/VideoCompressor

android视频压缩库fishwjy/VideoCompressor与yellowcath/VideoProcessor 的比较

这是一个外国人写的基于MediaCodec的库,Demo非常简单,支持高、中、低三个质量的压缩。下面贴一段低质量压缩(压缩率很高)的使用代码:

VideoCompressTask task = VideoCompress.compressVideoLow(tv_input.getText().toString(), destPath, new VideoCompress.CompressListener() {
                @Override
                public void onStart() {
                    //Start Compress
                }
                @Override
                public void onSuccess() {
                    //Finish successfully
                }
                @Override
                public void onFail() {
                    //Failed
                }
                @Override
                public void onProgress(float percent) {
                    //Progress
                }
            });

VideoCompressor测试说明显示,能够将 168MB(00:01:06)的视频压缩至 11MB ,耗时大概 60s。

yellowcath/VideoProcessor

android视频压缩库fishwjy/VideoCompressor与yellowcath/VideoProcessor 的比较

yellowcath/VideoProcessor 是一个国人写的库,在api方面比较丰富,且是一个多功能支持视频剪辑的库。有兴趣的话可以去github上面学习:https://github.com/yellowcath/VideoProcessor

该库的调用方式也很友好:

VideoProcessor.processor(context)
            .input(inputVideoPath)
            .output(outputVideoPath)
            .outWidth(outWidth)
            .outHeight(outHeight)
            .process();

其中利用进度回调进行进度控制,比如何时完成。笔者在实践中发现,竟然会多次调用100%进度,感觉这是这个库的一点瑕疵。

参数方面(与ffmpeg比较):

  • 体积小 :编译后的aar只有262K,ffmpeg一个so就7、8M,精简之后也差不多还有一半大小
  • 速度快 :在huaweiP9上压缩(1080P 20s 20000k -> 720p 2000k)
  1. 耗时

VideoProcessor 13.3s
ffmpeg 172s
ffmpeg(ultrafast) 74s

我们看出,相对于ffmpeg的压缩方式,yellowcath/VideoProcessor还是具备相当的优势。

二者比较

实际测试中发现 fishwjy/VideoCompressor 比 yellowcath/VideoProcessor 压缩效率会高很多,而且能够有效将视频压缩,而yellowcath/VideoProcessor 压缩后不太理想,需要自己计算压缩比才行。

推荐大家在常规压缩中使用fishwjy/VideoCompressor 这个库。

相关推荐