Я хочу конвертировать мой 3gp аудио файл в формат .wav - PullRequest
1 голос
/ 11 марта 2020

Я хочу конвертировать аудио 3gp в формат .wav. Я использовал ffmpeg для преобразования этого. В этом он показывает успех, не получая никакой ошибки. Но я не могу получить окончательный выходной файл. Пожалуйста, помогите мне решить эту проблему.

Вот мой код.

sampleDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "/OfficeRecordings/");
    if (!sampleDir.exists()) {
        sampleDir.mkdirs();
    }

    outputFile =  sampleDir+"/"+"sample_record.3gp";

    finalFile =  sampleDir+"/"+"final_record.wav"; 

    final String[] cmd = new String[]{"-y", "-i", outputFile, finalFile};


    execFFmpegBinary(cmd);


 private void execFFmpegBinary(final String[] command) {

        FFmpeg ffmpeg = FFmpeg.getInstance(this);
        try {
            FFmpeg.getInstance(MainActivity.this).loadBinary(new FFmpegLoadBinaryResponseHandler() {
                @Override
                public void onStart() {
                    Log.e("start",".......");

                }

                @Override
                public void onSuccess() {

                    Log.e("success",".......");
                }

                @Override
                public void onFailure() {
                    Log.e("fail",".......");

                }

                @Override
                public void onFinish() {
                    Log.e("finish",".......");

                }
            });
        } catch (FFmpegNotSupportedException e) {
            e.printStackTrace();
        }

1 Ответ

2 голосов
/ 11 марта 2020

Попробовав так много способов. Я получил решение, которое работает нормально.

final FFmpeg ffmpeg = FFmpeg.getInstance (this);

    try {
        ffmpeg.loadBinary(new LoadBinaryResponseHandler() {

            @Override
            public void onStart() {
                Log.d("audio", "starting to load binary");
            }

            @Override
            public void onFailure() {
                Log.d("audio", "failed to load binary");
            }

            @Override
            public void onSuccess() {
                Log.d("audio", "loaded binary");
                try {

                    ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {

                        @Override
                        public void onStart() {
                            Log.d("audio", " starting to get audio " + "");

                        }

                        @Override
                        public void onProgress(String message) {
                            Log.d("audio", " progress getting audio from ");

                        }

                        @Override
                        public void onFailure(String message) {
                            Log.d("audio", " failed to get audio ");

                        }

                        @Override
                        public void onSuccess(String message) {
                            Log.d("audio", " success getting audio from video");
                        }

                        @Override
                        public void onFinish() {



                        }
                    });
                } catch (FFmpegCommandAlreadyRunningException e) {

                    e.printStackTrace();
                }
            }

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