我正在编写一个视频处理 Android 应用程序。应用程序的用户将拍摄视频,应用程序会将视频发送到服务器进行逐帧处理。然后服务器会将结果发送回应用程序。
在将视频发送到服务器之前将视频分解为 Android 设备上的帧与发送视频然后将其分解的优缺点是什么?什么会更快?
如果我在 Android 手机上将其分解为帧,我应该发送位图还是应该发送压缩图像然后在服务器上解压缩?与发送位图相比,压缩的成本和收益是多少?我知道压缩率会因图像而异,但我只是在询问利弊。
我正在编写一个视频处理 Android 应用程序。应用程序的用户将拍摄视频,应用程序会将视频发送到服务器进行逐帧处理。然后服务器会将结果发送回应用程序。
在将视频发送到服务器之前将视频分解为 Android 设备上的帧与发送视频然后将其分解的优缺点是什么?什么会更快?
如果我在 Android 手机上将其分解为帧,我应该发送位图还是应该发送压缩图像然后在服务器上解压缩?与发送位图相比,压缩的成本和收益是多少?我知道压缩率会因图像而异,但我只是在询问利弊。
从 byte[] 向服务器发送视频可能会导致 outOfMemoryError,因此最好从 MultiPart 发布视频。您可以从此链接下载 jar 文件。http://hc.apache.org/downloads.cgi。下载 httpmime-4.2.jar 并将其添加到您的项目中。
public void uploadVideo(Context context, String videoPath) {
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(context.getString(R.string.url_service_fbpost));
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
if(!videoPath.isEmpty()){
FileBody filebodyVideo = new FileBody(new File(videoPath));
reqEntity.addPart("uploaded", filebodyVideo);
}
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);
}
Log.e("Response: ", s.toString());
return true;
} catch (Exception e) {
Log.e(e.getClass().getName(), e.getMessage());
return false;
}
}
我发现压缩比可能约为 16:1。足以让我在这种情况下选择压缩它。上面的比例是如果我将它压缩为 JPEG。