OpenCV videowriter H264编解码器(ffmpeg)

时间:2013-11-12 16:22:45

标签: windows opencv video 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();

我发现为了这个工作,我需要ffmpeg支持。我目前正在使用opencv2.4.6并在此讨论中(how can I use the openCV FFMPEG video I/O rather than the DirectShow one in Windows?)有人提到在opencv2.4中会自动包含ffmpeg。但它不起作用......

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

我设法在ubuntu上解决了问题,请写下来供您参考。

  1. 要使x264编解码器正常工作,您需要:在启用x264的情况下构建FFmpeg
  2. 在调试OpenCV之前,请确保可以使用ffmpeg单独生成x264

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

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

按照FFmpeg officially doc进行源安装。