今天在做需求的时候遇到一个问题,就是获取上传音频文件、视频文件的播放时长。虽然时长问题可以在前段通过加载获取到。但是最后还是决定使用Java,来获取时长。百度了很多,但是发现都不完整,所以用这篇博客来记录一下。

该工程使用的是SpringBoot。由于在maven仓库中没有 jave-1.0.2.jar 这个jar,所以需要自己去下载到本地。
jave-1.0.2.jar 下载地址:http://www.java2s.com/Code/Jar/j/Downloadjave102jar.htm

下面是具体实现代码

pom.xml 文件

<dependency><groupId>it.sauronsoftware</groupId><artifactId>jave</artifactId><version>1.0.2</version><!-- 下面两个是使用system在pom.xml中导入jar --><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/jave-1.0.2.jar</systemPath>
</dependency><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--将本地使用的jar打包的时候引入lib--><includeSystemScope>true</includeSystemScope></configuration></plugin>
</plugins><!-- 下面是为了打包的时候能够将jave-1.0.2.jar 排查,防止静态资源打进去 -->
<resources><resource><directory>${basedir}src/main/resources</directory><excludes><exclude>lib/*.jar</exclude></excludes></resource>
</resources>

UploadFileController.java

import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;/*** 上传文件接口** @author Ink-足迹* @create 2018-06-01 16:58**/
@RestController
@RequestMapping("common")
public class UploadFileController {private static final String FOLDER_PATH = "course/";/*** 上传文件** @param folder 文件夹名, iamge=图片,voice=音频,video=视频,ppt=ppt...* @param file   上传的文件* @return* @throws Exception* @author Ink-足迹*/@PostMapping(value = "/uploadFile/{folder}")public ServerResponse<JSONObject> uploadFile(@PathVariable("folder") String folder, @RequestParam("file") MultipartFile file) throws Exception {long duration = 0;//音频长度,秒String fileName = file.getOriginalFilename();String suffix = fileName.substring(fileName.lastIndexOf("."));StringBuilder sb = new StringBuilder();sb.append(FOLDER_PATH).append(folder).append("/");String path = "";// 获取音频文件的时长if (StringUtils.equals("voice", folder) || StringUtils.equals("video", folder)) {duration = FileUploadUtil.getVideoDuration(file);}JSONObject result = new JSONObject();result.put("url", path);result.put("name", fileName);result.put("size", file.getSize() + "");result.put("duration", duration);return ServerResponse.createBySuccess(result);}
}

获取时长工具类 FileUploadUtil.java

import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.MultimediaInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ResourceUtils;
import org.springframework.web.multipart.MultipartFile;import java.io.File;/*** 文件上传工具类** @author Ink-足迹* @create 2018-06-13 20:13**/
public class FileUploadUtil {private static final Logger log = LoggerFactory.getLogger(FileUtil.class);/*** 获取时长** @param file 音频/视频文件* @return*/public static long getVideoDuration(MultipartFile file) {long duration = 0;try {File source = new File(getFilePath() + file.getOriginalFilename());file.transferTo(source);Encoder encoder = new Encoder();MultimediaInfo info = encoder.getInfo(source);duration = info.getDuration();if (source.exists()) {source.delete();}return duration / 1000;} catch (Exception e) {log.error("获取时长", e);return duration;}}/*** 获取路径** @return* @throws Exception*/private static String getFilePath() throws Exception {//获取当前文件的根路径File path = new File(ResourceUtils.getURL("classpath:").getPath());if (!path.exists()) path = new File("");//盘符路径StringBuilder codeUrl = new StringBuilder();codeUrl.append(path.getAbsolutePath()).append("/static/video/");File file = new File(codeUrl.toString());if (!file.exists()) {file.mkdirs();}return codeUrl.toString();}
}

————————————

转载自:https://blog.csdn.net/suifengerye/article/details/97113146

SpringBoot获取音频文件时长相关推荐

  1. php获取音频的时长,PHP编程获取音频文件时长的方法【基于getid3类】

    本文实例讲述了PHP编程获取音频文件时长的方法.分享给大家供大家参考,具体如下: 问题: 昨天在新增论坛功能的时候,移动端显示音频文件需要知道是多长的音频: 具体解决方案如下: 首先就是数据库中增加保 ...

  2. java 获取音频文件时长

    需要导入jar包:jave 1.0.2 jar 如果是maven项目,在pom.xml文件中添加: <dependency><groupId>it.sauronsoftware ...

  3. php 获取音视频时长,PHP 利用getid3 获取音频文件时长等数据

    1.首先,我们需要先下载一份PHP类-getid3 https://codeload.github.com/JamesHeinrich/getID3/zip/master 2.解压刚才下载好的文件,拿 ...

  4. 统计文件夹下音频文件时长

    统计音频文件时长 功能 代码 主要分析 提取文件的音频时长 读取文件夹下的所有文件的绝对路径 写这个主要是为了能更好的安排自己的学习时间,学习视频的时长很难直观的看总和时间,导致安排的时间没有很好的规 ...

  5. Java 获取opus 音频文件时长

    当时为了获取时长花费好长时间,所以现在写出这文章以免后面有遇到该问题不止如何解决花费太长时间.话不多说,上代码 需要的依赖包有 <!-- https://mvnrepository.com/ar ...

  6. Python获取mp3音频文件时长方法汇总

    '''pymediainfo: pip3 install pymediainfo 版本:5.1.0不支持网络音频 ''' class pymediainfoTest():@classmethoddef ...

  7. Java获取MP3文件时长的几种方法

    在网上找了很多方法,其中最匮乏的就是获取网络资源音频的时长,在这里总结一下: 1:获取网络资源音频时长: 这种方法是获取文件字节大小然后在用公式自己算的 BufferedInputStream bis ...

  8. SSM根据上传文件获取视频文件时长

    一.编写前端上传文件代码 <html> <head><title>file upload</title> </head> <body& ...

  9. js 获取视频文件时长

    file为上传后的file类文件类型 //获取视频时长 function FileValue(file) {var url = URL.createObjectURL(file);$("#v ...

最新文章

  1. 《软件工程》第01章在线测试
  2. ieee期刊_IEEE期刊的双栏排版中的图片位置问题
  3. linux配置usb主从_一种Linux下USB设备主从切换的实现
  4. python求素数之和_python如何求质数之和
  5. mac json格式化工具_简洁好用的工具都是相似的
  6. oracle group by 多类别_python数据关系型图表散点图系列多数据系列
  7. Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法...
  8. 怎么把汇编语言变成c语言,如何把汇编语言转换成C语言
  9. 常见错误Delegate already added to touch dispatcher.的解决方案
  10. 互联网金融又任性撒钱了
  11. Web 学习之跨域问题及解决方案
  12. Maven项目添加ojdbc8
  13. 如何在mysql查询结果集中得到记录行号_如何在MySQL查询结果集中得到记录行号...
  14. Win8下Qualcomm Atheros AR9285网卡改mac
  15. 西门子MM4系列变频器反转功能的具体使用方法和注意事项
  16. Python_动态二维码的制作
  17. 【Suffix Array】后缀数组详解
  18. 新能源车电机控制器源代码资料 基于TI芯片的FOC源代码资料
  19. Matlab笔记_郭彦甫
  20. div 设置a4大小_javascript – 拉伸div到A4大小

热门文章

  1. Unity使用VS编辑器打开项目失败解决办法
  2. PS多个版本免费本地高速下载(包含2021)
  3. 【数据结构与算法综合实验】景区信息管理系统迭代开发
  4. 数据结构——链表面试题
  5. dbgview问题:Could not extract Debug View driver to c:\Windows\System32\Drivers\Dbgv.sys
  6. input同时调起相机和相册,踩坑笔记
  7. FPGA:逻辑函数的代数法化简
  8. 数据结构各大排序整理+动图演示+代码实现(Java)
  9. (gcd,lcm,互质) 康纳的表情包--SDUT,Wolf and Rabbit--HDOJ
  10. Parameter 0 of method modifyRequestBodyGatewayFilterFactory....真正的解决办法!!!!!