1 opencv保存mp4视频出现了global cap_ffmpeg_impl.hpp:3133 open Could not find encoder for codec_id=27, error: Encoder not found错误

今天使用opencv保存MP4视频时,使用了avc1编码,具体代码如下

output_video_fourcc = cv2.VideoWriter_fourcc(*'avc1')
video_write_cap = cv2.VideoWriter(output_video_path, output_video_fourcc, input_video_fps, (int(target_width), int(output_video_target_height)))

然后这个py脚本你在Ubuntu上跑的时候出现了以下错误

[ERROR:0@4.683] global cap_ffmpeg_impl.hpp:3133 open Could not find encoder for codec_id=27, error: Encoder not found
[ERROR:0@4.683] global cap_ffmpeg_impl.hpp:3211 open VIDEOIO/FFMPEG: Failed to initialize VideoWriter

原因是opencv-python不支持这个编码器。

1.1 解决方案

出现这个问题的原因主要是,我使用的pip安装的opencv,命令行如下

pip install opencv-python

这种方式有许可证问题,通过 pip 安装 open cv 无法访问 avc1 编解码器,所以我们需要使用conda的方式安装。

# 卸载pip安装的opencv
pip uninstall opencv-python opencv-contrib-python

# 使用conda的方式安装
conda install -c conda-forge opencv

装完就不报错了。

参考链接