C++ OpenCV VideoWriter没有';行不通

C++ OpenCV VideoWriter没有';行不通,c++,opencv,video,ffmpeg,ubuntu-14.04,C++,Opencv,Video,Ffmpeg,Ubuntu 14.04,我正在尝试使用opencv videoWriter获取视频文件。但我有以下问题: >[libx264 @ 0x132b680] broken ffmpeg default settings detected >[libx264 @ 0x132b680] use an encoding preset (e.g. -vpre medium) >[libx264 @ 0x132b680] preset usage: -vpre <speed> -vpre <prof

我正在尝试使用opencv videoWriter获取视频文件。但我有以下问题:

>[libx264 @ 0x132b680] broken ffmpeg default settings detected
>[libx264 @ 0x132b680] use an encoding preset (e.g. -vpre medium)
>[libx264 @ 0x132b680] preset usage: -vpre <speed> -vpre <profile>
>[libx264 @ 0x132b680] speed presets are listed in x264 --help
>[libx264 @ 0x132b680] profile is optional; x264 defaults to high
>Could not open codec 'libx264': Unspecified error!!! Output video could not be opened
[libx264@0x132b680]检测到损坏的ffmpeg默认设置
>[libx264@0x132b680]使用编码预设(例如-vpre-medium)
>[libx264@0x132b680]预设用法:-vpre-vpre
>[libx264@0x132b680]速度预设在x264--帮助中列出
>[libx264@0x132b680]配置文件是可选的;x264默认为高
>无法打开编解码器“libx264”:未指定错误!!!无法打开输出视频
我的系统中确实有libx264,所以我猜最后一行只是一个副作用

我试图运行的代码是一个示例

intmain(intargc,char*argv[]){
//加载输入视频
视频捕获输入_cap(“testi.mp4”);
如果(!input_cap.ISOPEND())
{

std::coutVideoWriter不支持.mp4扩展名。改用.avi

Dimazavr的答案不完全正确。首先,您需要将输出视频文件扩展名从
.mp4
更改为
.avi
。然后,如果运行代码,您将获得以下错误信息:

OpenCV Error: Unsupported format or combination of formats (Gstreamer Opencv backend does not support this codec.) in CvVideoWriter_GStreamer::open, file /home/rwduzhao/store/opencv-2.4.13/modules/highgui/src/cap_gstreamer.cpp, line 1372
terminate called after throwing an instance of 'cv::Exception'
  what():  /home/rwduzhao/store/opencv-2.4.13/modules/highgui/src/cap_gstreamer.cpp:1372: error: (-210) Gstreamer Opencv backend does not support this codec. in function CvVideoWriter_GStreamer::open

Aborted (core dumped)
这意味着
opencv2.4
中的
cv::VideoWriter
不支持
libx264
格式,或者
avi
扩展与
libx264
格式不兼容。我建议不要使用
libx264
编解码器。您可以尝试
cv\u FOURCC
支持的以下编解码器格式列表:

CV_FOURCC('P','I','M','1')    = MPEG-1 codec
CV_FOURCC('M','J','P','G')    = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec
根据我的经验,
CV\u FOURCC('D','I','V','X')
的质量很好。此外,如果将
CV\u FOURCC
设置为
-1
,您可以在GUI窗口中选择系统支持的编解码器格式之一。您可以见证运行过程

CV_FOURCC('P','I','M','1')    = MPEG-1 codec
CV_FOURCC('M','J','P','G')    = motion-jpeg codec
CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec
CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec
CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec
CV_FOURCC('U', '2', '6', '3') = H263 codec
CV_FOURCC('I', '2', '6', '3') = H263I codec
CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec