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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。