بث مقاطع الفيديو الخاصة بك على موقع يوتيوب على مدار الساعة

في الآونة الأخيرة ، كهواية ، أقوم بتصوير محاضرات لأخصائي نفسي مألوف على الفيديو. أقوم بتثبيت ونشر اللقطات على موقع الويب الخاص بي. منذ شهر ، حصلت على فكرة تنظيم بث على مدار الساعة لهذه المحاضرات على YouTube 24/7. نوع من "القناة" المواضيعية المخصصة للنمو الشخصي.

أعرف كيفية البث العادي ، أعلم. لكن كيف تجعله بثًا لملفات الفيديو؟ كانت تمشي 24/7 ، وكانت مرنة ، ومستقلة بقدر الإمكان ، وفي الوقت نفسه لم تعتمد على جهاز الكمبيوتر في المنزل. هذا ما كان عليّ معرفته.



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

باختصار ، كان الحل النهائي كما يلي: VPS + ffmeg + bash script . تحت الخفض ، أصف الخطوات التي اتخذت والحديث عن "المزالق" التي تم اكتشافها خلال البث.

الخطوة 1 - من أين سيذهب البث؟


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

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

أصبح من الواضح أنك بحاجة للبثجهاز منفصل أو حتى جهاز كمبيوتر منفصل. التفكير في شيء مثل Raspberri Pi. و ماذا؟ ليس لديه برودة. لقد سجلت الفيديو على محرك أقراص USB محمول ، وتمسك كابل Ethernet وتركه في مكان ما في مكان منعزل ، يتم بثه. اختيار. ولكن لم يكن لدي مجلس الإدارة نفسه ولا خبرة معه ، لذلك رفضت أيضًا هذا الخيار.

في النهاية ، صادفت مناقشة حيث ناقشوا إنشاء خادمك الخاصالبث. لم يكن هذا بالضبط ما كنت أبحث عنه ، ولكني فهمت الفكرة الرئيسية - يمكنك استخدام الخادم! في تلك المناقشة ، اقترحوا استخدام مجموعة من VPS + nginx + OBS. أصبح من الواضح أن هذه المجموعة يمكن أن تناسبني. الشيء الوحيد الذي أزعجني هو أنني لم أقم بإدارة الخادم أبدًا وبدا لي أن خادمي المخصص كان مرتبكًا ومكلفًا. قررت معرفة مقدار تكلفة استئجار خادم في الحد الأدنى من التكوين ، وقد فوجئت بسرور.

صورة

الأسعار بالروبل البيلاروسي وهي مجرد فتات. لفهم ، 8 روبل بيلاروسي في مكان ما حول 3.5 دولار أو 240 روبل روسي. لمدة شهر باستخدام جهاز كمبيوتر كامل يعمل على مدار الساعة طوال أيام الأسبوع ولديه اتصال سريع بالإنترنت. لسبب ما ، كان هذا الاكتشاف مبهجًا جدًا بالنسبة لي ، ولعدة أيام مشيت بسعادة بالغة مثل طفل اكتشف صواريخ الفضاء :)

بالمناسبة ، استفدت من عرض الموقع الأول الذي قدمته لي Google عند الطلب "تأجير VPS". ربما هناك المزيد من حلول الميزانية ، ولكن هذا السعر يناسبني ولم أتطلع إلى أبعد من ذلك.

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

صورة

الخطوة 2 - إعداد الخادم


أول شيء تحتاجه بعد إنشاء الخادم هو الاتصال به عبر SSH. استخدمت في البداية PuTTy ، ولكن بعد ذلك بدأت في استخدام تطبيق Secure Shell الذي يعمل على Google Chrome. لذلك اتضح لي أنه أكثر ملاءمة بالنسبة لي.

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

ولكن تلك الخطوات التي يجب القيام بها:

  1. قم بتوصيل مستودع EPEL.
  2. رفع خادم FTP (اخترت vsftp).
  3. قم بتثبيت ffmpeg.

لن أعطي تفاصيل الفريق ، هذه التعليمات مفاهيمية إلى حد ما من أجل نقل خطة عمل عامة. إذا واجهتك أي صعوبات في أي من الخطوات ، فسيتم حلها بسرعة من خلال استعلام في محرك بحث مثل "CentOS connect EPEL" أو "CentOS FTP server server". وفي الروابط الأولى ، يمكنك العثور على تعليمات تفصيلية خطوة بخطوة.

لذا ، كما كتبت سابقًا ، كنت بحاجة إلى مجموعة من VPS + nginx + OBS. VPS - جاهز. ولكن هنا حول النقاط المتبقية بدأت الأسئلة في الظهور. OBS هو برنامج بث ، Open Broadcaster Software. وهو يعمل فقط مع الخيوط أي على سبيل المثال ، يأخذ صورة من كاميرا ويب ويبثها. أو تسجيل الشاشة. أو إعادة توجيه بث مستمر بالفعل إلى موقع آخر. وليس لدي دفق ، لدي فقط مجموعة من ملفات الفيديو التي أحتاجها لإنشاء دفق.

بدأ الحفر في هذا الاتجاه وجاء عبر ffmpeg. FFmpeg عبارة عن مجموعة من المكتبات المجانية مفتوحة المصدر تسمح لك بتسجيل وتحويل ونقل تسجيلات الصوت والفيديو الرقمية بتنسيقات مختلفة.

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

الخطوة 3 - إعداد البث


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

صورة

بعد ذلك ، قم بتحميل ملفات الفيديو إلى الخادم الذي نخطط لبثه. في الواقع ، FTP مطلوب فقط لهذه المرحلة. إذا كانت لديك طريقة أخرى مناسبة لتحميل الملفات إلى الخادم ، فيمكن استبعاد خادم FTP.

نحن نتدفق على موقع يوتيوب. لبدء البث ، يجب تشغيل ffmpeg بعدة سمات. فيما يلي أقصر أمر حصلت عليه:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%

فك تشفير السمة
-re – , .

-i – , . , , -. , /usr/media/lecture1.mp4.

-f – . , ffmpeg « » mp4 flv.

, YouTube .. , , , .

إذا فعلت كل شيء بشكل صحيح ، فبعد تشغيل هذا الأمر ، سيشاهد YouTube البث المرسل. لبدء البث ، عليك فقط النقر فوق الزر "بدء البث" في موقع YouTube نفسه.

الخطوة 4 - إضافة الاستقلال الذاتي


تهانينا! الآن أنت تعرف كيف تبدأ البث من ملف فيديو. لكن هذا لا يكفي للبث على مدار الساعة. من المهم أنه بعد انتهاء تشغيل الفيديو الأول ، سيبدأ تشغيل الفيديو التالي فورًا ، وعندما يتم عرض جميع مقاطع الفيديو ، يبدأ التشغيل من جديد.

توصلت إلى الخيار التالي: إنشاء ملف .sh قمت فيه بتسجيل أمر لكل ملف فيديو وفي النهاية أشار إلى أمر لإعادة تشغيل البرنامج النصي نفسه. اتضح نوعًا من العودية:

 1... (   lecture1.mp4)
 2... (   lecture2.mp4)
 3... (   lecture3.mp4)
bash start.sh

ونعم ، نجحت. أنا ، سعيدًا بنفسي ، بدأت بثًا تجريبيًا ونمت.

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

يبدو أن النسخة النهائية الدنيا من البرنامج النصي هي كما يلي:

ffmpeg -re -i lecture1.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
ffmpeg -re -i lecture2.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
ffmpeg -re -i lecture3.mp4 -f flv rtmp://a.rtmp.youtube.com/live2/%_%
nohup bash start.sh $

حيث start.sh هو الملف الذي تمت كتابة هذا البرنامج النصي فيه. ويجب وضع هذا الملف في نفس الدليل مثل ملفات الفيديو.

تسمح لك إضافة علامة الدولار في النهاية ببدء العملية في الخلفية بحيث يمكنك الاستمرار في استخدام وحدة التحكم دون مقاطعة البث.

من المكافآت تحولت الكعك التالية:

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

الخطوة 5 - تكوين ffmpeg


على هذا ، من حيث المبدأ ، يمكن للمرء أن يتوقف. لكنني أردت أن أجعل البث أكثر ودية للجمهور.

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

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

اتضح أن ffmpeg يمكن أن يساعدني في ذلك أيضًا. يحتوي على سمة خاصة -vfتسمح لك بوضع نص أعلى الفيديو. لإضافة نص إلى الفيديو ، تحتاج إلى إضافة الجزء التالي إلى الأمر:

-vf drawtext="fontfile=OpenSans.ttf:text=' 13\:  .   ?':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670"

فك تشفير المعلمات
fontfile= – . . . .

text= – , , .

fontsize= – .

fontcolor= – .

borderw= – ( 1 ).

bordercolor= – .

x= y= – . 0;0 . , 1280720 .


تبدو هكذا:

صورة

الخطوة 6 - تحديد جودة البث


كل شيء ، البث جاهز. بث FFmpeg ، تشغيل الملفات ، لا حاجة لوجودي للبث. حتى كل محاضرة موقعة. يبدو أن الأمر كذلك.

ولكن ظهرت فارق بسيط آخر - اخترت الحد الأدنى من تكوين الخادم ولم تسحب البث. تكوين الخادم: 1 الأساسية (مثل 2.2 غيغاهرتز) ، 1 غيغابايت من ذاكرة الوصول العشوائي ، 25 غيغابايت SSD. كان هناك ما يكفي من ذاكرة الوصول العشوائي ، ولكن المعالج تقريبًا قام بالتحميل بالكامل بنسبة 100٪ (وأحيانًا حتى بنسبة 102-103٪ :) أدى ذلك إلى تجميد البث مرة كل بضع ثوان. البشع.

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

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

الخادم الخاص بي لديه قناة 10 ميجا بت في الثانية. هذا العرض مستقيم بهامش. ولكن هناك حد لحركة المرور - 1 تيرابايت في الشهر. لذلك ، من أجل تلبية قيود حركة المرور ، يجب ألا يتجاوز دفق البريد الصادر الخاص بي ~ 300 كيلوبايت في الثانية ، أي يجب ألا يزيد معدل البت للبث الصادر عن 2.5 ميجا بت في الثانية. يوتيوب ، بالمناسبة ، يوصي فقط بالبث في معدل البت هذا.

يستخدم Ffmpeg أساليب مختلفة لتنظيم الحمل على النظام. مكتوب بشكل جيد هنا . انتهى بي الأمر باستخدام صفتين: -crfو -preset.

عامل معدل ثابت (CRF)- هذا معامل يمكنك من خلاله ضبط جودة الصورة. يمكن أن يتراوح CRF من 0 إلى 51 ، حيث 0 هي جودة الملف المصدر ، و 51 هي أسوأ جودة ممكنة. من المستحسن استخدام القيم من 17 إلى 28 ، والافتراضي هو 23. مع نسبة 17 ، سيكون الفيديو مرئيًا مطابقًا للأصل ، ولكن من الناحية الفنية لن يكون كذلك. تنص الوثائق أيضًا على أن حجم الفيديو النهائي ، اعتمادًا على نموذج الإبلاغ الموحد المحدد ، يتغير بشكل كبير ، أي تؤدي زيادة المعامل بمقدار 6 نقاط إلى مضاعفة معدل البت للفيديو الصادر.

إذا كنت تستخدم CRF ، يمكنك اختيار "وزن" الصورة الصادرة ، ثم باستخدام الإعدادات المسبقة (-إعداد مسبق) يمكنك تحديد مقدار تحميل المعالج. معلمات هذه السمة لها ما يلي:

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium - القيمة الافتراضية
  • slow
  • slower
  • veryslow

كلما تم تحديد المعلمة "أسرع" ، زاد الحمل على المعالج.

التقطت أولاً الإعداد المسبق ، والذي كان في الأساس "صعبًا" لمعالجتي ، ثم قمت بضبط الحمل بدقة أكبر باستخدام CRF. في حالتي ، جاء الإعداد المسبق fast، وبالنسبة لـ crf استقرت على قيمة 24.

استنتاج


هذا كل شئ. الأمر الأخير لبدء البث حصلت على هذا:

ffmpeg -re -i lecture1.mp4 -vf drawtext="fontfile=OpenSans.ttf:text=' 1\:   ':fontsize=26:fontcolor=white:borderw=1:bordercolor=black:x=40:y=670" -c:v libx264 -preset fast -crf 24 -g 3 -f flv rtmp://a.rtmp.youtube.com/live2/%_%

هنا لا يوجد سوى لحظات غير موصوفة:

1) -c:v libx264- إشارة إلى برنامج ترميز معين للعمل مع الملف المصدر.
2) -g 3- إشارة صريحة لعدد الإطارات الرئيسية. في هذه الحالة ، يشار إلى أن كل إطار ثالث يجب أن يكون مفتاحًا. القيمة القياسية هي إما 5 أو 8 ، لكن YouTube يقسم ، يسأل 3. على الأقل

ما هي نوعية البث التي يمكن رؤيتها هنا .

كان حمل الخادم كما يلي:

صورة

صورة

بناءً على بيانات المراقبة ، من الواضح أن حمل المعالج يختلف من 70٪ إلى 95٪ وأن البث لم يستريح أبدًا عند 100٪ في الأسبوع. لذا ، مع هذه الإعدادات ، يكفي المعالج.

عند تحميل قرص ، يمكنني القول أنه لم يتم تحميله تقريبًا ويجب أن يكون محرك الأقراص الثابتة العادي كافياً للبث.

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

***

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

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

هذا جيد. بث مناسب بشكل متناغم على الصفحة الرئيسية لموقعي. اتضح نوعًا من الفرصة ليقرر بسرعة حول المحاضر والمحاضرات نفسها.

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

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

***

هذا كل شيء بالنسبة لي. آمل أن يخدم هذا الدليل شخصًا جيدًا. حسنًا ، إذا كان لديك شيء لتضيفه - اكتب ، فسأقرأ بكل سرور الإضافات والتوضيحات للمقال.

All Articles