저는 UDP를 통해 카메라 비디오를 스트리밍하기 위해 'Gstreamer 플러그인'을 사용하는 Gazebo Sim에서 작업하고 있습니다. 시뮬레이션은 Ubuntu 18.04에서 시작됩니다.
이 강사의 백엔드를 이해하기위한 몇 가지 리소스가 있습니다. Gazebo 시뮬레이션 PX4 가이드
그리고 그들은 파이프 라인을 만드는 방법을 언급합니다.
그러면 Gazebo의 비디오는 실제 카메라에서와 마찬가지로 QGroundControl에 표시됩니다.
Gstreamer Pipeline을 사용하여 비디오를 볼 수도 있습니다. 다음 터미널 명령을 입력하기 만하면됩니다.
gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \
! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink fps-update-interval=1000 sync=false
그리고 그것은 터미널에서 잘 작동합니다. 나는 다음 질문을 읽었습니다.
python opencv와 함께 gstreamer를 사용하여 라이브 스트림을 캡처합니까?
Python의 opencv에서 Gstreamer 파이프 라인에 작성
그래서 다음 줄을 사용하여이 파이프 라인을 opencv에 구현하려고했습니다.
video = cv2.VideoCapture('udpsrc port=5600 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink fps-update-interval=1000 sync=false', cv2.CAP_GSTREAMER)
#video.set(cv2.CAP_PROP_BUFFERSIZE,3)
# Exit if video not opened.
if not video.isOpened():
print("Could not open video")
sys.exit()
# Read first frame.
ok, frame = video.read()
if not ok:
print('Cannot read video file')
sys.exit()
그러나 그것은 오류를 제공합니다.
비디오를 열 수 없습니다
그리고 나는 opencv 에서이 파이프 라인의 다른 변형을 시도했지만 아무도 나를 도왔습니다.
오류없이 작동하는 다음 코드 :
# Read video
video = cv2.VideoCapture("udpsrc port=5600 ! application/x-rtp,payload=96,encoding-name=H264 ! rtpjitterbuffer mode=1 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! appsink", cv2.CAP_GSTREAMER);
디코딩 옵션이 사실이 아니라고 생각합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다