2014-02-19 4 views
1

무선 네트워크를 통해 웹캠을 스트리밍 할 때 gstreamer를 사용합니다. 스트리밍을 위해 암 보드를 사용하고 PC에서 수신합니다. opencv에서 사용하기 위해 qt에서받은 비디오를 가져오고 싶습니다.Qt + Opencv에서 Gstreamer 비디오 가져 오기

스트림이 명령을 사용하여 비디오 :

./capture -c 10000 -o | gst-launch-0.10 -v -e filesrc location=/dev/fd/0 ! h264parse ! rtph264pay ! tcpserversink host=127.0.0.1 port=8080

및 대한

가 나타납니다

내가 QT에서 수신 한 영상을 사용하기 위해 무엇을해야

gst-launch udpsrc port=1234 ! "application/x-rtp, payload=127" ! rtph264depay ! ffdec_h264 ! xvimagesink sync=false

. 이미지 처리에 사용하고 싶습니다.

답변

1

gst-launch를 사용하는 대신 수신 할 응용 프로그램을 직접 작성해야합니다. 그 내용은 gstreamer.freedesktop.org의 설명서를 참조하십시오. 특별히 응용 프로그램 개발 매뉴얼 http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html

Qt 윈도우에서 비디오를 사용하려면 GstXOverlay/GstVideoOverlay 인터페이스를 사용하여 비디오를 그릴 위치 (윈도우 ID)를 xvimagesink에 알릴 수 있습니다.

gstreamer에는 opencv에서 몇 가지 함수/필터를 래핑하는 opencv 플러그인이 있습니다. 관심있는 기능이 구현되지 않은 경우이를 사용하기위한 새로운 gstreamer 요소로 래핑 할 수 있습니다. 또는 버퍼 프로브를 작성하여 응용 프로그램의 버퍼를 수정하고 opencv를 직접 호출하는 처리를 수행 할 수 있습니다.

gst-launch에서 나는 버전 0.10을 사용하고있는 것을 볼 수 있습니다. 가능하다면 1.x 버전으로 이동하는 것을 고려해야합니다. 0.10은 쓸모없고 무의미합니다. 0.10을 고수해야하는 경우 문서를 찾을 때주의하여 버전에 대한 올바른 설명서를 읽고 있는지 확인하십시오.

+0

Qt에서 gstreamer 프로그래밍을위한 자습서를 제공해 줄 수 있습니까? – Ali

+0

죄송합니다. 제 머리 위에 Gstreamer Qt에 대한 특정 자습서를 모르겠습니다. Qt를 통해 노출 될 때 함수 이름과 클래스가 모두 매우 유사해야하므로 표준 C 코드를 읽을 수 있습니다. Qt 코드에서 직접 표준 C API를 사용할 수도 있습니다. – thiagoss

1

가장 좋은 해결책은 Qt 환경에서 gstreamer를 사용하여 비디오를 캡처하고 스트리밍하는 데 QtGstreamer를 사용하는 것입니다. 주요 이점은 파이프 라인 설명을 문자열에 삽입 할 수 있고 라이브러리가 하드 코딩을 수행한다는 것입니다. 모든 파이프 라인 구성 요소를 직접 코딩하지 않아도됩니다. 그러나 캡쳐 된 프레임을 OpenCV와 함께 사용하려면 자체 싱크를 코딩해야합니다. http://gstreamer.freedesktop.org/data/doc/gstreamer/head/qt-gstreamer/html/index.html

관련 문제