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'