Перейти к содержимому
Compvision.ru
daenur

Opencv запись потокового видео

Recommended Posts

Доброго времени суток. Возник вопрос с записью потокового видео. Нашел в нете стандартный пример:


#include "cv.h"

#include "highgui.h"


main( int argc, char* argv[] )

{

    CvCapture* capture = 0;

    capture = cvCreateFileCapture("rtsp://192.168.127.100:554/moxa-cgi/udpStreamer");


    if(!capture)

        { return -1; }


    IplImage *bgr_frame=cvQueryFrame(capture);//Init the video read


    CvSize size = cvSize(720,576);


    // creates video: file to write -- codec that's gonna be used -- frame per second -- size of video frames -- grayscale or not

    CvVideoWriter *writer = cvCreateVideoWriter( "outvideo.avi", CV_FOURCC('D','I','V','X'), 25, size, 1 );


    IplImage* logpolar_frame = cvCreateImage( size, IPL_DEPTH_8U, 1 );


    while( (bgr_frame=cvQueryFrame(capture)) != NULL )

    {


        cvWriteFrame( writer, bgr_frame );


    }//


    cvReleaseVideoWriter( &writer );

    cvReleaseImage( &logpolar_frame );

    cvReleaseCapture( &capture );


    return(0);


}

Пример компелится. но при при запуске выдает ощибку:

 what():  /home/tutov12/OpenCV-2.2.0/modules/highgui/src/cap_gstreamer.cpp:489: error: (-210) Gstreamer Opencv backend doesn't support this codec acutally. in function CvVideoWriter_GStreamer::open

не могу понять какой именно кодек не подходит. а может я просто что то делаю не так. Недавно только изучаю Opencv.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Линукс? Кодеки стоят все?

P.S. Ник твой, случайно, не из Перумовской книжки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Линукс? Кодеки стоят все?

P.S. Ник твой, случайно, не из Перумовской книжки?

Линукс. возможно и не все кодеки есть. у меня стоят вроде все gstreamer-ские библиотеки. может просто они не подходят для OpenCV-2.2.0?

P.S да. из Перумовской книжки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня возникла та же проблема, daenur, у вас не появилось решения?

Сколько ни гуглю эту ошибку, на всевозможных форумах снова и снова натыкаюсь на вопрос, но не на ответ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня возникла та же проблема, daenur, у вас не появилось решения?

Сколько ни гуглю эту ошибку, на всевозможных форумах снова и снова натыкаюсь на вопрос, но не на ответ...

Решения так и не появилось. Как и вы натыкаюсь на одни вопросы без ответов....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Решения так и не появилось. Как и вы натыкаюсь на одни вопросы без ответов....

давно собирался написать. нашел причину, почему не работала запись видео. выкладываю рабочий код.


#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;

}

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×