首页 > 系统 > Android > 正文

Android 视频压缩

2019-11-06 09:53:33
字体:
来源:转载
供稿:网友

网上差值视频压缩,大多说都是说使用FFmpeg。于是就找例子,找来找去发现他们所用的代码都是一样的: 例如这个:这里写链接内容 看完代码,依然一脸懵逼,里面的参数不知道什么意思,根据代码可以知道,最主要的一段话是:

"-y -i /mnt/sdcard/kaishi.mp4 -strict -2 -vcodec libx264 -PReset ultrafast -crf 24 -acodec aac -ar 44100 -ac 2 -b:a 96k -s 640x352 -aspect 16:9 /mnt/sdcard/jieshu.mp4";这个个转码命令例如:将input.avi转码成output.ts,并设置视频的码率为640kbpsffmpeg -i input.avi -b:v 640k output.ts

参照雷神给的文档:这里写链接内容 -I filename 输入文件 strict strictness 跟标准的严格性 -vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。 -acodec codec 使用codec编解码 -ar freq 设置音频采样率 -ac channels 设置通道 缺省为1 -b bitrate 设置比特率,缺省200kb/s -s size 设置帧大小 格式为WXH 缺省160X128.下面的简写也可以直接使用 -aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777

压缩的回调

@Override public void onExecSuccess(String message) { Log.e("压缩成功",message); Toast.makeText(getapplicationContext(), message, 1).show(); } @Override public void onExecFail(String reason) { Log.i("fail",reason); } @Override public void onExecProgress(String message) {}

按照以往的作法,应该会在onexecprogerss里面获得压缩进度,但是根据打印的数据,他的内容是这样的。并且并不是所有的数据都是这样。

frame= 337 fps= 14 q=22.0 size= 2071kB time=00:00:11.74 bitrate=1444.2kbits/s dup=1 drop=0

于是我想了一个比较笨的方法,截取字符串。size后面的数据是指压缩的大小,那么如果我们计算出压缩比例,也就是说压缩后视频的大小。然后相除,就会得到压缩的比例。 -b bitrate 设置比特率,缺省200kb 比特率乘以时长应该就是压缩后视频的大小,这样似乎就行的通了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表