بناء بث فيديو مباشر في الوقت الحقيقي: من الصفر إلى العرض على المتصفح

المشكلة التي لا يتحدث عنها أحد

ربما لاحظت أن بث كاميرات المراقبة، وكاميرات الويب المباشرة، وتدفقات الفيديو من أجهزة إنترنت الأشياء لا "تعمل تلقائيًا" على الويب. هناك سبب لهذا الإحباط.

المشكلة الأساسية هي: معظم الكاميرات ومعدات الفيديو الاحترافية تبث باستخدام RTSP (بروتوكول البث المباشر)، لكن متصفحات الويب لا تدعمه إطلاقًا. أصبح هذا قرارًا أمنيًا تقريبًا بين 2010 و2015 عندما ألغت المتصفحات دعم RTSP. فجأة، أصبح عرض بث الكاميرا المباشر على صفحة ويب كابوسًا هندسيًا صغيرًا.

الحل؟ أداتان تعملان معًا: FFmpeg (أداة الفيديو الأسطورية متعددة الاستخدامات) و MediaMTX (بوابة البث الخفيفة). معًا، يقومان بالترجمة بين ما تتحدث به الكاميرات (RTSP) وما تفهمه المتصفحات (WebRTC). نتفليكس تستخدم خطوط عمل مماثلة. وعلى الأرجح، نظام الأمن المحلي لديك كذلك.

ماذا تفعل كل أداة بالضبط

FFmpeg: وحش معالجة الفيديو

FFmpeg هي أقوى أداة فيديو ربما لم تقم بتهيئتها من قبل. تتعامل مع الأمور المملة:

  • التقاط الفيديو من كاميرات الويب أو الملفات
  • إعادة ترميزه إلى صيغ مناسبة للمتصفح (عادةً H.264)
  • بثه إلى الخوادم باستخدام RTSP أو RTMP
  • تنفيذ كل هذا في الوقت الحقيقي دون توقف

سير العمل الأساسي: التقاط → ترميز → إرسال.

MediaMTX: مترجم البروتوكولات

FFmpeg لا يمكنه التعامل مع عدة مشاهدين في نفس الوقت. هذا ما يفعله MediaMTX. هو وسيط بروتوكولات في الأساس:

  • يستقبل تدفقات RTSP أو RTMP أو WebRTC أو HLS
  • يعيد تغليفها بصيغ مختلفة لعملاء مختلفين
  • والأهم: يحول RTSP إلى WebRTC حتى تتمكن المتصفحات من عرضه
  • ينفذ كل هذا بملف ثنائي واحد وملف إعدادات فقط

الإعداد (الجزء العملي)

تثبيت FFmpeg

لينكس/أوبونتو:

sudo apt-get update sudo apt-get install ffmpeg

ماك:

brew install ffmpeg

ويندوز:

  • حمّل من ffmpeg.org (استخدم نسخة gyan.dev)
  • فك الضغط إلى C:\ffmpeg
  • أضف C:\ffmpeg\bin إلى متغير PATH للنظام
  • تحقق: ffmpeg -version في سطر الأوامر

تثبيت MediaMTX

لينكس/ماك:

wget https://github.com/bluenviron/mediamtx/releases/download/v1.15.0/mediamtx_v1.15.0_linux_amd64.tar.gz tar -xzf mediamtx_v1.15.0_linux_amd64.tar.gz chmod +x mediamtx sudo mv mediamtx /usr/local/bin/ mediamtx

ويندوز:

  • قم بتنزيل ملف .zip من إصدارات GitHub
  • فك الضغط وشغل mediamtx.exe
  • (قد يقوم Windows Defender بتحذيرك—عطل مؤقتًا إذا لزم الأمر)

المشاريع الثلاثة

المشروع 1: بث ملف فيديو

أنشئ mediamtx.yml:

paths: test_video: source: publisher

شغّله: mediamtx mediamtx.yml

ثم قم ببث ملف فيديو إليه:

ffmpeg -re -i your_video.mp4 -c:v libx264 -preset fast -c:a aac -f rtsp rtsp://localhost:8554/test_video

الشرح:

  • -re = القراءة بمعدل الإطارات الأصلي (أساسي ليشعر بالبث المباشر)
  • -c:v libx264 = استخدم ترميز H.264 (متوافق على نطاق واسع)
  • -preset fast = توازن بين السرعة وضغط البيانات
  • rtsp://localhost:8554/test_video = عنوان الوجهة

افتح VLC، اختر Media → Open Network Stream، الصق rtsp://localhost:8554/test_video. يجب أن يظهر لك الفيديو. هذا هو MediaMTX يعمل.

المشروع 2: بث كاميرا الويب مباشرة

حدّث mediamtx.yml لإضافة مسار جديد:

paths: test_video: source: publisher webcam: source: publisher

ويندوز (باستخدام DirectShow):

ffmpeg -f dshow -rtbufsize 100M -i video="Integrated Webcam" -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

ماك:

ffmpeg -f avfoundation -framerate 30 -video_size 1280x720 -i "0" -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://localhost:8554/webcam

لينكس:

ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -tune zerolatency -c:a aac -f rtsp rtsp://localhost:8554/webcam

المعلمات الأساسية:

  • -preset ultrafast = أولوية للسرعة (مهم للبث المباشر)
  • -tune zerolatency = تحسين للزمن الحقيقي (أقل زمن انتظار ممكن)
  • /webcam = المسار الذي عرفناه في الإعدادات

المشروع 3: اللحظة السحرية—WebRTC في متصفحك

هنا يبدأ الحماس. حدّث mediamtx.yml:

webrtc: yes webrtcAddress: :8889 webrtcEncryption: no webrtcAllowOrigin: '*' webrtcLocalUDPAddress: :8189 webrtcIPsFromInterfaces: yes

paths: test_video: source: publisher webcam: source: publisher

أعد تشغيل MediaMTX. الآن افتح متصفحك على http://localhost:8889/webrtc/webcam

سيتم تحميل بث كاميرا الويب مباشرة في المتصفح. بدون إضافة. بدون RTSP. فقط فيديوك المباشر يعرض في الزمن الحقيقي.

ماذا حدث فعليًا

  1. كاميرا الويب تولد إطارات خام
  2. FFmpeg يلتقطها، يرمزها بـ H.264، ويبثها عبر RTSP إلى MediaMTX
  3. MediaMTX يستقبل البث RTSP ويحتفظ به
  4. المتصفح يطلب بث WebRTC من مسار /webcam
  5. MediaMTX يحول RTSP → WebRTC (بدون إعادة ترميز، فقط إعادة تغليف)
  6. المتصفح يستقبل حزم WebRTC ويعرضها

الجمال هنا: MediaMTX لا يعيد التشفير. فقط يعيد تغليف البث H.264 في حاويات مختلفة. لهذا السبب يظل التأخير منخفضًا.

القيود الحالية

ما قمنا ببنائه ممتاز للاختبار المحلي، لكن الإنتاج يتطلب:

  • المصادقة (حاليًا يمكن لأي شخص الوصول)
  • يعمل فقط على localhost (ليس جاهزًا للإنترنت)
  • لا يوجد دعم حتى الآن لكاميرات IP
  • لا مراقبة أو معالجة للأخطاء

هذه أساسيات قوية. نفس البنية يمكن أن تتوسع من كاميرا ويب في غرفة نوم واحدة إلى بنية نتفليكس تخدم آلاف التدفقات المتزامنة.

ماذا بعد

الجزء الثاني سيغطي: تأمين خط العمل، ربط كاميرات IP الحقيقية، التعامل مع المصادقة، والنشر خارج localhost. هنا يبدأ العمل الهندسي الحقيقي—وهنا تفشل معظم المشاريع الهواية.

شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
  • أعجبني
  • تعليق
  • إعادة النشر
  • مشاركة
تعليق
إضافة تعليق
إضافة تعليق
لا توجد تعليقات
  • مُثبت