您的位置:首页 > 其它

解决"cvCreateVideoWriter保存视频帧压缩格式只能用-1"的问题

2010-05-23 11:08 561 查看

cvCreateVideoWriter函数的说明

创建视频文件写入器

typedef struct CvVideoWriter
CvVideoWriter;

CvVideoWriter* cvCreateVideoWriter
( const char* filename, int fourcc,
double fps, CvSize frame_size, int is_color=1 );

filename

输出视频文件名。

fourcc

四个字符用来表示压缩帧的codec 例如,

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

若编码器代号为 -1,则运行时会弹出一个编码器选择框.

fps

被创建视频流的帧率。

frame_size

视频流的大小。

is_color

如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。

函数cvCreateVideoWriter
创建视频写入器结构。

遇到的问题

第二个参数除了选择-1(基于Windows平台)让其弹出一个窗口选择压缩帧格式或
先获取视频编码属性,然后设置写入器编码属性,就能创建成功了

outCompressCodec = (int)cvGetCaptureProperty(pCapture,
CV_CAP_PROP_FOURCC);

pVideo = cvCreateVideoWriter("c://out.avi",
outCompressCodec, m_framerate, cvGetSize(frame), 1);

选择其他参数
都会出错
,
在网上找了发现有不少人遇到类似的情况,但解决办法却没有.

解决方法

后来偶然在网上看到一篇介绍使用opencv保存mp4格式的文章,里面说到要安装ffdshow软件才能保存mp4格式的文件.我安装完好测试确实如此.接着发现
cvCreateVideoWriter

函数第二个参数正常了,可以使用函数说明中的任何参数.万事大吉.

附:ffdshow下载地址

补充:cvWriteFrame不支持ROI
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐