Я пытаюсь добавить текст и изображение поверх видео, используя FFmpeg lib в androoid studio - PullRequest
0 голосов
/ 19 июня 2019

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

Я уже пробовал 2 команды для добавления текста и добавления изображения поверх видео, но не смог получить правильный вывод

String command[]={"ffmpeg","-i",inputpath,"-vf", "drawtext="+"\""+"fontfile=/sdcard/retro.ttf: text='Test Text'"+"\"",outputpath};


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

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

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

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

                @Override
                public void onSuccess() {
                    Log.e("ffmpeg","load Successfully");
                    ExcuteFfmpefLibrabry(command);
                    //    Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();
                }

                @Override
                public void onFinish() {
                    Log.e("ffmpeg","failed to load");
                }
            });
        } catch (FFmpegNotSupportedException e) {
            // Handle if FFmpeg is not supported by device
            Log.e("ffmpeg",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("ffmpeg","Exaction Start");
            }

            @Override
            public void onProgress(String message) {}

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

            @Override
            public void onSuccess(String message) {
                Log.e("ffmpeg","Video Edited Successfully");
                Log.e("ok",message);
                // ExcuteFfmpefLibrabry(tetxcommand);
                Toast.makeText(MainActivity.this,"Success",Toast.LENGTH_LONG).show();

            }

            @Override
            public void onFinish() {

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

Невозможно найти подходящий формат вывода для 'ffmpeg' ffmpeg: InvalidАргумент

Я получаю сообщение об ошибке ---> Unable to find a suitable output format for 'ffmpeg' ffmpeg: Invalid argument

1 Ответ

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

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

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

когда вы передаете команды для написания мысленной сборки

, например:

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

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

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

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

с

String command[]={"ffmpeg","-i",inputpath,"-vf", "drawtext="+"\""+"fontfile=/sdcard/retro.ttf: text='Test Text'"+"\"",outputpath};


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

на

String command[]={"-i",inputpath,"-vf", "drawtext=fontfile=/sdcard/retro.ttf: text='Test Text'",outputpath};


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",outputpath};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...