首页 > 其他分享 >Gstreamer rstpsrc 错误:Option not supported (551) 原因及解决办法

Gstreamer rstpsrc 错误:Option not supported (551) 原因及解决办法

时间:2023-11-13 16:56:28浏览次数:44  
标签:rstpsrc Gstreamer Option signal rtsp send drop before

错误产生条件 How to reproduce:

Gstreamer中使用rtspsrc作为输入源播放时,如果摄像头(rtsp server)是如海康(HiKVision)之类的,在尝试断流时,Gstreamer会发送一个GST.PAUSE信号。但是此类摄像头并不支持该操作(没有暂停状态),正确的操作应该是TearDown,参考官方issue

解决方法目前发现两个。

Solution 1:

重写Bus_call回调函数,在遇到这类错误码时忽略。

Solution 2:

使用before_send信号,并在回调函数中直接返回。

source_bin.connect("before-send", self._drop_send_signal)
def _drop_send_signal(self, message, data):
    '''
    Emitted before each RTSP request is sent, in order to allow the application to modify send parameters or to skip the message entirely.
    '''
    print("Delete rtsp source, drop the PAUSE signal to avoid error.")
    return False

该方法确实能避免报错,但是实测中发现,这样的话并不能断流。抓包工具可以看到rtsp server仍然在源源不断得传输数据过来


慎用!!!


Solution 3

修改源码并编译,笔者并未实践验证此方法,来源。不过好像高版本的Gstreamer已经修复这个bug。不过因为项目开发需求,无法使用最新版本的Gstreamer,所以愿读者实践出真知。

标签:rstpsrc,Gstreamer,Option,signal,rtsp,send,drop,before
From: https://www.cnblogs.com/zhouyuchong/p/17829521.html

相关文章

  • 记录--vue3 setup 中国省市区三级联动options最简洁写法,无需任何库
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在写页面的时候,发现表单里面有一个省市区的options组件要写,因为表单很多地方都会用到这个地址选择,我便以为很简单嘛。虽然很简单的一个功能,但是网络上能搜索到的教程大多都是需要配合elementUI等各种UI库的......
  • 208-iframe访问其他网站,报错:because it set 'X-Frame-Options' to 'sameorigin'
    iframe代码如下:<iframeid="mainFrame"name="mainFrame"src="https://etax.fujian.chinatax.gov.cn/xxmh/html/index.html"border="0"></iframe>会报错:Refusedtodisplay'https://etax.fujian.chinatax.gov.......
  • 漏扫 X-Content-Type-Options X-XSS-Protection Strict-Transport-Security X-Fram
    web应用nginx部署未设置头部,导致可能出现安全问题【未设置X-Content-Type-Options响应头】【未设置X-XSS-Protection响应头】【未设置Strict-Transport-Security响应头】【X-Frame-Options头未设置】 Content-Type(内容类型),一般是指网页中存在的Content-Type,用于定义网络文......
  • vue select-option组件 普通下拉和远程下拉数据展示及回显
    前言:后台返回的数据格式有如下两种类型:1、json格式:codeTypeMap:{  "000":"身份证",  "001":"户口本"}2、数组格式:codeTypeMapList:[  {code:"000",name:"身份证"},  {code:"000",name:"户口本"}] 一、普......
  • uvm获取simulation option
    获取simoption的传统方式是用$test$plusargs(),和$value$plusargs().UVM提供了uvm_cmdline_processor来获取simopt.用法如下:uvm_cmdline_processorclp=uvm_cmdline_processor::get_inst();stringval_q[$];clp.get_arg_values("+val=",val_q);uvm_cmdline_processor......
  • Optional 类 可以减少 if 判断
       ......
  • Java8 Optional
    根据OracleJava官方文档,Optional是一个容器对象,可以包含也可以不包含非null值。Optional在Java8中引入,目的是解决NullPointerExceptions的问题。本质上,Optional是一个包装器类,其中包含对其他对象的引用。在这种情况下,对象只是指向内存位置的指针,并且也可以指向任何内容。从其......
  • Optional.ofNullable()方法, 参数list或者map如果为null执行 ofNullable(创建个新对象
    Optional.ofNullable()方法举个栗子publicstaticvoidmain(String[]args){List<String>list=null;list.forEach(x->System.out.println(x));}工作中经常会遇到,查询返回空,如果没有判空处理,一不小心就会空指针异常。加上if判断处理也可以,但是jdk1.......
  • 使用pandas,Missing optional dependency 'xlrd'. Install xlrd >= 2.0.1 for xls Exce
    遇到问题使用pandas处理excel数据,报错:ImportError:Missingoptionaldependency'xlrd'.Installxlrd>=2.0.1forxlsExcelsupportUsepiporcondatoinstallxlrd.解决方案是xlrd版本不匹配,手动安装xlrd......
  • vue中使用axios请求post接口为什么先发起OPTIONS请求再发起post请求?
    在使用Axios进行跨域POST请求时,浏览器会先发起一个OPTIONS请求,这是因为浏览器执行了跨域请求时的预检请求(PreflightRequest)。这是一个安全性措施,旨在确保跨域请求不会导致安全风险。1、跨域请求的安全性:当前端应用和后端API位于不同的域或端口时,浏览器会执行同源策略,以防止跨站点......