هل فكرت يومًا في مشاهدة البث المباشر لكاميرات المراقبة أو أجهزة إنترنت الأشياء عبر متصفح الويب؟ يبدو الأمر بسيطًا، لكن عندما تحاول فعليًا القيام بذلك يصبح الأمر معقدًا جدًا.
ما هي المشكلة؟
كاميرات IP تبث باستخدام بروتوكول RTSP (بروتوكول البث المباشر)، لكن المتصفحات لا تدعم RTSP. منذ عقد 2010 أزالت المتصفحات دعم RTSP لأسباب أمنية. بمعنى آخر، الكاميرا والمتصفح يتحدثان لغتين مختلفتين.
هناك أداتان رائعتان لحل هذه المشكلة:
FFmpeg — ملك معالجة الفيديو. أداة متعددة الاستخدامات تُستخدم حتى في VLC وأنظمة ترميز Netflix.
MediaMTX — خادم بث خفيف الوزن. يقوم بتحويل RTSP إلى WebRTC وغيرها.
افتح http://localhost:8889/ في المتصفح، وسيتم تحويل RTSP تلقائيًا إلى WebRTC ليظهر البث في المتصفح. الأمر بهذه البساطة.
تدفق البيانات
الكاميرا → إطارات حية
FFmpeg → ترميز H.264 → بث RTSP
MediaMTX → استقبال RTSP
المتصفح → طلب WebRTC
MediaMTX → تحويل تلقائي → بث WebRTC
المتصفح → تشغيل مباشر
التحويل يتم بدون إعادة ترميز، لذا فهو فعال جدًا. حتى أنظمة Netflix الكبرى تعتمد نفس المبدأ.
ما الخطوة التالية؟
الإعداد الحالي على مستوى العرض فقط. هناك أشياء ناقصة للإنتاج الفعلي:
لا يوجد توثيق
فقط localhost
لا يدعم كاميرات IP الحقيقية
لا يوجد معالجة للأخطاء
في الجزء 2، سنضيف الأمان، وندعم الاتصال بكاميرات IP حقيقية، ونجهز النظام للبيئة الإنتاجية.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
اصنع بنفسك خط أنابيب لبث الفيديو المباشر: حديث عن FFmpeg وMediaMTX
هل فكرت يومًا في مشاهدة البث المباشر لكاميرات المراقبة أو أجهزة إنترنت الأشياء عبر متصفح الويب؟ يبدو الأمر بسيطًا، لكن عندما تحاول فعليًا القيام بذلك يصبح الأمر معقدًا جدًا.
ما هي المشكلة؟
كاميرات IP تبث باستخدام بروتوكول RTSP (بروتوكول البث المباشر)، لكن المتصفحات لا تدعم RTSP. منذ عقد 2010 أزالت المتصفحات دعم RTSP لأسباب أمنية. بمعنى آخر، الكاميرا والمتصفح يتحدثان لغتين مختلفتين.
هناك أداتان رائعتان لحل هذه المشكلة:
FFmpeg — ملك معالجة الفيديو. أداة متعددة الاستخدامات تُستخدم حتى في VLC وأنظمة ترميز Netflix.
MediaMTX — خادم بث خفيف الوزن. يقوم بتحويل RTSP إلى WebRTC وغيرها.
الخطوات الثلاث للعمل
1. بث ملف فيديو
أنشئ ملف إعدادات MediaMTX (mediamtx.yml): yaml paths: test_video: source: publisher
بث الملف عبر RTSP: bash ffmpeg -re -i your_video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video
يمكنك التحقق من البث عبر VLC.
2. بث كاميرا الويب في الوقت الحقيقي
أضف في إعدادات MediaMTX: yaml paths: webcam: source: publisher
Windows: bash ffmpeg -f dshow -rtbufsize 100M -i video=“Integrated Webcam” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam
Mac: bash ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i “0” -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam
Linux: bash ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam
3. مشاهدة البث في المتصفح (سحر WebRTC)
هنا تبدأ المتعة الحقيقية. قم بتفعيل دعم WebRTC في MediaMTX:
yaml webrtc: yes webrtcAddress: :8889 webrtcEncryption: no webrtcAllowOrigin: ‘*’ webrtcLocalUDPAddress: :8189 webrtcIPsFromInterfaces: yes
paths: test_video: source: publisher webcam: source: publisher
افتح http://localhost:8889/ في المتصفح، وسيتم تحويل RTSP تلقائيًا إلى WebRTC ليظهر البث في المتصفح. الأمر بهذه البساطة.
تدفق البيانات
التحويل يتم بدون إعادة ترميز، لذا فهو فعال جدًا. حتى أنظمة Netflix الكبرى تعتمد نفس المبدأ.
ما الخطوة التالية؟
الإعداد الحالي على مستوى العرض فقط. هناك أشياء ناقصة للإنتاج الفعلي:
في الجزء 2، سنضيف الأمان، وندعم الاتصال بكاميرات IP حقيقية، ونجهز النظام للبيئة الإنتاجية.