RTSP GStreamer UDP Streaming & رفع تاخیر برای دوربین های حرارتی

پخش جریانی RTSP با GStreamer - یک مشتری واقعی Q&یک مورد (UDP در مقابل TCP)

این مقاله یک مکالمه واقعی پشتیبانی مشتری در مورد جریان RTSP از ما را مستند می کند دوربین های حرارتی با استفاده از گودامر.
ما آن را در یک به اشتراک می گذاریم Q&یک قالب گفتگو بنابراین سایر مشتریانی که با مشکلات مشابه روبرو هستند می توانند به سرعت روند عیب یابی را دنبال کنند.


1. آدرس جریان RTSP

مشتری:
سلام, دوربین های حرارتی شما را دریافت کردیم, همه چیز خوب کار می کند, متشکرم, اما به نظر نمی رسد آدرس جریان RTSP را پیدا کنیم. چیست /stream/sub?

حمایت کردن:
URL جریان دوربین ما RTSP است:

rtsp://192.168.2.254:554/live

2. نگرانی تاخیر RTSP

مشتری:
ما جریان RTSP را آزمایش کردیم و متوجه تأخیر قابل توجهی در مقایسه با پیش نمایش پنل مدیریت شدیم.

حمایت کردن:
این رفتار مورد انتظار است. پیش نمایش مدیریت وب از یک خط لوله بهینه سازی داخلی استفاده می کند, در حالی که RTSP به شرایط شبکه و بافر مشتری بستگی دارد.


3. مورد نیاز جریان UDP

مشتری:
جریان RTSP همچنین روی پخش کننده من که انتظار UDP را دارد کار نمی کند. چگونه می توانم یک جریان UDP دریافت کنم?

حمایت کردن:
میتونم بدونم از چه بازیکنی استفاده میکنی? VLC?

مشتری:
پخش کننده من GStreamer است که در یک برنامه اندروید یکپارچه شده است.


4. UDP Unicast در مقابل UDP Multicast

حمایت کردن:
اگر مشتری GStreamer با استفاده از دستگاه به دستگاه دسترسی پیدا کند UDP چندپخشی, این در حال حاضر است پشتیبانی نشده.
ما باید روشن کنیم که آیا شما استفاده می کنید یا خیر UDP unicast یا UDP چندپخشی.

مشتری:
خط لوله GStreamer من استفاده می کند rtspsrc با udp تنظیم شده در protocols پارامتر.
من استفاده نکردم udp-mcast ارزش, بنابراین باید UDP unicast باشد.


5. شفاف سازی پلت فرم

حمایت کردن:
آیا این GStreamer روی ویندوز اجرا می شود؟, لینوکس, یا اندروید?
مهندس نرم افزار ما می خواهد در کنار ما آزمایش کند.

مشتری:
برنامه من از GStreamer در اندروید استفاده می کند, ولی rtspsrc در لینوکس نیز قابل آزمایش است.


6. مشکل شناخته شده لینوکس 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. تایید نسخه اندروید 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 را با استفاده از آزمایش کرد گودامر 1.0 در لینوکس, و درست کار کرد.

GStream-1 test on linux
تست GStream-1 در لینوکس
GStream-1 test on linux working well
تست 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

منطق داخلی بین لینوکس و اندروید GStreamer یکسان است, بنابراین رفتار باید در همه پلتفرم ها سازگار باشد.


11. نتیجه

این مورد چندین نکته مهم را هنگام استفاده از RTSP با GStreamer برجسته می کند:

  • URL RTSP: rtsp://<camera_ip>:554/live
  • UDP unicast پشتیبانی می شود; UDP چندپخشی نیست
  • از افزونه های مشکل ساز خودداری کنید (فقط لینوکس)
  • امتحان کنید short-header=true برای سازگاری بهتر
  • نتایج تست لینوکس به طور کلی می تواند برای اندروید اعمال شود

اگر با مشکلات مشابه مواجه شدید, لطفا خود را ارائه دهید خط لوله GStreamer یا مشتری آزمایشی, و تیم مهندسی ما بیشتر کمک خواهد کرد.

سوال بپرسید

← برگشت

از پاسخ شما سپاسگزاریم. ✨