cv :: VideoWriter产生不可读的视频

时间:2012-01-23 23:39:56

标签: c++ video opencv

我想用52fps流动的RGB图像流生成视频文件。我发现opencv api非常方便使用(cv :: VideoWriter)。问题是我只能使用VLC播放生产的avi;播放视频但是大喊:

[0x28307b0] xcb_xv generic error: no available XVideo adaptor

任何其他视频播放器(在同一台计算机上)无法读取和播放视频。 录制一切看起来还不错:我得到有关输出,帧大小,视频编解码器,fps等的信息......没有错误。

Output #0, avi, to '01-23-12_15-24-51.avi':
Stream #0.0: Video: flv, yuv420p, 500x242, q=2-31, 7744 kb/s, 90k tbn, 52tbc 

由于OpenCv仅支持avi作为视频容器,我唯一能改变的是视频编解码器,我尝试过(FOURCC代码)FLV1,DIVX,DIV3,但它们都没有正常工作。

我想在不同电脑上播放任何视频播放器的视频。我怎样才能使它工作? VideoWriter是正确的选择吗?

非常欢迎任何建议。

感谢。

1 个答案:

答案 0 :(得分:1)

如果您有图片的视频源,最好使用相同的编解码器进行输出:

int videoType = (int)cap.get(CV_CAP_PROP_FORMAT);

VideoWriter vout;
vout.open(videofile + "_out.avi", videoType, 30, imgSize);

或者,您可以尝试更老,更简单的FOURCC。或者是特定于Microsoft的,如果您只想在Windows上运行它。