OpenCV (C ++): запись создает большой файл по сравнению с вводом

Я пытаюсь прочитать видеофайл с помощью 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 МБ выдает 2 ГБ.

Это проблема кодека? Я пробовал DIVX, MPEG и другие. Более того, некоторые выходные форматы должны сочетаться с конкретными кодеками.

0

Решение

Попробуйте использовать кодек «M», «P», «4», «V» с контейнером .mp4, то есть установите расширение для вашего имени файла как нечто .mp4

Для контейнера mp4 вы также можете попробовать MPEG, MJPG, FMP4

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]