Обработка видео в фоновом режиме с помощью менеджера работ с использованием ffmpeg - PullRequest
5 голосов
/ 27 июня 2019

Проблема возникает, когда во время обработки видео пользователь сам закрывает приложение из диспетчера задач, а затем его обработка останавливается.

Я работаю над обработкой видеофайлов в Android с помощью FFMpeg, который работает отлично, но когда я закрываю приложение во время обработки из диспетчера задач, обработка видео перестала работать, даже если я добавил всю работу в диспетчере работ.

    @Override 
public Result doWork() {
        shellCommand = new ShellCommand();
        ffmpegBinary = new String[] {
            FileUtils.getFFmpeg(context).getAbsolutePath()
        };
        command = concatenate(ffmpegBinary, command);
        CommandResult commandResult = getCommandResult(command);
        if (command`enter code here`Result.success) {
            onSuccess(videoPath);
        } else {
            onFailure(videoPath);
        }
    }
    //getCommandResult
    private CommandResult getCommandResult(String[] command) {
        try {
            process = shellCommand.run(command, null);

            if (process == null) {
                return CommandResult.getDummyFailureResponse();
            }
            checkAndUpdateProcess();
            return CommandResult.getOutputFromProcess(process);
        } catch(Exception e) {} finally {
            Util.destroyProcess(process);
        }`enter code here`
        return CommandResult.getDummyFailureResponse();
    }

Насколько я могу судить, когда приложение закрывается из фона, родительский процесс уничтожает его и уничтожает также весь его подпроцесс, FFMpeg использует процесс android для выполнения команды и проверки состояния видеофайла. во время обработки видео.

Будем рады услышать от вас. Спасибо

...