import cv2
import datetime
import os
# IP攝影機的URL
url = 'http://your_ip_camera_url/video'
# 建立影片擷取物件
cap = cv2.VideoCapture(url)
# 檢查攝影機是否成功開啟
if not cap.isOpened():
print("無法開啟攝影機.")
exit()
# 設定影片編碼器
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 設定錄影時間長度(秒)
record_duration = 3600 # 一小時
# 建立子目錄 "data"(如果不存在)
output_dir = 'data'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 開始錄影循環
while True:
# 取得當前時間作為錄影開始時間
start_time = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
# 設定輸出檔案路徑
filename = os.path.join(output_dir, f"recorded_video_{start_time}.mp4")
out = cv2.VideoWriter(filename, fourcc, 20.0, (640, 480))
# 紀錄錄影開始時間
start_timestamp = datetime.datetime.now()
# 錄影時間計數
elapsed_time = 0
# 錄影迴圈
while elapsed_time < record_duration:
# 讀取攝影機的影格
ret, frame = cap.read()
if ret:
# 在影格上繪製時間戳記
timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
cv2.putText(frame, timestamp, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)
# 將影格寫入影片檔案
out.write(frame)
# 顯示影格
cv2.imshow('IP Camera', frame)
# 計算錄影已經進行的時間
elapsed_time = (datetime.datetime.now() - start_timestamp).total_seconds()
# 等待1毫秒並檢查是否按下 'q' 鍵停止錄影
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 釋放當前錄影物件
out.release()
# 等待1毫秒並檢查是否按下 'q' 鍵停止錄影
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 釋放攝影機物件和關閉視窗
cap.release()
cv2.destroyAllWindows()