我正在尝试使用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等。此外,某些输出格式必须与特定的编解码器一起使用。
答案 0 :(得分:0)
尝试使用带有.mp4容器的'M','P','4','V'编解码器,也就是说,将扩展名设置为您的文件名为something.mp4
对于mp4容器,您还可以尝试MPEG,MJPG,FMP4