Убийство CMD процессов в Бравобит FFmpeg - PullRequest
0 голосов
/ 10 октября 2018

Я использую Bravobit FFmpeg Bravobit FFmpeg github до convert некоторых аудиофайлов.Преобразований больше, чем этих 2, но я не думаю, что их здесь необходимо добавлять.

Мой вопрос: возможно ли убить или остановить эти команды после их запуска.

В тот момент, когда я запускаю первый метод convertPCMToWav(), а затем вызываю finish() в Main method, который останавливает все остальные процессы, кроме этих.Они просто продолжают идти, как будто ничего не произошло.

public class AudioProcessor {

    private Context context;
    private FFmpeg ffmpeg;

    private File micPcmFile;

    private File pcmtowavTempFile;
    private File mp3towavTempFile;

    public AudioProcessor(Context context, Activity activity) {
        ffmpeg = null;
        ffmpeg = FFmpeg.getInstance(context);
        this.context = context;
        prepare();
    }

    /**
     * Program main method. Starts running program
     * @throws Exception
     */
    public void process() throws Exception {
        if (!ffmpeg.isSupported()) {
            Log.e("AudioProcessor", "FFMPEG not supported! Cannot convert audio!");
            throw new Exception("FFMPeg has to be supported");
        }
        if (!checkIfAllFilesPresent()) {
            Log.e("AudioProcessor", "All files are not set yet. Please set file first");
            throw new Exception("Files are not set!");
        }

        Log.e("AudioProcessor", "Start processing audio");




        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                convertPCMToWav();
            }
        }, 200);
    }

    /**
     * Prepares program
     */
    private void prepare() {
        prepareTempFiles();
    }

    /**
     * Converts PCM to wav file. Automatically create new file.
     */
    private void convertPCMToWav() {
        String[] cmd = { "-f" , "s16le", "-ar", "44.1k", "-i", micPcmFile.toString(), "-y", pcmtowavTempFile.toString()};
        ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {

            @Override
            public void onStart() {
                super.onStart();
            }

            @Override
            public void onSuccess(String message) {
                super.onSuccess(message);
                convertMP3ToWav();
            }
            @Override
            public void onFailure(String message) {
                super.onFailure(message);
            }
        });
    }

    /**
     * Converts mp3 file to wav file.
     * Creates Wav file
     */
    private void convertMP3ToWav() {
        String[] cmd = { "-i" , backgroundMp3File.toString(), "-y", mp3towavTempFile.toString() };
        ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
            @Override
            public void onStart() {
                super.onStart();
            }

            @Override
            public void onSuccess(String message) {
                super.onSuccess(message);
                changeMicAudio();
            }
            @Override
            public void onFailure(String message) {
                super.onFailure(message);

            }
        });
    }

   /**
     * Prepares temp required files by deleteing them if they exsist.
     * Files cannot exists before ffmpeg actions. FFMpeg automatically creates those files.
     */
    private void prepareTempFiles() {
        pcmtowavTempFile = new File(context.getFilesDir()+ Common.TEMP_LOCAL_DIR + "/" + "_pcm.wav");
        mp3towavTempFile = new File(context.getFilesDir()+ Common.TEMP_LOCAL_DIR + "/" + "_mp3.wav");   
        destroyTempFiles();
    }

   /**
     * Destroys temp required files
     */
     private void destroyTempFiles() {

         pcmtowavTempFile.delete();
         mp3towavTempFile.delete();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...