我的问题是,我使用不使用身份验证、基本身份验证和摘要身份验证的RTSP请求,这取决于我试图访问的摄像机。它已经运行了很长一段时间了,但是从最近的开始,当使用摘要时,我开始获得以下错误
* Trying 127.0.0.1:8554...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8554 (#0)
* Server auth using Digest with user 'ubnt'
> DESCRIBE rtsp://ubnt:administrator@127.0.0.1:8554/live.sdp RTSP/1.0
CSeq: 1
Accept: application/sdp
< RTSP/1.0 401 Unauthorized
< CSeq: 1
< WWW-Authenticate: Digest realm="GStreamer RTSP Server", nonce="3034e78651e4e61e"
< Server: GStreamer RTSP server
< Date: Sun, 12 Jan 2020 09:36:53 GMT
<
* Connection #0 to host 127.0.0.1 left intact
* Issue another request to this URL: 'rtsp://ubnt:administrator@127.0.0.1:8554/live.sdp'
* Protocol "rtsp" not supported or disabled in libcurl
* Closing connection -1当切换到完全相同的摄像机上的基本配置时,我没有收到任何Protocol "rtsp" not supported or disabled in libcurl错误,并且描述/设置请求正在按预期工作。
我认为问题来自我的代码(我正在从一个go程序发出curl请求,它使用libcurl绑定),但事实证明,即使返回到使用摘要身份验证的第一个提交也无法解决这个问题。
我最初怀疑在更新的libcurl版本中有一个bug,但目前我还不能确认它。
,有人知道我的问题的原因是什么吗?我应该发一封电子邮件到邮件列表吗?
有关更多信息的资源:
docker run --rm -e RTSP_AUTHENTICATION_METHOD="digest" -p 8554:8554 ullaakut/rtspatt可以在RTSPATT生成的虚拟RTSP服务器上再现此问题另外,为了明确起见,我没有从libcurl中禁用rtsp协议,并且在运行curl -version时启用了rtsp协议(而且,正如前面所述,它在基本auth中运行得很好):
curl 7.64.1 (x86_64-apple-darwin19.0) libcurl/7.64.1 (SecureTransport) LibreSSL/2.8.3 zlib/1.2.11 nghttp2/1.39.2
Release-Date: 2019-03-27
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL UnixSockets最后,我能够在Linux和MacOS上重现这个问题,我的项目的许多用户也在Linux的各种发行版上遇到了同样的问题。
发布于 2020-01-16 21:35:39
这很可能破坏了RTSP对当前libcurl的支持。有一个当前PR来解决这个问题,但是它已经停止了(“它比我想象的还要复杂”)。
在卷曲项目中缺乏对RTSP感兴趣的人。我们欢迎你帮忙解决这个问题。
https://stackoverflow.com/questions/59702891
复制相似问题