python - Opencv VideoWriter 临时文件
问题描述
我正在尝试将图像列表写入 mp4 视频。当我将 VideoWriter 用于本地 mp4 文件路径时,此代码运行良好,并且我的 mp4 文件保存到磁盘。
但是,我需要在服务器中使用临时文件执行此操作,然后发送到其他地方。要使用临时文件进行测试,我只需将 VideoWriter 文件名更改为 file_out.name(通过 NamedTemporaryFile)并复制到磁盘以验证它是否正常工作。我得到的输出是一个同样大小的 mp4 文件,但它不能被任何视频播放器打开 - 所以文件一定有问题。
file_out = tempfile.NamedTemporaryFile(suffix='.mp4')
video = cv2.VideoWriter(file_out.name,cv2.VideoWriter_fourcc(*'avc1'),20,(width,height))
for i in range(len(images)):
video.write(np.asarray(images[i]))
shutil.copy(file_out.name, '/path/to/test_output.mp4')
可能会发生什么导致 VideoWriter 无法正确写入我的临时文件?
PS我的第一次尝试是将VideoWriter写入BytesIO,然后直接通过http发送-这不起作用,所以我退回到tempfile。
解决方案
解决了:
必须释放 VideoWriter 输出才能使复制文件的输出有效。
video.release()
这解决了问题。