OpenCV videowriter H264编解码器(ffmpeg)

问题描述 投票:3回答:2

我想用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。我成功地遵循了所有步骤,但我仍然得到同样的错误....

windows opencv video ffmpeg
2个回答
3
投票

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


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从源代码安装。

© www.soinside.com 2019 - 2024. All rights reserved.