我正在尝试使用curl工具对RTSP流进行简单的健康检查。
但是像这样的命令总是会给我404未找到流错误:

curl -v --url rtsp://192.168.1.80/h264/ --user admin:1234
*   Trying 192.168.1.80...
* Connected to 192.168.1.80 (192.168.1.80) port 554 (#0)
* Server auth using Basic with user 'admin'
> OPTIONS * RTSP/1.0
> CSeq: 1
> User-Agent: curl/7.47.0
> Authorization: Basic YWRtaW46YWRtaW4=
>
< RTSP/1.0 404 Stream Not Found
< CSeq: 1
< Date: Tue, Feb 27 2018 01:14:21 GMT
<
* Connection #0 to host 192.168.1.80 left intact

看起来应该是*之后的URL,而不是OPTIONS:> OPTIONS * RTSP/1.0
例如,我使用VLC媒体播放器测试了相同的URI,并使用tcpdump捕获了数据包。使用VLC,它可以正常工作,并且向RTSP服务器发送数据的请求如下所示:
OPTIONS rtsp://192.168.1.80:554/h264 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.2.2 (LIVE555 Streaming Media v2016.02.09)

看来libcurl中有一个选项curl,可以在curl工具的作用下工作,但是我找不到命令行选项来设置此参数,因此CURLOPT_RTSP_STREAM_URI用作根据以下内容的默认值:https://curl.haxx.se/libcurl/c/CURLOPT_RTSP_STREAM_URI.html
而且它也不会自动使用--url的值。

有没有一种方法可以使用curl工具测试(对DESCRIBE或OPTIONS的简单OK响应就足够了)RTSP流?

最佳答案

可能为时已晚,无法对原始问题的作者有所帮助,但可能对其他问题有用。我遇到了问题,我的Laview门铃摄像机上的rtsp流每两天就会死掉,而摄像机实际上却停滞不前。一个简单的curl命令返回选项并等待更多提示:

> curl -i -X OPTIONS username:[email protected]:554/Streaming/Channels/101 RTSP/1.0
200 OK Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

不想深入研究RTSP协议(protocol),我试图简单地获得返回状态
> curl --head --connect-timeout 15 -i -X OPTIONS username:[email protected]:554/Streaming/Channels/101
curl: (8) Weird server reply

这实际上与“死”流的状态不同:
> curl --head --connect-timeout 15 -i -X OPTIONS username:[email protected]:554/Streaming/Channels/101
curl: (56) Recv failure: Connection reset by peer

如果状态不是“8”,则会导致此天真但实用的脚本重新启动摄像头:
curl --head --silent --connect-timeout 15 -i -X OPTIONS username:[email protected]:554/Streaming/Channels/101
if [ $? -ne 8 ]
then

 curl "http://username:[email protected]/ISAPI/System/reboot" -X PUT -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0" -H "Accept: */*" -H "Accept-Language: en-US,en;q=0.5" -H "Referer: http://192.168.1.15/doc/page/config.asp" --data ""

fi

关于curl - 是否可以使用curl工具对RTSP流进行简单的健康检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49002614/

10-15 03:40