2017-12-14 18 views
0

저는 아직 gstreamer의 천재는 아니지만 덜 무식 해지기 위해 기초를 실험합니다.티에 의해 분할 된 비디오 스트림이 왜 하나의 디스플레이 창에만 표시됩니까?

gstl videotestsrc ! tee name=t ! autovideosink t. ! autovideosink 

이 팝업이 새 창을 야기하지만, 단 하나의 색상 막대 테스트 패턴을 보여줍니다 나는 별도의 팝업 창에 두 개의 테스트 패턴을 볼 것으로 예상,이 시도. 다른 하나는 덮어 쓴 바탕 화면 배경의 고정 된 스냅 샷을 보여줍니다. 왜 이런 일이 일어나고 파이프 라인이 작동하도록 수정합니까?

+0

BTW, 'gstl'은 gst-launch-1.0의 별칭입니다. – DarenW

답변

2

PLS는 다음과 같이 시도 :

GST-출시 - 1.0 videotestsrc을! 티 이름 = t! 대기열! autovideosink t. ! 대기열! autovideosink

+0

왜이 기능이 작동하는지, '대기열'이 없을 때 어떻게됩니까? – DarenW

+0

대기열이 스레드를 추가합니다. 파이프 라인이 프리 롤링 중이면 모든 싱크가 데이터를 수신 할 때까지 기다립니다. 대기열이 없으면 티의 첫 번째 출력 패드가 싱크대로 데이터를 보냅니다. 블록 및 대기를 싱크하므로 티가 두 번째 출력 패드로 데이터를 전송하지 못합니다. 쓰레드는 이것을 허용하여 두 싱크 모두 데이터를 얻고 프리 롤링에서 재생 상태로 전환 할 수 있습니다. –

+0

'queue'가 없으면 파이프 라인은 푸시 모드로 작동합니다. 티 요소가 존재하기 때문에 첫 번째 싱크 요소의 체인 기능은 소스 요소의 패드 푸시 기능을 차단하고 두 번째 싱크 요소는 프리 롤을 완료 할 수 없습니다. 참조 : https://gstreamer.freedesktop.org/documentation/design/preroll.html#preroll https://gstreamer.freedesktop.org/documentation/adliving-development/advanced/threads.html#scheduling-in -gstreamer – zyliu