我想用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。我成功地遵循了所有步骤,但我仍然得到同样的错误......
答案 0 :(得分:3)
我遇到了同样的问题,找不到解决方法。所以现在我总是使用-1作为FOURCC并手动选择x264编解码器。
答案 1 :(得分:0)
我设法在ubuntu上解决了问题,请写下来供您参考。
x264
编解码器正常工作,您需要:在启用x264的情况下构建FFmpeg ! 请尝试以下命令来验证H264
编解码器:
ffmpeg -i x264-input.mp4 -vcodec libx264 -f mp4 x264-output.mp4
按照FFmpeg officially doc进行源安装。