Ограничение количества кадров, записанных в видео с помощью opencv - PullRequest
0 голосов
/ 25 сентября 2019

Я записываю видеофайл из потока и хочу остановить процесс записи видео, когда он достигает моего предела общего числа кадров.

Я пытаюсь записать 30-секундное видео, но егоне точно, поэтому я попытался использовать общее количество кадров (30 кадров в секунду x 30 секунд = 900 кадров в видео).Я попытался подсчитать общее количество кадров выходного видео во время его записи, но в конце оно искажается.

vcap = cv2.VideoCapture('udp://'+cctv_ip+':'+cctv_port+'/')

frame_width = int(vcap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height = int(vcap.get(cv2.CAP_PROP_FRAME_HEIGHT))
frame_rate = int(vcap.get(cv2.CAP_PROP_FPS))

video = cv2.VideoWriter(base_mov_dir+'/carlo.mpg', -1, frame_rate, (frame_width, frame_height))

frameCounter = 0
# while True:
while frameCounter <= 900:
    has_frame, frame = vcap.read()
    if not has_frame:
       print('Can\'t get frame')
       break
    video.write(frame)
    out_vcap = cv2.VideoCapture(base_mov_dir + '/carlo.mpg')
    frameCounter = int(out_vcap.get(cv2.CAP_PROP_FRAME_COUNT))
    out_vcap.release()
    print(frameCounter)
video.release()
...