بناء خط أنابيب لبث الفيديو المباشر بنفسك: دليل عملي لـ FFmpeg × MediaMTX

المشكلة: الكاميرا تتحدث عبر RTSP، لكن المتصفح لا يستطيع الاستماع

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

المسؤول عن هذه الترجمة هو FFmpeg (سكين متعددة الاستخدامات لمعالجة الفيديو) و MediaMTX (خادم تحويل البروتوكولات). من خلال الجمع بين هذين الأمرين، يمكنك إنشاء خط أنابيب لبث منخفض التأخير بمستوى احترافي.

شرح الأدوات

FFmpeg: عصا سحرية لتحويل جميع تنسيقات الفيديو

تدفق معالجة FFmpeg:

  • ديماルトبليكس: فصل الفيديو والصوت من الحاوية
  • فك التشفير: تحويل البيانات المضغوطة إلى إطار خام
  • التصفية: تطبيق التوسيع، وتصحيح الألوان، وغيرها
  • الترميز: مضغوط بتنسيق H.264 أو VP9
  • مولتيبليكس: تعبئة في حاوية الإخراج

في تطبيقات البث المباشر، تعمل FFmpeg كمحرك إدخال. تقوم بالتقاط الفيديو من كاميرا الويب أو الملفات، وتشفيره بكفاءة، ثم إرساله إلى الخادم عبر RTSP أو RTMP.

MediaMTX: بروتوكول هاب يدعم عدة عملاء

FFmpeg هو إخراج فردي، لكن MediaMTX يمكنه البث في وقت واحد لعدة عملاء. بالإضافة إلى ذلك:

  • استقبال عبر RTSP/RTMP/WebRTC/HLS
  • إعادة تعبئة لعملاء مختلفين
  • تحويل RTSP إلى WebRTC (يمكن تشغيله في المتصفح)
  • المصادقة ، توزيع الحمل ، إدارة العملاء

يمكن التعامل مع المشاهد المعقدة التي كانت تتطلب سابقًا خوادم مخصصة متعددة باستخدام ملف ثنائي واحد فقط وملف إعدادات YAML.

خطوات التنفيذ

الخطوة 1: تثبيت الأدوات

أوبونتو/ديبيان:

تحديث sudo apt sudo apt تثبيت autoconf automake build-essential pkg-config libx264-dev libvpx-dev libfdk-aac-dev استنساخ git ffmpeg القرص المضغوط ffmpeg ./configure --enable-gpl --enable-libx264 --enable-nonfree جعل -j $(nproc) sudo جعل التثبيت

ماك أو إس:

قم بتركيب FFMPEG

ويندوز: قم بتنزيله من gydan.dev → فك الضغط في C:\ffmpeg → أضفه إلى مسار النظام

تم تثبيت MediaMTX v1.15.0 أيضًا (بسهولة باستخدام ملف ثنائي واحد).

الخطوة 2: تدفق ملف الفيديو

إنشاء mediamtx.yml:

المسارات: اختبار_فيديو: المصدر: الناشر

تشغيل MediaMTX:

mediamtx.yml MediaMTX

إرسال الفيديو عبر RTSP باستخدام FFmpeg:

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

-re: الحفاظ على معدل الإطارات (مطلوب للبث المباشر) -preset fast:توازن سرعة الترميز

تحقق من VLC Media Player: الوسائط → فتح تدفق الشبكة → rtsp://localhost:8554/test_video

الخطوة 3: قم ببث مباشر باستخدام كاميرا الويب

ويندوز:

ffmpeg -f dshow -rtbufsize 100M -i video = “كاميرا ويب متكاملة” -c: v libx264 -ضبط مسبق فائق السرعة -ضبط زمن الانتقال -f rtsp rtsp://localhost:8554/webcam

ماك أو إس:

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

لينكس:

ffmpeg -f v4l2 -i / dev / video0 -c: v libx264 -ضبط مسبق فائق السرعة -ضبط زمن الوصول -C: aac -f rtsp rtsp://localhost:8554/webcam

-تعديل زيرو لاتنسي هو النقطة. تحسين البث المباشر.

الخطوة 4: التشغيل في المتصفح (تحويل WebRTC)

تحديث mediamtx.yml:

WebRTC: نعم webrtcالعنوان: 8889 webrtcEncryption: لا webrtcAllowOrigin: '*'

المسارات: كاميرا ويب: المصدر: الناشر

قم بإعادة تشغيل MediaMTX، ثم افتح http://localhost:8889 في المتصفح → ستظهر الصورة الحية في المتصفح.

تدفق البيانات

  1. كاميرا الويب → توليد إطار حي
  2. FFmpeg → ترميز H.264 وإرسال RTSP
  3. MediaMTX → استقبال RTSP وتحويل WebRTC
  4. المتصفح → تشغيل في الوقت الحقيقي عبر WebRTC

MediaMTX لا يعيد التشفير. يقوم فقط بتعبئة تدفق H.264 في حاويات بروتوكولات مختلفة. لذلك يتم تحقيق انخفاض في زمن الوصول.

ملخص هذه المرة

إكمال خط الأنابيب الأساسي:

  • تم تثبيت FFmpeg و MediaMTX
  • تأكيد بث ملفات الفيديو وكاميرا الويب
  • نجاح تشغيل المتصفح عبر WebRTC

فقط هناك تحديات في التشغيل الفعلي:

  • بدون مصادقة أو أمان
  • يعمل فقط على localhost
  • غير متوافق مع كاميرات IP الحقيقية
  • بدون معالجة الأخطاء

في الجزء 2، ننتقل إلى إضافة المصادقة، اتصال كاميرا IP، والتوافق مع الإنترنت.

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