我正在尝试使用 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 等。此外,某些输出格式必须与特定的编解码器一起使用。