3
votes

I'm getting an error while cutting a portion of a video using FFmpeg

Following is my code

String[] cmd = {"ffmpeg -ss 0 -i "+mPath+" -t 30 -c copy "+ (Environment.getExternalStorageDirectory().getAbsolutePath()+"/sample.mp4")};
executeCommand(cmd);

Function executeCommand

void executeCommand(String[] cmd) {
    try {
        fFmpeg.execute(cmd, new FFmpegExecuteResponseHandler() {
            @Override
            public void onSuccess(String message) {
                Toast.makeText(VideoFullScreen.this, "finished :" + message, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onProgress(String message) {

            }

            @Override
            public void onFailure(String message) {
                Log.e("Error",message);
            }

            @Override
            public void onStart() {

            }

            @Override
            public void onFinish() {

            }
        });
    } catch (FFmpegCommandAlreadyRunningException e) {
        e.printStackTrace();
    }
}

Error

ffmpeg version n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers

built with gcc 4.8 (GCC)

configuration: --target-os=linux --cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi- --arch=arm --cpu=cortex-a8 --enable-runtime-cpudetect --sysroot=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/sysroot --enable-pic --enable-libx264 --enable-libass --enable-libfreetype --enable-libfribidi --enable-libmp3lame --enable-fontconfig --enable-pthreads --disable-debug --disable-ffserver --enable-version3 --enable-hardcoded-tables --disable-ffplay --disable-ffprobe --enable-gpl --enable-yasm --disable-doc --disable-shared --enable-static --pkg-config=/home/vagrant/SourceCode/ffmpeg-android/ffmpeg-pkg-config --prefix=/home/vagrant/SourceCode/ffmpeg-android/build/armeabi-v7a --extra-cflags='-I/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/include -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fno-strict-overflow -fstack-protector-all' --extra-ldflags='-L/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/lib -Wl,-z,relro -Wl,-z,now -pie' --extra-libs='-lpng -lexpat -lm' --extra-cxxflags=

libavutil 55. 17.103 / 55. 17.103

libavcodec 57. 24.102 / 57. 24.102

libavformat 57. 25.100 / 57. 25.100

libavdevice 57. 0.101 / 57. 0.101

libavfilter 6. 31.100 / 6. 31.100

libswscale 4. 0.100 / 4. 0.100

libswresample 2. 0.101 / 2. 0.101

libpostproc 54. 0.100 / 54. 0.100

Output #0, mp4, to 'ffmpeg -ss 0 -i /storage/emulated/0/Video/Demo.mp4 -t 30 -c copy /storage/emulated/0/sample.mp4':

Output file #0 does not contain any stream

1
Will you post your java code for file creating?? and have you checked your input file?Upendra Shah
@UpendraShah Do we need to create an output file ? FFmpeg will automatically create one right ?Sushin Pv
Yes we have to create output file too for getting output.Upendra Shah
@UpendraShah Still am getting the same error.Sushin Pv
Have you added read and write external storage permission?Upendra Shah

1 Answers

9
votes

This is an answer to my own question

My problem was in the command string array i was passing

This answer is to the people who all are facing the similar kind of issues with ffmpeg

Important things you should follow while using ffmpeg

  1. Make sure, you are passing the commands in proper String Array

    String[] cmd = {"-ss", "0", "-i" ,input_video_path, "-t" ,"30", "-c", "copy",output_video_path};
    
  2. Do not add any extra space in arguments and flags you are passing {" -c" is wrong }

  3. Do not pass ffmpeg in the cmd array {"ffmpeg" is wrong }

Hope this will help someone