同时 运行 两个视频作者产生了一个扭曲的输出文件

Simultaneously running two video writers produces a distorted output files

我正在尝试使用 OpenCV 从单个 RTP 流生成 2 个视频文件。这 2 个文件应各有 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

一种可能是将整个 50 秒保存在 RAM 中并在最后写入两个流。

或者第二种可能是将第一个视频实时写入磁盘并将最后的 30 秒保存在 RAM 中,然后将它们写入第二个视频。

第三种可能性可能是 运行 3 个线程,一个只在循环中连续获取视频,另外两个从第一个线程接收帧并分别写入一个视频文件。这些应该是双倍的,或者最好是双倍以上的缓冲。