/*** 下载视频* @param videoUrl 实际视频地址* @param downloadPath  文件下载地址* @param fileName  文件名* @param SuffixName  后缀名*/public static void downVideo(String videoUrl, String downloadPath,String fileName, String SuffixName) {HttpURLConnection connection = null;InputStream inputStream = null;RandomAccessFile randomAccessFile = null;//路径名加上文件名加上后缀名 = 整个文件下载路径String fullPathName = downloadPath+fileName+"."+SuffixName;try {// 1.获取连接对象URL url = new URL(videoUrl);// 获取链接对象,就是靠这个对象来获取流connection = (HttpURLConnection) url.openConnection();// Range代表读取的范围,bytes=0-代表从0字节到最大字节,意味着读取所有资源connection.setRequestProperty("Range", "bytes=0-");// 与网页建立链接,链接成功后就可以获得流;connection.connect();// 如果建立链接返回的相应代码是200到300间就为成功,否则链接失败,结束函数if (connection.getResponseCode() / 100 != 2) {System.out.println("连接失败...");return;}// 2.获取连接对象的流inputStream = connection.getInputStream();// 已下载的大小 下载进度int downloaded = 0;// 总文件的大小int fileSize = connection.getContentLength();// 3.把资源写入文件randomAccessFile = new RandomAccessFile(fullPathName, "rw");while (downloaded < fileSize) {// 3.1设置缓存流的大小//判断当前剩余的下载大小是否大于缓存之,如果不大于就把缓存的大小设为剩余的。byte[] buffer = null;if (fileSize - downloaded >= 1000000) {buffer = new byte[1000000];} else {buffer = new byte[fileSize - downloaded];}// 3.2把每一次缓存的数据写入文件int read = -1;int currentDownload = 0;long startTime = System.currentTimeMillis();// 这段代码是按照缓存的大小,读写该大小的字节。然后循环依次写入缓存的大小(用让硬件频繁的写入,可以提高效率和保护硬盘)while (currentDownload < buffer.length) {read = inputStream.read();buffer[currentDownload++] = (byte) read;}long endTime = System.currentTimeMillis();double speed = 0.0; //下载速度if (endTime - startTime > 0) {speed = currentDownload / 1024.0 / ((double) (endTime - startTime) / 1000);}randomAccessFile.write(buffer);downloaded += currentDownload;randomAccessFile.seek(downloaded);System.out.printf(fullPathName+"下载了进度:%.2f%%,下载速度:%.1fkb/s(%.1fM/s)%n", downloaded * 1.0 / fileSize * 10000 / 100,speed, speed / 1000);}} catch (MalformedURLException e) {// 具体的异常放到前面e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {//关闭资源、连接connection.disconnect();inputStream.close();randomAccessFile.close();} catch (IOException e) {e.printStackTrace();}}}

原文地址:https://cloud.tencent.com/developer/article/1455706

java保存视频到本地相关推荐

  1. android 下载保存视频到本地相册刷新 机型适配问题

    android 下载保存视频到本地相册刷新 机型适配问题 android 下载保存视频到本地相册刷新问题 一般我们保存视频文件到本地 使用一下方法扫描到相册,通知相册更新 MediaScannerCo ...

  2. java 保存和读取本地文件

    保存数据到本地文件 private void saveDataToFile(String fileName,String data) {BufferedWriter writer = null;Fil ...

  3. Java保存MultipartFile至本地目录

    目录: 1.所需依赖 2.文件保存本地目录工具类 3.项目实战 4.结果 1.所需依赖 <dependency><groupId>org.springframework.boo ...

  4. java保存cookie在本地_Java保存Cookie

    更多文章请进入:我的开源网 很多时候应用中需要使用Cookie,比如购物网站,保存购物车时候,还有就是常见的登录,保存一周或是半年之类的,都是要用到Cookie,下面就介绍下Java中Cookie的保 ...

  5. unity android视频录制sdk,Unity中保存EveryPlay录制视频到本地的解决方案

    五月 14.2018. 0 Comment 在Unity中使用EveryPlay录制视频时,有如下问题: 1. EveryPlay API(截止到现在,之后Final Version可能会增加)不支持 ...

  6. Python-OpenCV 读取和保存视频和解决保存失败的原因分析

    一.安装OpenCV # 打开终端输入,没有装pip的话装上pippip install opencv-contrib-python# 打开Python交互环境,打印opencv版本import cv ...

  7. Ubuntu使用gym保存视频报错“Unknown encoder ‘libx264‘”

    在使用gym环境训练智能体并保存视频到本地的实验中,使用Monitor保存视频的时候遇到了报错: Unknown encoder 'libx264' 因为考虑到保存gym保存视频是使用的ffmpeg, ...

  8. java 保存本地文件_java如何实现保存文件到本地

    java如何实现保存文件到本地 发布时间:2020-04-30 11:20:24 来源:亿速云 阅读:773 作者:小新 java如何实现保存文件到本地?相信有很多人都不太了解,今天小编为了让大家更加 ...

  9. java接口保存文件到本地指定目录下

    java接口保存文件到本地指定目录下.md 一.需求 二.后端代码 三.postman模拟页面上传 一.需求 通过接口将 file 保存到本地指定目录下 动动发财小手,关注 + 点赞 + 收藏不迷路. ...

  10. 播放和保存视频,图像倒置纠正到本地文件夹(含ffmpeg ,pyav多线程读取多路网络摄像头)

    播放一段视频并显示 import cv2if __name__ == '__main__':input_video_file_1 = 'smoking_20191011_154214.mp4'# se ...

最新文章

  1. Python距离计算
  2. 涂格子游戏html,网页版方格贪吃蛇游戏html源码分享
  3. vue-cli创建新项目
  4. baidumap vue 判断范围_懂一点前端—Vue快速入门
  5. 某个JAVA类断点无效_解决eclipse中断点调试不起作用的问题
  6. android ANR产生原因和解决办法
  7. 简述网桥、网关、网卡之间的联系和区别
  8. 互联网运营数据分析(1):流量分析
  9. 方向导数,偏导数,梯度
  10. Laravel核心概念:服务容器(ServiceContainer),服务提供者(Service Provider),门面(Facade),契约(Contracts)
  11. Unity内存/GC优化方法
  12. Spider爬虫框架之Spiders模块
  13. 去除字符串中的特殊符号及表情
  14. 杂牌平板mt6797_联发科MT6797炸现跑分库 强得令人毛骨悚然
  15. Linux内存管理(二):页面查询过程简述
  16. C++/MFC 面试题(一)
  17. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表
  18. htcm8 android8,HTC全面屏手机 U11 Plus曝光:6寸+骁龙835,安卓8.0系统
  19. 小程序开发合同_小程序开发公司在哪里找?
  20. Windows服务器运行spring boot的jar包会自动关闭

热门文章

  1. python实现语法分析器_python语法分析器
  2. Python编程从入门到实践(基础入门)
  3. 【ubantu18.04 有线网络驱动安装 r8215-9.007.01】
  4. 图灵好书推荐——数学+物理+宇宙
  5. 离散数学 习题篇 —— 谓词公式练习
  6. VMware Workstation 14永久激活密钥
  7. 微信公众号文章 html,微信公众号文章爬取
  8. 公众号排版文章批量导出-免费公众号文章批量导出排版
  9. activitymq 集群构建
  10. 麒麟系统安装打印机共享_国产操作系统麒麟——文档打印 解决方案