التطبيق النهائي لبث الكاميرا مع دعم RTSP، وWebRTC، وHomeKit، وFFmpeg، وRTMP، وما إلى ذلك.
تطبيق صغير بدون تبعية أو تكوين صفري لجميع أنظمة التشغيل (Windows وmacOS وLinux وARM)
عدم التأخير للعديد من البروتوكولات المدعومة (أدنى زمن وصول ممكن للبث)
البث من RTSP، RTMP، DVRIP، HTTP (FLV/MJPEG/JPEG/TS)، كاميرات USB ومصادر أخرى
التدفق من أي مصادر، بدعم من FFmpeg
البث إلى RTSP أو WebRTC أو MSE/MP4 أو HomeKit HLS أو MJPEG
نشر أي مصدر على خدمات البث الشهيرة (YouTube، Telegram، إلخ.)
أول مشروع في العالم يدعم البث من كاميرات HomeKit
دعم H265 لـ WebRTC في المتصفح (Safari فقط، اقرأ المزيد)
تحويل الشفرة بسرعة لبرامج الترميز غير المدعومة عبر FFmpeg
تشغيل الملفات الصوتية والبث المباشر على بعض الكاميرات باستخدام مكبر الصوت
التفاوض على برامج الترميز ثنائية الاتجاه متعددة المصادر
خلط المسارات من مصادر مختلفة إلى تيار واحد
برنامج الترميز المدعوم من عميل المطابقة التلقائية
صوت ثنائي الاتجاه لبعض الكاميرات
البث من الشبكات الخاصة عبر ngrok
يمكن دمجها في أي منصة منزلية ذكية أو استخدامها كتطبيق مستقل
مستوحاة من:
سلسلة من المشاريع المتدفقة من @deepch
مكتبة webrtc go وفريق @pion بأكمله
فكرة خادم rtsp البسيط من @aler9
فكرة خط أنابيب إطار عمل GStreamer
فكرة توجيه إطار عمل MediaSoup
بروتوكول ملحقات HomeKit من @brutella
منشئ شعار المشروع @v_novoseltsev
بداية سريعة
go2rtc: ثنائي
go2rtc: عامل الميناء
go2rtc: الوظيفة الإضافية للمساعد المنزلي
go2rtc: تكامل المساعد المنزلي
go2rtc: نسخة المطورين
إعدادات
اتجاهين الصوت
المصدر: RTSP
المصدر: RTMP
المصدر: HTTP
المصدر: ONVIF
المصدر: إف إف إم بي إي جي
المصدر: جهاز FFmpeg
المصدر: إكسيك
المصدر: إيكو
المصدر: اكسبر
المصدر: هوم كيت
المصدر: فقاعة
المصدر: DVRIP
المصدر: تابو
المصدر: كاسا
المصدر: جوبرو
المصدر: ايفيديون
المصدر: حاس
المصدر: إيسابي
المصدر: عش
المصدر: روبوروك
المصدر: ويب آر تي سي
المصدر: ويب تورنت
المصادر الواردة
تيار إلى الكاميرا
نشر الدفق
الوحدة: التدفقات
الوحدة: API
الوحدة: RTSP
الوحدة: RTMP
الوحدة: WebRTC
الوحدة: هوم كيت
الوحدة النمطية: ويب تورنت
الوحدة: نجروك
الوحدة: هاس
الوحدة: MP4
الوحدة: HLS
الوحدة: MJPEG
الوحدة: السجل
حماية
مرشحات الترميز
جنون الترميز
التفاوض على برامج الترميز
المشاريع باستخدام go2rtc
تجربة الكاميرا
نصائح
التعليمات
قم بتنزيل البرنامج الثنائي أو استخدم الوظيفة الإضافية أو التكامل لـ Docker أو Home Assistant
واجهة الويب المفتوحة: http://localhost:1984/
اختياريًا:
أضف التدفقات الخاصة بك إلى ملف التكوين
إعداد الوصول الخارجي إلى webrtc
المطورين:
كتابة واجهة الويب الخاصة بك
دمج واجهة برمجة تطبيقات الويب في منصة منزلك الذكي
قم بتنزيل البرنامج الثنائي لنظام التشغيل الخاص بك من الإصدار الأحدث:
go2rtc_win64.zip
- نظام التشغيل Windows 10+ 64 بت
go2rtc_win32.zip
- نظام التشغيل Windows 7+ 32 بت
go2rtc_win_arm64.zip
- Windows ARM 64 بت
go2rtc_linux_amd64
- لينكس 64 بت
go2rtc_linux_i386
- لينكس 32 بت
go2rtc_linux_arm64
- Linux ARM 64 بت (على سبيل المثال نظام التشغيل Raspberry 64 بت)
go2rtc_linux_arm
- Linux ARM 32 بت (مثل نظام التشغيل Raspberry 32 بت)
go2rtc_linux_armv6
- Linux ARMv6 (لإصداري Raspberry 1 وZero القديمين)
go2rtc_linux_mipsel
- Linux MIPS (على سبيل المثال، Xiaomi Gateway 3، كاميرات Wyze)
go2rtc_mac_amd64.zip
- macOS 10.13+ إنتل 64 بت
go2rtc_mac_arm64.zip
- macOS ARM 64 بت
لا تنس إصلاح الحقوق chmod +x go2rtc_xxx_xxx
على Linux وMac.
تدعم حاوية Docker alexxit/go2rtc
بنيات متعددة بما في ذلك amd64
و 386
و arm64
و arm
. توفر هذه الحاوية نفس الوظيفة التي توفرها الوظيفة الإضافية Home Assistant ولكنها مصممة للعمل بشكل مستقل عن Home Assistant. يأتي مثبتًا مسبقًا مع FFmpeg وngrok وPython.
تثبيت الوظيفة الإضافية:
الإعدادات > الوظائف الإضافية > Plus > المستودعات > إضافة https://github.com/AlexxIT/hassio-addons
go2rtc > تثبيت > ابدأ
تكامل الإعداد
يمكن استخدام المكون المخصص لكاميرا WebRTC في أي تثبيت لـ Home Assistant، بما في ذلك HassWP على Windows. يمكنه تنزيل أحدث إصدار من go2rtc واستخدامه تلقائيًا. أو يمكنه الاتصال بإصدار موجود من go2rtc. تثبيت الملحق في هذه الحالة اختياري.
الإصدار الأحدث، ولكن ربما غير مستقر:
ثنائي: أحدث إصدار ليلي
عامل الإرساء: alexxit/go2rtc:master
أو alexxit/go2rtc:master-hardware
وظيفة Hass الإضافية: إصدارات أجهزة go2rtc master
أو go2rtc master hardware
بشكل افتراضي، سيقوم go2rtc بالبحث عن go2rtc.yaml
في دليل العمل الحالي
سيبدأ خادم api
على منفذ 1984 الافتراضي (TCP)
سيبدأ خادم rtsp
على المنفذ الافتراضي 8554 (TCP)
سيستخدم webrtc
المنفذ 8555 (TCP/UDP) للاتصالات
سيستخدم ffmpeg
خيارات تحويل الترميز الافتراضية
يمكن العثور على خيارات التكوين وقائمة كاملة من الإعدادات في الويكي.
الوحدات المتاحة:
تيارات
api - HTTP API (مهم لدعم WebRTC)
rtsp - خادم RTSP (مهم لدعم FFmpeg)
webrtc - خادم WebRTC
mp4 - MSE، تيار MP4 وخادم لقطة MP4
hls - خادم دفق HLS TS أو fMP4
mjpeg - خادم MJPEG
ffmpeg - تكامل FFmpeg
ngrok - تكامل ngrok (الوصول الخارجي للشبكة الخاصة)
هاس - تكامل مساعد المنزل
سجل - سجلات التكوين
يدعم go2rtc أنواعًا مختلفة من مصادر الدفق. يمكنك تكوين رابط واحد أو عدة روابط من أي نوع كمصدر دفق.
أنواع المصادر المتاحة:
rtsp - كاميرات RTSP
و RTSPS
مع دعم صوتي ثنائي الاتجاه
rtmp - تيارات RTMP
http - HTTP-FLV
، MPEG-TS
، JPEG
(لقطات)، وتدفقات MJPEG
onvif - احصل على رابط RTSP
للكاميرا ورابط اللقطة باستخدام بروتوكول ONVIF
ffmpeg - تكامل FFmpeg ( HLS
files
وغيرها الكثير)
ffmpeg:device - كاميرا USB محلية أو كاميرا ويب
exec - احصل على الوسائط من مخرجات التطبيق الخارجية
صدى - احصل على رابط الدفق من bash أو python
expr - احصل على رابط الدفق عبر لغة التعبير المضمنة
homekit - البث من كاميرا HomeKit
الفقاعة - البث من ESeeCloud/dvr163 NVR
dvrip - البث من DVR-IP NVR
تابو - كاميرات TP-Link Tapo مع دعم صوتي ثنائي الاتجاه
كاسا - كاميرات تي بي لينك كاسا
جوبرو - كاميرات جوبرو
ivideon - الكاميرات العامة من خدمة Ivideon
هاس - تكامل مساعد المنزل
ISAPI - صوت ثنائي الاتجاه لكاميرات Hikvision (ISAPI).
roborock - مكانس Roborock المزودة بالكاميرات
webrtc - مصادر WebRTC/WHEP
webtorrent - مصدر WebTorrent من go2rtc آخر
اقرأ المزيد عن المصادر الواردة
المصادر المدعومة:
كاميرات RTSP مع ONVIF Profile T (اتصال القناة الخلفية)
كاميرات DVRIP
كاميرات تي بي لينك تابو
كاميرات هيكفيجن ISAPI
نماذج Roborock تعمل بالمكنسة الكهربائية بالكاميرات
تنفيذ الصوت على الخادم
أي متصفح ككاميرا IP
يمكن استخدام الصوت ثنائي الاتجاه في المتصفح باستخدام تقنية WebRTC. سيتيح المتصفح الوصول إلى الميكروفون فقط لمواقع HTTPS (اقرأ المزيد).
يدعم go2rtc أيضًا تشغيل الملفات الصوتية والبث المباشر على هذه الكاميرات.
التدفقات: sonoff_camera: rtsp://rtsp:[email protected]/av_stream/ch0 داهوا_الكاميرا: - rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif- rtsp://admin:[email protected]/cam/realmonitor?channel=1&subtype=1 أمكريست_جرس الباب: -RTSP://username:[email protected]:554/cam/realmonitor?channel=1&subtype=0#backchannel=0 unifi_camera: rtspx://192.168.1.123:7441/fD6ouM72bWoFijxK glichy_camera: ffmpeg:rtsp://username:[email protected]/live/ch00_1
التوصيات
قد يرغب مستخدمو Amcrest Doorbell في تعطيل الصوت ثنائي الاتجاه، لأنه مع البث النشط لن يكون لديك زر اتصال يعمل. تحتاج إلى إضافة #backchannel=0
إلى نهاية رابط RTSP الخاص بك في ملف تكوين YAML
قد يرغب مستخدمو Dahua Doorbell في تغيير برنامج ترميز الصوت للقناة الخلفية
قد يرغب مستخدمو Reolink في عدم استخدام بروتوكول RTSP على الإطلاق، فبعض نماذج الكاميرا لديها تطبيق دفق سيئ جدًا وغير قابل للاستخدام
قد يرغب مستخدمو Ubiquiti UniFi في تعطيل التحقق عبر HTTPS. استخدم البادئة rtspx://
بدلاً من rtsps://
. ولا تستخدم لاحقة ?enableSrtp
يمكن لمستخدمي TP-Link Tapo تخطي تسجيل الدخول وكلمة المرور، لأن go2rtc يدعم تسجيل الدخول بدونهما
إذا كانت الكاميرا الخاصة بك تحتوي على رابطين RTSP - فيمكنك إضافة كليهما كمصادر. يكون هذا مفيدًا عندما يكون للتدفقات برامج ترميز مختلفة، على سبيل المثال صوت AAC مع البث الرئيسي وصوت PCMU/PCMA مع البث الثاني
إذا كان البث من الكاميرا به خلل، فحاول استخدام مصدر ffmpeg. لن يضيف تحميل وحدة المعالجة المركزية إذا كنت لن تستخدم تحويل الشفرة
إذا كان البث من الكاميرا لديك به خلل كبير، فحاول استخدام تحويل الترميز مع مصدر ffmpeg
خيارات أخرى
التنسيق: rtsp...#{param1}#{param2}#{param3}
إضافة مهلة مخصصة #timeout=30
(بالثواني)
تجاهل الصوت - #media=video
أو تجاهل الفيديو - #media=audio
تجاهل API الصوت ثنائي الاتجاه #backchannel=0
- مهم لبعض الكاميرات المشوشة
استخدم نقل WebSocket #transport=ws...
RTSP عبر WebSocket
التدفقات: # WebSocket مع إذن، RTSP - بدون محور-rtsp-ws: Rtsp://192.168.1.123:4567/axis-media/media.amp?overview=0&camera=1&resolution=1280x720&videoframeskipmode=empty&Axis-Orig-Sw=true#transport=ws://user:[email protected]:4567/ آر تي إس بي-فوق-websocket # WebSocket بدون إذن، RTSP - مع داهوا-rtsp-ws: rtsp://user:[email protected]/cam/realmonitor?channel=1&subtype=1&proto=Private3#transport=ws://192.168.1.123/rtspoverwebsocket
يمكنك الحصول على البث من خادم RTMP، على سبيل المثال Nginx باستخدام nginx-rtmp-module.
التدفقات: rtmp_stream: rtmp://192.168.1.123/live/camera1
دعم نوع المحتوى:
HTTP-FLV ( video/x-flv
) - مثل RTMP، ولكن عبر HTTP
HTTP-JPEG ( image/jpeg
) - رابط لقطة الكاميرا، يمكن تحويله عن طريق go2rtc إلى تدفق MJPEG
HTTP-MJPEG ( multipart/x
) - دفق MJPEG بسيط عبر HTTP
MPEG-TS ( video/mpeg
) - تنسيق البث القديم
يدعم المصدر أيضًا تدفقات HTTP وTCP مع الاكتشاف التلقائي للتنسيقات المختلفة: MJPEG و H.264/H.265 bitstream و MPEG-TS .
التدفقات: # تيار [HTTP-FLV] بتنسيق فيديو/x-flv http_flv: http://192.168.1.123:20880/api/camera/stream/780900131155/657617 # سيتم تحويل لقطات [JPEG] من كاميرا Dahua إلى تدفق MJPEG dahua_snap: http://admin:[email protected]/cgi-bin/snapshot.cgi?channel=1 # سيتم إنشاء دفق [MJPEG] بدون تعديل http_mjpeg: https://mjpeg.sanford.io/count.mjpeg # [MJPEG أو H.264/H.265 bitstream أو MPEG-TS] tcp_magic: تكب://192.168.1.123:12345 # إضافة رأس مخصص custom_header: "https://mjpeg.sanford.io/count.mjpeg#header=التفويض: الحامل XXX"
ملاحظة: يوجد خطأ في كاميرا Dahua: إذا قمت بتحديد برنامج ترميز MJPEG للبث الثاني لـ RTSP - فلن تعمل اللقطة.
الجديد في الإصدار 1.5.0
المصدر ليس مفيدًا جدًا إذا كنت تعرف بالفعل روابط RTSP واللقطة الخاصة بالكاميرا الخاصة بك. ولكن يمكن أن يكون مفيدًا إذا لم تفعل ذلك.
WebUI > إضافة دعم صفحة الويب للاكتشاف التلقائي ONVIF. يجب أن يكون الخادم الخاص بك على نفس الشبكة الفرعية مثل الكاميرا. إذا كنت تستخدم عامل الإرساء، فيجب عليك استخدام "مضيف الشبكة".
التدفقات: dahua1: onvif://admin:[email protected] reolink1: onvif://admin:[email protected]:8000 تابو1: onvif://admin:[email protected]:2020
يمكنك الحصول على أي دفق أو ملف أو جهاز عبر FFmpeg ودفعه إلى go2rtc. سيبدأ التطبيق تلقائيًا تشغيل FFmpeg بالوسائط المناسبة عندما يبدأ شخص ما في مشاهدة البث.
تم تثبيت FFmpeg مسبقًا لمستخدمي Docker و Hass Add-on
يمكن لمستخدمي Hass Add-on استهداف الملفات من مجلد /media
التنسيق ffmpeg:{input}#{param1}#{param2}#{param3}
. أمثلة:
التدفقات: # [FILE] سيتم نسخ جميع المسارات بدون برامج ترميز التحويل الملف 1: ffmpeg:/media/BigBuckBunny.mp4 # [ملف] سيتم تحويل ترميز الفيديو إلى H264، وسيتم تخطي الصوت file2: ffmpeg:/media/BigBuckBunny.mp4#video=h264 # سيتم نسخ الفيديو [ملف]، وسيتم تحويل ترميز الصوت إلى PCMU file3: ffmpeg:/media/BigBuckBunny.mp4#video=copy#audio=pcmu # سيتم نسخ الفيديو [HLS]، وسيتم تخطي الصوت hls: ffmpeg:https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_16x9/gear5/prog_index.m3u8#video=copy # سيتم تحويل فيديو [MJPEG] إلى H264 mjpeg: ffmpeg:http://185.97.122.128/cgi-bin/faststream.jpg#video=h264 # يجب تحويل فيديو [RTSP] مع التدوير، لذا حدد H264 التدوير: ffmpeg:rtsp://rtsp:[email protected]/av_stream/ch0#video=h264#rotate=90
تحتوي جميع تنسيقات الترميز على قوالب مدمجة: h264
و h265
و opus
و pcmu
و pcmu/16000
و pcmu/48000
و pcma
و pcma/16000
و pcma/48000
و aac
و aac/16000
.
ولكن يمكنك تجاوزها عبر YAML config. يمكنك أيضًا إضافة التنسيقات الخاصة بك للتكوين واستخدامها مع معلمات المصدر.
ffmpeg: bin: ffmpeg # المسار إلى ffmpeg الثنائي h264: "-codec:v libx264 -g:v 30 -الإعداد المسبق:v فائق السرعة -tune:v Zerolatency -profile:v main -level:v 4.1" mycodec: "-أي وسائط يدعمها ffmpeg..." myinput: "-flags nobuffer -flags low_delay -timeout 5000000 -i {input}" مايرو: "-ss 00:00:20"
يمكنك استخدام اسم الدفق go2rtc كمدخل ffmpeg (على سبيل المثال ffmpeg:camera1#video=h264
)
يمكنك استخدام معلمات video
audio
عدة مرات (على سبيل المثال #video=copy#audio=copy#audio=pcmu
)
يمكنك استخدام معلمة rotate
مع قيم 90
أو 180
أو 270
أو -90
، وهي مهمة مع تحويل الشفرة (على سبيل المثال #video=h264#rotate=90
)
يمكنك استخدام معلمات width
و/أو height
، المهمة في تحويل الشفرة (على سبيل المثال #video=h264#width=1280
)
يمكنك استخدام drawtext
لإضافة طابع زمني (على سبيل المثال drawtext=x=2:y=2:fontsize=12:fontcolor=white:box=1:boxcolor=black
)
سيؤدي هذا إلى زيادة كبيرة في وحدة المعالجة المركزية للخادم، حتى مع تسريع الأجهزة
يمكنك استخدام معلمة raw
لأي وسيطات FFmpeg إضافية (على سبيل المثال #raw=-vf transpose=1
)
يمكنك استخدام معلمة input
لتجاوز قالب الإدخال الافتراضي (على سبيل المثال، #input=rtsp/udp
سيغير نقل RTSP من TCP إلى UDP+TCP)
يمكنك استخدام قيمة الإدخال الأولية (على سبيل المثال #input=-timeout 5000000 -i {input}
)
يمكنك إضافة قوالب الإدخال الخاصة بك
اقرأ المزيد عن تسريع الأجهزة.
ملاحظة: يوصى بالتحقق من الأجهزة المتوفرة في صفحة إضافة WebUI.
يمكنك الحصول على الفيديو من أي كاميرا USB أو كاميرا ويب كبث RTSP أو WebRTC. هذا جزء من تكامل FFmpeg.
التحقق من الأجهزة المتاحة في واجهة الويب
يجب أن تدعم الكاميرا video_size
ومعدل framerate
!
لنظام Linux يدعم الفيديو فقط في الوقت الحالي
بالنسبة لنظام التشغيل macOS، يمكنك بث كاميرا Facetime أو سطح المكتب بالكامل!
بالنسبة لنظام التشغيل macOS، من المهم ضبط معدل الإطارات الصحيح
التنسيق: ffmpeg:device?{input-params}#{param1}#{param2}#{param3}
التدفقات: linux_usbcam: ffmpeg:device?video=0&video_size=1280x720#video=h264 windows_webcam: ffmpeg:device?video=0#video=h264 macos_facetime: ffmpeg:device?video=0&audio=1&video_size=1280x720&framerate=30#video=h264#audio=pcma
ملاحظة: يوصى بالتحقق من الأجهزة المتاحة في صفحة إضافة WebUI.
يمكن لمصدر Exec تشغيل أي تطبيق خارجي وتوقع البيانات منه. هناك نوعان من وسائل النقل مدعومة - الأنبوب ( من الإصدار 1.5.0 ) و RTSP .
إذا كنت تريد استخدام نقل RTSP - فيجب أن يحتوي الأمر على الوسيطة {output}
في أي مكان. عند الإطلاق، سيتم استبداله بالعنوان المحلي لخادم RTSP.
يقرأ الأنبوب البيانات من التطبيق stdout بتنسيقات مختلفة: MJPEG و H.264/H.265 bitstream و MPEG-TS . يمكن أيضًا للأنبوب كتابة البيانات إلى التطبيق stdin بتنسيقين: PCMA و PCM/48000 .
يمكن استخدام المصدر مع:
FFmpeg - مصدر go2rtc ffmpeg مجرد اختصار لمصدر exec
FFplay - تشغيل الصوت على الخادم الخاص بك
جي ستريمر
كاميرات راسبيري باي
أي البرامج الخاصة بك
معلمات دعم أوامر التوجيه (التنسيق: exec:{command}#{param1}#{param2}
):
killsignal
- الإشارة التي سيتم إرسالها لإيقاف العملية (نموذج رقمي)
killtimeout
- الوقت بالثواني للإنهاء القسري باستخدام sigkill
backchannel
- تمكين قناة خلفية للصوت ثنائي الاتجاه
التدفقات: تيار: exec:ffmpeg -re -i /media/BigBuckBunny.mp4 -c نسخة -rtsp_transport tcp -f rtsp {output} picam_h264: exec:libcamera-vid -t 0 --inline -o - picam_mjpeg: exec:libcamera-vid -t 0 --codec mjpeg -o - pi5cam_h264: exec:libcamera-vid -t 0 --libav-format h264 -o - الكنسي: exec:gphoto2 --capture-movie --stdout#killsignal=2#killtimeout=5 play_pcma: exec:ffplay -fflags nobuffer -f alaw -ar 8000 -i -#backchannel=1 play_pcm48k: exec:ffplay -fflags nobuffer -f s16be -ar 48000 -i -#backchannel=1
قد تحتوي بعض المصادر على رابط ديناميكي. وستحتاج إلى الحصول عليه باستخدام برنامج نصي bash أو python. يجب أن يردد البرنامج النصي رابطًا إلى المصدر. RTSP أو FFmpeg أو أي من المصادر المدعومة.
قام مستخدمو Docker و Hass Add-on بتثبيت python3
و curl
و jq
مسبقًا.
تحقق من الأمثلة في الويكي.
التدفقات: apple_hls: echo:python3 hls.py https://developer.apple.com/streaming/examples/basic-stream-osx-ios5.html
الجديد في الإصدار 1.8.2
مثل مصدر echo
، ولكنه يستخدم لغة التعبير expr المضمنة (اقرأ المزيد).
مهم:
يمكنك استخدام كاميرات HomeKit بدون أجهزة Apple (iPhone، وiPad، وما إلى ذلك)، فهو مجرد بروتوكول آخر
يمكن إقران جهاز HomeKit بنظام بيئي واحد فقط. لذلك، إذا قمت بإقرانه بجهاز iPhone (Apple Home) - فلا يمكنك إقرانه مع Home Assistant أو go2rtc. أو إذا قمت بإقرانه بـ go2rtc - فلا يمكنك إقرانه بـ iPhone
يجب أن يكون جهاز HomeKit على نفس الشبكة مع تشغيل mDNS بين الجهاز وgo2rtc
يدعم go2rtc استيراد أجهزة HomeKit المقترنة من Home Assistant. لذا يمكنك استخدام كاميرا HomeKit مع Hass وgo2rtc في وقت واحد. إذا كنت تستخدم Hass، فإنني أوصي بإقران الأجهزة به، فهو سيمنحك المزيد من الخيارات.
يمكنك إقران الجهاز مع go2rtc على صفحة HomeKit. إذا لم تتمكن من رؤية أجهزتك - أعد تحميل الصفحة. حاول أيضًا إعادة تشغيل جهاز HomeKit (إيقاف التشغيل). إذا كنت لا تزال غير قادر على رؤيته، فهذا يعني أن لديك مشكلة مع mDNS.
إذا رأيت جهازًا ولكنه لا يحتوي على زر إقران - فهو مقترن ببعض الأنظمة البيئية (Apple Home، وHome Assistant، وHomeBridge، وما إلى ذلك). تحتاج إلى حذف الجهاز من هذا النظام البيئي، وسيكون متاحًا للاقتران. إذا لم تتمكن من إلغاء إقران الجهاز، فسيتعين عليك إعادة ضبطه.
مهم:
يستخدم صوت HomeKit برنامج ترميز AAC-ELD غير قياسي للغاية مع معلمات غير قياسية للغاية وانتهاك للمواصفات
لا يمكن تشغيل الصوت في VLC
وربما أي مشغل آخر
يجب تحويل ترميز الصوت لاستخدامه مع MSE وWebRTC وما إلى ذلك.
الإعدادات الموصى بها لاستخدام كاميرا HomeKit مع WebRTC، وMSE، وMP4، وRTSP:
streams: aqara_g3: - hass:Camera-Hub-G3-AB12 - ffmpeg:aqara_g3#audio=aac#audio=opus
رابط RTSP مع الصوت "العادي" لأي مشغل: rtsp://192.168.1.123:8554/aqara_g3?video&audio=aac
هذا المصدر قيد التطوير النشط! تم اختباره فقط مع Aqara Camera Hub G3 (إصداري الاتحاد الأوروبي والصين).
الجديد في الإصدار 1.6.1
أسماء أخرى: ESeeCloud، dvr163.
يمكنك تخطي username
password
port
ch
stream
إذا كانت افتراضية
إعداد تيارات منفصلة لقنوات وتدفقات مختلفة
التدفقات: الكاميرا 1: bubble://username:[email protected]:34567/bubble/live?ch=0&stream=0
الجديد في الإصدار 1.2.0
أسماء أخرى: DVR-IP، NetSurveillance، بروتوكول صوفيا (ملحق NETsurveillance ActiveX XMeye SDK).
يمكنك تخطي username
password
port
channel
والنوع subtype
إذا كانت افتراضية
إعداد تيارات منفصلة لقنوات مختلفة
استخدم subtype=0
للتيار الرئيسي، والنوع subtype=1
لتيار Extra1
يتم دعم بروتوكول TCP فقط
التدفقات: فقط_الدفق: dvrip://username:[email protected]:34567?channel=0&subtype=0 فقط_tts: dvrip://username:[email protected]:34567?backchannel=1 two_way_audio: - dvrip://username:[email protected]:34567?channel=0&subtype=0- dvrip://username:[email protected]:34567?backchannel=1
الجديد في الإصدار 1.2.0
بروتوكول الكاميرا الخاص بـ TP-Link Tapo مع دعم صوتي ثنائي الاتجاه .
جودة الدفق هي نفس بروتوكول RTSP
استخدم كلمة المرور السحابية ، هذه ليست كلمة مرور RTSP! لا تحتاج إلى إضافة معلومات تسجيل الدخول!
يمكنك أيضًا استخدام تجزئة UPPERCASE MD5 من كلمة مرور السحابة الخاصة بك باستخدام اسم مستخدم admin
تتطلب بعض البرامج الثابتة الجديدة للكاميرا SHA256 بدلاً من MD5
التدفقات: # كلمة مرور سحابية بدون اسم مستخدم الكاميرا 1: اضغط://[email protected] # اسم مستخدم المشرف وتجزئة كلمة المرور السحابية بأحرف كبيرة MD5 الكاميرا 2: تابو: // المشرف: [email protected] # اسم مستخدم المشرف وتجزئة كلمة المرور السحابية ذات الأحرف الكبيرة SHA256 الكاميرا 3: تابو: // المشرف: [email protected]
صدى -ن "كلمة المرور السحابية" | MD5 | awk '{print toupper($0)}'echo -n "كلمة مرور السحابة" | شسوم -أ 256 | أوك '{طباعة ممتاز($0)}'
الجديد في الإصدار 1.7.0
مزيد من المعلومات حول بروتوكول TP-Link Kasa غير القياسي.
username
- البريد الإلكتروني urlsafe، [email protected]
-> alex%40gmail.com
password
- base64password، secret1
-> c2VjcmV0MQ==
التدفقات: kc401: kasa://username:[email protected]:19443/https/stream/mixed
تم الاختبار: KD110، KC200، KC401، KC420WS، EC71.
الجديد في الإصدار 1.8.3
دعم البث من كاميرات GoPro، المتصلة عبر USB أو Wi-Fi إلى Linux وMac وWindows. اقرأ المزيد.
دعم الكاميرات العامة من خدمة Ivideon.
التدفقات: quailcam: ivideon:100-tu5dkUPct39cTp9oNEN2B6/0
دعم استيراد روابط الكاميرا من ملفات تكوين Home Assistant:
كاميرا عامة، الإعداد عبر واجهة المستخدم الرسومية
كاميرا هوم كيت
ONVIF
مكانس Roborock مع الكاميرا
hass: config: "/config" # تخطي هذا الإعداد إذا كان لديك Hass Add-on userstreams: generic_camera: hass:Camera1 # الإعدادات > التكامل > اسم التكامل aqara_g3: hass:Camera-Hub-G3-AB12
كاميرات WebRTC ( من الإصدار 1.6.0 )
يتم دعم أي كاميرات بتنسيق WebRTC. لكن في الوقت الحالي، يدعم Home Assistant فقط بعض كاميرات Nest بهذا التنسيق.
مهم. تسمح لك واجهة Nest API بالحصول على رابط للبث لمدة 5 دقائق فقط. لا تستخدم هذا مع الفرقاطة! إذا انتهت صلاحية البث، فسوف تستهلك الفرقاطة كل ذاكرة الوصول العشوائي المتوفرة على جهازك خلال ثوانٍ. يوصى باستخدام مصدر Nest - فهو يدعم تمديد الدفق.
التدفقات: # رابط إلى Home Assistant الخاضع للإشراف hass-webrtc1: hass://supervisor?entity_id=camera.nest_doorbell # رابط إلى Hass خارجي باستخدام رموز الوصول طويلة الأمد hass-webrtc2: hass://192.168.1.123:8123?entity_id=camera.nest_doorbell&token=eyXYZ...
كاميرات آر تي إس بي
افتراضيًا، لا تسمح لك واجهة Home Assistant API بالحصول على رابط RTSP ديناميكي لتدفق الكاميرا. لذلك يمكن أيضًا استيراد المزيد من الكاميرات، مثل Tuya، وربما كاميرات أخرى باستخدام هذه الطريقة.
الجديد في الإصدار 1.3.0
يدعم هذا النوع من المصدر صوت القناة الخلفية فقط لبروتوكول Hikvision ISAPI. لذلك يجب استخدامه كمصدر ثانٍ بالإضافة إلى بروتوكول RTSP.
التدفقات: هيكفيجن 1: -RTSP://admin:[email protected]:554/Streaming/Channels/101- isapi://admin:[email protected]:80/
الجديد في الإصدار 1.6.0
حاليًا يتم دعم كاميرات WebRTC فقط.
ولتبسيط الأمر، يوصى بتوصيل كاميرا Nest/WebRTC بالمساعد المنزلي. ولكن إذا تمكنت بطريقة ما من الحصول على المعلمات أدناه - فسيعمل مصدر Nest/WebRTC بدون Hass.
التدفقات: Nest-Doorbell: Nest:?client_id=***&client_secret=***&refresh_token=***&project_id=***&device_id=***
الجديد في الإصدار 1.3.0
يدعم هذا النوع المصدر مكانس Roborock المزودة بالكاميرات. نماذج العمل المعروفة:
Roborock S6 MaxV - فيديو فقط (المكنسة الكهربائية لا تحتوي على ميكروفون)
Roborock S7 MaxV - فيديو وصوت ثنائي الاتجاه
Roborock Qrevo MaxV - فيديو وصوت ثنائي الاتجاه
يقوم دعم المصدر بتحميل بيانات اعتماد Roborock من التكامل المخصص لـ Home Assistant أو التكامل الأساسي. بخلاف ذلك، ستحتاج إلى تسجيل الدخول إلى حساب Roborock الخاص بك (حساب MiHome غير مدعوم). انتقل إلى: go2rtc WebUI > إضافة صفحة ويب. انسخ roborock://...
مصدر المكنسة الكهربائية الخاصة بك والصقه في go2rtc.yaml
config.
إذا كان لديك دبوس رسومي للمكنسة الكهربائية الخاصة بك - قم بإضافته كدبوس رقمي (الخطوط: 123، 456، 789) إلى نهاية رابط roborock.
الجديد في الإصدار 1.3.0
يدعم هذا النوع المصدر أربعة تنسيقات اتصال.
سوط
WebRTC/WHEP - تم استبداله بمعيار WebRTC/WISH لعارضي الفيديو/الصوت WebRTC. ولكن قد يكون مدعومًا بالفعل في بعض برامج الجهات الخارجية. وهو مدعوم في go2rtc.
go2rtc
هذا التنسيق مدعوم فقط في go2rtc. على عكس WHEP، فهو يدعم اتصال WebRTC غير المتزامن والصوت ثنائي الاتجاه.
أونيبك ( من الإصدار 1.7.0 )
دعم الاتصال بكاميرات OpenIPC.
ويز ( من الإصدار 1.6.1 )
يدعم الاتصال بكاميرات Wyze باستخدام بروتوكول WebRTC. يمكنك استخدام مشروع docker-wyze-bridge للحصول على بيانات اعتماد الاتصال.
الحركية ( من الإصدار 1.6.1 )
يدعم Amazon Kinesis Video Streams، باستخدام بروتوكول WebRTC. تحتاج إلى تحديد عنوان URL لـ WebSocket للإشارة مع جميع بيانات الاعتماد في معلمات الاستعلام وقائمة client_id
و ice_servers
بتنسيق JSON.
التدفقات: webrtc-whep: webrtc:http://192.168.1.123:1984/api/webrtc?src=camera1 webrtc-go2rtc: webrtc:ws://192.168.1.123:1984/api/ws?src=camera1 webrtc-openipc: webrtc:ws://192.168.1.123/webrtc_ws#format=openipc#ice_servers=[{"urls": "stun:stun.kinesisvideo.eu-north-1.amazonaws.com:443"}] webrtc-wyze: webrtc:http://192.168.1.123:5000/signaling/camera1?kvs#format=wyze webrtc-kinesis: webrtc:wss://...amazonaws.com/?...#format=kinesis#client_id=...#ice_servers=[{...},{...}]
ملاحظة: بالنسبة لمصادر kinesis
، يمكنك استخدام الصدى للحصول على معلمات الاتصال باستخدام bash
/ python
أو أي لغة نصية أخرى.
الجديد في الإصدار 1.3.0
يمكن لهذا المصدر الحصول على دفق من go2rtc آخر عبر بروتوكول WebTorrent.
التدفقات: webtorrent1: webtorrent:?share=huofssuxaty00izc&pwd=k3l2j9djeg8v8r7e
بشكل افتراضي، يقوم go2rtc بإنشاء اتصال بالمصدر عندما يطلبه أي عميل. يقوم Go2rtc بقطع الاتصال بالمصدر عندما لا يكون لديه أي عملاء متبقيين.
يمكن لـ Go2rtc أيضًا قبول المصادر الواردة بتنسيقات RTSP وRTMP وHTTP و WebRTC/WHIP
لن يقوم Go2rtc بإيقاف مثل هذا المصدر إذا لم يكن لديه عملاء
يمكنك دفع البيانات فقط إلى الدفق الحالي (إنشاء دفق بمصدر فارغ في التكوين)
يمكنك دفع مصادر واردة متعددة إلى نفس الدفق
يمكنك دفع البيانات إلى دفق غير فارغ، بحيث تحتوي على برامج ترميز إضافية بداخلها
أمثلة
RTSP مع أي برنامج ترميز
ffmpeg -re -i BigBuckBunny.mp4 -c نسخة -rtsp_transport tcp -f rtsp rtsp://localhost:8554/camera1
HTTP-MJPEG مع برنامج الترميز MJPEG
ffmpeg -re -i BigBuckBunny.mp4 -c mjpeg -f mpjpeg http://localhost:1984/api/stream.mjpeg?dst=camera1
HTTP-FLV مع برامج الترميز H264 وAAC
ffmpeg -re -i BigBuckBunny.mp4 -c نسخة -f flv http://localhost:1984/api/stream.flv?dst=camera1
MPEG-TS مع برنامج الترميز H264
ffmpeg -re -i BigBuckBunny.mp4 -c نسخة -f mpegts http://localhost:1984/api/stream.ts?dst=camera1
الجديد في الإصدار 1.3.0
يمكنك تحويل متصفح أي جهاز كمبيوتر أو هاتف محمول إلى كاميرا IP مع دعم الفيديو والصوت ثنائي الاتجاه. أو حتى بث شاشة جهاز الكمبيوتر الخاص بك:
قم بإنشاء دفق فارغ في go2rtc.yaml
انتقل إلى go2rtc WebUI
افتح صفحة links
للبث الخاص بك
حدد خيار camera+microphone
أو خيار display+speaker
افتح صفحة webrtc
المحلية ( يجب أن يعمل go2rtc عبر HTTPS! ) أو share link
عبر تقنية WebTorrent (يعمل عبر HTTPS افتراضيًا)
الجديد في الإصدار 1.3.0
يمكنك استخدام OBS Studio أو أي برنامج بث آخر يدعم بروتوكول WHIP. ولم تتم الموافقة على هذا المعيار بعد. ولكن يمكنك تنزيل إصدار OBS Studio dev:
الإعدادات > البث > الخدمة: WHIP > http://192.168.1.123:1984/api/webrtc?dst=camera1
الجديد في الإصدار 1.3.0
يدعم go2rtc تشغيل الملفات الصوتية (مثل الموسيقى أو TTS) والبث المباشر (مثل الراديو) على الكاميرات مع دعم صوتي ثنائي الاتجاه (كاميرات RTSP/ONVIF، وTP-Link Tapo، وHikvision ISAPI، ومكانس Roborock، وأي متصفح).
مثال واجهة برمجة التطبيقات:
POST http://localhost:1984/api/streams?dst=camera1&src=ffmpeg:http://example.com/song.mp3#audio=pcma#input=file
يمكنك دفق: الملفات المحلية أو ملفات الويب أو البث المباشر أو أي تنسيق يدعمه FFmpeg
يجب عليك استخدام مصدر ffmpeg لتحويل الصوت إلى برنامج الترميز الذي تدعمه الكاميرا الخاصة بك
يمكنك التحقق من برامج ترميز الكاميرا على صفحة معلومات go2rtc WebUI عندما يكون البث نشطًا
تدعم بعض الكاميرات برنامج الترميز PCMA/8000
منخفض الجودة فقط (مثل Tapo)
يوصى باختيار تنسيقات ذات جودة أعلى إذا كانت الكاميرا الخاصة بك تدعمها (على سبيل المثال PCMA/48000
لبعض كاميرات Dahua)
إذا قمت بتشغيل ملفات عبر رابط http، فستحتاج إلى إضافة معلمات #input=file
لتحويل الترميز، لذلك سيتم تحويل ترميز الملف وتشغيله في الوقت الفعلي
إذا كنت تقوم بتشغيل بث مباشر، فيجب عليك تخطي المعلمة #input
، لأنها موجودة بالفعل في الوقت الفعلي
يمكنك إيقاف التشغيل النشط عن طريق استدعاء واجهة برمجة التطبيقات باستخدام المعلمة src
الفارغة
سترى منتجًا نشطًا واحدًا ومستهلكًا نشطًا واحدًا في صفحة معلومات go2rtc WebUI أثناء البث
الجديد في الإصدار 1.8.0
يمكنك نشر أي بث على خدمات البث (YouTube وTelegram وما إلى ذلك) عبر RTMP/RTMPS. مهم:
برامج الترميز المدعومة: H264 للفيديو وAAC للصوت
يلزم وجود صوت AAC لتشغيل YouTube، ولن تعمل مقاطع الفيديو التي لا تحتوي على صوت
لا تحتاج إلى تمكين الاستماع إلى وحدة RTMP لهذه المهمة
يمكنك استخدام API:
POST http://localhost:1984/api/streams?src=camera1&dst=rtmps://...
أو ملف التكوين:
النشر: # نشر البث "video_audio_transcode" إلى Telegram video_audio_transcode: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx # نشر البث "audio_transcode" على Telegram وYouTube تحويل الصوت: - rtmps://xxx-x.rtmp.t.me/s/xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxx- rtmp://xxx.rtmp.youtube.com/live2/xxxx-xxxx-xxxx-xxxx-xxxxxxstreams: video_audio_transcode: - ffmpeg:rtsp://user:[email protected]/stream1#video=h264#hardware#audio=aac تحويل الصوت: - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=aac
تطبيق Telegram لسطح المكتب > أي قناة أو مجموعة عامة أو خاصة (تشرف عليها) > البث المباشر > البدء بـ... > بدء البث.
YouTube > إنشاء > بث مباشر > وقت استجابة البث: زمن استجابة منخفض للغاية > نسخ: عنوان URL للبث + مفتاح البث.
تعد HTTP API الجزء الرئيسي للتفاعل مع التطبيق. العنوان الافتراضي: http://localhost:1984/
.
مهم! يقوم go2rtc بتمرير الطلبات من المضيف المحلي ومن مقبس Unix دون ترخيص HTTP، حتى لو قمت بتكوينه! تقع على عاتقك مسؤولية إعداد وصول خارجي آمن إلى واجهة برمجة التطبيقات (API). إذا لم يتم تكوينه بشكل صحيح، فيمكن للمهاجم الوصول إلى الكاميرات الخاصة بك وحتى الخادم الخاص بك.
وصف واجهة برمجة التطبيقات.
تكوين الوحدة النمطية
يمكنك تعطيل HTTP API من خلال listen: ""
واستخدام، على سبيل المثال، بروتوكول العميل/الخادم RTSP فقط
يمكنك تمكين HTTP API فقط على المضيف المحلي من خلال إعداد listen: "127.0.0.1:1984"
يمكنك تغيير API base_path
واستضافة go2rtc على عنوان URL الفرعي لخادم الويب الرئيسي للتطبيق
جميع الملفات من static_dir
المستضافة على مسار الجذر: /
يمكنك استخدام محتوى شهادة/مفتاح TLS الخام أو المسار إلى الملفات
واجهة برمجة التطبيقات: الاستماع: ":1984" # الافتراضي ":1984"، منفذ HTTP API ("" - معطل) اسم المستخدم: "admin" # default ""، المصادقة الأساسية لـ WebUI كلمة المرور: "pass" # default ""، المصادقة الأساسية لـ WebUI base_path: "/rtc" # default ""، بادئة واجهة برمجة التطبيقات للخدمة على عنوان URL الفرعي (/api => /rtc/api) static_dir: "www" # default ""، مجلد للملفات الثابتة (واجهة ويب مخصصة) الأصل: "*" # الافتراضي ""، السماح بطلبات CORS (* فقط مدعومة) tls_listen: ":443" # default ""، تمكين خادم HTTPS tls_cert: | # default ""، شهادة سلسلة كاملة مشفرة بـ PEM لـ HTTPS -----شهادة البدء----- ... -----شهادة النهاية----- tls_key: | # الافتراضي ""، المفتاح الخاص المشفر بـ PEM لـ HTTPS -----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- unix_listen: "/tmp/go2rtc.sock " # الافتراضي ""، مستمع مقبس يونكس لواجهة برمجة التطبيقات
ملاحظة:
يتم تشغيل MJPEG عبر WebSocket بشكل أفضل من MJPEG الأصلي بسبب خطأ Chrome
تم إنشاء MP4 عبر WebSocket فقط لنظام Apple iOS لأنه لا يدعم MSE وMP4 الأصلي
يمكنك الحصول على أي دفق كدفق RTSP: rtsp://192.168.1.123:8554/{stream_name}
يمكنك تمكين الحماية بكلمة مرور خارجية لتدفقات RTSP الخاصة بك. يتم دائمًا تعطيل حماية كلمة المرور لمكالمات المضيف المحلي (على سبيل المثال FFmpeg أو Hass على نفس الخادم).
rtsp: استمع: ":8554" # منفذ TCP لخادم RTSP، الافتراضي - 8554 اسم المستخدم: "admin" # اختياري، افتراضي - معطل كلمة المرور: "تمرير" # اختياري، افتراضي - معطل default_query: "الفيديو والصوت" <sp