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
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 .. –
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
Kein Server sendet mir auch die gleiche base64 in json @zypro –