【问题标题】:OpenCV videowriter H264 codec (ffmpeg)OpenCV videowriter H264 编解码器 (ffmpeg)
【发布时间】:2013-11-24 21:53:57
【问题描述】:

我想用无损压缩的 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。我成功完成了所有步骤,但仍然出现同样的错误....

【问题讨论】:

  • 什么是实际的 ffmpeg 命令,您能否显示完整的 ffmpeg 控制台输出?
  • 实际的 ffmpeg 命令是什么意思?当我使用我第一篇文章中包含的代码时,Opencv 会自动调用正确的 ffmpeg 命令吗?
  • 不看怎么知道是正确的命令?

标签: windows opencv video ffmpeg


【解决方案1】:

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

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

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

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

按照FFmpeg officially doc从源安装。

【讨论】:

  • 为什么会被否决?是的,这个问题是针对 Windows 的......但这个答案至少看起来是明智和相关的,而且到目前为止,这是回答 OP 的唯一真正尝试。
【解决方案2】:

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

【讨论】:

  • 如果您将 -1 设置为 FOURCC,则会打开一个窗口,您可以在其中选择编解码器。
  • 是的。或者为未压缩的视频设置“0”(首先确保您有足够的磁盘空间)。
  • 我输入 -1,我的选项是 MS Video 1 和 Indeo。我如何从这个千年获得编解码器?
  • OpenCV 仅显示您机器上安装的编解码器。所以基本上只需安装您想使用的任何编解码器(确保您安装了编码器,因为有些编解码器只包含解码器)。
  • 通常他们有某种安装程序(取决于您的操作系统)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-24
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2011-08-26
  • 2018-11-14
相关资源
最近更新 更多