AndroidデバイスのSDカードにオーディオファイルを変換して保存し、インターネット経由でオーディオをサーバーに送信する方法を知りたいです。いろいろ調べましたが、全然違います。
私は.3gpオーディオ形式を持っていますが、形式は関係ありません.サーバーディレクトリにあるファイルを取得したいだけです. ガイド、チュートリアル、コメントをお願いします。大変ありがたく存じます。
ファイルをサーバーに送信するために、次のコードを書きました。
path = 送信するファイルへの絶対パス。残りのパラメーターは自明のようです。
public static String sendFileToServer(String path, String urlString,
String mimeType, String id) throws Exception {
try {
String URL = "", file_name = "";
if (!path.equals("")) {
file_name = path.substring(path.lastIndexOf("/") + 1);
}
File directory = new File(path);
byte[] data = new byte[(int) directory.length()];
try {
FileInputStream fileInputStream = new FileInputStream(directory);
fileInputStream.read(data);
} catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
} catch (IOException e1) {
System.out.println("Error Reading The File.");
e1.printStackTrace();
}
URL = Constants.WEB_ROOT_URL + urlString;
Log.v("AppEngine Manager", "Image Upload URL: " + URL);
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(URL);
ByteArrayBody bab = new ByteArrayBody(data, file_name);
MultipartEntity reqEntity = new MultipartEntity(
HttpMultipartMode.BROWSER_COMPATIBLE);
reqEntity.addPart("media_type", new StringBody(mimeType));
reqEntity.addPart("file_name", new StringBody(file_name));
reqEntity.addPart("file_id", new StringBody(file_name));
reqEntity.addPart("file", bab);
postRequest.setEntity(reqEntity);
HttpResponse response = httpClient.execute(postRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent(), "UTF-8"));
String sResponse;
StringBuilder s = new StringBuilder();
while ((sResponse = reader.readLine()) != null) {
s = s.append(sResponse);
}
return s + "";
} catch (Exception e) {
// handle exception here
Log.e(e.getClass().getName(), e.getMessage());
return "exception";
}
}
音楽ファイルをいくつかのサーバー アプリケーションに使用できますHttpClient
。POST
たとえば、PHP では、 でファイルを読み取ることができます$_FILE['key']
。実際の保存と処理は、特定の要件によって異なります。また、サーバーがトランスコードされたファイルを出力するかどうかを指定しません。
オーディオ データのトランスコードには、たとえばFFmpegを使用できます。