Во-первых, getCaptureProperties отчасти отстой в получении чего-либо, поэтому вы должны проверить, что fps действительно имеет то, что вы думаете.Некоторые кодеки не могут кодировать с определенной частотой кадров, поэтому попробуйте просто установить fps равным 30 и посмотреть, работает ли он.
В противном случае вы пропускаете кодек mpeg 4, как говорится.Я бы порекомендовал:
1.) Скачать несколько кодеков и повторить попытку.http://www.divx.com/en/software/divx-plus/codec-pack, вероятно, имеет то, что вы ищете.
2.) Вы можете изменить строку
CvVideoWriter *writer=cvCreateVideoWriter(string1, CV_FOURCC('D', 'I', 'V', 'X') ,fps,size) ;
, чтобы использовать какой-то другой кодек.Я поиграл с парой кодеков и установил количество времени для кодирования 7-минутного видео в моей системе.
(\P,\I,\M,\1) ;= MPEG-1 codec (112913.386195 msecs) (104 MB)
(\M,\J,\P,\G) ;= motion-jpeg codec (crashed)
(\M,\P,\4,\2) ;= MPEG-4.2 codec (107184.186774 msecs) (82 MB)
(\D,\I,\V,\3) ;= MPEG-4.3 codec (118308.933328 msecs) (83 MB)
(\D,\I,\V,\X) ;= MPEG-4 codec (99037.738131 msecs) (85 MB)
(\U,\2,\6,\3) ;= H263 codec (101141.993551 msecs) (89 MB)
(\I,\2,\6,\3) ;= H263I codec (crashed)
(\F,\L,\V,\1) ;= FLV1 codec (104307.567802 msecs) (93 MB)
В частности, я бы порекомендовал попробовать кодек FLV1, так как мне повезло с этим.Итак, в заключение попробуйте:
CvVideoWriter *writer=cvCreateVideoWriter(string1, CV_FOURCC('F', 'L', 'V', '1') ,fps,size) ;
Удачи!