Выполнение: В настоящее время я записываю голос и сохраняю его как файл в sdCard, который работает отлично в MediaPlayer.Android Base64 Audio File Encode/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();
}
}
Пожалуйста, укажите, если я делаю что-то неправильно. Благодаря
преобразуйте преобразованный base64 в нужный вам файл, затем играйте, если он играет хорошо, а затем проверьте, что получает на сервере, перекрестите их, если это так, то это будет проблемой кодирования, как я знаю. Дайте мне знать, если это поможет. –
вы отправляете закодированную строку на сервер, и если вы попытаетесь декодировать «серверную» строку, что-то пойдет не так? Может быть, что-то пошло не так, передавая данные с/на сервер? – zypro
Нет сервера также отправляет мне тот же base64 в json @zypro –