JavaCV讀取流設置超時


JavaCV中FrameGrabber類可以連接直播流地址, 進行解碼, 獲取Frame幀信息, 常用方式如下

FrameGrabber grabber = new FrameGrabber("rtsp:/192.168.0.0");

grabber.start();

while(true) {
  Frame frame = grabber.grabImage(); 

  // ...
}


實際上內部調用的是ffmpeg的avformat_open_input()方法去解析網絡流,而ffmpeg的avformat_open_input()默認是阻塞的。

當遇到解析錯誤的網絡流時,會導致該函數長時間不返回。為此可以設置ffmpeg的-stimeout 的參數,要注意 -stimeout的單位是us 微秒(1秒=1*1000*1000微秒)。

用法(設置在解析的 url 之前):

1.javaCV

FrameGrabber grabber = new FrameGrabber("rtsp:/192.168.0.0");
// 增加超時參數 grabber.setOption("stimoout", "5*1000*1000");
grabber.start; while(true) { Frame frame = grabber.grabImage(); // ... }

  

2.ffmpeg命令行

ffmpeg -stimeout 5000000  -i rtsp://admin:admin@192.168.7.102:554/h264...........

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM