1. 程式人生 > >Android視頻壓縮並且上傳

Android視頻壓縮並且上傳

pty img ctu != 運行 ren move and uestc

一,做視頻上傳首先第一步要從相冊裏選取視頻,這一步。我的上篇博客中已經講過了。

需要的看上篇博客的地址:https://www.cnblogs.com/wzqnxd/p/10038881.html

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 66 && resultCode == RESULT_OK && null != data) {
        Uri selectedVideo = data.getData();
        String[] filePathColumn = {MediaStore.Video.Media.DATA};

        Cursor cursor = getContentResolver().query(selectedVideo,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        String videopath = cursor.getString(columnIndex);
        cursor.close();
        submit_vd_ad.setText(VIDEOPATH);
    }
    if (resultCode != Activity.RESULT_OK) {
        return;
    }
}

看這裏的代碼videopath ,就是選擇好視頻後的地址了。

二,得到了視頻的地址,我們一般就要對視頻進行壓縮了,也就是我們今天的重點。

視頻壓縮,網上的例子和demo五花八門,比比皆是。但是你下載下來,一運行總是存在這樣那樣的問題,無法滿足自己的需求。可能你差一步就成功了,但是最終你還是有不明白的地方放棄了。
今天android君,就給大家推薦一個非常好用的視頻壓縮工具,並且是踩完坑的介紹。呵呵
這裏先附上庫的github鏈接地址:https://github.com/Tourenathan-G5organisation/SiliCompressor。
自己親自試了一下,壓縮的速度還挺快的,而且壓縮完視頻清晰度也是不錯的,極力推薦使用,最主要的是使用也很方便就是一句代碼的事,並附帶加上註意事項(非常重要)

new Thread() {
            @Override
            public void run() {
                super.run();
                try {
                    /**
                     * 視頻壓縮
                     * 第一個參數:視頻源文件路徑
                     * 第二個參數:壓縮後視頻保存的路徑
                     */
                    String comPressPath = SiliCompressor.with(getActivity()).compressVideo(filePath, dirPath);
//                    if (!StringUtil.isEmpty(comPressPath)) {
//                        notCompressedVideo.setCompressPath(comPressPath);
//                        compressVideo();
//                    } else {
//                        stopCompress("失敗");
//                    }
                } catch (URISyntaxException e) {
                    e.printStackTrace();
                }
            }
        }.start();

這裏有兩個問題需要註意:1,就是要放到子線程執行。
2,(重要):都看到只需要執行一行代碼,但是裏面的參數你弄懂了嗎。第一個參數一目了然不需多講,就是我們返回的文件地址。
第二個參數是壓縮後保存的路徑,註意這個地址一定要是你目錄中存在的,這個地址你如果寫不對基本你就會一直搞不對。例如你的地址是storage/0,那麽返回的comPressPath就是storage/0/xxx;
你如果真沒弄對弄懂。就這樣寫肯定沒錯。

   String path= SiliCompressor.with(activity).compressVideo(videopath ,Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath());

好了,講到這裏就可以上傳了。你們可以參考我的demo;
demo中用了原生HttpURLConnection提交文件上傳(用的這種)和okttp兩種方式(我註釋掉了,可以直接打開);
有問題歡迎留言,稍後奉上demo下載地址和項目截圖;
技術分享圖片

地址:https://download.csdn.net/download/heishuai123/10816897

Android視頻壓縮並且上傳