2017-10-08 1 views
0

Windows 10을 실행하는 PC에 Raspberry Pi Zero W에서 비디오 데이터를 스트리밍하려고합니다.이 비디오를 소스로 사용했습니다 : https://www.youtube.com/watch?v=lNvYanDLHZA 그리고이 코드는 제가 사용했던 코드입니다 (내 PC의 실제 IP 주소를 사용하여 오히려 10.30.0.0보다 내가 여기 척) :Gstreamer 오류 : 파이프 라인을 만들지 못했습니다 : 구문 오류

라즈베리 파이 배쉬 스크립트 :

#!/bin/bash 
clear 
raspivid -n -t 0 -rot 270 -w 960 -h 720 -fps 30 -b 6000000 -o - | gst-launch-1.0 -e -vvvv fdsrc ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=10.30.0.0 port=5000 

Windows 배치 스크립트를

cd C:\gstreamer\1.0\x86_64\bin 
gst-launch-1.0 -e -v udpsrc port=5000 ! application/x-rtp, payload=96 ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! fpsdisplaysink sync=false text-overlay=false 

그러나이 스크립트를 실행하면 내 배치 스크립트가 충돌합니다. 나는 점점 오전 오류는 "gst-launch-1.0 -e -v udpsrc port=5000"부분이며, 그것은이다 : 나는 무엇을 할 수 있는지

ERROR: Pipeline could not be constructed: syntax error

모든 아이디어는이 문제를 해결하려면? 감사합니다

+0

우분투에서 수신 측 스크립트를 테스트했는데 내 시스템에서 정상적으로 작동합니다. 설치가 완료 되었습니까? –

+0

예, 그렇습니다. 설치 제거한 다음 컴퓨터에 두 번 다시 설치했습니다. – FlyerKitten

답변

0

수신기 파이프 라인에 약간의 변경이 필요하고 수신기에서도 작동하지 않는 한 생각합니다.

라즈베리 파이 소스로 테스트하지는 않았지만 소스 파이프 라인이 정확하다는 것을 당연시합니다.

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpjitterbuffer ! rtph264depay ! avdec_h264 ! videoconvert ! fpsdisplaysink sync=false text-overlay=false

:

파이프 라인 이런 식으로 뭔가해야한다 : 가장 큰 문제는 캡을 속성을 사용하여 udpsrc 플러그인의 소스 패드의 캡을을 넣어 꼭 필요하다는 것이다

파이프 라인이 작동하지 않는 경우 videoconvert 플러그인을 avdec_h264 뒤에 삽입하는 것도 고려해보십시오. 어떤 플러그인이 필요한지 잘 모르는 경우 항상 디코드 빈을 사용하면 매우 유용합니다.

당신은 항상이 같은 테스트 목적으로 폐쇄 루프 할 수 있습니다 : (소스에 다소 유사하다)

TX :

gst-launch-1.0 -e -v videotestsrc is-live=true ! x264enc bitrate=1000 tune=zerolatency ! h264parse ! rtph264pay pt=96 config-interval=5 ! udpsink host=10.30.0.0 port=5000 

RX :

gst-launch-1.0 -v udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! decodebin ! videoconvert ! autovideosink 
+0

RX에 대한 바닥 수정을 시도하면이 오류가 발생합니다. 오류 : 파이프 라인을 일시 중지하고 싶지 않습니다. 오류 : 요소/GstPipeline : pipeline0/GstUDPSrc : udpsrc0 : 리소스에서 설정을 가져 오거나 설정할 수 없습니다. 추가 디버그 정보 : gstudpsrc.cst (1561) : gst_udpsrc_open() :/GstPipeline : pipeline0/GstUDPSrc : udpsrc0 : 바인드 실패 : 주소 바인딩 오류 : 액세스 권한으로 금지 된 방식으로 소켓에 액세스하려고했습니다. 파이프 라인을 NULL로 설정 중 ... 파이프 라인 확보 중 ... – FlyerKitten

+0

Windows에서 포트에 연결할 수 없습니다. 이것은 그 질문과 아무 관련이 없습니다. 계속하기 전에 문제를 해결하십시오. – jgorosdev

+0

좋아. Windows에서 명령 프롬프트를 사용하는 데 경험이 거의 없습니다. 포트를 연결할 수 있도록 수정하려면 어떻게해야합니까? – FlyerKitten

0

답변을 찾았습니다. 나는 내 Windows 명령 프롬프트에 가서 입력했습니다 netstat-an | "UDP"를 찾으십시오. more

이것은 사용중인 UDP 포트 목록을 가져오고 포트 5000이 그 중 하나임을 발견했습니다. 그래서 대신 다른 포트를 사용했고 비디오 스트림이 나왔습니다 !!

관련 문제