У меня очень странная проблема с преобразованием файла 3gpp (origin) в байты и извлечением байтов обратно в файл 3gpp (2nd).
Второй файл 3gpp не воспроизводится с помощью MediaPlayer ини один не может играть на моем компьютере при переводе в.Кроме того, 2-й размер файла 3gpp немного меньше исходного 3gpp.
1.Вот как я инициализирую MediaRecorder
String voiceStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getPackageName() + File.separator + "media" + File.separator + "voices" + File.separator + "temp.3gpp";
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(voiceStoragePath);
2.После завершения записи я конвертирую его в байтовый массив
File file = new File(voiceStoragePath);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
for (int readNum; (readNum = fis.read(b)) != -1;) {
bos.write(b, 0, readNum);
}
byte[] bytes = bos.toByteArray();
3.Теперь сохраняем байты в файл .3gpp
String voiceStoragePath2 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + getPackageName() + File.separator + "media" + File.separator + "voices" + File.separator + "temp2.3gpp";
File path = new File(voiceStoragePath2);
FileOutputStream fos = new FileOutputStream(path);
fos.write(bytes);
fos.close();
4.Обозреватель файлов устройства
![enter image description here](https://i.stack.imgur.com/YzEyo.png)
5.Воспроизведение с использованием MediaPlayer
mediaPlayer.setDataSource(outputFile);
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(this);
Журнал: E / MediaPlayerNative: ошибка (1, -2147483648)