Что я делаю: В настоящее время я записываю голос и сохраняю его как файл в SDCard, который работает/отлично работает в MediaPlayer.Android Base64 Audio File Encode and Decode
Что я хочу: Когда я кодирую этот файл в базу данных и отправляю на сервер, все идет хорошо. Но когда я декодирую строку Base64 в файл audio.m4a, она не работает в MediaPlayer.
Я попытался .m4a, .wav, но все напрасно.
Проблема заключается в кодировании. Потому что, когда я декодирую файл, отправленный из одного и того же приложения iOS, он отлично работает в MediaPlayer.
Я знаю, что его очень простая и полезная помощь заключается в кодировании декодирования, но ничего не работает. Ниже мой подход:
private void encodeAudio(String selectedPath) {
byte[] audioBytes;
try {
// Just to check file size.. Its is correct i-e; Not Zero
File audioFile = new File(selectedPath);
long fileSize = audioFile.length();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(new File(selectedPath));
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf)))
baos.write(buf, 0, n);
audioBytes = baos.toByteArray();
// Here goes the Base64 string
_audioBase64 = Base64.encodeToString(audioBytes, Base64.DEFAULT);
} catch (Exception e) {
DiagnosticHelper.writeException(e);
}
}
И расшифровывать следующим образом:
private void decodeAudio(String base64AudioData, File fileName, String path, MediaPlayer mp) {
try {
FileOutputStream fos = new FileOutputStream(fileName);
fos.write(Base64.decode(base64AudioData.getBytes(), Base64.DEFAULT));
fos.close();
try {
mp = new MediaPlayer();
mp.setDataSource(path);
mp.prepare();
mp.start();
} catch (Exception e) {
DiagnosticHelper.writeException(e);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Пожалуйста, укажите, если я делаю что-то неправильно/глупо.
использования, как указано в ссылке ниже http://stackoverflow.com/questions/22596345/audio-file-encoding-and-decoding – Sumit
@Sumit .. я видел это раньше. Не использовать. – Noman