列出网络摄像机的RTSP流列表

3
我刚购买了一台Micronet SP5319高清IP摄像头,但文档中没有关于流路径的信息。我只找到了类似rtsp://ip/mpeg4的内容,但最终并不起作用。我已经尝试了许多不同的路径和客户端,例如VLC和QuickTime,但都没有成功。
我使用Wireshark捕获了流,并看到如下内容:
OPTIONS rtsp://192.168.1.90:554/h264 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.0.4 (LIVE555 Streaming Media v2012.09.13)

RTSP/1.0 200 OK
CSeq: 2
Date: Tue, Dec 04 2012 01:12:36 GMT
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER

DESCRIBE rtsp://192.168.1.90:554/h264 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.0.4 (LIVE555 Streaming Media v2012.09.13)
Accept: application/sdp

RTSP/1.0 404 Stream Not Found
CSeq: 3
Date: Tue, Dec 04 2012 01:12:36 GMT

看看最后的响应:流未找到。最终,我该如何获取可用流列表?我应该使用哪个软件?我也尝试了ONVIF但没有成功。
最好的问候,

2
向Micronet查询有关设备功能的信息(参考资料、API、SDK等),在设备上没有RTSP命令来枚举资源。 - undefined
2个回答

2

我遇到了同样的问题,阅读了大量博客后,发现了一些有趣的资源:

1) 这里 有一个巨大的列表,列出了某些品牌已知的rstp URL。不幸的是,我的品牌kolke没有在列表中...

2) 这个表格 显示了其他摄像头型号的不同URL。我尝试了其中几个,但都没有成功。使用VLC进行测试很耗时间,因为我必须一个一个地编写,所以我编写了一个小型的Python脚本,在jupyter笔记本上测试每个URL。

import cv2

# need to know those before hand. I got IP with Nmap
usr = 'myuser'
pwd = 'mypassword'
ip = '192.168.1.1'

# I took the url patterns and also included some variations, just to be sure...
urls = [f'rtsp://{usr}:{pwd}@{ip}:554/cam/realmonitor?channel=1&subtype=0',
        f'rtsp://{ip}:554/live=2.2&username={usr}&password={pwd}',
        f'rtsp://{usr}:{pwd}@{ip}:554/1',
        f'rtsp://{usr}:{pwd}@{ip}:554/stream1',
        f'rtsp://{usr}:{pwd}@{ip}:554/Stream1',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp',
        f'rtsp://{ip}:554/videostream.asf?user={usr}&pwd={pwd}',
        f'rtsp://{ip}:554/ucast/11',
        f'rtsp://{ip}:554/11',
        f'rtsp://{ip}:554/12',
        f'rtsp://{ip}:554/live0.264',
        f'rtsp://{ip}:554/mpeg4cif',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp',
        f'rtsp://{ip}:554/live1.264',
        f'rtsp://{ip}:554/cam1/h264',
        f'rtsp://{ip}:554/mpeg4cif',
        f'rtsp://{ip}:554/ucast/11',
        f'rtsp://{ip}:554/ROH/channel/11',
        f'rtsp://{ip}:554/user={usr}_password={pwd}_channel=1_stream=0.sdp',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp?',
        f'rtsp://{ip}:554/user={usr}_password={pwd}_channel=1_stream=0.sdp',
        f'rtsp://{ip}:554/user={usr}_password={pwd}_channel=1_stream=0.sdp?',
        f'rtsp://{ip}:554/cam1/mpeg4?user={usr}&pwd={pwd}',
        f'rtsp://{ip}:554/h264_stream',
        f'rtsp://{ip}:554/live/ch0',
        f'rtsp://{ip}:554/live/ch1',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=1.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=0&stream=1.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=0&stream=0.sdp?',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=0.sdp',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=1&stream=1.sdp',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=0&stream=1.sdp',
        f'rtsp://{ip}:554/user={usr}&password={pwd}&channel=0&stream=0.sdp',
        f'rtsp://{usr}:{pwd}@{ip}:554/ucast/11',
        f'rtsp://{usr}:{pwd}@{ip}:554/11',
        f'rtsp://{usr}:{pwd}@{ip}:554/12',
        f'rtsp://{usr}:{pwd}@{ip}:554/live0.264',
        f'rtsp://{usr}:{pwd}@{ip}:554/mpeg4cif',
        f'rtsp://{usr}:{pwd}@{ip}:554/live1.264',
        f'rtsp://{usr}:{pwd}@{ip}:554/cam1/h264',
        f'rtsp://{usr}:{pwd}@{ip}:554/mpeg4cif',
        f'rtsp://{usr}:{pwd}@{ip}:554/ucast/11',
        f'rtsp://{usr}:{pwd}@{ip}:554/ROH/channel/11',
        f'rtsp://{usr}:{pwd}@{ip}:554/h264_stream',
        f'rtsp://{usr}:{pwd}@{ip}:554/live/ch0',
        f'rtsp://{usr}:{pwd}@{ip}:554/live/ch1',
       ]

def test_url(url):
    # try to open the stream
    cap = cv2.VideoCapture(url)
    ret = cap.isOpened()  # if it was succesfully opened, that's the URL you need
    cap.release()
    return ret

# then you just need to check those URLs
for url in urls:
    if test_url(url):
        print(url)

然后我得到了我一直在寻找的东西:

rtsp://192.168.1.1:554/user=myuser&password=mypassword&channel=1&stream=0.sdp?

希望这能帮到你!

1

这个摄像头可能可以通过SDK工作。但您可以尝试执行以下操作:

  • 打开Wireshark并设置摄像头IP的过滤器;
  • 打开摄像头的Web界面并获取视频;
  • 查看Wireshark会话-可能有RTSP会话。

http://yummy.micronet.tw/marcom/enews/071312/071312.htm - 在这里,我可以看到相机支持ONVIF,因此它必须支持RTSP。而在这里http://yummy.micronet.tw/marcom/enews/point/SP5319-catalog.pdf - 我也可以看到支持的协议-其中包括RTSP。

因此,如果Web界面无法帮助您,则可以使用ONVIF测试工具测试摄像头,并在此处找到RTSP地址。

请检查Web界面中的RTSP端口-确实是554吗?


终于找到了正确的路径!它是/master.sdp,谢谢你的建议Dmitriy。祝好, - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接