經常爬視頻數據,然后用opencv做成圖片
因此設置超時時間很重要
cap.set(cv2.CAP_PROP_FPS, timeout_ms)
for idx, row in data.iterrows():
? ? if idx < 400:
? ? ? ? continue
? ? try:
? ? ? ? # 打開視頻文件
? ? ? ? timeout_ms = 5000
? ? ? ? cap = cv2.VideoCapture(row['PLAY_URL'])
? ? ? ? cap.set(cv2.CAP_PROP_FPS, timeout_ms)
? ? ? ? frame_rate = int(cap.get(cv2.CAP_PROP_FPS))
? ? ? ? # 獲取視頻幀總數
? ? ? ? total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
? ? ? ?
? ? ? ? frame_id = 0
? ? ? ? while frame_id < total_frames:
? ? ? ? ? ? frame_id += int(10 * frame_rate)
? ? ? ? ? ? print(frame_id)
? ? ? ? ? ? cap.set(cv2.CAP_PROP_POS_FRAMES, frame_id) ?# 設置要讀取的幀的索引
? ? ? ? ? ? ret, frame = cap.read()
? ? ? ? ? ? if ret:
? ? ? ? ? ? ? ? img_path = os.path.join(r"D:\code\baidu-spider\dataset","{}_{}.jpg".format(idx,frame_id))
? ? ? ? ? ? ? ? res = cv2.imwrite(img_path, frame)
? ? ? ? ? ? ? ? print("--------------",img_path,res)