أَنْشِئْ خادمك للبث المرئي (video streaming) على لينكس

نشره Fahad في
أَنْشِئْ خادمك للبث المرئي

أَنْشِئْ خادم بث مرئي حي أساسي على نظام التشغيل لينِكس أو بي إس دي.


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

 الشروع في إعداد الخادم

 سأشرح في هذا الدرس التعليمي كيفية إعداد خادم بث مرئي حي على نظام التشغيل لينِكس أو بي.إس.دي.
الأمر الذي يقود إلى التساؤل حول متطلبات النظام حيث يمكن أن تتفاوت نظرًا لوجود العديد من المتغيرات المرتبطة بالبث المرئي، ومنها مثلًا:
جودة البث: هل ترغب أن تبث مقاطعك بدقة عالية أم أن الدقة القياسية تلائم احتياجاتك؟
عدد المشاهدين: كم تتوقع عدد المشاهدات لمقاطعك المرئية؟
التخزين: هل تخطط في الاحتفاظ بنسخ من البث المرئي الخاص بك؟
النفاذ: هل سيكون بثك خاصًا أم متاحًا للجميع؟

لا توجد قواعد محددة حين يتعلق الأمر بمتطلبات النظام لذا أنصح أن تجرّب وتعرِف ما يلبي متطلباتك، حيث قمت بتثبيت الخادم الذي أنشأته في جهازي الإلكتروني بذاكرة وصول عشوائية بسعة 4 جيجابايت وقرص صلب بسعة 20 جيجابايت ومعالج انتل إي 7 أحادي النواة.
يستخدم هذا المشروع بروتوكول التراسل في الوقت الحقيقي (RTMP) للتعامل مع الدفق المرئي والصوتي، كما تتوفر بروتوكولات أخرى لكني اخترت بروتوكول التراسل في الوقت الحقيقي حيث يحوز على تأييد واسع النطاق، ونظرًا لأن المعايير المفتوحة أمثال بروتوكول الاتصال في الوقت الحقيقي (WebRTC) تزداد توافقًا يومًا بعد يوم فإني أنصح باختياره.
من المهم للغاية أيضًا معرفة أن "مباشر- Live" لا تعني دومًا فوريًا، إذ يجب تشفير البث المرئي ونقله وتخزينه مؤقتًا وعرضه؛ الأمر الذي يفضي إلى حالات من التأخير، ويمكن تقليص التأخير أو إطالته تبعًا لنوع البث الذي تُنشئه وخصائصه.

إعداد خادم لينِكس

يمكنك استخدام عدة توزيعات مختلفة من لينِكس لكنني أفضل استخدام أوبنتو لذا حمّلت نسخة خادم أوبنتو كنظام تشغيلي لي. وإذا كنت تفضل أن يكون لخادمك واجهة مستخدم رسومية (GUI) لا تتردد في استخدام أوبنتو لسطح المكتب أو إحدى أنواعها المتعددة. تاليًا، شغّلت مثبت أوبنتو في حاسوبي الشخصي أو جهازي التخيلي واخترت الإعدادات التي تلائم طبيعة عملي، وترِدُ أدناه الخطوات التي اتخذتها.
ملاحظة: قد ترغب بضبط بعض إعدادات الشبكة الثابتة لأنك ستُنْشِئُ خادمًا.


بعد انتهاء المثبت وإعادة تشغيل النظام سيرحب بك نظام أوبنتو الجديد الرائع، وكما هو الحال مع أي نظام تشغيل مثبّت حديثًا عليك بتثبيت أي تحديثات متاحة.

sudo apt update

sudo apt upgrade

سيستخدم خادم البث هذا إنجن س - خادم الشبكة الفعّال للغاية ومتعدد الاستعمالات - لذا ستحتاج لتثبيته:

sudo apt install nginx

بعدها، ينبغي عليك الحصول على وحدة بروتوكول التراسل في الوقت الحقيقي ليتمكن إنجن س من التعامل مع دفق الوسائط:

sudo add-apt-repository universe

sudo apt install libnginx-mod-rtmp

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

sudo nano /etc/nginx/nginx.conf

انتقل إلى أسفل ملف الإعدادات وأَضِفْ الشفرة التالية:

rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

احفظ الإعدادات. قررت استخدام نانو لتحرير ملفات الإعدادات حيث يمكنك حفظ الإعدادات فيه بالضغط على Ctrl+X, Y ثم بالضغط على إدخال (Enter) .
وهذا إعداد بسيط للغاية من شأنه أن ينشأ خادم بث شغّال حيث ستضيف له لاحقًا لكنها تمثل نقطة انطلاق ناجحة.
ومع ذلك، عليك إعادة تشغيل إنجن س بإعداده الجديد قبل المباشرة في أول بث لك:

 sudo systemctl restart nginx

إعداد خادم بي.إس.دي

عليك باستخدام نظام بي إس دي إذا كنت ترغب بالحصول على خادم ثابت ومستقر ويعمل بسهولة.
توجّه إلى موقع FeeBSD وحمّل آخر إصدار له. شغّل مثبت FeeBSD في حاسوبك أو جهازك التخيلي واستعرض الخطوات الأولى واختر الإعدادات التي تلائم طبيعة عملك. ولأنك ستُنْشِئُ خادمًا قد ترغب بضبط بعض إعدادات الشبكة الثابتة.
بعد انتهاء المثبت وإعادة تشغيل النظام سيكون لديك نظام بي.إس.دي جديد، وكما هو الحال مع أي نظام تشغيل مثبّت حديثًا عليك بتحديثه في حال وجود أي تحديثات (من هذه الخطوة حتى الخطوات المقبلة، وتأكد أنك مسجلًا كجذر):

pkg update

pkg upgrade

ثَبَّتُّ نانو لتحرير ملفات الإعداد:

pkg install nano 

سيستخدم خادم البث هذا إنجن س - خادم الشبكة الفعّال ومتعدد الاستعمالات، ويمكنك بناء إنجن س باستخدام منافذ النظام الرائعة التي يمتلكها فري بي إس دي.
أولًا، حدّث مجموعة المنافذ الخاصة بنظامك:

portsnap fetch

portsnap extract

استعرض مجلد منافذ إنجن س

cd /usr/ports/www/nginx

ابدأ في إنشاء إنجن س بتشغيل:

make install

ستظهر لك شاشة تسأل أي الوحدات التي عليك تضمينها لإنشاء إنجن س، وبالنسبة لهذا المشروع فستحتاج لإضافة وحدة بروتوكول التراسل في الوقت الحقيقي. انتقل إلى الأسفل حتى يتم تحديد وحدة بروتوكول التراسل في الوقت الحقيقي واضغط على مسافة Space. ثم اضغط Enter لمتابعة باقي خطوات الإنشاء والتثبيت.
بعد انتهاء تثبيت إنجن س ينبغي الآن إعداده لأغراض البث.
أولًا، أضف مدخلة لـ/etc/rc.conf للتأكد من أن خادم إنجن س يشتغل بمجرد تشغيل النظام:

nano /etc/rc.conf

أضف هذا النص للملف:

nginx_enable="YES"

بعدها، أَنْشِئْ مجلد ويبروت (webroot) من حيث سيخدم إنجن س محتواه، وقد أسميت الملف الخاص بي Stream:

cd /usr/local/www/

mkdir stream

chmod -R 755 stream/

وبعد أن أنشأت مجلد بثّك قم بإعداد إنجن س من خلال تحرير ملف الإعداد:

nano /usr/local/etc/nginx/nginx.conf

حمّل وحدات البث في أعلى الملف:

load_module /usr/local/libexec/nginx/ngx_stream_module.so;
load_module /usr/local/libexec/nginx/ngx_rtmp_module.so;

في أسفل قسم  server، غيّر موقع الويبروت ليتلائم مع مجلد ويبروت الذي أنشأته مسبقًا:

Location / {
root /usr/local/www/stream
}

أخيرًا، أضف إعدادات بروتوكول التراسل في الوقت الحقيقي ليتمكن إنجن س من معرفة كيفية التعامل مع دفق وسائطك:

rtmp {
        server {
                listen 1935;
                chunk_size 4096;

                application live {
                        live on;
                        record off;
                }
        }
}

احفظ الإعدادات. يمكنك حفظ الإعدادات في نانو بالضغط على Ctrl+X, Y ثم بالضغط على إدخال Enter.
يعد هذا الإعداد بسيط للغاية من شأنه أن ينشأ خادم بث شغّال حيث ستضيف له لاحقًا لكنها تمثل نقطة انطلاق ناجحة.
مع ذلك، عليك إعادة تشغيل إنجن س بإعداده الجديد قبل المباشرة في أول بث لك:

service nginx restart


إعداد برمجيات البث:

البث باستخدام برنامج أو بي إس (OBS)

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


ولن يلتقط OBS صورة للشاشة لأنك لم تزوده بمصدر. وفي هذا الدرس التعليمي ستلتقط فقط شاشة سطح مكتبك للبث بكل بساطة بالضغط على زر + أسفل المصدر واختر التقاط الشاشة ثم اختر أي سطح مكتب تريد التقاطه.
اضغط على أوافق وستلاحظ تصوير مرآي لسطح مكتبك باستخدام OBS.
يمكنك الآن ارسال بثّك المرئي المهيئ للخادم الخاص بك باختيار ملف > إعدادات في OBS، ثم اضغط على قسم بثّ واضبط نوع البث إلى خادم بث مخصص.
وفي خانة العنوان أدخل السابقة rtmp:// متبوعة بـعنوان IP لخادم بثك متبوعًا بـ /live، مثال ذلك: rtmp://IP-ADDRESS/live .
قد تود بعدها إدخال مفتاح لبثك - معرّف خاص يَلزم لعرض البث. أدخل أي مفتاح ترغبه (ويمكن تذكره) في خانة مفتاح البث.


اضغط على طبّق ثم أوافق.
أصبح OBS مهيئ لإرسال بثك للخادم ويمكنك الآن بدء البث بالضغط على بدء البث.
يجب عليك رؤية اسم الزر يتغير إلى إيقاف البث وستظهر بعض إحصائيات البث أسفل OBS في حال سار كل شيء كما ينبغي.


في حال تلقيت رسالة خطأ تحقق مرّة أخرى من إعدادات البث في OBS إن كانت تتضمن أخطاء إملائية، وإذا بدا أن كل شيء في حالة جيدة فمن الممكن أن تكون هناك مشكلة أخرى تحول دون عمله.


مشاهدة بثّك

يكون البث الحي بلا فائدة إن لم يشاهده أحد لذا كن أنت أول من يشاهده.
تتوفر عدة مشغلات للوسائط مفتوحة المصدر تدعم بروتوكول التراسل في الوقت الحقيقي لكن قد يكون أكثرها شيوعًا مشغل الوسائط في إل سي (VLC).
بعد أن تثبت وتشغّل في إل سي افتح بثك بالضغط على وسائط > افتح بث الشبكة. أدخل مسار البث الخاص بك بإدراج مفتاح البث الذي أعددته في OBS ثم اضغط على تشغيل، ومثال ذلك: rtmp://IP-ADDRESS/live/SECRET-KEY.  
ومن المفترض أنك الآن تشاهد بثك المرئي الحي.

ما خطوتك التالية؟

هذا إعداد بسيط للغاية سيساعدك على اطلاق بثّك. تتوفر هنا ميزتين إضافيتين قد ترغب باستخدامها.
النفاذ: الخطوة التالية التي ترغب باتخاذها هي الحدّ من الوصول لخادمك حيث يسمح الإعداد المبدئي لأي شخص للبث من وإلى الخادم. وهناك عدة طرق لضبطه منها جدار ناري لنظام التشغيل .htaccess file  أو حتى باستخدام قيود للنفاذ مضمّنة في وحدة بروتوكول التراسل في الوقت الحقيقي.
تسجيل البث: يعمل هذا الإعداد البسيط لإنجن س على بث وسائطك المرئية دون حفظها لكن من السهولة إدراجه. في إعدادات إنجن س أسفل قسم بروتوكول التراسل في الوقت الحقيقي ضبّط إعدادات التسجيل والموقع الذي تريد حفظ وسائطك المرئية فيه وتأكد من أن المسار الذي أعددته صحيحًا وأن إنجن س بإمكانه الكتابة فيه.

application live {
             live on;
             record all;
             record_path /var/www/html/recordings;
             record_unique on;
}

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

هذا المقال مترجم من مقال عنوانه Create your own video streaming server with Linux تأليف أرون برسك وترجمة زينب الذهلية.