SiliCompressor对视频进行压缩处理后,视频变形或压缩失败

在使用SiliCompressor压缩视频时遇到了视频变形的问题,查看源码才知道,当没有传递outWidth和outHeight时程序会默认将视频的输出宽高分别设为640和360,没有根据原始视频的宽高比计算新的宽高。

解决方法:

首先从github上下载他的源码:SiliCompressor

然后修改MediaController.java的

public boolean convertVideo(final String sourcePath, File destDir, int outWidth, int outHeight, int outBitrate)

方法,重新计算宽高:

int resultWidth = outWidth > 0 ? outWidth : DEFAULT_VIDEO_WIDTH;
int resultHeight = outHeight > 0 ? outHeight : (resultWidth * originalHeight / originalWidth);

 

在测试时偶然的发现当resultWidth或resultHeight 为奇数会导致压缩失败,所以添加以下判断:

if (resultWidth % 2 != 0) {
    resultWidth--;
}
if (resultHeight % 2 != 0) {
    resultHeight--;
}

还有码率问题,默认的码率(bitrate)是450000,太小了,压缩之后的文件是小了,可是也太模糊了,推荐设置为1200000.

你可能感兴趣的:(android,SiliCompressor,android,视频压缩)