最近公司項(xiàng)目中需要上傳視頻爽茴,由于之前沒(méi)有涉及過(guò),初步可以上傳了绰垂,但由于一般手機(jī)本地視頻文件都很大室奏,所以得在上傳之前進(jìn)行壓縮處理,在百度劲装,github上各種找胧沫。在此做個(gè)記錄也希望能幫到一些需要的人,少走一些彎路占业。
關(guān)于視頻壓縮有以下幾種方式可選:
第一種:使用FFmpeg
缺點(diǎn):
1.壓縮效率低绒怨,時(shí)間長(zhǎng),使用繁瑣谦疾,增大apk體積
2.如果只是對(duì)視頻進(jìn)行壓縮南蹂,不建議使用FFmpeg
第二種:使用七牛SDK
七牛短視頻SDK鏈接:?https://developer.qiniu.com/sdk#official-sdk
缺點(diǎn):收費(fèi),只能試用念恍,測(cè)試的結(jié)果:隔天就會(huì)提示未經(jīng)授權(quán)
PLDroidShortVideo: Pili-System:unauthorized !
compressVideoResouce: transcode failed: 8
第三種:使用開(kāi)源庫(kù)SiliCompressor六剥,一個(gè)強(qiáng)大的,靈活的峰伙,易于使用的視頻和圖像壓縮庫(kù)疗疟。也是我項(xiàng)目中所使用到的
開(kāi)源庫(kù)地址?https://github.com/Tourenathan-G5organisation/SiliCompressor
1.Gradle
implementation'com.iceteck.silicompressorr:silicompressor:2.2.1'
2.添加相關(guān)權(quán)限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.使用
使用很簡(jiǎn)單,直接調(diào)用相關(guān)方法傳入文件路徑就能獲得壓縮之后新文件的路徑
<1> 視頻壓縮
壓縮視頻文件并返回新視頻的文件路徑
StringfilePath=SiliCompressor.with(Context).compressVideo(videoPath, destinationDirectory);
<2> 圖片壓縮
壓縮圖像并返回新圖像的文件路徑
StringfilePath=SiliCompressor.with(Context).compress(imagePath, destinationDirectory);
壓縮圖像并在刪除源圖像時(shí)返回新圖像的文件路徑
StringfilePath=SiliCompressor.with(Context).compress(imagePath, destinationDirectory,true);
壓縮圖像可繪制并返回新圖像的文件路徑
StringfilePath=SiliCompressor.with(Context).compress(R.drawable.icon);
壓縮圖像并返回新圖像的位圖數(shù)據(jù)
BitmapimageBitmap=SiliCompressor.with(Context).getCompressBitmap(imagePath);
壓縮圖像并在刪除源圖像的同時(shí)返回新圖像的位圖數(shù)據(jù)
BitmapimageBitmap=SiliCompressor.with(Context).getCompressBitmap(imagePath,true);
具體需要哪種壓縮方式瞳氓,根據(jù)具體需求調(diào)用相對(duì)應(yīng)的方法就可以了