JavaCV获取视频文件时长的方法

 更新时间:2019年07月24日 13:02:32   作者:iteye_11946  
这篇文章主要为大家详细介绍了JavaCV获取视频文件时长的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JavaCV获取视频文件时长的具体代码,供大家参考,具体内容如下

1、做项目时,需要读取视频文件的时长,网上有很多通过自己写的JNI接口来实现,但由于项目使用了JavaCV和OpenCV,其中有一些处理视频的接口,所以还是想打算尽可能使用JavaCV和OpenCV来实现,经过查阅了相关的一些资料,实现了使用JavaCV获取视频文件时长的功能。

2、基本实现思路:获取视频的总帧数和每秒帧数(FPS),然后通过公式:视频总帧数/每秒帧数(FPS)=时长(单位秒)

3、实现代码如下:

package com.duoduo.javacv.samples;

import static com.googlecode.javacv.cpp.opencv_highgui.CV_CAP_PROP_FPS;
import static com.googlecode.javacv.cpp.opencv_highgui.CV_CAP_PROP_FRAME_COUNT;
import static com.googlecode.javacv.cpp.opencv_highgui.cvCreateFileCapture;
import static com.googlecode.javacv.cpp.opencv_highgui.cvGetCaptureProperty;
import static com.googlecode.javacv.cpp.opencv_highgui.cvReleaseCapture;

import java.io.File;

import com.googlecode.javacv.cpp.opencv_highgui.CvCapture;

/**
 * 获取视频时长
 * 
 * @author chengesheng
 * @date 2013-5-22 下午11:15:25
 * @note VideoFileLength
 */
public final class VideoFileLength {

 public static void main(String[] argus) {
 float len = getVideoFileLength("D:/J2EE/kdvp/webrtc/webapp/images/bike.avi");
 System.out.println("Video length: " + len + " s");
 }

 public static float getVideoFileLength(String fileName) {
 File file = new File(fileName);
 if (!file.exists()) {
  return 0;
 }

 float len = 0;
 CvCapture capture = cvCreateFileCapture(fileName);
 try {
  // 获取视频总帧数
  long frameCount =(long) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
  // 获取视频每秒帧数
  long fps =(long) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);

  len = (float) frameCount / fps;
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  cvReleaseCapture(capture);
 }
 return len;
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java使用openOffice对于word的转换及遇到的问题解决

    Java使用openOffice对于word的转换及遇到的问题解决

    开发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档,下面这篇文章主要给大家介绍了关于Java通过openOffice对于word的转换及遇到问题的解决方法,需要的朋友可以参考下
    2018-09-09
  • 详解SpringBoot 调用外部接口的三种方式

    详解SpringBoot 调用外部接口的三种方式

    SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程,这篇文章主要介绍了SpringBoot 调用外部接口的三种方式,需要的朋友可以参考下
    2023-04-04
  • Spring框架的JdbcTemplate使用

    Spring框架的JdbcTemplate使用

    它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。本文就来介绍一下Spring框架的JdbcTemplate使用,感兴趣的可以了解一下
    2021-09-09
  • 详解Eclipse 字体、字号的设置、最佳字体推荐

    详解Eclipse 字体、字号的设置、最佳字体推荐

    这篇文章主要介绍了Eclipse 字体、字号的设置、最佳字体推荐,需要的朋友可以参考下
    2020-09-09
  • Java实战之校园外卖点餐系统的实现

    Java实战之校园外卖点餐系统的实现

    这篇文章主要介绍了如何利用Java实现简易的校园外卖点餐系统,文中采用的技术有:JSP、Spring、SpringMVC、MyBatis 等,感兴趣的可以了解一下
    2022-03-03
  • 详解SpringBoot使用RedisTemplate操作Redis的5种数据类型

    详解SpringBoot使用RedisTemplate操作Redis的5种数据类型

    本文主要介绍了SpringBoot使用RedisTemplate操作Redis的5种数据类型,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java利用POI实现导入导出Excel表格

    Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • MybatisPlus开启、关闭二级缓存方法

    MybatisPlus开启、关闭二级缓存方法

    本文主要介绍了MybatisPlus开启、关闭二级缓存方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • java观察者模式实现和java观察者模式演化

    java观察者模式实现和java观察者模式演化

    观察者模式是经典设计模式中很常用的一种,平常我们看到的监听器,基本上都是采用这种设计模式实现的,这里探讨一下观察者模式的演化
    2014-02-02
  • Mybatis中的延迟加载案例解析

    Mybatis中的延迟加载案例解析

    这篇文章主要介绍了Mybatis中的延迟加载,场景结合案例分析非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12

最新评论