Search code examples
androidffmpegandroid-ffmpeg

FFmpeg error Output file #0 does not contain any stream


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


Solution

  • 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