RTSP协议进行视频取流的方法、注意点及python实现
在视频应用中,我们一般都需要基于摄像头或录像机的视频流进行二次开发,那么就涉及到如何将视频流取出来。
在摄像机安装好之后,一般是通过局域网与本地的服务器进行连接,要取录像机的视频流就要在局域网范围内进行操作。
步骤:
1)获取摄像机的IP地址、配置的用户名和密码,按照格式写出RTSP协议地址码
2)用VLC工具连接,测试是否可以取出视频流
3)python中通过opencv读取视频流
详细说明:
1)摄像机的IP地址、配置的用户名和密码是已知的参数,在安装的时候即已配置好。RTSP协议地址码根据所用摄像机的型号来定,以海康摄像头为例(来自于海康的客服):
★目前海康录像机、网络摄像机,网络球机的RTSP单播取流格式如下(车载录像机不支持RTSP取流):
rtsp://用户名:密码@IP:554/Streaming/Channels/101
→录像机示例:
取第1个通道的主码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/101
取第1个通道的子码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/102
取第1个通道的第三码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/103
取第12个通道的主码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/1201
→网络摄像机/网络球机示例:
取主码流的URL:
rtsp://admin:hik123456@192.168.1.64:554/Streaming/Channels/101
★如果是多播取流的话,则使用以下路径
rtsp://用户名:密码@IP:554/Streaming/Channels/101?transportmode=unicast
→录像机示例:
取第1个通道的主码流预览
rtsp://admin:hik12345@10.16.4.25:554/Streaming/Channels/101?transportmode=unicast
2)我一般先用VLC工具测试是否可以取出视频流,当然这一步不是必须的。
点击 媒体-->打开网络串流-->输入RTSP地址码
如果能将实时的视频画面取出来,就表明RTSP协议地址码是正确的。
3)用python代码进行取流
代码如下:
import cv2 cap = cv2.VideoCapture('你的RTSP协议地址码') print(cap) ret,frame = cap.read() while ret: ret,frame = cap.read() cv2.imshow("current frame",frame) cv2.imwrite('frame.jpg', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() cap.release()
最后在此基础上进行python的二次开发。