OpenCV-python多程式實現兩個海康威視攝像頭同時錄入視訊(親測穩定分流無中斷)並儲存本地
OpenCV-python多程式實現兩個海康威視攝像頭同時錄入視訊(親測穩定分流無中斷)並儲存本地
最近做的一個專案需要用到兩個攝像頭同時讀取視訊錄入本地,進行解幀處理,網上搜尋的程式碼在自己的筆記本上不能穩定的錄入兩個攝像頭的視訊,幾分鐘就會報錯中斷(詳見文末參考),這邊在讀取視訊進行了調整和更改,測試可以穩定的讀取和儲存兩個攝像頭的視訊。
# 程式碼描述:利用多程式方法,利用兩個海康威視攝像頭,同時錄取視訊並儲存本地
#
# 建立時間: 2020-09-26
# 建立人: Kenn Wu
# 修改時間:
# 版本:
import cv2
import time
import multiprocessing as mp
# 抓取圖片,確認視訊流的讀入
def image_put(q, name, pwd, ip, channel=101):
cap = cv2.VideoCapture("rtsp://%s:%s@%s//Streaming/Channels/%d" \
% (name, pwd, ip, channel))
# 獲取視訊幀率
fps = cap.get(cv2.CAP_PROP_FPS)
print('fps: ', fps)
if cap.isOpened():
print('HIKVISION1')
else:
cap = cv2.VideoCapture("rtsp://%s:%s@%s//Streaming/Channels/%d" \
% (name, pwd, ip, channel))
fps = cap.get(cv2.CAP_PROP_FPS)
print('fps: ', fps)
print('HIKVISION2')
while cap.isOpened():
# print('cap.read()[0]:', cap.read()[0])
ret, frame = cap.read()
print('ret:', ret)
frame = cv2.resize(frame, (1920, 1080))
# 抓取圖片不成功再重新抓取
if not ret:
cap = cv2.VideoCapture("rtsp://%s:%s@%s//Streaming/Channels/%d" \
% (name, pwd, ip, channel))
print('HIKVISION2'
)
ret, frame = cap.read()
frame = cv2.resize(frame, (1920,1080))
q.put(frame)
# print('q.qsize():', q.qsize())
q.get() if q.qsize() > 1 else time.sleep(0.01)
# 獲得視訊流幀數圖片,儲存讀入的視訊
def image_get(q, window_name):
cv2.namedWindow(window_name, cv2.WINDOW_NORMAL)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
# 視訊儲存路徑
path = "D:/test/" + window_name + ".avi"
out = cv2.VideoWriter(path, fourcc, 20.0, (1920, 1080), True)
while True:
frame = q.get()
out.write(frame)
cv2.imshow(window_name, frame)
cv2.waitKey(1)
# 解決程式問題
def run_multi_camera():
# user_name, user_pwd = "admin", "password"
user_name, user_pwd = "admin", "zhangxuexiang714"
camera_ip_l = [
"192.168.1.67", # ipv4
"192.168.1.64",
# 把你的攝像頭的地址放到這裡,如果是ipv6,那麼需要加一箇中括號
]
mp.set_start_method(method='spawn') # init
queues = [mp.Queue(maxsize=2) for _ in camera_ip_l]
processes = []
for queue, camera_ip in zip(queues, camera_ip_l):
processes.append(mp.Process(target=image_put, args=(queue, user_name, user_pwd, camera_ip)))
processes.append(mp.Process(target=image_get, args=(queue, camera_ip)))
for process in processes:
process.daemon = True
process.start()
for process in processes:
process.join()
if __name__ == '__main__':
run_multi_camera() # 呼叫主函式
提示:筆記本讀取的攝像頭網路IP地址需要自己設定好
參考文獻:
https://blog.csdn.net/ljx1400052550/article/details/106987943
相關文章
- vue如何實時展示海康威視攝像頭多畫面?Vue
- iOS 儲存攝像頭H264視訊流iOS
- 3、Opencv播放視訊、儲存、暫停視訊,開啟攝像頭OpenCV
- 儀表板對接海康威視攝像頭實現實時監控方案
- WebRTC網頁開啟攝像頭並錄製視訊Web網頁
- opencv python 從攝像頭獲取視訊/從檔案獲取視訊 /儲存視訊OpenCVPython
- 海康威視攝像頭重置密碼問題密碼
- 海康威視攝像頭-chrome谷歌瀏覽器高版本區域網下海康攝像頭web網頁實時播放Chrome谷歌瀏覽器Web網頁
- 讀取多個(海康\大華)網路攝像頭的視訊流 (使用opencv-python),解決實時讀取延遲問題OpenCVPython
- Android開發 海康威視 多路視訊播放(同時播放視訊)Android
- matlab呼叫攝像頭並儲存成幀的形式Matlab
- 視訊直播原始碼,實現本地儲存搜尋歷史記錄原始碼
- JavaCV的攝像頭實戰之二:本地視窗預覽Java
- 大華攝像頭二次開發-web端實現實時視訊監控Web
- px30-android8.1-USB攝像頭錄製視訊異常Android
- 頭像點選檢視大圖和儲存功能實現(儲存的細節處理)
- 電腦釘釘攝像頭許可權在哪設定 電腦釘釘視訊會議攝像頭黑屏
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- 同時剪輯多個視訊,批量調整多個視訊的播放速度
- 海康威視攝像機Java SDK拉流(二)開啟關閉實時預覽Java
- 海康威視網路攝像頭,把電腦作為硬碟錄影機使用。方便別人方便自己。硬碟
- 微信視訊通話使用虛擬攝像頭
- 【Android】【opencv】實現攝像頭拍照和錄影AndroidOpenCV
- 微信頭像顯示“暫時無法檢視”的判斷方法
- 搭建一個攝像頭應用程式 應用程式內部攝像頭
- 帶貨直播系統,實現簡單的換頭像並儲存
- WebRTC開啟本地攝像頭Web
- 兩個視窗如何實現通訊
- 谷歌瀏覽器檢視本地儲存資訊谷歌瀏覽器
- 前端錄屏並儲存影片到本地前端
- Maui Blazor 使用攝像頭實現UIBlazor
- 小程式-生成海報儲存本地相簿
- video.js 一個頁面同時播放多個視訊IDEJS
- win10 怎麼檢測攝像頭_win10怎麼設定攝像頭Win10
- win10微信視訊無法使用攝像頭怎麼辦 win10電腦微信打不開攝像頭解決方法Win10
- H5超級播放器+FFmpeg實現攝像頭線上檢視H5播放器
- 純JavaScript實現的呼叫裝置攝像頭並拍照的功能JavaScript
- JavaCV的攝像頭實戰之三:儲存為mp4檔案Java