1 Android视频压缩框架
地址:https://github.com/microshow/RxFFmpeg
2 问题
用ffmpeg进行压缩的时候,我们需要采用ffmpeg命令压缩官网给的命令如下
String text = "ffmpeg -y -i /storage/emulated/0/1/input.mp4 -vf boxblur=25:5 -preset superfast /storage/emulated/0/1/result.mp4";
支持libx264编码库,可以使压缩后的视频体积变的极小,清晰度还保持着很高清,简单的压缩命令
ffmpeg -y -i /storage/emulated/0/1/input.mp4 -b 2097k -r 30 -vcodec libx264 -preset superfast /storage/emulated/0/1/result.mp4
但是我自己测试,发现第一个命令都把视频压缩模仿了,第二个命令虽然视频不模仿,但是2097K不知道为啥要设置这个值,不知道具体意思和后面根据视频大小到底怎么设置。
参数介绍如下
-i:input路径,传入视频文件的路径
-c:v:编码格式,一般都是指定libx264
-crf: 编码质量,取值范围是0-51,默认值为23,数字越小输出视频的质量越高。这里的30是我们经过测试得到的经验值
-preset:转码速度,ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow和placebo。ultrafast编码速度最快,但压缩率低,生成的文件更大,placebo则正好相反。x264所取的默认值为medium。需要说明的是,preset主要是影响编码的速度,并不会很大的影响编码出来的结果的质量。
-acodec:音频编码,一般采用libmp3lame
arg.thumbVideoPath:最后传入的是视频压缩后保存的路径
-y:输出时覆盖输出目录已存在的同名文件(如果不加此参数,就不会覆盖)
3 commands设置
但是我自己的命令设置如下
String secondText = "ffmpeg -y -i /storage/emulated/0/tencent/MicroMsg/WeiXin/1582259482299.mp4 -crf 35 -vcodec libx264 -preset superfast /storage/emulated/0/chenyu/RxffmPress4.mp4";
我一般设置crf的值为30、35、40,crf的值是30压缩视频大小一半左右,视频很清晰,设置为35的时候,压缩视频大小70%左右,视频一般清晰,设置为40的时候,视频很模糊了,压缩视频大小90%左右.