0

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

4

1 回答 1

0

尝试在 .mp4 容器中使用“M”、“P”、“4”、“V”编解码器,即将文件名的扩展名设置为 something.mp4

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

于 2017-03-13T23:41:43.650 回答