السير الذاتية صفات التحليلات

منفذ بروتوكول rtmp 1935. البث عبر الإنترنت عبر Nginx-RTMP: عدة وصفات جاهزة

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

قدم البث المباشر طريقة مختلفة للمستخدمين للتواصل مع أصدقائهم وللعلامات التجارية للتفاعل والتواصل مع عملائها.

ولكن كيف يمكن لعملك أو شركتك الناشئة تنفيذ البث المباشر بسهولة لنظام Android دون تخصيص الكثير من الموارد وساعات من عمل المطورين للقيام بذلك؟ ما هي التكنولوجيا التي تقف وراء البث المباشر وتجعله حقيقيًا؟

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

ما هي خصائص البث المباشر

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

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

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

لا يوجد تنسيق واحد فقط موجود لنقل بيانات الوسائط. بدلاً من ذلك ، يمكنك اختيار الشخص الذي يناسب احتياجاتك الفنية بشكل أفضل.

ما هي تقنيات دفق الفيديو الموجودة؟

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

  • بروتوكول RTMP

تم تطوير بروتوكول المراسلة في الوقت الفعلي (أو RTMP فقط) من أجل نقل عالي الأداء لمقاطع الفيديو والصوت ورسائل البيانات في الوقت الفعلي عبر الويب. يتم تمكين البث في الوقت الفعلي من خلال إنشاء اتصال ثنائي الاتجاه بين خادم Flash ومشغل Flash.

Adobe Flash Player هو عميل RTMP الأكثر شيوعًا الذي يدعم تشغيل الفيديو والصوت. وهي متاحة حاليًا كمواصفات مفتوحة المصدر لتطوير المنتجات والتكنولوجيا التي تقدم تدفقات الفيديو بتنسيقات AMF و SWF و FLV و F4V (متوافقة مع تنسيقات Adobe Flash Player) والصوت في AAC و MP3.

  • بروتوكولات البث المستندة إلى HTTP (HLS و HDS)

يعتمد تنسيق HLS على MPEG2-TS ويتعلق بالبث إلى أجهزة iOS. إنه ليس جزءًا من HTML5. يجمع HLS بين تدفقات متعددة مع معلومات البيانات الوصفية والتبديل بسهولة بين بيانات الوسائط المختلفة.

يستخدم HDS تنسيق Adobe لمقاطع الفيديو ويقدم أجزاء من ملفات MPEG-4. يسمح تنسيق MPEG بتخزين البيانات الوصفية وتدفق الصوت والفيديو في مواقع مختلفة. HTTP Dynamic Streaming هي تقنية ملائمة لمكتبات الوسائط الكبيرة. يساعد في تقليل النطاق الترددي ، ويوفر عمر البطارية ويوفر تجربة مستخدم أفضل مقارنةً بـ HLS.

  • بروتوكول تدفق سيلفرلايت

يُستخدم تنسيق دفق الفيديو هذا لتطبيقات الإنترنت الغنية مثل Adobe Flash ولتشغيل الأفلام. على الرغم من أن Microsoft Silverlight لم يعد يعمل في متصفح Chrome ، إلا أنه متوفر في Internet Explorer و Mozilla Firefox.

  • MPEG-DASH

يوفر MPEG-DASH دفق فيديو مباشرًا عالي الجودة وعند الطلب للوسائط القادمة من خوادم HTTP. يسمح التنسيق بإضافة إعلانات بين مقاطع الفيديو لكلا النوعين من البث. يتم تشفير محتوى الوسائط مرة واحدة وتسليمه إلى جهاز كمبيوتر عميل بمساعدة أنظمة DRM (إدارة الحقوق الرقمية) المختلفة.

  • تدفق التنزيل التدريجي

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

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

إذن ، ما هو بروتوكول RTMP ولماذا هو جيد جدًا

يضمن بروتوكول المراسلة في الوقت الفعلي ، الذي تم إنشاؤه بواسطة Macromedia (حاليًا Adobe) ، دفق معدل البت التكيفي (ABS). عندما يتغير عرض النطاق الترددي ، يتم ضبط جودة الفيديو تلقائيًا عليه. يعتمد RTMP على بروتوكول التحكم في الإرسال (TCP) الذي يعطي الأولوية لصيانة اتصال مستقر وزمن انتقال منخفض. فيما يتعلق بنوع المحتوى ، يسمح RTMP بنقل كل من بيانات الوسائط الحية والمسجلة مسبقًا والمعلومات النصية.

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

غالبًا ما يتم الإشادة به بسبب المزايا التالية التي يوفرها:

  • تم تحسينه خصيصًا للبث المباشر

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

  • إنها تقنية ناضجة

تم استخدام RTMP للبث المباشر لأكثر من 10 سنوات. بالنسبة للمطور ، يعد إعداد خادم RTMP مهمة سهلة. بالنسبة للمستخدم ، يتم تمكين دفق الفيديو بتنسيقات مختلفة في نفس الوقت. يتم تطبيق ميزات الأمان مثل التحقق من المشغل أيضًا.

  • يمكنك مشاهدة أي جزء من الفيديو الذي يتم بثه

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

  • إنه بروتوكول البث المباشر الأكثر شيوعًا في الوقت الفعلي

RTMP هو بروتوكول مستقل عن النظام الأساسي ولا يتطلب أي تبعيات للأجهزة ومتوافق مع Windows و Mac و Linux و Android و iOS و Windows mobile. يتم استخدامه أيضًا على نطاق واسع في أجهزة الألعاب ، مثل PlayStation و Xbox One و PS Vita.

كيف يعمل RTMP

بكلمات بسيطة ، يتكون تدفق RTMP من الكيانات الثلاثة التالية:

  • عميل يقوم بإنشاء دفق وسائط وبث بواسطة بروتوكول RTMP إلى خادم. بصفتك "ناشرين" عميل ، يمكنك استخدام الكثير من التطبيقات على منصات مختلفة ، مثل المشغلات القائمة على FFMPEG ومشغل VLC وعملاء YouTube والحل القائم على AVLib.
  • خادم يتعامل مع دفق وارد ويقوم بالمعالجة والتسجيل حسب الضرورة. يوفر الخادم أيضًا عمليات البث للعملاء الآخرين. من بين الخوادم ، فإن أفضل الخيارات هي Wowza Media Server و Flussonic Media Server و Simple RTMP Server.
  • يمثل المشاهدون أي عميل يمكنه مشاهدة التدفقات المنشورة. لعرض تدفقات الوسائط هذه ، يمكنك استخدام أي مشغل يدعم بروتوكول RTMP. الخبر السار هو أن جميع المشغلات المستخدمة حاليًا تقريبًا لجميع الأنظمة الأساسية الحالية تدعم تدفقات RTMP. يمكنك تحديد Flash Player أو VLC أو Media Player Classic.

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

لنقل أكبر قدر ممكن من البيانات باستخدام بروتوكول RTMP ، يتم تقسيم الفيديو والصوت إلى أجزاء بأحجام مختلفة. الأحجام الافتراضية هي 64 بايت للصوت و 128 بايت للفيديو. يتم تحديد أحجام مقاطع الفيديو من خلال تنسيق التفاعل بين المستخدم والخادم.

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

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

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

كيف يمكنك استخدام RTMP لدفق الفيديو في تطبيق Android الخاص بك؟

يمكنك مشاهدة دفق RTMP على أي منصة بمساعدة أي مشغل يدعم بروتوكول RTMP. بالنسبة لنظام التشغيل Android ، أشهر مشغلات الجهات الخارجية هم MX و VLC و BS Players بالإضافة إلى أي مشغل آخر يدعم FFMPEG. لمشاهدة RTMP من داخل التطبيق ، يحتاج المطور إلى دمج أي مكتبة مشغل يمكنها قراءة تدفقات RTMP. هذه هي ijkPlayer و VLC SDK.

قدم فريق Onix مساهمتهم التكنولوجية لإيجاد حل سهل وجميل لدفق الفيديو وأنشأوا AVLib ، مكتبة Onix الخارجية الخاصة ببث Android RTMP.

دعونا نرى كيف يعمل مع البث المباشر لتطبيقات Android وكيف نشأت الفكرة.

كيف يحل AVLib المشكلة الأساسية لبث Android RTMP

https://rtmplib-android.com/

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

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

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

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

كيف تم تطوير AVLib ولماذا هي مكتبة RTMP موثوقة

AVLib هي مكتبة RTMP نفخر بها حقًا. إنه منتج برمجي يحل متطلبات العميل للبث المباشر لأي مستوى من التعقيد. إنها أداة جاهزة للاستخدام لـ Android Studio مدمجة في تطبيق جوال على الفور.

يمثل AVLib حلاً مناسبًا ومستقرًا يعتمد على المبادئ التالية:

  • تكامل سهل مع التطبيق

بالنسبة لمطور Android ، قد يستغرق الأمر حوالي ساعة أكمل العملية دمج AVLib وإضافة ميزة البث المباشر في التطبيق.

  • السعة القصوى

لتنفيذ مكتبة RTMP وتمكينها بإمكانيات عالية السعة ، اختار فريقنا لغة البرمجة C. كل وظيفة مدرجة في AVLib ، بدءًا من منطق الناقل ، والتشفير ، والعمل مع RTMP وحتى المعالجة ، تم بناؤها باستخدام C.

  • مكتبة مصممة خصيصا لواجهة المستخدم

AVLib مرن ويمكن تعديله بسهولة وفقًا لاحتياجات العملاء في تصميم واجهة المستخدم (أي الأزرار والنصوص) وإعدادات الفيديو (مثل دقة الإطار والصوت وجودة الترميز ومعدلات البت).

  • دعم جميع أنواع أجهزة Android الحالية

تأتي مكتبة RTMP هذه كملف .aar واحد بدون تبعيات. تم اختبار AVLib للتأكد من أنه متوافق مع العديد من أجهزة Android ويدعم الإصدار 4.0 من نظام التشغيل Android والإصدارات الأحدث.

يمكنك العثور على مزيد من التفاصيل حول ميزات AVLib.

كانت عملية تطوير AVLib مليئة حقًا بالتحديات والتفكير والجهد المطلوبين من فريق Android الخاص بنا.

  • يتدفقون من كاميرات الحركة؟ نعم!

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

  • بناء دورة حياة البث

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

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

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

RTMP مقابل RTSP

فيما يتعلق بنقل البيانات ، هناك بروتوكول آخر معروف يسمى RTSP. لذلك ، دعونا نلقي نظرة على الاختلافات بين بروتوكولات RTMP و RTSP.

الغرض الرئيسي من RTSP (Real Time Streaming Protocol) هو الحفاظ على أنشطة خوادم البث. علاوة على ذلك ، يقوم هذا البروتوكول بإعداد تفاعل بين العميل والخادم. يمكّن RTSP المستخدمين النهائيين من التحكم في جلسة الوسائط عن طريق أوامر بسيطة مثل التشغيل والإيقاف المؤقت والتوقف. يسمح للعملاء بمشاهدة الفيديو من أي جزء دون انتظار التنزيل الكامل.

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

كيف تعمل

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

الشيء الجيد هو أن بروتوكول RTMP مرن للغاية ويقدم معلومات صوتية ومرئية ونصية بتنسيقات مختلفة تنتمي لإمكانياته. على سبيل المثال ، يتيح بروتوكول RTMP دفق الفيديو بتنسيقات MP4 و FLV وتدفق الصوت - في MP3 و AAC. علاوة على ذلك ، بفضل هذا البروتوكول ، يرسل خادم RTMP الوسائط إلى تطبيقات الويب وكذلك إلى الأجهزة المحمولة. لهذا الغرض ، يحتاج المستخدم إلى تثبيت Flash Player في متصفح أو على جهاز محمول وفقًا لذلك. بعد ذلك ، سيتم تشغيل ملف swf ، الذي يحتوي على جميع معلومات الوسائط الخاصة بالدفق ، بواسطة Flash Player. ومع ذلك ، فإن إحدى أعظم فوائد بروتوكول RTMP هي أنه يمكن تطبيقه على البث المباشر وعند الطلب. دعنا نلقي نظرة على كل من عمليات البث هذه.

بث مباشر

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

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

تدفق عند الطلب

يسمح البث عند الطلب للمستخدمين باختيار وقت مشاهدة محتوى الوسائط المحدد ، وهو أكثر ملاءمة لهم بدلاً من مراقبة هذا المحتوى في وقت بثه. كقاعدة عامة ، يتم استخدام الفيديو حسب الطلب (VOD) لعدة أسباب: لأنه يتم تشغيله بسلاسة حتى مع انخفاض سرعة الاتصال بالإنترنت ، عندما لا يكون عدد المشاهدين عبر الإنترنت كبيرًا ، من أجل جودة HD. مع بروتوكول RTMP حتى VOD أكثر كفاءة. بادئ ذي بدء ، فإنه يوفر دعم البث المتعدد. إذا كنت ترغب في الحصول على دفق واحد داخل شبكة العمل الخاصة بك وتزويده بمستخدمين متعددين ، فلن تحتاج باستخدام RTMP إلى إنشاء اتصالات منفصلة لكل مستخدم. لا تحتوي البروتوكولات الأخرى مثل HTTP أو CDN على هذه الميزة. أيضًا ، يمكّن RTMP المستخدمين من إعادة الاتصال بدفق الفيديو في حالة حدوث مشكلات في الاتصال. أثناء مشاكل الاتصال ، يتم تشغيل الفيديو من المخزن المؤقت وعندما يعيد المستخدم توصيل المخزن المؤقت يبدأ بالملء وبهذه الطريقة يتجنب التوقفات المتكررة في دفق الفيديو.

تطبيقات RTMP

من الواضح أن كل هذه المعلومات تجعلك تشعر بالفضول حول كيفية تنفيذ RTMP. هذا بروتوكول عبر الأنظمة الأساسية ويعمل على أنظمة التشغيل Windows و Mac و Linux و Android و Windows Mobile و iOS. هل لديك وحدة تحكم وتستمتع بممارسة الألعاب؟ يمكنك بسهولة استخدام خدمات RTMP لأجهزة مثل Xbox One و PlayStation و PS Vita.

نظرًا لتنوع الأنظمة الأساسية المناسبة لبروتوكول RTMP ، هناك العديد من الخيارات لتنفيذه. يمكن أن تتنوع من تنفيذ سطر الأوامر إلى تنفيذ كامل الميزات مفتوح المصدر.

تنفيذ سطر الأوامر

تُستخدم أداة RTMPDump لتنفيذ سطر الأوامر ، حيث إنها تتواءم تمامًا مع تسجيل تدفقات RTMP والبث المباشر والفيديو عند الطلب. إلى جانب ذلك ، RTMPDump هي أداة مفتوحة المصدر يمكن استخدامها على Linux و Android و Mac OS X و Microsoft. تحظى هذه الأداة بشعبية كبيرة نظرًا لصغر حجمها والقدرة على فك تشفير RTMPE المشفر RTMP و RTMPS - RTMP الآمن.

تحتوي حزمة RTMPDump على ثلاثة برامج: rtmpdump و rtmpsrv و rtmpsuck. كل من هذه البرامج يؤدي وظائف معينة. على سبيل المثال ، يتم استخدام rtmpdump لإنشاء اتصال بخوادم RTMP والتقاط الدفق نفسه ؛ يمكن لـ rtmpsuck التقاط الدفق أيضًا ، أو يمكن أن يساعد في جمع المعلمات الرئيسية لـ rtmpdump. تتمثل الوظيفة الرئيسية لـ rtmpsrv في تتبع الاتصالات والتدفق.

التنفيذ الكامل

إذا كنت مهتمًا أكثر بالتنفيذ الكامل ، فستحتاج إلى هذه الأجزاء الثلاثة من البرامج: برنامج تشفير الفيديو المباشر ، وخادم بث الوسائط ، وتطبيق عميل الفيديو. أنت لا تعرف برنامج تشفير الفيديو المباشر المراد تثبيته؟ بعد ذلك ، يمكنك الاختيار بين Flash Media Live Encoder و FFmpeg و WireCast و Wowza Transcoder و Nimble Streamer Transcoder. ومع ذلك ، يرجى مراعاة أن أكثرها شيوعًا هو Flash Media Live Encoder ، وهو متاح للتنزيل مجانًا على موقع Adobe على الويب.

بالنسبة لتطبيق عميل الفيديو ، فإن Adobe Flash Player هو الخيار الأكثر تفضيلاً. إنه مشغل RTMP مجاني ويعمل كمكون إضافي من متصفح أو حتى جهاز محمول. يعد Flash Player مناسبًا لأنظمة Windows و OS X و Chrome OS و Linux. الخيارات البديلة هي Gnash و VLC مشغل الوسائط. كلاهما مشغل وسائط مفتوح المصدر. لدى Gnash كل الفرص لاستبدال Flash Player في تدفق RTMP على Linux. مشغل وسائط VLC ، بدوره ، ليس عالميًا ، حيث يمكنه دعم تدفقات RTMP جزئيًا فقط.

يُزعم أن خوادم RTMP مثل Adobe Flash Media Server و Wowza Streaming Engine و Flussonic Media Server هي خوادم جيدة جدًا. ومع ذلك ، يمكنك تثبيت خادم RTMP مجاني مثل Nginx مع RTMP Module أو Red5 ، وهو أيضًا خادم RTMP مفتوح المصدر على Java.

كيفية معالجة المشكلات الأكثر شيوعًا باستخدام بروتوكول RTMP

بروتوكول RTMP ، على الرغم من كل مزاياه الواضحة ، له أيضًا بعض العيوب. نظرًا لأنه يختلف كثيرًا عن بروتوكول HTTP ، فإنه لا يدعمه HTML5. علاوة على ذلك ، يعمل بروتوكول RTMP بشكل سيئ على iDevices ويؤثر على جودة دفق الفيديو. في مثل هذه الحالة ، من الأفضل استخدام بروتوكول HLS على أجهزة Apple. تتشابه مبادئ عمل HLS و RTMP تمامًا ، ولكن في حالات HLS ، يتم تقسيم الدفق إلى سلسلة من الملفات الصغيرة المستندة إلى HTTP. في البداية ، تم تطوير هذا البروتوكول لمتصفح Quicktime و iOS و Safari. ومع ذلك ، يمكن الآن استخدام بروتوكول HLS على العديد من الأنظمة الأساسية الأخرى أيضًا. يتواءم البروتوكول جيدًا مع قيود النطاق الترددي ويكيف جودة الفيديو وفقًا لذلك. بالنظر إلى سرعة توصيل الفيديو ، لن يكون HLS هو الخيار الأفضل ، حيث أن زمن الوصول إليه يبلغ عشرين ثانية.

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

هناك جانب سلبي آخر لبروتوكول RTMP يكمن في ضرورة تثبيت برنامج Flash Player الإضافي ، والذي بدونه سيكون نقل وسائط RTMP مستحيلاً. أيضًا ، هناك بعض المشكلات أثناء تطبيق RTMP لخدمات دفق CDN.

هل لا تزال لديك أسئلة بخصوص بروتوكول RTMP أو تنفيذه؟ وسنساعدك في ذلك ونوضح جميع فوائده في الممارسة العملية.

في الآونة الأخيرة ، صادفت موضوع "خادم البث المباشر المستند إلى NGinx" حول الوحدة النمطية الرائعة لـ Roman Harutyunyan (rarutyunyan) لـ nginx: nginx-rtmp-module. الوحدة سهلة الإعداد للغاية وتتيح لك إنشاء خادم لنشر تسجيلات الفيديو والبث المباشر على أساس nginx.

يمكنك أن تقرأ عن الوحدة نفسها على صفحة GitHub الخاصة بها ، لكني أريد أن أعطي القليل منها أمثلة بسيطةاستعمال. آمل أن يساعد الموضوع الوافدين الجدد على أعمال الفيديو (مثلي).

باختصار حول RTMP

RTMP (Real Time Messaging Protocol) هو بروتوكول بث خاص من Adobe. النقل الافتراضي هو TCP (منفذ 1935). من الممكن أيضًا تغليف RTMP بـ HTTP (RTMPT). عميل RTMP هو بشكل أساسي Adobe Flash Player.
برنامج ترميز الفيديو - حاويات H.264 أو برنامج ترميز الصوت AAC أو nellymoser أو MP3 أو MP4 أو FLV.

نشر مقطع فيديو

بمعنى آخر ، الفيديو عند الطلب (VOD). فقط أضف إلى nginx.conf في قسم rtmp (الخادم (...)).
تطبيق vod (تشغيل / فار / مقاطع فيديو ؛)

(ملاحظة: بالطبع ، لا يجب أن يُطلق على القسم اسم vod)
يمكنك الآن وضع ملف فيديو بالتنسيق الصحيح في المجلد / var / videos و "تغذية" المصدر إلى المشغل ، على سبيل المثال ، rtmp: //server/vod/file.flv. بقدر ما أفهم ، يدعم MP4 في الأصل إعادة لف الفيديو ، بينما يجب فهرسة FLV بشكل منفصل.

الترجمة على الانترنت

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

التطبيق مباشر (السماح بالنشر 1.2.3.4 ؛ السماح بالنشر 192.168.0.0/24 ؛ رفض نشر الكل ؛ السماح بتشغيل الكل ؛ البث المباشر ؛)

على الجهاز الذي سنبث منه ، نحتاج أولاً إلى الحصول على قائمة بأجهزة DirectShow. ابدأ - تشغيل - cmd ، انتقل إلى المجلد ffmpeg / bin وقم بتشغيل:
ffmpeg -list_devices true -f dshow -i dummy

إذا كانت هناك أحرف روسية باسم المصدر الخاص بك ، فيمكن عرضها على أنها krakozyabry. يستخدم المسؤولون الحقيقيون iconv ، وسيقوم رجال بسيطون مثلي بفك شفرة الخطأ على موقع ليبيديف. FFmpeg "تحتاج إلى تغذية نقش مقروء.

الآن ، بمعرفة اسم مصدر الفيديو والصوت ، يمكننا التقاطه باستخدام ffmpeg وإرساله إلى الخادم.

كاميرا ويب

كحد أدنى ، تحتاج إلى تحديد مصدر الفيديو والترميز والخادم:
ffmpeg -f dshow -i video = "Webcam C170" -c: v libx264 -an -f flv "rtmp: //1.2.3.4/live/test.flv مباشر = 1"

بدلاً من "Webcam C170" ، تحتاج إلى استبدال اسم الكاميرا من القائمة.
يشير المفتاح -an إلى أننا لا ننقل دفقًا صوتيًا. إذا كانت هناك حاجة إلى دفق صوتي ، فسيبدو خط الإطلاق كما يلي:
ffmpeg -f dshow -i video = "Webcam C170" -f dshow -i audio = "ميكروفون ..." -c: v libx264 -c: a libfaac -ar 44100 -ac 2 -f flv "rtmp: //1.2 .3.4 / live / test.flv live = 1 "
نحن هنا نستخدم برنامج ترميز libfaac ، معدل العينة 44100 ، قناتان (ستيريو). يمكنك استخدام MP3 بدلاً من AAC (برنامج ترميز libmp3lame).

الكاميرا التناظرية

إذا كانت الكاميرا الخاصة بك تحتوي على إخراج تناظري ، فيمكنك توصيله بجهاز الكمبيوتر الخاص بك باستخدام جهاز التقاط. أستخدم كاميرا PAL رخيصة ولوحة التقاط USB Dealextreme.

Ffmpeg -r pal -s pal -f dshow -i video = "USB2.0 ATV" -c: v libx264 -an -f flv "rtmp: //1.2.3.4/live/test.flv live = 1"

تصوير الشاشة

يوجد خياران هنا: تثبيت FFSplit أو استخدام مسجل التقاط الشاشة مع FFmpeg.
FFSplit أسهل في الاستخدام لأن يحتوي على واجهة مستخدم رسومية لطيفة ، لكنه لا يعمل في ظل نظام XP / 2003.

إذا قررت اختيار الطريقة الثانية ، فسيبدو خط إطلاق FFmpeg كما يلي:
ffmpeg -f dshow -i video = "screen-capture-recorder" -c: v libx264 -an -r 2 -f flv "rtmp: //1.2.3.4/live/test.flv live = 1"
يمكن التقاط دفق صوتي باستخدام برنامج التقاط الصوت الافتراضي.


مثال على التقاط الشاشة داخل التطبيق

تناوب

وبطبيعة الحال ، يمكنك نقل فيديو أو ملف صوتي (أو دفق) FFmpeg إلى الخادم. في المثال أدناه ، نقوم بنقل فيديو MJPEG من كاميرا بعيدة:
ffmpeg -f mjpeg -i video = "http://iiyudana.miemasu.net/nphMotionJpeg؟Resolution=320x240&Quality=Standard" -c: v libx264 -f flv "rtmp: //1.2.3.4/live/test.flv مباشر = 1 "
ولكن لهذه الأغراض ، من المنطقي استخدام خيار الدفع على خادم RTMP نفسه لإزالة الارتباط الوسيط وسحب الدفق على الخادم نفسه.


نوع من كاميرات الويب في اليابان

ضبط وحل المشكلات

-اسم الضبط المسبقيحتوي H.264 على عدة مجموعات من إعدادات نسبة الضغط / السرعة: فائق السرعة ، فائق السرعة ، سريع جدًا ، أسرع ، سريع ، متوسط ​​، بطيء ، أبطأ ، بطيء جدًا. لذلك إذا كنت ترغب في تحسين الأداء ، يجب عليك استخدام:
- فائق السرعة
-crf رقم يؤثر بشكل مباشر على معدل البت والجودة. يأخذ قيمًا من 0 إلى 51 - كلما قلت جودة الصورة. الافتراضي 23 ، 18 - جودة بلا خسارة. يتضاعف معدل البت تقريبًا عندما يتم تقليل CRF بمقدار 6.

-r رقم يحدد الإدخال والإخراج FPS. بالنسبة للمصادر التي تلتقط صورة منها ، يمكنك تعيين -r بدلاً من ذلك -يكررلاستخدام FPS الأصلي.

-rtbufsize رقم حجم المخزن المؤقت في الوقت الحقيقي. إذا استمر حدوث تجاوزات في المخزن المؤقت وإسقاط الإطارات ، فيمكنك تعيين مخزن مؤقت كبير (على سبيل المثال 100000 كيلو) ، ولكن يمكن أن يؤدي ذلك إلى زيادة زمن انتقال الإرسال.

-pix_fmtيحدد نموذج اللون. إذا كان لديك مربع أسود بدلاً من صورة وكان الصوت يعمل ، فحاول وضعه yuv420 صأو yuv422p.

العرض × الارتفاع حجم الصورة المدخلات والمخرجات.

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

-keyint_min رقم الحد الأدنى لعدد الإطارات بين الإطارات الرئيسية.

-vf "المحاصيل = w: h: x: y"قص الفيديو

-ضبط زمن الانتقال الصفريالخيار "السحري" لتقليل تأخير البث. لم أتمكن من معرفة ما يفعله بالضبط ...

-مدة التحليل 0تعطيل تحليل المدة ، مما يساعد على تقليل زمن انتقال البث

بالإضافة إلى خيارات الصوت التي تمت مناقشتها أعلاه ، قد تحتاج إلى ذلك نسخة -acodecفي حالة أن دفق الصوت الخاص بك لا يتطلب تحويلًا إضافيًا إلى MP3 / AAC.

مثال: البث من كاميرا ويب بزمن انتقال منخفض بدون صوت ، ارسم الوقت الحالي في أعلى الصورة

Ffmpeg -r 25 -rtbufsize 1000000k -analyzeduration 0 -s vga -copyts -f dshow -i video = "Webcam C170" -vf "drawtext = fontfile = verdana.ttf: [بريد إلكتروني محمي]: حجم الخطوط = 48: مربع = 1: [بريد إلكتروني محمي]: text =٪ (localtime) "-s 320x240 -c: v libx264 -g 10 -keyint_min 1 -preset UltraFast -tune zerolatency -crf 25 -an -r 3 -f flv" rtmp: //1.2.3.4: 1935 / live / b.flv live = 1 "

لاعب في الموقع

كل شيء بسيط هنا. قم بتثبيت أحد المشغلات المشهورة على موقعك ، على سبيل المثال