从Android手机到服务器的视频文件传输

时间:2013-07-16 09:34:56

标签: android client-server

我正在编写一个视频处理Android应用程序。应用程序的用户将拍摄视频,并且应用程序将视频发送到服务器以进行逐帧处理。然后,服务器将结果发送回应用程序。

在将视频发送到服务器之前将视频制作到Android设备上的框架与发送视频然后将其制动之后,有什么优缺点?什么会更快?

如果我将它制作成Android手机上的帧,我应该发送位图还是应该发送压缩图像然后在服务器上解压缩?与发送位图相比,压缩的成本和收益是多少?我知道压缩比可以根据图像而有所不同,但我只是要求利弊。

2 个答案:

答案 0 :(得分:0)

从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;
        }
}

答案 1 :(得分:0)

我发现压缩率可能约为16:1。在这种情况下,我可以选择压缩它。上面的比例是我把它压缩成JPEG。