GStreamer를 사용한 RTSP 스트리밍 – 실제 고객 Q&사례 (UDP 대 TCP)
이 문서에는 당사의 RTSP 스트리밍에 관한 실제 고객 지원 대화가 기록되어 있습니다. 열화상 카메라 사용 gstreamer.
우리는 그것을 공유하고 있습니다. 큐&대화 형식 유사한 문제에 직면한 다른 고객이 문제 해결 프로세스를 신속하게 따를 수 있도록.
목차
1. RTSP 스트림 주소
고객:
여보세요, 귀하의 열화상 카메라를 받았습니다, 모든 것이 잘 작동합니다, 감사합니다, 하지만 RTSP 스트림의 주소를 찾을 수 없는 것 같습니다. 무엇입니까? /stream/sub?
지원하다:
카메라 RTSP 스트림 URL은 다음과 같습니다.:
rtsp://192.168.2.254:554/live
2. RTSP 지연 문제
고객:
RTSP 스트림을 테스트한 결과 관리 패널 미리보기와 비교하여 상당한 지연 시간이 나타났습니다..
지원하다:
이는 예상된 동작입니다.. 웹 관리 미리보기는 내부 최적화 파이프라인을 사용합니다., RTSP는 네트워크 상태와 클라이언트 버퍼링에 따라 달라집니다..
3. UDP 스트리밍 요구 사항
고객:
UDP를 기대하는 플레이어에서도 RTSP 스트림이 작동하지 않습니다.. UDP 스트림을 어떻게 얻을 수 있나요??
지원하다:
혹시 어떤 플레이어 사용하시는지 알 수 있을까요?? VLC?
고객:
내 플레이어는 Android 앱에 통합된 GStreamer입니다..
4. UDP 유니캐스트와 UDP 멀티캐스트
지원하다:
GStreamer 클라이언트가 다음을 사용하여 장치에 액세스하는 경우 UDP 멀티캐스트, 이것은 현재 지원되지 않습니다.
사용하고 있는지 명확히 해야 합니다. UDP 유니캐스트 또는 UDP 멀티캐스트.
고객:
내 GStreamer 파이프라인은 다음을 사용합니다. rtspsrc 와 udp 에 설정 protocols 매개변수.
나는 사용하지 않았다 udp-mcast 값, 따라서 UDP 유니캐스트여야 합니다..
5. 플랫폼 설명
지원하다:
이 GStreamer가 Windows에서 실행되고 있습니까?, 리눅스, 또는 안드로이드?
우리 소프트웨어 엔지니어가 우리 측에서 테스트하고 싶습니다..
고객:
내 앱은 Android에서 GStreamer를 사용합니다., 하지만 rtspsrc Linux에서도 테스트 가능.
6. 알려진 Linux GStreamer 문제 (참고사례)
지원하다:
중국 기술 포럼에서 유사한 문제가 논의된 것을 발견했습니다..
해결책:
다음 플러그인 제거:
sudo apt-get remove gstreamer1.0-plugins-ugly
이 플러그인은 일부 카메라가 인식할 수 없는 RTSP 헤더를 보낼 수 있습니다., 서비스 거부 오류가 발생함.

참조:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
귀하의 정보를 제공해 주시겠습니까? rtspsrc 관로 (리눅스 선호)? 앱 버전도 테스트에 허용됩니다..
7. RTSP DESCRIBE 헤더 호환성
지원하다:
또 다른 가능한 이유는 RTSP가 설명하다 요청에 포함되지 않음:
application/sdp
장치가 서비스를 거부할 수 있습니다.
이 유효성 검사 논리는 너무 엄격할 수 있습니다., 향후 펌웨어 업데이트에서 이 조건을 완화할 계획입니다..
8. Android GStreamer 버전 확인
고객:
안드로이드에서, 나는 사용하고있다:
- gstreamer-1.0-android-universal-1.26.8
추악한 플러그인은 포함되어 있지 않습니다.. 내 Makefile에는 다음이 포함되어 있습니다.:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. 제안된 GStreamer 런타임 매개변수
지원하다:
시도해 보는 것이 좋습니다 short-header=true ...에서 rtspsrc.
고객:
UDP 헤더인가요??
지원하다:
RTSP 헤더 옵션이며 종종 호환성을 향상시킵니다..
예:
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> short-header=true
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> do-rtcp=false short-header=true
10. 내부 테스트 결과 (리눅스)
지원하다:
우리 엔지니어는 다음을 사용하여 RTSP 스트림을 테스트했습니다. gstreamer 1.0 리눅스에서, 그리고 그것은 올바르게 작동했습니다.


TCP 예:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
UDP 예 (제거하다 protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Linux와 Android GStreamer 간의 내부 논리는 동일합니다., 따라서 동작은 플랫폼 전반에 걸쳐 일관되어야 합니다..
11. 결론
이 사례는 GStreamer와 함께 RTSP를 사용할 때 몇 가지 중요한 사항을 강조합니다.:
- RTSP URL:
rtsp://<camera_ip>:554/live - UDP 유니캐스트 지원됩니다; UDP 멀티캐스트는 그렇지 않습니다.
- 문제가 있는 플러그인 피하기 (리눅스 전용)
- 노력하다
short-header=true더 나은 호환성을 위해 - Linux 테스트 결과는 일반적으로 Android에 적용 가능
비슷한 문제가 발생하면, 당신의 GStreamer 파이프라인 또는 테스트 클라이언트, 우리 엔지니어링 팀이 추가로 도움을 드릴 것입니다.

질문하기
응답해 주셔서 감사합니다. ✨