java获取视频文件的长度


import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.MultimediaInfo;

import java.io.File;

/**
 * Created by yawn on 2017-07-04.
 */
public class VideoUtil {

    /**
     * 获取视频文件的播放长度
     * @param source
     * @return 单位为毫秒
     * @throws EncoderException
     */
    public long getDuration(File source) throws EncoderException {
        Encoder encoder = new Encoder();
        MultimediaInfo m = encoder.getInfo(source);
        return m.getDuration();
    }

    public long getDuration(String videoPath) throws EncoderException {
        File source = new File(videoPath);
        return getDuration(source);
    }

}

 

需要jar包 jave-1.0.2.jar,可在这里下载:

http://www.sauronsoftware.it/projects/jave/index.php

maven项目中,可先将jar安装在本地仓库,使用以下命令:

mvn install:install-file 
	-Dfile=jave-1.0.2.jar 
	-DgroupId=it.sauronsoftware
	-DartifactId=jave
	-Dversion=1.0.2 
	-Dpackaging=jar

再添加依赖如下即可使用:

<dependency>
	<groupId>it.sauronsoftware</groupId>
	<artifactId>jave</artifactId>
	<version>1.0.2</version>
</dependency>

 

转载于:https://my.oschina.net/silenceyawen/blog/1154264

125分50秒---162.81M---LabView01---第10章数据的显示.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView01-第10章数据的显示.wmv 92分2秒---143.46M---LabView02---第11章文件的IO及保存.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView02-第11章文件的IO及保存.wmv 37分22秒---58.09M---LabView03---第12章LabVIEW的通信.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView03-第12章LabVIEW的通信.wmv 9分58秒---21.2M---LabView04---第13章LabVIEW与其它软件的连接.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView04-第13章LabVIEW与其它软件的连接.wmv 4分45秒---9.99M---LabView05---第14章LabVIEW中子VI的设置及调用.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView05-第14章LabVIEW中子VI的设置及调用.wmv 34分30秒---61.03M---LabView06---第15章其它高级技巧.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView06-第15章其它高级技巧.wmv 9分41秒---11.37M---LabView07---第2章第一个LabVIEW例子.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView07-第2章第一个LabVIEW例子.wmv 86分58秒---140.25M---LabView08---第3章基本元素.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView08-第3章基本元素.wmv 76分48秒---143.72M---LabView09---第4章程序结构.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView09-第4章程序结构.wmv 5分46秒---14.67M---LabView10---第5章数据采集.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView10-第5章数据采集.wmv 12分50秒---18.35M---LabView11---第6章数据传输及电脑接口.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView11-第6章数据传输及电脑接口.wmv 59分57秒---87.83M---LabView12---第7章数据的分析及处理.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView12-第7章数据的分析及处理.wmv 42分4秒---61.02M---LabView13---第8章LabVIEW的信号调理.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView13-第8章LabVIEW的信号调理.wmv 132分19秒---178.86M---LabView14---第9章分析处理中数学计算.wmv---F:/Resource/video/硬件/AltiumDesigner/LabView14-第9章分析处理中数学计算.wmv
### 回答1: JavaCV是一个Java编写的计算机视觉库,它并没有直接提供限制视频播放长度的功能。不过,你可以使用JavaCV提供的视频处理工具来实现这个功能。具体操作步骤如下: 1. 使用FFmpegFrameGrabber类从视频文件中读取帧。 2. 通过FrameGrabber.getFrameRate()方法获取视频的帧率。 3. 使用OpenCVFrameConverter.ToMat类将帧转换为OpenCV的Mat格式。 4. 根据需要选择需要播放的时间段,例如前10秒。 5. 使用FrameGrabber.setFrameNumber()方法设置读取的起始帧,例如fps * 10。 6. 在循环中读取视频帧,直到达到指定的结束帧,例如fps * 20。 7. 关闭FrameGrabber。 下面是一个示例代码: ``` FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("input.mp4"); grabber.start(); int fps = (int) grabber.getFrameRate(); OpenCVFrameConverter.ToMat converter = new OpenCVFrameConverter.ToMat(); grabber.setFrameNumber(fps * 10); // 从第10秒开始播放 while (true) { Frame frame = grabber.grab(); if (frame == null || grabber.getFrameNumber() >= fps * 20) { // 播放前20秒 break; } Mat mat = converter.convert(frame); // 处理视频帧 } grabber.stop(); ``` 需要注意的是,这种方式只是在读取视频时限制了播放的时间长度,如果需要实现更为严格的限制,可以在处理视频帧时根据时间戳来判断是否超过了限制。 ### 回答2: Javacv是一个用于在Java中操作计算机视觉和图像处理的开源库。它提供了许多功能强大的类和方法,可以用于处理图像、视频和流媒体。 在Javacv中限制视频播放长度可以通过以下步骤实现: 1. 首先,使用Javacv加载视频文件并创建一个视频流对象。 2. 然后,获取视频的总帧数和帧率。 3. 计算出期望的播放时长,可以通过设置一个播放时长的阈值或者输入一个特定的播放时长。 4. 使用一个循环来逐帧读取视频,直到达到预期的播放时长或者视频的末尾。 5. 在每一帧上执行必要的操作,例如渲染或处理图像。 6. 当达到预期的播放时长或者视频的末尾时,停止循环和视频播放。 以下是一个简单的示例代码,用于限制视频播放长度为10秒: ```java import static org.bytedeco.javacpp.opencv_core.*; import static org.bytedeco.javacpp.opencv_highgui.*; import org.bytedeco.javacv.*; public class VideoPlayer { public static void main(String[] args) { FFmpegFrameGrabber grabber = new FFmpegFrameGrabber("input.mp4"); try { grabber.start(); double frameRate = grabber.getFrameRate(); int totalFrames = grabber.getLengthInFrames(); int targetFrames = (int) (frameRate * 10); // 设置播放时长为10秒 int currentFrame = 0; Frame frame = null; CanvasFrame canvas = new CanvasFrame("Video"); while (currentFrame < targetFrames && (frame = grabber.grab()) != null) { canvas.showImage(frame); currentFrame++; } canvas.dispose(); grabber.stop(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上面的示例代码中,我们使用了FFmpegFrameGrabber来加载视频文件。然后,我们获取了帧率和总帧数,并将播放时长设置为10秒,即10秒内的帧数。接着,我们使用一个循环来逐帧播放视频,直到达到预期的播放时长或者视频的末尾。在循环中,我们使用CanvasFrame来显示每一帧并更新当前帧的计数。最后,我们关闭CanvasFrame并停止视频播放。 通过上面的步骤和示例代码,你可以在Javacv中限制视频播放的长度为特定的时长。这样,你可以根据需要控制视频的播放时长,实现自定义的视频播放效果。 ### 回答3: 在使用javacv进行视频播放时,并没有直接限制视频播放长度的方法或属性。但可以通过代码来实现限制视频播放长度的效果。 一种常见的做法是使用定时器和视频帧计数器,来控制播放的时间。具体步骤如下: 1. 对于要播放的视频文件,首先使用JavaCV库的FFmpegFrameGrabber类创建一个FrameGrabber对象,并打开视频文件。 2. 初始化一个定时器,设定一个指定的播放时间长度。 3. 在定时器的任务中,使用FrameGrabber对象的grabFrame方法获取视频的每一帧图像,并将其显示在界面上。 4. 同时,在每一帧显示之后,可以使用一个视频帧计数器对当前播放的帧数进行累加,并判断是否超过了设定的播放时间。 5. 当播放时间超过设定的时间后,停止播放视频并关闭FrameGrabber对象。 通过以上步骤,我们可以实现对视频播放长度的限制。当达到设定的播放时间后,即使视频文件还未播放完毕,也会停止播放。 需要注意的是,由于JavaCV是对FFmpeg的封装,因此也可以直接使用FFmpeg的命令行参数来实现对视频播放长度的限制。通过设置“-t”参数,可以指定视频文件要播放的最长时间,超过指定时间后,播放会自动停止。但这种方法需要对FFmpeg命令行的使用比较熟悉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值