【发布时间】:2015-06-24 12:46:49
【问题描述】:
我正在尝试使用 openCV 将视频导出为 .mp4。我已经尝试了几个编解码器,但现在都没有成功。
这是一个从帧构造视频的函数:
def create_movie(self, out_directory, fps, total_frames):
img1 = cv2.imread("temp/scr0.png")
height, width, layers = img1.shape
codec = cv2.cv.CV_FOURCC('X','V','I','D')
video = cv2.VideoWriter(out_directory, codec, fps, (width, height))
for i in range(total_frames):
img_name = "temp/scr" + str(i) + ".png"
img = cv2.imread(img_name)
video.write(img)
video.release()
cv2.destroyAllWindows()
我通常会收到下一条错误消息,使用不同的编解码器:
Tag XVID/0x44495658 incompatible with output codec id '13'
是否有可能做到这一点以及如何做到这一点?
【问题讨论】:
-
你在哪个平台上?您是否安装了 ffmpeg 并使用它编译了 OpenCV?查看list of FOURCC codecs 并尝试不同的,可能是 X264 或其他一些支持良好(或未压缩)的编解码器。
-
Linux。不,我们没有安装 ffmpeh。我尝试了列表中的几个编解码器,但似乎都没有工作。
-
我记得这对 OSX 来说是一个彻头彻尾的痛苦。您可以尝试使用 ffmpeg 自己重新编译 opencv 以确保支持。我查看了我的代码,并成功使用了 MJPGfourcc。否则,您始终可以保存单个帧并在命令行上使用 ffmpeg 将它们组合成视频。
标签: python opencv video ffmpeg