目标是从磁盘获取视频文件,将其转换为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")
那么,我错过了什么?任何想法如何解决这个问题?