Android利用ffmpeg压缩视频

因为整个ffmpeg是很大的,我这边只需要对mp4格式的视频进行压缩,具体情况是拍摄10秒的视频,给它命名的时候就设置成mp4的格式。我用的ffmpeg是3.0版本,生成的so库比原来的小很多,具体怎么生成so库就不细说了,网上一大堆,而且我自己踩过的坑也忘了不少了。我封装成了一个库文件,最后github地址在此:https://github.com/iamupgirl/MediaCompressLibrary,使用起来也很方便。

我是直接写了一个Service在后台进行视频压缩,主要代码如下:

mCmds = "ffmpeg -y -i " + selectedAviFile + " -strict -2 -vcodec libx264 -preset ultrafast -crf 20 -acodec copy -ar 44100 -ac 2 -b:a 96k -vf scale=-1:800 " + compressedFile;
        //转换为数组
        thread = new Thread(new Runnable() {
            @Override
            public void run() {
                String[] cmds = mCmds.split(" ");
                FfmpegKit.exec(cmds, new FfmpegKit.OnExecListener() {
                    @Override
                    public void onExecuted(int ret) {
                        Message msg = new Message();
                        msg.what = ret;
                        mHandler.sendMessage(msg);
                    }
                });
            }
        });
        thread.start();
上面的selectedAviFile是原视频的储存地址,compressFile是压缩后的视频的储存地址,至于那些类似于 -y,-i的命令行网上有很多博客说了,我就不细说了。要注意的是命令之间是有且仅有一个空格的,如果怕出错,直接复制我的就好。最后,要说明的是,压缩成功会返回0,压缩失败返回1。

猜你喜欢

转载自blog.csdn.net/shan286/article/details/79072286