Skip to content Skip to sidebar Skip to footer

How Does Instagram Crop Video In Android App?

I am trying to record the video in 1:1 ratio (square) and i cant get it to work, if i set custom resolution in media recorder instance i get an error on media recorder start. medi

Solution 1:

Actually just adding this dependency:

compile'com.writingminds:FFmpegAndroid:0.3.2'

then using below code makes the thing. Only problem is, it's not so fast. In my tests, 20sec length 720x480 video cropped to 480x in 6-7 second with a galaxy s6.

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, newExecuteBinaryResponseHandler() {
        @OverridepublicvoidonStart() {super.onStart();}

        @OverridepublicvoidonSuccess(String message) {super.onSuccess(message);}

        @OverridepublicvoidonProgress(String message) {super.onProgress(message);}

        @OverridepublicvoidonFailure(String message) {super.onFailure(message);}

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

There's another better solution using with new MediaCodec if your min sdk is api 18

Solution 2:

  1. You can take a look at https://github.com/boxme/SquareCamera. It's used to crop a image, but the idea can be used to crop a video. The main idea is to add a black cover top and bottom(or left and right)to make it seemed like a square.
  2. FFmpeg can be used, of course, though it is a little complicated.

Solution 3:

Using OpenGL and shader can solve this problem. Or you can use libyuv to do it on CPU.

Post a Comment for "How Does Instagram Crop Video In Android App?"