我正在尝试用OpenCV从一个RTP流中产生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发布于 2019-10-18 00:08:19
一种可能是将整个50秒保存在RAM中,并在结束时写入两个流。
或者第二种可能是将第一个视频实时写入磁盘,并在RAM中保存最后30秒,然后可能将它们写入第二个视频。
第三种可能是运行3个线程,一个线程在循环中连续获取视频,另外两个线程从第一个线程接收帧并分别写入一个视频文件。它们应该是双倍缓冲的,或者最好是双倍缓冲的。
https://stackoverflow.com/questions/58434359
复制相似问题