Проблема заключалась в том, что моя версия openCV не поддерживала VideoWriter от gstreamer. Я изменяю это на 3.3.0, и это работает.
аюсь написать простое приложение для потоковой передачи видео, которое выполняет следующие задачи:
Получить кадр с камеры, эта часть работает);Изменить кадр;Отправить наgstreamer
трубопровод.Код:
VideoWriter writer;
writer.open("appsrc ! rtpvrawpay ! host =localhost port=5000" , 0, 30, cv::Size(IMAGE_WIDTH, IMAGE_HEIGHT), true);
while(true){
//get frame etc.
writer.write(frame);
}
VLC player не видит ничего с помощью команды:
vlc -vvv rtp://@localhost:5000
Я пытался:
cv::VideoCapture cap("udpsrc port=5000 ! tsparse ! videoconvert ! appsink");
Но он не запустился (без журнала ошибок, просто не получил ни одного кадра). Я использую OpenCV 3.1, и я прочитал документацию поддержки дляGStreamer
, Что может быть не так?