java获取视频时长
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
很多朋友都想知道java怎么获取视频时长?下面就一起来了解一下吧~
可以通过视频的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 File file.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.javapublic 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(秒)。
-
手机怎么剪爱奇艺里的视频
喜欢看影视剧的朋友想必对爱奇艺不会陌生,它里面的影视剧资源很多。一些朋友也会选择在爱奇艺上面下载视频进行剪辑处理,那么手机爱奇艺具体该怎么剪辑视频呢?第一种方法是用爱奇艺截取片段,找到并打开手机爱奇艺视频,进入想要剪辑的爱奇艺视频里面,然后选择视频右端...
-
电脑启动不起来是什么原因
1、首先可能是电源出现问题导致启动不起来,建议检查电源。2、主机内部电路损坏,建议找专业人员维修。3、风扇的转速以及平稳性不好,导致散热不好,主机无法启动。4、CUP损坏后也会出现此现象,CPU损坏无法通过自检,计算机无法启动。...
-
改图片格式方法,如何更改图片格式
1、找到想要更改格式的图片。2、找到后,对着图片右击,找到“编辑”。3、打开“编辑”,找到左上角的“文件(F)”。4、点击“文件”,再找到“另存为(A)...”。5、点击“另存为(A)...”,找到“保存类型(T)”,右边有一个箭头。6、点击箭头,就会展出许多种图片格式。7、选择自己想...
-
手机相册很多垃圾图片
我们使用手机去浏览网页,或者是刷微博以及微信的时候,都会加载一些网页,而且有些图片还会自动下载保存到手机相册里面,这就是为什么我们的手机相册总是会莫名的多出一些垃圾图片的原因。如果我们的手机下载了非官网渠道的APP,这种APP软件会出现无用图片,会在相册中保...