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

问题描述 投票:0回答:3

我正在尝试使用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  

看起来应该是

*
之后的 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中有一个选项

CURLOPT_RTSP_STREAM_URI
可以在curl工具的引擎盖下工作,但我找不到命令行选项来设置此参数,因此
*
被用作默认值:https ://curl.haxx.se/libcurl/c/CURLOPT_RTSP_STREAM_URI.html 它也不会自动使用 --url 的值。

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

curl rtsp
3个回答
9
投票

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

curl -v -X DESCRIBE "rtsp://USERNAME:[email protected]:554/Streaming/Channels/101"

5
投票

可能为时已晚,无法对原始问题的作者有所帮助,但可能对其他人有用。我遇到了一个问题,我的 Laview Doorbell 摄像头上的 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 协议,我尝试简单地获取返回状态

> 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

1
投票

我成功使用了

curl -v -X DESCRIBE "USERNAME:[email protected]:554/Streaming/Channels/101" RTSP/1.0

但是找不到信息

*   Trying 192.168.1.11...
* TCP_NODELAY set
* Connected to 192.168.1.11 (192.168.1.11) port 554 (#0)
* Server auth using Basic with user 'USERNAME'
> DESCRIBE /Streaming/Channels/101 HTTP/1.1
> Host: 192.168.1.11:554
> Authorization: Basic YWRtaW46MTIzNDU=
> User-Agent: curl/7.58.0
> Accept: */*
> 
RTSP/1.0 404 Not Found

似乎没有使用正确的协议!我找不到如何让它使用 RTSP

PS:我可以确认它可以与 ffmpeg 一起使用!路是对的。

© www.soinside.com 2019 - 2024. All rights reserved.