opencv-python保存视频
最近在编程过程中遇到了保存视频的问题,之前使用cv2.VideoWriter
的方式保存的mp4文件在chrome中无法播放,查阅相关资料后发现是由于chrome由于版权问题只支持h264编码的视频。所以使用ffmpeg
工具来对保存好的视频转码,代码如下
video_writer = cv2.VideoWriter('xx.avi', cv2.VideoWriter_fourcc(*'XVID'), fps,(w, h))
for frame in frame_list:
video_writer.write(frame)
video_writer.release()
os.system(f'ffmpeg -i "xx.avi" -vcodec h264 "xx.mp4"')
我们首先定义使用XVID的编码格式对视频帧进行编码,该编码保存文件的后缀为avi,随后我们使用ffmpeg工具使用调用命令行命令的方式将保存的avi视频转码为h264编码的mp4视频
优化方法
video_writer = cv2.VideoWriter('xx.mp4', cv2.VideoWriter_fourcc(*'AVC1'), fps,(w, h))
网上说h264和avc1其实是同一种编码格式,但是使用h264传入时,后缀必须为avi,如果为mp4会报错:
OpenCV: FFMPEG: tag 0x34363268/'h264' is not supported with codec id 27 and format 'mp4 /MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x31637661/'avc1'