无法使用OpenCV和Python编写和保存视频文件



我正在尝试处理视频流中的帧,并将其作为新视频处理。

这就是我正在做的:

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('Videos/output.mp4',fourcc, fps, (1080,1080))

我不断得到:

OpenCV: FFMPEG: tag 0x44495658/'XVID' is not supported with codec id 13 and format 'mp4 / MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x00000020/' ???'

我想我使用了错误的 fourcc 值...我应该使用哪一个?我一直在尝试很多。

我正在使用 Ubuntu 16.04、Python 2.7.11 和 OpenCV 3.1.0

定义编解码器并创建像这样的 VideoWriter 对象

fourcc = cv2.VideoWriter_fourcc(*'MPEG')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))

对于 Windows 用户

我在Windows 10上使用带有Python 3.6的OpenCV 2。

'XVID'编解码器以及生成.avi文件似乎是最通用的解决方案(如果不是唯一有效的解决方案)。

fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('test.avi', fourcc, 60, (320, 240))

此外,只有BGR可以直接用这样的VideoWriter声明来编写。不要尝试写入灰色帧:输出将为空。

遇到的问题是您尝试以XVID格式导出帧,但输出文件的名称以 .mp4 结尾。您应该将导出格式更改为MP4V或将输出文件的名称更改为.avi

fourcc = cv2.VideoWriter_fourcc(*'MP4V')
out = cv2.VideoWriter('Videos/output.mp4',fourcc, fps, (1080,1080))

另类

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('Videos/output.avi',fourcc, fps, (1080,1080))

在这里,您可以找到有关视频编解码器的更多信息

您给出的框架的大小(宽度,高度)应与要保存的框架的大小匹配。所以
fw = int(cap.get(3)) fh = int(cap.get(4)) print("w,h",fw,fh) out = cv2.VideoWriter('fb1.avi',cv2.VideoWriter_fourcc('X','V','I','D'), fps, (fw,fh))

如果要将opencv的视频保存为mp4格式,请让

点击此链接:

您应该替换:

fourcc = cv2.VideoWriter_fourcc(*'XVID')

由:

fourcc = cv2.VideoWriter_fourcc(*'FMP4')

我尝试并成功了。

我遇到了同样的问题。事实证明,我已经切换了视频的高度和宽度,因此帧尺寸与视频规格不匹配,因此没有写入任何内容。确保它们完全匹配。

此外,如果文件扩展名与使用的编解码器不匹配,OpenCV 似乎会发出相同的警告。具体来说,它希望.avi XVID 编解码器。

我想

保存为.mp4,至少在 Linux 上,使用 *"mp4v" 是正确的代码。

检查以下示例

fourcc = cv2.VideoWriter_fourcc(*"mp4v")
video = cv2.VideoWriter('output.mp4', fourcc, fps, (width, height))

安装 K-Lite Mega 编解码器包:https://filehippo.com/download_klite_mega_codec/
发生此错误的原因是某些编解码器在Windows 媒体播放器中默认不可用。因此,通过安装此软件,视频可以使用相同的代码正常工作。

如果你使用的是 linux,试试这个

fourcc = 0x00000021
输出 = CV2。VideoWriter('Videos/output.mp4',fourcc, fps, (1080,1080))

就我而言,我使用:

fourcc = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
video = cv2.VideoWriter(video_name, fourcc, FPS, (width,height))

和这项工作:>

在 Mac 上

writer = cv2.VideoWriter('mysupervideo.mp4', cv2.VideoWriter.fourcc(*'mp4v'), 20, (width, height))

效果更好

相关内容

  • 没有找到相关文章

最新更新