同时 运行 两个视频作者产生了一个扭曲的输出文件
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 个线程,一个只在循环中连续获取视频,另外两个从第一个线程接收帧并分别写入一个视频文件。这些应该是双倍的,或者最好是双倍以上的缓冲。
我正在尝试使用 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 个线程,一个只在循环中连续获取视频,另外两个从第一个线程接收帧并分别写入一个视频文件。这些应该是双倍的,或者最好是双倍以上的缓冲。