2016-03-30 13 views
1

Doing: Ich nehme gerade eine Stimme auf und speichere sie als Datei in der SD-Karte, die im MediaPlayer abgespielt wird.Android Base64 Audiodatei encodieren/decodieren

Was ich will: Wenn ich diese Datei inBase64 kodiere und an den Server sende, geht alles gut. Aber wenn ich die Base64-Zeichenfolge in die Datei audio.m4a decodiere, wird sie nicht im MediaPlayer ausgeführt.

Ich hatte versucht, .m4a, .wav aber alles vergebens. Das Problem liegt in der Codierung. Denn wenn ich eine Datei dekodiere, die von derselben iOS App gesendet wurde, läuft sie im MediaPlayer einwandfrei.

Ich weiß, es ist sehr einfach und viel Hilfe ist da, um zu entschlüsseln, aber nichts funktioniert. mein Ansatz ist folgende:

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); 
} 

}  

& Dekodieren auf folgende Weise:

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(); 
} 


}  

Bitte zeigen Sie, wenn ich etwas falsch mache. Dank

+0

Konvertieren Sie Ihre konvertierte base64 in die gewünschte Datei, dann spielen, wenn es gut spielt, dann überprüfen, was auf dem Server empfangen wird, kreuzen sie, wenn es gleich dann wird es Codierung Problem sein, wie ich weiß. Lassen Sie mich wissen, wenn es hilft .. –

+0

Sie senden die codierte Zeichenfolge an den Server, und wenn Sie versuchen, die 'Server'-Zeichenfolge zu entschlüsseln geht etwas schief? Vielleicht ist etwas schiefgelaufen durch Datenübertragung vom/zum Server? – zypro

+0

Kein Server sendet mir auch die gleiche base64 in json @zypro –

Antwort

0

Das Problem vor ist relasing Audio-i wurde die Konvertierung von Audio in Base64 String das ist, warum Decoded Datei beschädigt ist !! Prost