javaCV開發(fā)詳解之收流器實(shí)現(xiàn)
本章基于javaCV實(shí)現(xiàn)收流器功能和錄制功能
補(bǔ)充:基于本功能可以實(shí)現(xiàn)遠(yuǎn)程流媒體服務(wù)器實(shí)時(shí)視頻錄制到本地
一、開發(fā)所依賴的包
javacv.jar,javacpp.jar,ffmpeg.jar,ffmpeg-系統(tǒng)平臺(tái).jar,opencv.jar,opencv-系統(tǒng)平臺(tái).jar。 其中ffmpeg-系統(tǒng)平臺(tái).jar,opencv-系統(tǒng)平臺(tái).jar中的系統(tǒng)平臺(tái)根據(jù)開發(fā)環(huán)境或者測試部署環(huán)境自行更改為對(duì)應(yīng)的jar包,比如windows7 64位系統(tǒng)替換為ffmpeg-x86-x64.jar
本章使用windows環(huán)境開發(fā),基于javaCV的基礎(chǔ)支撐包以及ffmpeg-3.1.2-1.2.jar、ffmpeg-3.1.2-1.2-windows-x86.jar、ffmpeg-3.1.2-1.2-windows-x86_64.jar;
二、代碼實(shí)現(xiàn)
本功能采用按幀實(shí)現(xiàn)收流器錄制功能
/** * 按幀錄制視頻 * @param inputFile-該地址可以是網(wǎng)絡(luò)直播/錄播地址,也可以是遠(yuǎn)程/本地文件路徑 * @param outputFile * 該地址只能是文件地址,如果使用該方法推送流媒體服務(wù)器會(huì)報(bào)錯(cuò),原因是沒有設(shè)置編碼格式 * @throws FrameGrabber.Exception * @throws FrameRecorder.Exception * @throws org.bytedeco.javacv.FrameRecorder.Exception */ public static void frameRecord(String inputFile, String outputFile, int audioChannel) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception { boolean isStart=true;//該變量建議設(shè)置為全局控制變量,用于控制錄制結(jié)束 // 獲取視頻源 FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFile); // 流媒體輸出地址,分辨率(長,高),是否錄制音頻(0:不錄制/1:錄制) FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFile, 1280, 720, audioChannel); // 開始取視頻源 recordByFrame(grabber, recorder, isStart); }
private static void recordByFrame(FFmpegFrameGrabber grabber, FFmpegFrameRecorder recorder, Boolean status) throws Exception, org.bytedeco.javacv.FrameRecorder.Exception { try {//建議在線程中使用該方法 grabber.start(); recorder.start(); Frame frame = null; while (status&& (frame = grabber.grabFrame()) != null) { recorder.record(frame); } recorder.stop(); grabber.stop(); } finally { if (grabber != null) { grabber.stop(); } } }
3、測試收流器錄制功能
inputFile設(shè)置為服務(wù)器播放地址,outputFile設(shè)置為本地地址,這里演示.mp4,也可以是flv等其他后綴名
public static void main(String[] args) throws FrameRecorder.Exception, FrameGrabber.Exception, InterruptedException { String inputFile = "rtsp://admin:admin@192.168.2.236:37779/cam/realmonitor?channel=1&subtype=0"; // Decodes-encodes String outputFile = "recorde.mp4"; frameRecord(inputFile, outputFile,1); }
以上就是javaCV開發(fā)詳解之收流器實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于javaCV收流器的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 詳解Java 微服務(wù)架構(gòu)
- 了解java架構(gòu)之微服務(wù)架構(gòu)—雪崩效應(yīng)
- java各種類型對(duì)象占用內(nèi)存情況分析
- Java基于IDEA實(shí)現(xiàn)http編程的示例代碼
- 教你用Java驗(yàn)證服務(wù)器登錄系統(tǒng)
- Java中用POI實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出到Excel
- javaCV開發(fā)詳解之推流器和錄制器的實(shí)現(xiàn)
- javacv開發(fā)詳解之調(diào)用本機(jī)攝像頭視頻
- JavaWeb實(shí)戰(zhàn)之開發(fā)網(wǎng)上購物系統(tǒng)(超詳細(xì))
- JavaAgent的簡單例子
- JAVA后端應(yīng)該學(xué)什么技術(shù)
- Java從單體架構(gòu)升級(jí)到微服務(wù)要注意的一些問題
相關(guān)文章
Java基于中介者模式實(shí)現(xiàn)多人聊天室功能示例
這篇文章主要介紹了Java基于中介者模式實(shí)現(xiàn)多人聊天室功能,詳細(xì)分析了中介者模式的概念、原理以及使用中介模式實(shí)現(xiàn)多人聊天的步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-05-05在Docker中部署Spring Boot項(xiàng)目過程詳解
這篇文章主要介紹了在Docker中部署Spring Boot項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Java框架解說之BIO NIO AIO不同IO模型演進(jìn)之路
網(wǎng)上很多IO資料,對(duì)新手來說,越看越暈。根據(jù)自己的理解,總結(jié)對(duì)比了一下BIO、NIO、AIO,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10Java使用ES?Client?調(diào)用滾動(dòng)查詢及Elasticsearch滾動(dòng)查詢Scrolling機(jī)制
Elasticsearch提供了一種稱為"滾動(dòng)查詢"(Scrolling)的機(jī)制,用于處理大型數(shù)據(jù)集的分頁查詢,這篇文章給大家介紹滾動(dòng)查詢的一般步驟及Java使用ESClient調(diào)用滾動(dòng)查詢的方法,感興趣的朋友一起看看吧2023-08-08springboot整合mybatis-plus實(shí)現(xiàn)多表分頁查詢的示例代碼
這篇文章主要介紹了springboot整合mybatis-plus實(shí)現(xiàn)多表分頁查詢的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例
這篇文章主要介紹了使用SpringBoot實(shí)現(xiàn)微服務(wù)超時(shí)重試模式的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11springboot 整合druid數(shù)據(jù)庫密碼加密功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了springboot 整合druid數(shù)據(jù)庫密碼加密功能的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Spring RestTemplate簡化HTTP通信實(shí)現(xiàn)功能探究
這篇文章主要為大家介紹了Spring框架中的RestTemplate,如果你是個(gè)Java程序員,那么你肯定知道Spring框架的重要性,在Spring的眾多工具中,RestTemplate是用來簡化HTTP通信的一個(gè)強(qiáng)大工具2024-01-01