在視頻應用中,我們一般都需要基於攝像頭或錄像機的視頻流進行二次開發,那么就涉及到如何將視頻流取出來。
在攝像機安裝好之后,一般是通過局域網與本地的服務器進行連接,要取錄像機的視頻流就要在局域網范圍內進行操作。
步驟:
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的二次開發。