我正在尝试处理视频流中的帧,并将其作为新视频处理.
这就是我正在做的事情:
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)
对于 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声明。不要尝试写入灰色帧:输出将为空。
您遇到的问题是您试图以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)
在这里您可以找到有关视频编解码器的更多信息