OpenCV(C ++):与输入

时间:2017-01-31 19:54:17

标签: c++ opencv video codec video-codecs

我正在尝试使用OpenCV(C ++)读取视频文件,对每个帧应用过滤器并将新的已修改帧写入输出文件。 代码的关键部分是:

int out_format = CV_FOURCC('M','P','4','2');  // can be another one
double fps = media.get(CV_CAP_PROP_FPS),
       width = media.get(CV_CAP_PROP_FRAME_WIDTH),
       height = media.get(CV_CAP_PROP_FRAME_HEIGHT);

// On Linux FFMPEG is used to write videos
VideoWriter writer("./" + outputname + ".mkv", out_format, fps, Size(width, height) );
.......
.......
writer.write(newFrame); // Mat newFrame

事实是,我不熟悉编解码器和视频输出格式,因此我想知道为什么280 MB左右的文件产生2 GB的输出。

这是编解码器问题吗?我尝试过DIVX,MPEG等。此外,某些输出格式必须与特定的编解码器一起使用。

1 个答案:

答案 0 :(得分:0)

尝试使用带有.mp4容器的'M','P','4','V'编解码器,也就是说,将扩展名设置为您的文件名为something.mp4

对于mp4容器,您还可以尝试MPEG,MJPG,FMP4