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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
eclipse實現(xiàn)Schnorr數(shù)字簽名
這篇文章主要為大家詳細介紹了eclipse實現(xiàn)Schnorr數(shù)字簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-06-06
Spring Boot集成ShedLock分布式定時任務的實現(xiàn)示例
ShedLock確保您計劃的任務最多同時執(zhí)行一次。如果一個任務正在一個節(jié)點上執(zhí)行,則它會獲得一個鎖,該鎖將阻止從另一個節(jié)點(或線程)執(zhí)行同一任務。2021-05-05
springboot學習之Thymeleaf模板引擎及原理介紹
本文主要介紹一下SpringBoot給我們推薦的Thymeleaf模板引擎,這模板引擎呢,是一個高級語言的模板引擎,他的這個語法更簡單而且功能更強大,對springboot?Thymeleaf模板引擎相關知識感興趣的朋友一起看看吧2022-02-02
SpringBoot+Vue項目部署實現(xiàn)傳統(tǒng)方式
我們在進行前后端分離開發(fā)的時候,一般是將前端項目部署到nginx服務器上,與后端項目分開部署,這篇文章主要給大家介紹了關于SpringBoot+Vue項目部署實現(xiàn)傳統(tǒng)方式的相關資料,需要的朋友可以參考下2024-01-01
Java實現(xiàn)獲取前、后N天日期的函數(shù)分享
本文給大家分享的是使用java實現(xiàn)的獲取當前日期前后N天的函數(shù),非常的簡單實用,有需要的小伙伴可以參考下。2015-03-03
微服務SpringBoot整合Jasypt加密工具的場景分析
Jasypt是Java加密工具包,能支持對密碼的哈希加密,對文本和二進制數(shù)據(jù)的對稱加解密,還能集成SpringBoot項目對配置文件中的密鑰進行加密存儲,這篇文章主要介紹了微服務SpringBoot整合Jasypt加密工具,需要的朋友可以參考下2022-10-10
mybatis?@InsertProvider報錯問題及解決
這篇文章主要介紹了mybatis?@InsertProvider報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

