Instagram如何在Android应用中裁剪视频?

我试图以1:1的比例(方形)录制视频,但我无法正常工作,
如果我在媒体记录器实例中设置了自定义分辨率,则会在媒体记录器启动时收到错误消息.

mediaRecorder.setVideoSize(480, 480);

但是,如果我设置相机支持的分辨率,它就可以工作.

Camera.Parameters p = c.getParameters();
        List<Camera.Size> list = p.getSupportedPreviewSizes();
        //They are ordered from largest to smallest, so the largest will be...
        for (Camera.Size i : list) {
            if (i.width <= 640 && i.width >= 480) {
                size = i;
            }
            Log.d(TAG, "i.height: " + i.height + " i.width" + i.width);
        }
        if (size != null) {
            p.setPreviewSize(size.width, size.height);
            c.setParameters(p);
        }

然后设置

 mediaRecorder.setVideoSize(size.width, size.height);

我通常会通过640达到480.有没有办法在Android上裁剪视频?我看过ffmpeg库,但是我需要在项目中使用它,我不确定LGPL如何工作.有没有更简单的解决方案?

解决方法:

实际上只是添加此依赖项:

compile 'com.writingminds:FFmpegAndroid:0.3.2'

然后使用下面的代码就可以了.唯一的问题是,它并没有那么快.在我的测试中,使用银河s6,在6-7秒内将20秒长的720×480视频裁剪为480x.

FFmpeg ffmpeg = FFmpeg.getInstance(context);
String[] complexCommand = {"-y", "-i", originalFilePath, "-vf", "crop=480:480:80:0", "-preset", "ultrafast", "-strict", "-2", "-c:v", "libx264", "-c:a", "copy", originalFilePath.replace(".mp4", "_crop.mp4")};
try {
    ffmpeg.execute(complexCommand, new ExecuteBinaryResponseHandler() {
        @Override
        public void onStart() {super.onStart();}

        @Override
        public void onSuccess(String message) {super.onSuccess(message);}

        @Override
        public void onProgress(String message) {super.onProgress(message);}

        @Override
        public void onFailure(String message) {super.onFailure(message);}

        @Override
        public void onFinish() {super.onFinish();}
    });
} catch (FFmpegCommandAlreadyRunningException e) {
    Log.e("ffmpeg", "ffmpeg already running");
}

如果您的最小SDK为API 18,则还有better solution与新的MediaCodec一起使用

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...