How does Instagram crop video in android app?

前端 未结 3 964
忘了有多久
忘了有多久 2021-01-21 15:20

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.

3条回答
  •  说谎
    说谎 (楼主)
    2021-01-21 15:52

    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, 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");
    }
    

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

提交回复
热议问题