java获取视频时长

需要一个包,没有的找我要(java-1.0.2-1.0.2.jar)

一个可以通过视频的url地址或者是上传视频 文件有类型为(MultipartFile)的来获取视频的时长。

通过MultipartFile 的文件类型获取视频时长

这个方式的获取比较好办;直接上码:类名=》VideoUtil.java

 /*** 通过MultipartFile 的文件类型获取视频时长* @param file* @return*/public Integer ReadVideoTimeMs(MultipartFile file) {Encoder encoder = new Encoder();long ms = 0;try {// 获取文件类型String fileName = file.getContentType();// 获取文件后缀String pref = fileName.indexOf("/") != -1 ? fileName.substring(fileName.lastIndexOf("/") + 1, fileName.length()) : null;String prefix = "." + pref;// 用uuid作为文件名,防止生成的临时文件重复final File excelFile = File.createTempFile(UUID.randomUUID().toString().replace("-", ""), prefix);// MultipartFile to Filefile.transferTo(excelFile);MultimediaInfo m = encoder.getInfo(excelFile);ms = m.getDuration();//程序结束时,删除临时文件VideoUtil.deleteFile(excelFile);} catch (Exception e) {e.printStackTrace();}int ss = 1000;int mi = ss * 60;int hh = mi * 60;int dd = hh * 24;long day = ms / dd;long hour = (ms - day * dd) / hh;long minute = (ms - day * dd - hour * hh) / mi;long second = (ms - day * dd - hour * hh - minute * mi) / ss;Integer timeMS = Math.toIntExact(hour * 3600 + minute * 60 + second);return timeMS;}/*** 通过url地址获取视频时长* @param fileName* @return*/public Integer FileVideoTimeMs(String fileName){Encoder encoder = new Encoder();long ms = 0;try {File file = getFileByUrl(fileName);MultimediaInfo m = encoder.getInfo(file);ms = m.getDuration();VideoUtil.deleteFile(file);}catch (Exception e){e.printStackTrace();}int ss = 1000;int mi = ss * 60;int hh = mi * 60;int dd = hh * 24;long day = ms / dd;long hour = (ms - day * dd) / hh;long minute = (ms - day * dd - hour * hh) / mi;long second = (ms - day * dd - hour * hh - minute * mi) / ss;Integer timeMS = Math.toIntExact(hour * 3600 + minute * 60 + second);return timeMS;}

通过url地址获取视频时长

url地址来获取的时长需要做一定的转换,要先获取文件

  • 主要的方法代码:类名 =》VideoUtil.java
/*** 通过url地址获取视频时长* @param fileName* @return*/public Integer FileVideoTimeMs(String fileName){Encoder encoder = new Encoder();long ms = 0;try {File file = getFileByUrl(fileName);MultimediaInfo m = encoder.getInfo(file);ms = m.getDuration();VideoUtil.deleteFile(file);}catch (Exception e){e.printStackTrace();}int ss = 1000;int mi = ss * 60;int hh = mi * 60;int dd = hh * 24;long day = ms / dd;long hour = (ms - day * dd) / hh;long minute = (ms - day * dd - hour * hh) / mi;long second = (ms - day * dd - hour * hh - minute * mi) / ss;Integer timeMS = Math.toIntExact(hour * 3600 + minute * 60 + second);return timeMS;}
  • getFileByUrl()方法 :类名 =》VideoUtil.java
public static File getFileByUrl(String url) throws  IOException {File tmpFile = File.createTempFile("temp", ".tmp");//创建临时文件VideoUrl.toBDFile(url, tmpFile.getCanonicalPath());return tmpFile;}
  • toBDFile() 方法:类名 =》VideoUrl.java
public static void toBDFile(String urlStr, String bdUrl) throws IOException, UnknownHostException {URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection) url.openConnection();DataInputStream in = new DataInputStream(conn.getInputStream());byte[] data = toByteArray(in);in.close();FileOutputStream out = new FileOutputStream(bdUrl);out.write(data);out.close();}
  • toByteArray()方法:类名 =》VideoUrl.java
public static byte[] toByteArray(InputStream in) throws IOException {ByteArrayOutputStream out = new ByteArrayOutputStream();byte[] buffer = new byte[1024 * 4];int n = 0;while ((n = in.read(buffer)) != -1) {out.write(buffer, 0, n);}return out.toByteArray();}

不要忘记删除自己生成的临时文件:类名 =》VideoUtil.java

/*** 删除临时文件* @param files*/private static void deleteFile(File... files) {for (File file : files) {if (file.exists()) {file.delete();}}}

总结

  • 两个方法的获取视频的时长,最后读取的数据单位是s(秒)
  • 两个主要方法和两个工具类

java获取视频时长相关推荐

  1. java获取视频时长(实测可行)

    因为数据库视频表有一段时间丢失维护duration字段, 现在有需求需要用到此字段,只能再重新获取一遍, 更新表.哎!!! 先奉上 https://github.com/opensourceteams ...

  2. java获取视频时长_Java获取视频的大小、时长

    前端上传视频之后,根据上传的视频文件获取视频的大小和时长 1.获取视频时长 private String ReadVideoTime(File source) { Encoder encoder = ...

  3. 通过ffmpeg获取视频时长

    通过Java获取视频时长,可以通过jave和ffmpeg这两种工具来获取,jave和ffmpeg都能拿到本地视频文件的时长,可如果是播放视频URL,就只能通过ffmpeg来获取. 现在视频文件基本上都 ...

  4. Java通过FFMPEG获取视频时长

    2019独角兽企业重金招聘Python工程师标准>>> Java通过FFMPEG获取视频时长 详见https://www.yz1618.cn/view/19 转载于:https:// ...

  5. java如何截取视频文件_Java获取视频时长及截取帧截图详解

    前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 org.byt ...

  6. java获得U盘根目录、读取图片视频头文件信息、获取视频时长

    1.获得U盘根目录,例如我们取名U盘名称为"测试U盘",一般插入U盘后,在系统的H盘 /** * 得到系统U盘根目录 */ public String findURootPath( ...

  7. uni-app小程序如何获取视频时长

    uni-app小程序如何获取视频时长 从网上搜寻了一下发现都没有单纯获取视频时长的方法,于是只能自己研究一下了 uni-app和小程序都提供了video组件,却发现并没有提供获取视频时长属性或方法, ...

  8. ffmpeg获取视频时长和分辨率

    文章目录 ffmpeg获取视频文件时长和分辨率 获取视频时长 获取视频分辨率 ffmpeg获取视频文件时长和分辨率 获取视频时长 import os import subprocess# video_ ...

  9. 文件笔记之javaCV 视频工具|获取视频时长|缩略图

    文件笔记之javaCV 视频工具|获取视频时长|缩略图) 目录 简介 依赖引入 实现 目录 简介 通过javaCV 视频工具-截取视频缩略图.获取视频属性 依赖引入 <!--javaCV 视频工 ...

最新文章

  1. redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
  2. python逆序打印出各位数字_Python练习题 024:求位数及逆序打印
  3. 泛型--定制泛型接口、泛型类--介绍篇
  4. 【零散积累】传输文件(sz/rz/scp命令)
  5. 最新Oracle 和 mysql 的对比参照----开发篇(转)
  6. 微信服务号+支付+php,微信服务号发送营销红包给关注用户步骤及部分php代码
  7. Python一题多解:水仙花数
  8. 走路!不要跑步!不生病的秘密!
  9. JMeter测试实例
  10. SVN 冲突文件快速解决方法
  11. SVN更新无数次后仍显示Out of date
  12. 【数字信号】基于matlab DTMF电话拨号音识别【含Matlab源码 218期】
  13. 算法:回溯六 Permutations II数组全排列II
  14. 获取阿里云docker加速器地址
  15. CodeBlocks新手安装以及汉化(20,03版本)
  16. EPLAN电气设计实例入门教程pdf
  17. java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
  18. LT2611UXC-LVDS转HDMI2.0转换芯片
  19. 高考大数据:全国31省高考难度,哪个才是地狱模式?
  20. 百度服务器的操作系统是什么,百度公共dns地址是多少|win7设置百度公共dns步骤...

热门文章

  1. DVWA之SQL Injection (Blind)
  2. python抢票系统代码及解说_python抢票程序
  3. I/O Extended Android/Flutter 专场活动即将开始!
  4. Hibernate打印携带参数的SQL解决方案
  5. ZUK Z2 Pro(Z2121) 免解锁BL 免rec Magisk Xposed ROOT 救砖 ZUI 4.0.247
  6. hdu 3234 Exclusive-OR 题解(并查集,思维)
  7. Python 3 教程(二)
  8. 深度学习技术实战研修!
  9. 如何搭建 ETH 2.0 验证节点
  10. 东软培训Python怎么样