كيفية إعداد خادم NGINX RTMP للبث

تتعطّل بثك المباشر في كل مرة؟ في هذه الحالة، ستحتاج إلى العثور على وسيلة موثوقة لاستضافة بثك. ولكن إذا لم تكن قادرًا على تحمل الخيارات المكلفة، فلا داعي للقلق! سينقذك NGINX RTMP. NGINX RTMP هو وحدة مصدر مفتوحة موثوقة، لذا تعلم ماذا يعني ذلك — إنه مجاني!

في هذا البرنامج التعليمي، ستتعلم كيفية إعداد خادم NGINX RTMP حتى تتمكن من إعداد بث مباشر موثوق به مع موقع الويب الخاص بك.

هل أنت مستعد؟ تابع القراءة وابدأ في إعداد بث مباشر!

الشروط المسبقة

سيكون هذا البرنامج التعليمي عرضًا توضيحيًا عمليًا. إذا كنت ترغب في متابعة، تأكد من أن لديك ما يلي:

  • A Linux server – This demo uses Ubuntu 20.04 LTS, but you can use any other Linux distribution with NGINX.
  • NGINX مثبت على خادم Linux.
  • A non-root user with sudo privileges.
  • الحد الأدنى من الموارد المطلوبة لتشغيل خادم بث مباشر – 2 جيجا رام، 2 معالج و 20 جيجا HDD.

هذه القيم هي اقتراحات فقط. تعتمد القيم الدقيقة على احتياجات حركة المرور الفعلية الخاصة بك. كلما زادت حركة المرور لديك، كلما احتجت إلى خوادم أقوى لاستضافة وبث فيديو مباشر. في بيئة التطوير، يكفي خادم NGINX RTMP بمعالجين و 2 جيجا رام للاختبار.

تكوين خادم RTMP

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

1. افتح الطرفية الخاصة بك وقم بتشغيل الأمر apt update لتحديث جميع حزمك. يقوم هذا الأمر بمزامنة قاعدة بيانات الحزم الخاصة بك مع أحدث قاعدة بيانات من Ubuntu.

sudo apt update -y
Updating all your packages

2. بعد ذلك، قم بتشغيل الأمر التالي لتثبيت خادم RTMP على خادم Linux الخاص بك.

وحدة libnginx-mod-rtmp هي وحدة NGINX تحول خادم NGINX الخاص بك إلى خادم RTMP. تمكن هذه الوحدة NGINX من التواصل مع Adobe Flash Player حتى تتمكن من بث فيديو أو صوت مباشر، وهي مدعومة رسميًا من قبل فريق التطوير.

sudo apt install libnginx-mod-rtmp -y
installing an RTMP server

3. افتح ملف /etc/nginx/nginx.conf في محررك المفضل لتكوين برنامج البث المباشر RTMP الخاص بك. ملف nginx.conf هو ملف تكوين NGINX، والذي يحتوي على عدة توجيهات أو كتل لتحديد سلوك خدمة NGINX.

4. أخيرًا، قم بملء ملف nginx.conf بالكود التالي، واحفظ التغييرات واخرج من المحرر.

الكود أدناه يخبر NGINX بأن يعمل كخادم RTMP ويمكن بث الفيديو المباشر للمستخدمين الخاص بك.

# يخبر هذا الكود NGINX بأن يعمل كخادم RTMP. 
rtmp {
		server {
		# يحدد المنفذ الذي سيستمع إليه الخادم.
    listen 1935;
				# حجم كل قطعة من البيانات التي سيتم إرسالها.
				# قد يتجمد مشغل Flash إذا كانت القطعة صغيرة جدًا، 
				# مما يسبب حدوث حالة نقص في الذاكرة المؤقتة.
        chunk_size 4096;
				# يسمح لعناوين IP بنشر المحتوى على الخادم.
				# يسمح فقط لـ localhost بنشر المحتوى على NGINX RTMP.
				allow publish 127.0.0.1;
				# يمنع نشر المحتوى لجميع الآخرين.
				deny publish all;
				# يعرف تطبيقًا يحمل اسم "مباشر"
        application live {
				# يخبر NGINX بتمكين بث المباشر للمستخدمين.
						live on;
				# تلك السطر يخبر NGINX بتعطيل التسجيل. إذا لم يتم تضمين هذا السطر، 
				# سيستمر NGINX في التسجيل وحفظ البث الخاص بك إلى القرص الصلب الخاص بك إلى الأبد.
						record off;
				}
		}
}

تأمين الشبكة عن طريق إعداد جدار حماية

لقد قمت بالفعل بتكوين خادم NGINX RTMP، ولكن ستحتاج إلى تأمين شبكتك والتحكم في تدفق حركة المرور. كيف؟ عن طريق إعداد جدار حماية، جدار الحماية الغير معقد (UFW)، وهو جدار الحماية الافتراضي في أوبونتو.

إذا وضعت خادم NGINX RTMP خلف جدار حماية، سيتعين عليك السماح بفتح منفذ خادم NGINX RTMP. بما أنك قمت بتكوين خادم NGINX RTMP للإستماع على المنفذ 1935، فسوف تُسمح بهذا المنفذ من خلال جدار الحماية الخاص بك.

1. قم بتشغيل الأمر التالي لإضافة قاعدة جدار حماية تفتح منفذ 1935 على جدار الحماية الخاص بك. تسمح هذه القاعدة بجعل منفذ خادم NGINX RTMP الخاص بك 1935 متاحًا لجميع الطلبات الواردة والصادرة.

sudo ufw allow 1935/tcp
Opening Port 1935 on your firewall

2. بعد ذلك، قم بتشغيل الأمر التالي لتعطيل وإعادة تمكين جدار حمايتك. يقوم هذا الأمر أساسًا بإعادة تشغيل الجدار الناري لأي تغييرات على جدار الحماية لتأخذ مفعولها.

sudo ufw disable && sudo ufw enable

3. في النهاية، قم بتشغيل الأمر أدناه للتحقق من حالة جدار الحماية الخاص بك والتحقق مما إذا كان المنفذ 1935 متاحًا من جميع عناوين IP (في أي مكان).

sudo ufw status
Checking if Port 1935 is Accessible from Anywhere

بث الفيديو باستخدام FFmpeg

الآن قد أصبح خادم NFINX RTMP الخاص بك متاحًا، لذا حان الوقت لاستخدام FFmpeg لإنشاء فيديو تجريبي وبثه من خلال خادم NGINX RTMP الخاص بك. FFmpeg هو حلاً كاملاً لتسجيل وتحويل وبث الصوت والفيديو في العديد من التطبيقات المختلفة مثل VLC و OMXPlayer و VobSub، وما إلى ذلك.

ستقوم باختبار بث الفيديو على خادمك، ويمكنك استخدام أي فيديو صغير الحجم للبث.

1. قم بتشغيل الأمر apt install أدناه لتثبيت التبعيات اللازمة لتشغيل FFmpeg بشكل صحيح.

يقوم الأمر أدناه بتثبيت ما يلي:

  • libpcre3 – مكتبة regex تُستخدم من قبل مجموعة أدوات ffmpeg لمساعدة في تحليل وتجميع التعابير العادية.
  • libpcre3-dev – يحتوي هذا الحزمة على عناوين تطوير حزمة libpcre3.
  • libssl-dev – مكتبة OpenSSL التشفيرية المستخدمة لإنشاء اتصالات SSL/TLS في خادم RTMP الخاص بك.
  • zlib1g-dev: مكتبة zlib هي مكتبة للضغط وفك الضغط تسرع نقل ملفات الصوت والفيديو عبر الإنترنت.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev
Installing Required Dependencies

2. بعد ذلك، قم بتشغيل الأمر التالي لتثبيت ffmpeg على خادمك.

 sudo apt install ffmpeg -y 
Installing FFmpeg

3. في الختام، قم بتشغيل الأمر ffmpeg لأداء الخطوات التالية وإنشاء بث مباشر جديد:

  • اقرأ الإدخال (re) من ملف المصدر (i) بسرعة الإطار الأصلية. تأكد من استبدال video.mp4 بمسار واسم ملف الفيديو الخاص بك.
  • انسخ تنسيق الفيديو بشكل حرفي (c:v copy) وقم بترميز الصوت باستخدام ترميز AAC (c:a aac).
  • قم بتعيين معدل عينة الصوت إلى 44100 هرتز (ar 44100). إذا كان معدل عينة الفيديو أقل من هذه القيمة (44100 هرتز)، يقوم FFmpeg بأداء التكبير لزيادة معدل العينة.
  • تعيين قنوات الصوت إلى قناة واحدة (مونو) (ac 1)، وتنسيق الفيديو الذي سيبثه FFmpeg (-f flv).
  • قم بتعيين برنامج البث المباشر RTMP الخاص بك (rtmp://localhost/live/streamname.flv) الذي قمت بتكوينه في قسم “تكوين خادم RTMP” (الخطوة الرابعة). يمكنك تغيير streamname.flv إلى أي اسم تفضله.
ffmpeg -re -i "video.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://139.180.203.6:1935/live/streamname.flv 

كما ترى أدناه، يقوم الأمر ffmpeg بطباعة عدد الإطارات في الثانية التي يكتشفها، ومعدل البت، وعدد الإطارات في الثانية لتيار البث المباشر RTMP الجديد الذي تم إنشاؤه.

Viewing the RTMP Live Stream Data

الختام

في هذا البرنامج التعليمي، تعلمت كيفية إعداد خادم NGINX RTMP الخاص بك وتمكين بث الفيديوهات المباشرة على خادمك من خلال تعديل ملف تكوين NGINX. كما لمست إعداد تيار فيديو مباشر باستخدام أداة FFmpeg من خلال خادم NGINX RTMP الخاص بك.

لقد فهمت للتو أن إعداد بث مباشر لا يجب أن يكلفك كل قرش. في هذه المرحلة، لماذا لا تقوم بـ دمج تيارك في صفحتك الويب باستخدام عنصر HTML5 <video>. أو إعداد OBS Studio لتيار RTMP الخاص بك؟

Source:
https://adamtheautomator.com/nginx-rtmp/