use*_*998 5 video streaming opencv vlc rtsp
目标是从磁盘获取视频文件,将其转换为 RTSP 流,通过 LAN 将其提供给另一台 PC,并将该视频流捕获到 OpenCV 中。我的电脑是192.168.1.100。
我运行 VLC 的语法如下。
vlc --vlm-conf=vlm.conf -I telnet --telnet-password mypassword
Run Code Online (Sandbox Code Playgroud)
我有一个 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
Run Code Online (Sandbox Code Playgroud)
video1.mkv是本地磁盘上的视频文件。
OpenCV 版本:
>>> cv2.__version__
'3.4.0-dev'
Run Code Online (Sandbox Code Playgroud)
我们可以尝试在 LAN 上的另一台 PC 上用 Python 打开该流,但失败了。
>>> cap = cv2.VideoCapture("rtsp://192.168.1.100:8554/video1.sdp")
[rtsp @ 0xabddc0] method SETUP failed: 459 Client error
Run Code Online (Sandbox Code Playgroud)
我们可以尝试rtsp://192.168.1.100:8554/video1.sdp使用 VLC 查看相同的 RTSP 流 ( ),并且效果成功。
作为类似的测试,我们可以尝试使用提供网络流的网络监控摄像头。
rtsp://root:mypassword@192.168.1.105/axis-media/media.amp
Run Code Online (Sandbox Code Playgroud)
我们可以在 VLC 中查看该流,这成功了。
我们还可以在 Python 中尝试这个视频流 - 这可以成功。
cap = cv2.VideoCapture("rtsp://root:mypassword@192.168.1.105/axis-media/media.amp")
Run Code Online (Sandbox Code Playgroud)
那么,我错过了什么?请问有什么办法解决这个问题吗?