Файл видео, сохраненный OpenCV, поврежден - PullRequest
1 голос
/ 19 февраля 2020
The following code snippet is used to save a video file using OpenCV:

from multiprocessing import Process
from .streams import InputStream
from .camera import *
import cv2
import imutils
import logging
import time
import os
import numpy as np
import skvideo.io

log = logging.getLogger('igate')

class RecordWorker:

  def __init__(self, camera, config):
    self.config = config
    self.process = Process(target = self.save, args = (camera, ))


  def start(self):
    self.process.start()
    return self


  def save(self, camera):
    log.debug(f'{camera.id} RecordWorker SAVE started')
    fourcc = cv2.VideoWriter_fourcc(*"MJPG")
    videofile_count = self.get_start_videofile_number()
    video_filepath = self.config['video_save_path'] + camera.view + '_' +  f'{videofile_count:03d}' + '.avi'

    log.info(f'Saving video: {video_filepath}')
    video_writer = cv2.VideoWriter(video_filepath, fourcc, 25.0, (640,360), True)          
    #writer = skvideo.io.FFmpegWriter(video_filepath + '.avi')

    while True:
      frame, index = camera.inputStream.read()
      if frame is not None:
        log.info("got frame...");
        video_writer.write(np.uint8(255*frame)) 
    camera.inputStream.stop()  
    video_writer.release()  

  def get_start_videofile_number(self):
    return 2

Проблема в том, что файл, сохраненный в выходной папке, поврежден, имеет размер 6 КБ и не содержит никакого содержимого (похоже, изначально кадр не читался). Может кто-нибудь помочь мне с тем, что могло пойти не так здесь?

...