springboot使用MultipartFile获取上传视频的时长(不用在本地生成临时文件)

1.需要下载第三方jar包:该工程使用的是SpringBoot。由于在maven仓库中没有 jave-1.0.2.jar 这个jar,所以需要自己去下载到本地

微云地址:https://share.weiyun.com/5epeWn5    点击可直接快速下载

2.将 jave-1.0.2.jar 这个jar包引入到项目中,放在项目的src/main/resources/lib 目录下

3.配置项目pom ,将该jar包依赖到项目中,打包时能一起打包部署:

pom.xml文件:

<!--java-1.0.2.jar-->
<dependency>
   <groupId>it.sauronsoftware</groupId>
   <artifactId>jave</artifactId>
   <version>1.0.2</version>
   <scope>system</scope>
   <systemPath>${project.basedir}/src/main/resources/lib/jave-1.0.2.jar</systemPath>
</dependency>
<build>
   <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>-->
</build>

4.在启动类中注入:multipartResolver,开启springboot对 CommonsMultipartFile文件强转的支持:

 @Bean("multipartResolver")
public CommonsMultipartResolver multipartResolver(){
   CommonsMultipartResolver resolver = new CommonsMultipartResolver();
   resolver.setDefaultEncoding("UTF-8");
   resolver.setMaxInMemorySize(30);
   return resolver;
}
@SpringBootApplication( exclude = {MultipartAutoConfiguration.class})

5.获取视频时长:

/**
 * 获取视频时间
 */
private String getVideoTime(MultipartFile contentFile) throws Exception {
    // 将MultipartFile转换为Encoder所需的File
    CommonsMultipartFile cf= (CommonsMultipartFile)contentFile;
   DiskFileItem fi = (DiskFileItem)cf.getFileItem();
   File f = fi.getStoreLocation();
    // 获取视频时长
    Encoder encoder = new Encoder();
    MultimediaInfo m = encoder.getInfo(f);
    long ls = m.getDuration()/1000;
    int hour = (int) (ls/3600);
    int minute = (int) (ls%3600)/60;
    int second = (int) (ls-hour*3600-minute*60);
    //logger.info("视频时长为:{}时{}分{}秒", hour, minute, second);
    String time = hour+":"+minute+":"+second;
    return time;

}
 
发布了42 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a116385895/article/details/104990689
今日推荐