2016-07-15 3 views
0

3 개의 Rapsberry PI에서 나오는 3 개의 스트림을 합성하려고합니다.Gstreamer videomixer 매우 낮은 프레임 율

파이프 라인 : pipeline0/GstOSXVideoSink : osxvideosink0는 : 가 거기에 타임 스탬프 문제, 또는 수도 있습니다 컴퓨터가 너무 마자 나는 videomixer 플러그인을 사용하여 두 개의 스트림 참여로

, 나는 메시지로 끝나는 수 느린.

이상하게도 내 작업 모니터는 GST

세 개의 스트림으로

약 15 %의 CPU 사용률을 나타내고, 프레임 속도는 사용할 수 없게됩니다. 내 I7 맥북 문제없이 이것을 처리 할 수있을 것으로 기대할 것이다 ....

여기는 믹싱에 사용하는 코드이다.이 경우 하나의 스트림 (/ 싱크?). 명백한 실수가 있는지 누가 알 수 있습니까? 또는 병목 현상을 찾아서 개선해야하는 위치는 어디입니까? 감사합니다.

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! autovideosink \ 
-v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264'! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9001 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9002 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. 

다음은 RPI 카메라에서 스트림을 보내는 데 사용하는 코드입니다. 비디오 싱크 각 비디오 디코딩 및 sync=false 대한 큐 요소를 추가

raspivid -n -w 640 -h 480 -t 0 -o - \ 
| gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay \ 
config-interval=10 pt=96 ! udpsink host=192.168.1.3 port=9000 
+0

흠 glvideomixer는 어떤가? RPI에서 OpenGL이 어떻게 작동하는지 모르겠습니다. – nayana

+0

믹서에 연결된 두 개의 스트림을 사용하여 코드를 붙여 넣을 수 있습니까? 나는 여러분의 파이프 라인에'queue' 엘리먼트를 볼 수 없습니다. – mpr

+0

@otopolsky videomixer가 Mac에 있는데, 어떤 이유로 glvideomixer가 설치에 나타나지 않습니다. 설치 방법을 검색했지만 정보를 찾을 수 없습니다. 나는 잘못된 방향을보고있을 것입니다. 혹시라도 Mac에 glvideomixer를 설치하는 방법을 알려줄 수 있습니까? (플러그인, 기본, 좋지 않은, 못생긴, libav를 설치했습니다.) gst-inspect-1.0을 수행하면 gl 요소가 나타나지 않습니다. –

답변

0

보십시오.

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! videoconvert ! ximagesink sync=false \ 
udpsrc port=9000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9001 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9002 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. 

지금이 내 부인이 비디오가 제대로 부드럽고 동기화 될 경우 내가 확실 해요 있다는 것,하지만 꽤 좋아 보이는 것 같다.

또한 raspivid에서는 속성을 rtph264pay 요소에 추가하려고합니다.

raspivid -n -w 640 -h 480 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 ! multiudpsink clients=192.168.1.3:9000,192.168.1.3:9001,192.168.1.3:9002 
+0

답장을 보내 주셔서 감사합니다. 이 솔루션은 이미지의 불규칙성과 프레임 손실에 대한 메시지를 제거합니다. Unfortunatelly, 그것은 또한 나의 목적을 위해 ok가 아닌 심상 (대략 5 초)에 거대한 지연을 가져온다. 낮은 대기 시간 때문에 gstreamer에서 작업하기 시작했습니다. 이는 내가 수행 한 작업입니다. –

+0

나는 시험 할 파이를 잡았습니다. 받는쪽에 큐를 추가하고 rtph264pay에 config-interval을 넣으면 현재 잘 수행되고 양쪽 끝에서 다시 시작을 처리합니다. – mpr

+0

의견에 감사드립니다. 제안 된 수정 내용을 추가하면 실제로 성능이 향상되는 것 같습니다. 좋아! –

관련 문제