Android Base64音频文件编码和解码
我正在做什么:我正在录制语音并将其保存为SD卡中的文件,SD卡在MediaPlayer中运行/播放良好 我想要什么:当我将此文件编码为Base64并发送到服务器时,一切正常。但当我将Base64字符串解码为audio.m4a文件时,它并没有在MediaPlayer中运行 我试过.m4a,.wav,但都没有成功。Android Base64音频文件编码和解码,android,base64,android-mediaplayer,Android,Base64,Android Mediaplayer,我正在做什么:我正在录制语音并将其保存为SD卡中的文件,SD卡在MediaPlayer中运行/播放良好 我想要什么:当我将此文件编码为Base64并发送到服务器时,一切正常。但当我将Base64字符串解码为audio.m4a文件时,它并没有在MediaPlayer中运行 我试过.m4a,.wav,但都没有成功。 问题在于编码。因为当我解码来自同一iOS应用程序的文件时,它在MediaPlayer中运行良好 我知道这是非常基本的,有很多帮助是编码解码,但没有任何工作。我的做法如下: privat
问题在于编码。因为当我解码来自同一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();
}
}
如果我做了什么错事/傻事,请指出 尝试使用Multipartentity将任何类型的文件上载到服务器 公共void postFile(字符串文件\路径,字符串url){ 文件=新文件(文件路径)
按照下面链接@Sumit中的规定使用。我以前见过这个。没有用。我需要转换成Base64编码的字符串。这是一个要求。请尝试一下,看看我的代码。我在做什么不同的事情吗?来吧…我在做同样的事情!!
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();
}
}