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...........

  

 

相关文章:

  • 2021-04-22
  • 2021-10-20
  • 2021-08-05
  • 2021-10-02
  • 2021-11-30
  • 2021-08-19
  • 2021-11-17
  • 2021-08-19
猜你喜欢
  • 2021-10-15
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
相关资源
相似解决方案