Şu anda kullanıcının cihaz kamera ile bir video kaydetmesine olanak sağlayan bir uygulama var, kayıt bittikten sonra, video bir sunucuya yüklenir. Şu anda videoyu yüklemek için şu kodu kullanıyorum ve iyi çalışıyor, sahip olduğum tek sorun çok uzun sürüyor. 30 saniyelik bir videonun yüklenmesi yaklaşık 20 dakika sürebilir. Bu videoları yüklemek için farklı ve daha hızlı bir yöntem kullanmanın bir yolu var mı? Her yere baktım ve yalnızca kullandığım kodun aynısını buluyorum. Bu benim kodudur: onun muhtemelen değer yüzden herhangi Bu getirebilir kalitesinde azalma (zor ölçmek için kalite ile yaşayabilir varsayarakAndroid uygulamasını kullanarak sunucuya video yüklemenin daha hızlı bir yolu nedir?
public class UploadActivity extends Activity {
private String filePath = null;
private String name, email, videoTitle;
long totalSize = 0;
private DonutProgress donutProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload);
donutProgress = (DonutProgress) findViewById(R.id.donut_progress);
Intent intent = getIntent();
filePath = intent.getStringExtra("filePath");
name = intent.getStringExtra("name");
email = intent.getStringExtra("email");
new UploadFileToServer().execute();
}
private class UploadFileToServer extends AsyncTask<Void, Integer, String> {
@Override
protected void onPreExecute() {
donutProgress.setProgress(0);
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... progress) {
donutProgress.setProgress(progress[0]);
}
@Override
protected String doInBackground(Void... params) {
return uploadFile();
}
@SuppressWarnings("deprecation")
private String uploadFile() {
String responseString;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(AppConfig.URL_UPLOAD);
try {
AndroidMultiPartEntity entity = new AndroidMultiPartEntity(new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num/(float) totalSize) * 100));
}
});
File sourceFile = new File(filePath);
entity.addPart("image", new FileBody(sourceFile));
totalSize = entity.getContentLength();
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
HttpEntity r_entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
responseString = EntityUtils.toString(r_entity);
} else {
responseString = "Error occurred. Http Status Code: " + statusCode;
}
} catch (IOException e) {
responseString = e.toString();
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
videoTitle = result;
super.onPostExecute(result);
finish();
}
}
}
Bu nasıl daha hızlı çalışır? Ayrıca '30 saniyelik bir video', dosyalar hakkında hiçbir şey ifade etmiyor. Yükleme hızı bant genişliği ile sınırlıdır, belki her şeyi hızlandırmak için bir akı kapasitörü satın almalısınız: D –
Videonun dosya boyutu nedir? 1080p'de 60 fps hızında 30 saniyelik bir video çekimi kolayca 1GB veya daha fazla olabilir. – NoChinDeluxe
@NoChinDeluxe 30 saniyelik bir video için aldığım dosya boyutu yaklaşık 60MB oldu –