Одновременная работа двух видеомагнитофонов приводит к искаженным выходным файлам - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь создать 2 видеофайла из одного потока RTP, используя OpenCV. Каждый из двух файлов должен иметь продолжительность 30 секунд, при этом первые 10 секунд второго файла содержат последние 10 секунд первого файла.

Первые 20 секунд первого файла записываются плавно, без искажений, но после того, как вторая программа записи видео выполняется параллельно с первой программой записи видео, последние 10 секунд начинают искажаться и заикаться.

Первый видеомагнитофон запишет первый видеофайл, затем, когда он достигнет отметки 20 секунд, второй видеомагнитофон начнет работать одновременно с первым, чтобы записать второй видеофайл.

if frameCounter1 > (20 * frame_rate):

    has_frame, frame = vcap.read()

    if not has_frame:
        logging.error('Can\'t get frame (disconnected from camera stream)')
        sys.exit()

    vidWriter1.write(frame)
    frameCounter1 = frameCounter1 + 1

    vidWriter2.write(frame)
    frameCounter2 = frameCounter2 + 1

1 Ответ

1 голос
/ 17 октября 2019

Одной из возможностей может быть сохранение всех 50 секунд в ОЗУ и запись обоих потоков в конце.

Или второй возможностью может быть запись первого видео на диск в режиме реального времени и сохранение последнего30 секунд в ОЗУ и, возможно, потом записать их во второе видео.

Третья возможность может состоять в том, чтобы запустить 3 потока, один из которых просто непрерывно получает видео в цикле, а два других получают кадры из первого и записывают одинвидео файл каждый. Они должны быть двойными или, предпочтительно, больше, чем двойные буферизованные.

...