RTSP GStreamer UDP 스트리밍 & 열화상 카메라의 지연 시간 수정

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 파이프라인은 다음을 사용합니다. rtspsrcudp 에 설정 protocols 매개변수.
나는 사용하지 않았다 udp-mcast 값, 따라서 UDP 유니캐스트여야 합니다..


5. 플랫폼 설명

지원하다:
이 GStreamer가 Windows에서 실행되고 있습니까?, 리눅스, 또는 안드로이드?
우리 소프트웨어 엔지니어가 우리 측에서 테스트하고 싶습니다..

고객:
내 앱은 Android에서 GStreamer를 사용합니다., 하지만 rtspsrc Linux에서도 테스트 가능.


6. 알려진 Linux GStreamer 문제 (참고사례)

지원하다:
중국 기술 포럼에서 유사한 문제가 논의된 것을 발견했습니다..

해결책:
다음 플러그인 제거:

sudo apt-get remove gstreamer1.0-plugins-ugly

이 플러그인은 일부 카메라가 인식할 수 없는 RTSP 헤더를 보낼 수 있습니다., 서비스 거부 오류가 발생함.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

참조:
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 리눅스에서, 그리고 그것은 올바르게 작동했습니다.

GStream-1 test on linux
Linux에서의 GStream-1 테스트
GStream-1 test on linux working well
Linux에서 GStream-1 테스트가 잘 작동함

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 파이프라인 또는 테스트 클라이언트, 우리 엔지니어링 팀이 추가로 도움을 드릴 것입니다.

질문하기

← 뒤로

응답해 주셔서 감사합니다. ✨