JavaCV獲取視頻文件時長的方法
本文實例為大家分享了JavaCV獲取視頻文件時長的具體代碼,供大家參考,具體內(nèi)容如下
1、做項目時,需要讀取視頻文件的時長,網(wǎng)上有很多通過自己寫的JNI接口來實現(xiàn),但由于項目使用了JavaCV和OpenCV,其中有一些處理視頻的接口,所以還是想打算盡可能使用JavaCV和OpenCV來實現(xiàn),經(jīng)過查閱了相關的一些資料,實現(xiàn)了使用JavaCV獲取視頻文件時長的功能。
2、基本實現(xiàn)思路:獲取視頻的總幀數(shù)和每秒幀數(shù)(FPS),然后通過公式:視頻總幀數(shù)/每秒幀數(shù)(FPS)=時長(單位秒)
3、實現(xiàn)代碼如下:
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 {
// 獲取視頻總幀數(shù)
long frameCount =(long) cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
// 獲取視頻每秒幀數(shù)
long fps =(long) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
len = (float) frameCount / fps;
} catch (Exception e) {
e.printStackTrace();
} finally {
cvReleaseCapture(capture);
}
return len;
}
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java經(jīng)典排序算法之歸并排序?qū)崿F(xiàn)代碼
這篇文章主要介紹了Java經(jīng)典排序算法之歸并排序?qū)崿F(xiàn)代碼,歸并排序是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法的一個非常典型的應用,將已有序的子序列合并,得到完全有序的序列,需要的朋友可以參考下2023-10-10
Springboot升級到2.7.2結合nacos遇到的坑及解決
這篇文章主要介紹了Springboot升級到2.7.2結合nacos遇到的坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Spring-cloud-eureka使用feign調(diào)用服務接口
這篇文章主要為大家詳細介紹了Spring-cloud-eureka使用feign調(diào)用服務接口,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
關于IDEA中spring-cloud-starter-alibaba-nacos-discovery 無法引入問題
這篇文章主要介紹了關于IDEA中spring-cloud-starter-alibaba-nacos-discovery 無法引入問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02

