目标是从磁盘获取视频文件,将其转换为RTSP流,通过LAN将其提供给另一台PC,并将此视频流捕获到OpenCV中 . 我的电脑是192.168.1.100 .

我用如下语法运行VLC .

vlc --vlm-conf=vlm.conf -I telnet --telnet-password mypassword

我有一个vlm.conf文件,如下所示:

new video1 broadcast enabled loop
setup video1 input video1.mkv
setup video1 output #rtp{mux=ts,sdp=rtsp://192.168.1.100:8554/video1.sdp}
setup video1 option sout-keep
control video1 play

video1.mkv是本地磁盘上的视频文件 .

OpenCV版本:

>>> cv2.__version__
'3.4.0-dev'

我们可以尝试在局域网上的另一台PC上用Python打开该流,但它失败了 .

>>> cap = cv2.VideoCapture("rtsp://192.168.1.100:8554/video1.sdp")
[rtsp @ 0xabddc0] method SETUP failed: 459 Client error

我们可以尝试使用VLC查看相同的RTSP流( rtsp://192.168.1.100:8554/video1.sdp ),这可以成功运行 .

作为类似的测试,我们可以尝试提供网络流的网络监视摄像机 .

rtsp://root:mypassword@192.168.1.105/axis-media/media.amp

我们可以在VLC中查看该流,这可以成功运行 .

我们也可以在Python中尝试这个视频流 - 这是成功的 .

cap = cv2.VideoCapture("rtsp://root:mypassword@192.168.1.105/axis-media/media.amp")

那么,我错过了什么?任何想法如何解决这个问题?