Android视频压缩并且上传
一,做视频上传首先第一步要从相册里选取视频,这一步。我的上篇博客中已经讲过了。
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视频压缩并且上传的更多相关文章
- Android之mtk上传log
Android之mtk上传log 1,打开浏览器 2.输入地址http://eservice.mediatek.com/eservice-portal/login 3.输入用户名,密码 4.提eser ...
- 使用.NET框架、Web service实现Android的文件上传(二)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYUAAAKpCAIAAADcx6fPAAAgAElEQVR4nOydd1hT5+LHg1attbfr1t ...
- 利用WCF与Android实现图片上传并传参
利用WCF与Android实现图片上传并传参 最近做一个项目后端使用WCF接收Android手机拍照并带其它参数保存到服务器里:刚好把最近学习的WCF利用上,本以为是个比较简单的功能应该很好实现,没想 ...
- Android OkHttp文件上传与下载的进度监听扩展
http://www.loongwind.com/archives/290.html 上一篇文章介绍了用Retrofit实现文件的上传与下载,但是我们发现没办法监听上传下载的进度,毕竟我们在做开发的时 ...
- SSM + Android 网络文件上传下载
SSM + Android 网络交互的那些事 2016年12月14日 17:58:36 ssm做为后台与android交互,相信只要是了解过的人都知道一些基本的数据交互,向json,对象,map的交互 ...
- RxHttp 完美适配Android 10/11 上传/下载/进度监听
1.前言 随着Android 11的正式发布,适配Android 10/11 分区存储就更加的迫切了,因为Android 11开始,将强制开启分区存储,我们就无法再以绝对路径的方式去读写非沙盒目录下的 ...
- android使用webview上传文件(支持相册和拍照)
老夫最近需要做一个项目,需要调用服务器段的一些网页来选择文件,刚开始还挺纠结的,不知从何下手,网上大致预览了大神们走过的路,他们传统的方式都是使用一下代码: public void openFileC ...
- 基于Http原理实现Android的图片上传和表单提交
版权声明:本文由张坤 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/794875001483009140 来源:腾云阁 ...
- 使用.NET框架、Web service实现Android的文件上传(一)
上面是上传结果的展示,下面具体讲一下实现过程. 一.Web Service (.NET) namespace VedioPlayerWebService.service.vedios { [WebSe ...
随机推荐
- hadoop中namenode启动失败
jps发现namenode启动失败 每次开机都要重新格式化一下namenode才可以 其实问题出现自tmp文件上,因为每次开机就会被清空,所以现在我们配置一个tmp文件目录. 如果之前没有配置过,默认 ...
- wget下载https文件,服务器可以虚拟机中不行的问题
用wget下载一个图片资源(https协议),在服务器上可以,但在本机的虚拟机中卡在下面这里了: [root@localhost ~]# wget 'https://gp1.wac.edgecastc ...
- ajax向Asp.NET后端传递数组型数据
近日,在开发一个组件的过程中,需要通过Ajax对象向Asp.NET后端传递一个比较复杂的表单,表单中的一个字段是数组类型,我能想到的办法是用JSON.stringify将前端的数组对象序列化成字符串, ...
- Python 3基础教程1-环境安装和运行环境
本系列开始介绍Python3的基础教程,为什么要选中Python 3呢?之前呢,学Python 2,看过笨方法学Python,学了不到一个礼拜,就开始用Python写Selenium脚本.最近看到一些 ...
- Python学习-前台开发-JavaScript、Dom和jQuery
JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. ...
- leetcode 149. 直线上最多的点数 解题报告
给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...
- 阻塞&&非阻塞
读常规文件是不会阻塞的,不管读多少字节,read一定会在有限的时间内返回.但是从终端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网络上没有接收到数据包,调 ...
- POJ 3977 Subset | 折半搜索
题目: 给出一个整数集合,求出非空子集中元素和绝对值最小是多少(元素个数尽量少) 题解: 分成两半 爆搜每一半,用map维护前一半的值 每搜出后一半的一个值就去map里找和他和绝对值最小的更新答案 # ...
- bzoj1009 [HNOI2008] GT考试 矩阵乘法+dp+kmp
1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 4542 Solved: 2815[Submit][Statu ...
- python面试经典315
期待的是可以检验自己学习的成功:苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍.一遍又一遍指导记住为止. 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Pyt ...