2016-03-30 3 views
1

Выполнение: В настоящее время я записываю голос и сохраняю его как файл в 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(); 
} 


}  

Пожалуйста, укажите, если я делаю что-то неправильно. Благодаря

+0

преобразуйте преобразованный base64 в нужный вам файл, затем играйте, если он играет хорошо, а затем проверьте, что получает на сервере, перекрестите их, если это так, то это будет проблемой кодирования, как я знаю. Дайте мне знать, если это поможет. –

+0

вы отправляете закодированную строку на сервер, и если вы попытаетесь декодировать «серверную» строку, что-то пойдет не так? Может быть, что-то пошло не так, передавая данные с/на сервер? – zypro

+0

Нет сервера также отправляет мне тот же base64 в json @zypro –

ответ

0

Проблема, прежде чем relasing аудио я был преобразования аудио в Base64 String Вот почему Раскодированный файл поврежден !! Cheers