2016-03-29 19 views
0

Was ich mache: Ich schreibe gerade Sprache und speichere sie als eine Datei in SDCard, die im MediaPlayer läuft/läuft.Android Base64 Audiodatei Kodieren und Dekodieren

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

I .m4a, versucht hatte .wav aber alles umsonst.
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 falsch/dumm tue nichts.

+0

Verwendung als untenstehenden Link vorgeschrieben in http://stackoverflow.com/questions/22596345/audio-file-encoding-and-decoding – Sumit

+0

@Sumit .. ich vorher gesehen hatte. Keine Verwendung. – Noman

Antwort

0

versuchen Sie, Multipartentity zu verwenden, um jede Art von Datei zum Server hochzuladen.

public void postFile (Zeichenfolge Dateipfad, String-URL) { Dateidatei = neue Datei (Dateipfad);

try { 
     System.out.println(file_path); 
     HttpClient client = new DefaultHttpClient(); 
     HttpPost post = new HttpPost(url); 


     FileBody bin = new FileBody(file); 
     MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
     reqEntity.addPart("file", bin); /*I believe that the "file" is the name in php part*/ 
     post.setEntity(reqEntity); 
     HttpResponse response = client.execute(post); 
     HttpEntity resEntity = response.getEntity(); 
     if (resEntity != null) { 
      Log.i("RESPONSE", EntityUtils.toString(resEntity)); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Ich muss in Base64-codierte Zeichenfolge konvertieren. Es ist eine Anforderung. – Noman

+0

pls versuchen dies http://stackoverflow.com/questions/6448865/base64-encode-audio-file-and-send-as-a-string-then-decode-the-string – Shekhar

+0

Werfen Sie einen Blick auf meinen Code bitte. .. Mache ich etwas anderes? Komm schon ... ich mache das gleiche !! – Noman

Verwandte Themen