JavaCV获取视频文件时长的方法
本文实例为大家分享了JavaCV获取视频文件时长的具体代码,供大家参考,具体内容如下
1、做项目时,需要读取视频文件的时长,网上有很多通过自己写的JNI接口来实现,但由于项目使用了JavaCV和OpenCV,其中有一些处理视频的接口,所以还是想打算尽可能使用JavaCV和OpenCV来实现,经过查阅了相关的一些资料,实现了使用JavaCV获取视频文件时长的功能。
2、基本实现思路:获取视频的总帧数和每秒帧数(FPS),然后通过公式:视频总帧数/每秒帧数(FPS)=时长(单位秒)
3、实现代码如下:
packagecom.duoduo.javacv.samples;
importstaticcom.googlecode.javacv.cpp.opencv_highgui.CV_CAP_PROP_FPS;
importstaticcom.googlecode.javacv.cpp.opencv_highgui.CV_CAP_PROP_FRAME_COUNT;
importstaticcom.googlecode.javacv.cpp.opencv_highgui.cvCreateFileCapture;
importstaticcom.googlecode.javacv.cpp.opencv_highgui.cvGetCaptureProperty;
importstaticcom.googlecode.javacv.cpp.opencv_highgui.cvReleaseCapture;
importjava.io.File;
importcom.googlecode.javacv.cpp.opencv_highgui.CvCapture;
/**
*获取视频时长
*
*@authorchengesheng
*@date2013-5-22下午11:15:25
*@noteVideoFileLength
*/
publicfinalclassVideoFileLength{
publicstaticvoidmain(String[]argus){
floatlen=getVideoFileLength("D:/J2EE/kdvp/webrtc/webapp/images/bike.avi");
System.out.println("Videolength:"+len+"s");
}
publicstaticfloatgetVideoFileLength(StringfileName){
Filefile=newFile(fileName);
if(!file.exists()){
return0;
}
floatlen=0;
CvCapturecapture=cvCreateFileCapture(fileName);
try{
//获取视频总帧数
longframeCount=(long)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);
//获取视频每秒帧数
longfps=(long)cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);
len=(float)frameCount/fps;
}catch(Exceptione){
e.printStackTrace();
}finally{
cvReleaseCapture(capture);
}
returnlen;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。