一,做视频上传首先第一步要从相册里选取视频,这一步。我的上篇博客中已经讲过了。

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() {@Overridepublic 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

转载于:https://www.cnblogs.com/wzqnxd/p/10038881.html

Android视频压缩并且上传相关推荐

  1. android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...

    android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b 短版本-.jar已弃用,其升级版本java.lang.NoClassDefFoundError在 ...

  2. 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码

    不多说上代码 public abstract class NineGridAdapter { protected Context context; protected List list; publi ...

  3. RxHttp 完美适配Android 10/11 上传/下载/进度监听

    1.前言 随着Android 11的正式发布,适配Android 10/11 分区存储就更加的迫切了,因为Android 11开始,将强制开启分区存储,我们就无法再以绝对路径的方式去读写非沙盒目录下的 ...

  4. Android开发文件上传格式,(android开发)使用okhttp上传文件

    开发android手机客户端,常常会需要上传文件到服务器,比如:你手机里的照片. 使用okhttp会是一个很好的选择.它使用很简单,而且运行效率也很高. 首先,在 app/build.gradle 的 ...

  5. android多文件上传错误,微信多图上传解决android多图上传失败问题

    微信提供了文件上传的方法wx.uploadFile来上传我们的图片 wx.chooseImage({ success: function(res) { var tempFilePaths = res. ...

  6. 【Android】文件上传

    Android实现文件上传(图片上传) http接口封装 文件上传工具类 页面调用处理 http接口封装 首先是根据自己选用的网络框架进行文件上传的接口封装 @Multipart@POST(" ...

  7. uni-app小程序实现视频压缩及上传

    下面两张图是中的第一张图是选择视频进行上传,第二张图是视频上传后的展示操作 这里是有完成选择视频上传压缩,展示 选择视频: 上传视频后: 这个整体的思路是选择视频压缩并上传 全部代码: <tem ...

  8. Android 实现文件上传功能(upload)

    文 件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的.下面是一个模拟网站程 序上传文件的例子.这里只写出了Android部分的 ...

  9. Android HTTP POST上传

    HTTP POST上传通用方法,支持文字.图片.文件等. 依赖jar包下载地址:http://hc.apache.org/downloads.cgi 下载HttpClient ***   Binary ...

最新文章

  1. C语言里的逗号!_只愿与一人十指紧扣_新浪博客
  2. 服务治理治什么,10张图告诉你答案
  3. HTML服务器控件与Web服务器控件的区别[转]
  4. java 上传超时_上传视频超时
  5. STM32开发 -- 4G模块开发详解(2)
  6. Java动态代理代码案例:使用jdk自带的Proxy只能对有接口的类进行动态代理
  7. c语言如何监控网卡信息,查看网卡信息及状态和网卡日志信息
  8. java中常量final的用法_详解Java中final的用法
  9. 前端学习(2910):vue的介绍
  10. ARM-Linux下交叉编译opessl-1.0.0
  11. IOS 开发 UIProgress 和 UISlidre 进度条和滑动条组件
  12. WeLive在线客服系统
  13. 【算法学习】AVL平衡二叉搜索树原理及各项操作编程实现(C++)
  14. python二级考试真题_2020年海南二级建造师考试《建筑工程》真题及答案_二级建造师...
  15. 201521123004 《Java程序设计》第2周学习总结
  16. 苹果笔记本摄像头Linux驱动,苹果发布Macbook摄像头驱动更新 更适配window10
  17. java 12进制转换_Java进制转换
  18. IQ Questions
  19. ecmascript2015
  20. 面试官:为什么 0.1 + 0.2 == 0.300000004 ?

热门文章

  1. go语言的channel特性
  2. rewind和fseek
  3. CC++面试题大汇总
  4. centos7安装pyenv
  5. 移动端开发 rem 单位使用问题
  6. linux mmap 详解【转】
  7. 使用Ubuntu笔记
  8. ExtJS 动态增加与删除items,动态设置textField可见与否
  9. 网站SEO搜索排版布局优化
  10. style=@android:style/buttonbar,Setting style=?android:attr/buttonBarStyle to parent layout and s...