EXOPlayer Live Streaming - التنفيذ ونصائح مفيدة

نشرت: 2018-06-08

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

EXOPlayer البث المباشر للصورة الرئيسية

نظرة عامة قصيرة

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

كان السبب الأول والأهم لإصداره هو ، بالطبع ، تنفيذ HTTP Live Streaming (HLS) - وهو بروتوكول للبث الإعلامي طورته شركة Apple. في ذلك ، يتكون محتوى الفيديو من أجزاء يتم تحميلها في الوقت الفعلي وبمعدل نقل بت تكيفي. هذه هي الطريقة التي أصبح بها البث المباشر من ExoPlayer بديلاً قابلاً للتخصيص بالكامل لواجهات برمجة تطبيقات MediaPlayer الأصلية ، مما يوفر واجهة برمجة تطبيقات ملائمة لدفق الفيديو والصوت عبر جميع الأجهزة. الآن يتم استخدامه من قبل آلاف التطبيقات التي تحمل أسماء مشاهير مثل بي بي سي.

البدائل (ولماذا لا تختارها)

بالطبع ، لدى ExoPlayer عدد من المنافسين الناجحين إلى حد ما. وهي تشمل خدمات معروفة مثل:

  • فيميو

vimeo exo يتدفقون الصورة

  • فيتاميو.

صورة Vitamio exoplayer hls

  • LibVLC.

ومع ذلك ، يمكن القول الآن بالتأكيد أن ExoPlayer أفضل بكثير من أي منها. على الرغم من عدد المشتركين المثير للإعجاب ، إلا أن Vimeo يفتقر إلى المرونة ، حيث يتم تخزين المحتوى حصريًا على خوادمه ، مع توفير رابط iframe للتشغيل في WebView. هذا يقلل من أداء التطبيق بشكل كبير. نظرًا لكونه يعتمد على مكتبة FFmpeg الشهيرة وامتلاكه للكثير من الميزات المفيدة ، فقد اكتسب Vitamio شهرة كبيرة. ومع ذلك ، فهي خدمة غير مجانية ، لذلك ليس هناك الكثير من الناس على استعداد لاستخدامها. LibVLC مقيد إلى حد ما في وظائفه ، حيث إنه يتعامل فقط مع المشاريع التي تدعم NDK. هذا هو السبب في أن ExoPlayer هي الخدمة الأكثر شعبية من هذا النوع في الوقت الحاضر.

ما هو إيجابي؟

مثل أي خدمة ، فإن ExoPlayer له مزايا وعيوب. تشمل إيجابياته الرئيسية ما يلي:

  • تنفيذ exoplayer HLS بجميع ميزاته المتقدمة ، مثل معالجة الأخطاء وما إلى ذلك ؛
  • بداية سهلة
  • قاعدة جافا ، والتي تتيح إمكانية تصحيح الأخطاء بنجاح ؛
  • مجموعة متنوعة من الأشكال
  • الدعم الكامل لتشفير Widevine الشائع لنظام Android 4.4 والإصدارات الأحدث.
  • مكونات التحكم القابلة للتخصيص بالكامل ؛
  • إمكانية تشغيل الصوت والفيديو في دفق ؛
  • دعم الترجمة
  • دعم Google Cast SDK ، والذي يمكّنها من العمل مع التلفزيون أو نظام الصوت ؛
  • استخدام MediaSource.

يسمح هذا الأخير بتكوين ليس فقط دفق HLS للطبقة الخارجية ، ولكن أيضًا DASH (DashMediaSource) و SmoothStreaming (SsMediaSource). كما أنه يمكّن مكونات البث المباشر EXOPlayer مثل ترجمات محملة من الجانب ، بالإضافة إلى تشغيل تسلسلات الفيديو. إحدى الميزات الأكثر إثارة التي تمتلكها هي PlayerNotificationManager الذي تم إصداره حديثًا ، والذي يمكّن المستخدم من الحصول على إشعارات التشغيل للتحكم في تدفق الفيديو أو الصوت exo. باستخدامهم ، يمكنك إعادة التوجيه بسلاسة ، والإرجاع ، والانتقال إلى المسار التالي وما إلى ذلك. لإنشاء MediaSource لدفق الفيديو HLS ، تحتاج إلى تنفيذ مثل هذه الإجراءات البسيطة:


متعة getHlsMediaSource (hls: String): MediaSource {
val bandwidthMeter = DefaultBandwidthMeter ()
val applicationName = Util.getUserAgent (سياق ، APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (السياق ، اسم التطبيق ، النطاق الترددي)
مصنع فال = HlsMediaSource.Factory (dataSourceFactory)
إرجاع factory.createMediaSource (Uri.parse (hls))
}


علاوة على ذلك ، تحتوي مكتبة البث المباشر EXOPlayer على مجموعة من القدرات الرائعة الأخرى ، مثل MergingMediaSource و ConcatenatingMediaSource و TrackSelector و LoopingMediaSource. يضمنون جميعًا الأداء المثالي لنظام معقد لإمكانيات تدفق Exo. يحتوي ExoPlayer على مجموعة من هذه المكونات بشكل افتراضي للوظائف الأساسية. ومع ذلك ، يمكنه أيضًا الاستفادة من العديد من التنفيذ المخصص للأداء غير القياسي.

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

ما هو سلبي؟

بالطبع ، لا يوجد شيء مثالي. البث المباشر EXOPlayer ، على الرغم من حداثته وعدد من الميزات المثيرة ، ليس استثناءً من ذلك. عيوبه الرئيسية هي كما يلي:

  • قيود التصميم
  • عدم وجود دعم لما قبل 16 إصدارًا من Android ؛
  • استحالة الأداء الترفيهي للاعب في حالة قفل الشاشة ؛
  • لا رجوع إلى آخر موضع تم عرضه.

يبدو الحل العملي للتحديات الأخيرة كما يلي:


تجاوز متعة onPause () {

سوبر onPause ()

ReleasePlayer ()

}


متعة خاصة releasePlayer () {

إذا ( simpleExoPlayer ! = null ) {

ResetPosition = Math.max (0، simpleExoPlayer !!. contentPosition )

shouldAutoPlay = simpleExoPlayer !!. عندما تكون جاهزًا

simpleExoPlayer !!. release ()

simpleExoPlayer = فارغ

}

}


تجاوز متعة onResume () {

فوق .onResume ()

initPlayer ()

}


initPlayer () { متعة خاصة

simpleExoPlayer = streamConfigurator .createExoPlayer ()

...

SimpleExoPlayerView. useController = صحيح

SimpleExoPlayerView. لاعب = simpleExoPlayer

...

simpleExoPlayer ؟ .seekTo ( استئناف الموضع )

...

}


ومع ذلك ، قد تُعزى هذه المشكلات إلى خصوصيات بنية Android و hyperthreading ، قد يواجه مطورو Android وقتًا عصيبًا إلى حد ما. بخلاف ذلك ، يعد البث المباشر ExoPlayer خيارًا رائعًا.

خوارزمية EXOPlayer البث المباشر

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

  • إضافة ExoPlayer إلى مشروعك بصيغة تبعية. ستضمن إضافته إلى ملف وحدة التطبيق عمله لمكتبة البث المباشر ExoPlayer الكاملة ؛
  • إنشاء مثيل SimpleExoPlayer (استخدم ExoPlayerFactory لذلك) ؛
  • إرفاق المشغل بالمنظر لكلا إخراج الفيديو وإدخال المستخدم السهل ؛
  • إعداد MediaSource الخاص باللاعب للعب.
  • إصدار اللاعب (برمز خاص).

الاستنتاجات

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