OpenCV 视频编写器 H264 编解码器 (ffmpeg)

alc*_*con 7 windows video opencv ffmpeg

我想用无损压缩的opencv保存视频,这样我就不会丢失帧的任何细节。一切都适用于 xvid 编解码器,但当然这不是无损压缩,所以我发现 x264 编解码器是合适的。但是它不起作用,我尝试了以下示例代码,但在运行时出现以下错误:“找不到编解码器 ID 28 的编码器:未找到编码器。”

cv::VideoWriter makeVideo;
makeVideo.open("makevideo//newVideo.mp4", CV_FOURCC('X','2','6','4'), 30, cv::Size(1600,1200), true);
cv::Mat image = imread("makevideo//frames//111.png");

for(int i = 0; i < 200; i++)
    makeVideo << image;

makeVideo.release();
Run Code Online (Sandbox Code Playgroud)

我发现要使其正常工作,我需要有 ffmpeg 支持。我目前正在使用 opencv2.4.6,在这个讨论中(如何在 Windows 中使用 openCV FFMPEG 视频 I/O 而不是 DirectShow ?)有人提到在 opencv2.4 中自动包含 ffmpeg。但它不起作用......

在这里(How to compile OpenCV 2.3 with ffmpeg support with Visual Studio 2010)我找到了如何在windows上自己编译opencv和ffmpeg。我成功地遵循了所有步骤,但仍然出现相同的错误....

lit*_*imp 5

我遇到了同样的问题,找不到解决方案。所以现在我总是使用 -1 作为 FOURCC 并手动选择 x264 编解码器。

  • 我把 -1 和我的选择是 MS Video 1 和 Indeo。我如何获得这个千年的编解码器? (2认同)

hao*_*hao 5

我在ubuntu上搞定了,写下来供大家参考。

  1. 为了使x264编解码器工作,您需要: 构建启用 x264 的 FFmpeg!
  2. 在调试 OpenCV 之前,请确保您可以使用 ffmpeg 本身生成 x264

尝试以下命令来验证H264编解码器:

ffmpeg -i x264-input.mp4 -vcodec libx264 -f mp4 x264-output.mp4

按照FFmpeg 官方文档从源代码安装。