ffmpeg和javacv的超时设置问题以及如果javacv的ffmpeg版本问题

ffmpeg超时设置

一般情况下,ffmpeg拉流过程中如果摄像头突然关闭了获取网络出现问题,就会导致线程阻塞,这时就需要设置连接超时参数,对进程进行监听,连接不到rtsp流的情况下会退出进程,便于我们知道录像出现问题。

以下设置超时间时需要注意的问题:

使用参数 : -timeout 位置:-i前

如果-timeout参数值过小就会报错比如:
 
ffmpeg   -rtsp_transport tcp  -timeout 2000 -i  rtsp://${username}:${password}@${ip}:554/h264/ch1/sub/av_stream -vcodec h264 -f mp4 E:\lastTimeoutTestlast.mp4
因为数值单位:us 微秒(1秒=1*1000*1000微秒)
[in#0 @ 000001a87876d740] Error opening input: Operation not permitted
Error opening input file rtsp://admin:iot123456@10.10.10.233:554/h264/ch1/sub/av_stream.
Error opening input files: Operation not permitted

报错容易让人误解为参数不可用,但其实是数值问题,注意单位是us 微秒。

正确数值举例:

ffmpeg   -rtsp_transport tcp  -timeout 2000000 -i  rtsp://${username}:${password}@${ip}:554/h264/ch1/sub/av_stream -vcodec h264 -f mp4 E:\lastTimeoutTest.mp4 

javacv超时设置

使用javacv如果使用ffmpeg4.0就不能使用-timeout了,不然会出现 unknown error,使用6.0版本就不变。

注意:如果使用4.0版本进行多路摄像头(我使用的是5路或六路)拼接并录像,使用java执行命令的形式,就有时会出现进程阻塞,无法录像,只需将ffmpeg版本升到6.0即可,当然记住要使用-timeout参数。 

只需要改用 -stimeout即可,使用方式同上

在java使用api或者使用

ffmpegPath = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);

执行cmd都是一样需要上面的参数。

以上内容如果对你有帮助,麻烦给个赞!~~~~谢谢!

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值