давно собирался написать. нашел причину, почему не работала запись видео. выкладываю рабочий код.
#include "cv.h"
#include "highgui.h"
main( int argc, char* argv[] ) {
cvNamedWindow("capture",1);
// получаем любую подключённую камеру
CvCapture *capture = cvCreateFileCapture( "rtsp://192.168.127.100:554/moxa-cgi/udpstream_ch1_stream1");
// assert(capture!=0);
const char *filename = "capture.avi";
// частота кадров
//double fps = cvGetCaptureProperty (capture, CV_CAP_PROP_FPS);
double fps = 15;
// размер картинки
//CvSize size = cvSize( (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty( capture, CV_CAP_PROP_FRAME_HEIGHT));
CvSize size;// = cvSize(640, 480);
CvVideoWriter *writer = cvCreateVideoWriter("./src/asd.avi", CV_FOURCC('X','V','I','D'), 25, cvSize(720,576), 1);
assert(writer!=0);
IplImage *frame=0;
while(TRUE){
// получаем кадр
frame = cvQueryFrame( capture );
// показываем
cvShowImage("capture", frame);
// сохраняем в файл
cvWriteFrame(writer, frame);
char c = cvWaitKey(1);
if (c == 27) { // если нажата ESC - выходим
break;
}
}
// освобождаем ресурсы
cvReleaseCapture( &capture );
cvReleaseVideoWriter(&writer);
cvDestroyWindow("capture");
return 0;
}