2015-05-16 4 views
0

Я хочу сжать видео/аудиофайл перед отправкой на сервер, потому что для загрузки требуется слишком много времени. Я использую многостраничный объект с телом строки, чтобы загрузить файл на сервер.Android Compress Audio/Video перед отправкой на сервер

Мой код ниже. Пожалуйста, дайте мне возможные решения этой проблемы. Этот код работает, но занимает слишком много времени. Может ли кто-нибудь помочь мне улучшить производительность?

try { 
    if (selectedPath == null || selectedPath == "") { 

     getActivity().runOnUiThread(new Runnable() { 
       public void run() { 

        Alert_Dialogs.custom_alert_dialog(getActivity(),"Please select Video."); 

       } 
      });  
    } 
    else { 

    File file = new File(selectedPath); 

    StringBody title = new StringBody(et_title.getText().toString().trim()); 
    StringBody catId = new StringBody(cat_id); 
    StringBody user_data = new StringBody(user_id); 

     FileBody filebodyVideo = new FileBody(file); 
    CustomMultiPartEntity customMultiPartEntity = new CustomMultiPartEntity(new ProgressListener() { 

     @Override 
     public void transferred(long num) { 

      publishProgress((int) ((num/(float) totalSize) * 100));        } 
    }); 


    customMultiPartEntity.addPart("title",title); 
    customMultiPartEntity.addPart("catId",catId); 
    customMultiPartEntity.addPart("user_id",user_data); 
    customMultiPartEntity.addPart("qqfile", filebodyVideo); 

    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost(Application.UploadVideosEndpoint()); 
    // static_url+"WS/videoUpload?api="+static_api_key 

    totalSize = customMultiPartEntity.getContentLength(); 
    httppost.setEntity(customMultiPartEntity); 


    HttpResponse response = httpclient.execute(httppost); 
    HttpEntity resEntity = response.getEntity(); 


    str_response = EntityUtils.toString(resEntity); 



    if (resEntity != null) { 
     resEntity.consumeContent(); 
    } 

    httpclient.getConnectionManager().shutdown(); 
} 


} catch (ClientProtocolException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

ответ

0

Вы можете создать ZIP-файл ваших данных для отправки. Сделав zip-данные, они будут сжаты (поэтому размер уменьшен).

Вот рабочий пример с кодом, который поможет вам.

zip/unzip file in android

+0

привет спасибо за ответ .... но я не хочу сделать почтовый file..is это любое другое решение для сжатия файла без архивирования ?? –

Смежные вопросы