gpt4 book ai didi

android - 使用 Android 应用程序将视频上​​传到服务器的更快方法是什么?

转载 作者:行者123 更新时间:2023-11-29 20:00:54 25 4
gpt4 key购买 nike

我目前有一个应用允许用户使用设备摄像头录制视频,录制完成后,视频会上传到服务器。我目前正在使用以下代码上传视频并且效果很好,我遇到的唯一问题是它花费的时间太长了。上传一个 30 秒的视频大约需要 20 分钟。有什么方法可以使用不同的更快的方法来上传这些视频吗?我到处都看过,但只找到与我使用的代码相同的帖子。这是我的代码:

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();
}

}

}

最佳答案

减少上传时间最明显的方法是压缩视频,假设您可以忍受这可能带来的任何质量下降(很难量化质量,因此您可能值得离线尝试各种压缩率的视频先看)。

不幸的是,在 Android 中没有方便的“compress()”方法,但有许多不同的方法:

我个人使用过 ffmpeg 方法 - 当我这样做时,我找不到我满意的 Android ffmpeg 库,所以我自己创建了一个包装器,但如果我再次使用 ti,我可能会使用以下 ffmpeg 包装器:

这似乎有很好的记录和使用,它包括经过深思熟虑的功能,例如根据处理器架构加载不同二进制文件的能力。

一旦有了 ffmpeg 包装器,您就可以简单地使用标准的 ffmpeg 命令行(如语法)来压缩视频。

关于android - 使用 Android 应用程序将视频上​​传到服务器的更快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com