zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    jquery全屏幻灯轮播焦点图
    PHP curl 上传文件版本兼容问题
    一个网站同一域名不同目录下的文件访问到的cookie值不同是什么原因?
    Linux系统查找清理磁盘大文件方法
    REDIS常用命令
    CentOS 6.4安装pip,CentOS安装python包管理安装工具pip的方法
    centos6 编译安装nodejs4.3
    centos yum安装php5.6.19 remi源按照
    Mac下用brew搭建PHP(LNMP/LAMP)开发环境
    为什么JAVA要提供 wait/notify 机制?是为了避免轮询带来的性能损失
  • 原文地址:https://www.cnblogs.com/wzqnxd/p/10038881.html
Copyright © 2011-2022 走看看