是否可以使用 curl 工具对 RTSP 流进行简单的健康检查?

Vit*_*lyZ 5 curl rtsp

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

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  
Run Code Online (Sandbox Code Playgroud)

看起来*应该是OPTIONS这里之后的 URL ,而不是它: > 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)
Run Code Online (Sandbox Code Playgroud)

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

有没有办法用 curl 工具测试(我认为对 DESCRIBE 或 OPTIONS 的简单 OK 响应就足够了)RTSP 流?

小智 5

附加rtsp://到请求中,如下所示:

curl -v -X DESCRIBE "rtsp://USERNAME:PASSWORD@192.168.1.11:554/Streaming/Channels/101" RTSP/1.0
Run Code Online (Sandbox Code Playgroud)


Mak*_*sym 4

可能为时已晚,无法对原始问题的作者有所帮助,但可能对其他人有用。我遇到了一个问题,我的 Laview Doorbell 摄像头上的 rtsp 流每隔几天就会消失,而摄像头实际上一直在运行。一个简单的curl命令返回选项并等待更多提示:

> curl -i -X OPTIONS username:userpassword@192.168.1.15:554/Streaming/Channels/101 RTSP/1.0
200 OK Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE
Run Code Online (Sandbox Code Playgroud)

不想深入研究 RTSP 协议,我尝试简单地获取返回状态

> curl --head --connect-timeout 15 -i -X OPTIONS username:userpassword@192.168.1.15:554/Streaming/Channels/101
curl: (8) Weird server reply
Run Code Online (Sandbox Code Playgroud)

这实际上与“死”流的状态不同:

> curl --head --connect-timeout 15 -i -X OPTIONS username:userpassword@192.168.1.15:554/Streaming/Channels/101
curl: (56) Recv failure: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)

这导致了这个简单但实​​用的脚本,如果状态不是“8”,它会重新启动相机:

curl --head --silent --connect-timeout 15 -i -X OPTIONS username:userpassword@192.168.1.15:554/Streaming/Channels/101
if [ $? -ne 8 ]
then

 curl "http://username:userpassword@192.168.1.15/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
Run Code Online (Sandbox Code Playgroud)