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

lil*_*ian 5 python opencv

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

这就是我正在做的事情:

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('Videos/output.mp4',fourcc, fps, (1080,1080))
Run Code Online (Sandbox Code Playgroud)

我一直在:

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/' ???'
Run Code Online (Sandbox Code Playgroud)

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

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

小智 8

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

fourcc = cv2.VideoWriter_fourcc(*'MPEG')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
Run Code Online (Sandbox Code Playgroud)

  • 最好发布一个不仅仅是代码的答案。 (5认同)

Rig*_*leg 5

对于 Windows 用户

我在 Windows 10 上使用 OpenCV 2 和 Python 3.6。

'XVID'编解码器,与生产一起.avi文件,似乎是最通用的解决方案(如果不是唯一的一个作品)。

fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('test.avi', fourcc, 60, (320, 240))
Run Code Online (Sandbox Code Playgroud)

另外,BGR也只能直接写这样的VideoWriter声明。不要尝试写入灰色帧:输出将为空。


Gon*_*cia 5

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

fourcc = cv2.VideoWriter_fourcc(*'MP4V')
out = cv2.VideoWriter('Videos/output.mp4',fourcc, fps, (1080,1080))
Run Code Online (Sandbox Code Playgroud)

选择

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('Videos/output.avi',fourcc, fps, (1080,1080))
Run Code Online (Sandbox Code Playgroud)

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