что не так с моей FFmpeg добавить команду наложения в Android - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь добавить изображение поверх видео, используя ffmpeg lib.он показывает

[NULL @ 0xb6dab000] Невозможно найти подходящий выходной формат для 'ffmpeg' ffmpeg: неверный аргумент

String addimg[]={"ffmpeg", "-i", inputpath,"-i", imagepath ,"\"" +"-filter_complex", "[0:v][1:v] overlay=25:25:enable='between(t,0,10)'" ,"\"" +"-pix_fmt yuv420p", "-c:a copy","\"" +output};

LoadFFmpegLibrary

public void LoadFFmpegLibrary()
{
    if(ffmpeg==null)
    {
        ffmpeg = FFmpeg.getInstance(MainActivity.this);
        try {
            ffmpeg.loadBinary(new LoadBinaryResponseHandler() {

                @Override
                public void onStart() {
                    Log.e("ffmpef","Start to load");
                }

                @Override
                public void onFailure() {
                    Log.e("ffmpef","failed to load");
                }

                @Override
                public void onSuccess() {
                    Log.e("ffmpef","load Successfully");
                    ExcuteFfmpefLibrabry(addimg);
                }

                @Override
                public void onFinish() {}
            });
        } catch (FFmpegNotSupportedException e) {
            // Handle if FFmpeg is not supported by device
            Log.e("ffmpef",e.toString());
        }

    }


}

public void ExcuteFfmpefLibrabry(String command[])
{

    ffmpeg = FFmpeg.getInstance(MainActivity.this);
    try {
        // to execute "ffmpeg -version" command you just need to pass "-version"
        ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {

            @Override
            public void onStart() {
                Log.e("ffmpef","Exaction Start");
            }

            @Override
            public void onProgress(String message) {}

            @Override
            public void onFailure(String message) {
                Log.e("ffmpef","failed to Excute Command");
                Log.e("ok",message);
            }

            @Override
            public void onSuccess(String message) {
                Log.e("ffmpef","Video Edited Successfully");
                Log.e("ok",message);
            }

            @Override
            public void onFinish() {

            }
        });
    } catch (FFmpegCommandAlreadyRunningException e) {
        Log.e("ffmpef",e.toString());
    }
}

1 Ответ

0 голосов
/ 19 июня 2019

Я видел ваш код и узнал, что вы используете «Письменные мысли» для FFMPEG в Android. Верно?

и ваши ошибки также указывают, что ffmpeg является недопустимым аргументом argumnet означает, что ffmpeg не найден в FFMPEG

когда вы передаете команды написанию mind build

например:

вы передаете команду как: String command[]={"ffmpeg","-i",inputpath,outputpath};

затем ffmpeg выполнить под кодом :: - ffmpeg ffmpeg -i inputpath outputpath

поэтому ffmpef не может найти аргумент с именем ffmpeg в своей сборке

поэтому смените команду

от

String addimg[]={"ffmpeg", "-i", inputpath,"-i", imagepath ,"\"" +"-filter_complex", "[0:v][1:v] overlay=25:25:enable='between(t,0,10)'" ,"\"" +"-pix_fmt yuv420p", "-c:a copy","\"" +output};

до

String addimg[]={"-i", inputpath,"-i", imagepath ,"-filter_complex", "[0:v][1:v] overlay=25:25:enable='between(t,0,10)'" ,"-pix_fmt yuv420p", "-c:a copy",output};
...