WedX - журнал о программировании и компьютерных науках

Аудиофайл возвращает неправильное значение размера

Я использую медиа-рекордер для записи звука, затем загружаю его в firebase, сохраняя содержимое выходного файла в массив байтов, проблема в том, что записанный файл правильно сохраняется и воспроизводится, а в хранилище firebase это не работает, поэтому я проверил размер как сохраненного файла на моем телефоне, так и того, что я конвертирую в массив байтов (которые должны быть одинаковыми). Я обнаружил, что getlength возвращает неправильный размер! Вот код

это код, который я использую для записи

recorder.setAudioSource(android.media.MediaRecorder.AudioSource.MIC);
            recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
            recorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+lectureTitle.getText().toString()+".mp4");
            recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

            try {
                recorder.prepare();

            } catch (IOException e) {
                e.printStackTrace();
            }
            recorder.start();
        }

Код, который я использую для преобразования файла в массив байтов, чтобы я мог его загрузить

File lectureRecorded = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+lectureTitle.getText().toString()+".mp4");

                try {

                    BufferedInputStream input = new BufferedInputStream(new FileInputStream(lectureRecorded));

                    if(lectureRecorded.length() > 10*1024*1024){
                        Toast.makeText(getActivity(),"File is too big MAX (10MB)\n a loss will occur",Toast.LENGTH_LONG).show();
                    }else {
                        stream = new byte[(int)lectureRecorded.length()];

                        Log.d("AUDIOS",""+lectureRecorded.length());
                        input.read(stream, 0, (int) lectureRecorded.length());
                    }
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                recorder.stop();
                recorder.release();
14.06.2020

  • Вы не указали какие у вас размеры и длину. 14.06.2020
  • Кроме того, это плохая идея сначала поместить байты файла в массив байтов, а затем загрузить массив. Гораздо лучше загружать байты файла напрямую в цикле. 14.06.2020
  • Извините, вы хотите пример значений? 14.06.2020
  • у меня нет массива байтов! я вместо этого заполняю его из файла 14.06.2020
  • Похоже, что вы читаете байты из файла во время записи. Это не выглядит нормально. 14.06.2020
  • Да, я пытался заполнить байты во время записи, но для этого нет прямого метода, поэтому я использовал этот перенос, который должен быть правильным, я имею в виду, что это очень просто, но длина возвращается неправильно! 14.06.2020
  • Вы так и не назвали длины. 14.06.2020
  • Давайте продолжим обсуждение в чате. 14.06.2020

Ответы:


1

Глупая ошибка, я просто должен был прочитать длину после вызова релиза -_-

15.06.2020
Новые материалы

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


Для любых предложений по сайту: [email protected]