شرح كيفية عمل مشغل الفيديو باستخدام ExoPlayer

شرح كيفية عمل مشغل الفيديو باستخدام ExoPlayer 
How to develop a video player using ExoPlayer

نتيجة بحث الصور عن ‪exoplayer‬‏

السلام عليكم ورحمة الله
اول درس على المدونة دى وان شاء الله مش هيكون الاخير 
مش هعمل زى عادة العرب ونعيد اختراع العجلة وابدأ من الاول من اساسيات متكررة وبعد فترة ازهق واترك اساسيات مفادتش حد 
عشان كده الدروس دى معظمها هتكون Advanced 
على بركة الله :D

  • لماذا ExoPlayer؟
طيب احنا عندنا عدد من ال Media players ممكن نستخدمهم اهمهم MediaPlayer ودى بتدعم اشهر صيغ الفيديو والصوتيات وحقيقة هى ممتازة للاستخدام العام لكن صعب انك تعملها Customize او تعدل وتضيف فيها ادوات جديدة  ، بما انها تكون مدمجة بالنظام متقدرش تعملها update او upgrade لاي version انت عايزها

- ExoPlayer هى مكتبة بتعملها compile بالتالي تقدر تحدد اي اصدار تستخدمه ، بتدعم عدد كبير جدا جدا من الصيغ ، سهل تعملها Customize وتعدل وتضيف عليها وبيدعم انظمة عالية زى Dash , HLS
لمعرفة اكتر عن الصيغ المتوافقة مع ExoPlayer قم بزيارة الرابط التالي


  • لو مهتم بعرض فيديوهات من اليوتيوب فقط استخدم youtube Api من الرابط التالي

مزيد من التفاصيل هيكون في درس الفرق بين الExoPlayer والMediaPlayer بالتفصيل

نبدأ في الدرس


هنضيف الdependency بتاعت المكتبة في build.gradle app file

    compile 'com.google.android.exoplayer:exoplayer:r2.4.2'

دي اخر اصدار من جوجل

نضيف في الXml الresource بتاعها

    <com.google.android.exoplayer2.ui.SimpleExoPlayerView
        android:id="@+id/playerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


هنعمل reference من المشغل و نحددله الداتا سورس اللى هيشغل منها في صيغة Uri
لو هنفترض هنا ان الفيديو اللى هنشغله اللينك بتاعه مثلا ده ف متغير mVideoUrl

String mVideoUrl = "https://s3-us-west-2.amazonaws.com/askquran-media/video/Arabic_Efasy_001_001_007.mp4";
SimpleExoPlayerView playerView = (playerView) findViewById(R.id.playerView);
playerView.requestFocus();
initializePlayer(Uri.parse(mVideoUrl));
الان جزء مهم وهو انه اللى عملناه لحد الان هو الView مش المشغل نفسه
بنعمل متغير Global نسميه مثلا mExoPlayer
private SimpleExoPlayer mExoPlayer;
والان ميثود الinitialize لتحميل الداتا سورس الى المشغل

 // Initialize the exoPlayer
    private void initializePlayer(Uri mediaUri) {
        if (mExoPlayer == null) {
            TrackSelector trackSelector = new DefaultTrackSelector();
            LoadControl loadControl = new DefaultLoadControl();
            mExoPlayer = ExoPlayerFactory.newSimpleInstance(getContext(), trackSelector, loadControl);
            binding.playerView.setPlayer(mExoPlayer);            
            String userAgent = Util.getUserAgent(getContext(), "");
            MediaSource mediaSource = new ExtractorMediaSource(mediaUri, new DefaultDataSourceFactory(
                    getContext(), userAgent), new DefaultExtractorsFactory(), null, null);
            mExoPlayer.prepare(mediaSource);
            mExoPlayer.setPlayWhenReady(true);
        }
    }

اخر سطر وهو setPlayWhenReady لو عايز الفيديو يشتغل علطول اول ما يكون جزء من الفيديو جاهز وﻻ ﻻ
بالتالي اذا اردت تعمل Pause للفيديو في اي وقت بس  نعمل
mExoPlayer.setPlayWhenReady(false);
والان الفيديو اشتغل لكن لازم نعمل resources handling
بمعنى انه لما اليوزر يخرج من الابلكيشن لازم نوقف المشغل
بنعمل دالة اسمها releasePlayer ونستدعيها من onDestroy
private void releasePlayer() {
    if (mExoPlayer != null) {
        mExoPlayer.stop();
        mExoPlayer.release();
        mExoPlayer = null;
    }
}
وينصح ايضا بعمل ريليز للمشغل في onPause or onStop لانه لما يطلع اليوزر من الابلكيشن مش شرط ان onDestroy يتم تنفيذها التطبيق يفضل شغال في الbackground لحد ما الsystem يعمله destroy
فكده اليوزر هيسمع الصوت شغال حتى لما يطلع من الابلكيشن


  • ممكن تsave الposition قبل ما تعمل release ولما يرجع تانى تعمل seekTo الSaved position بحيث هيكمل من اخر مرة كان واقف عندها قبل ما يخرج 
و ف درس تاني هشرح طريقة سهل لعمل caching للفيديو لان لو خرجت ودخلت هيحمل تانى من الاول 

انا معرفش الناس هتشوف الدرس ده امتى بس ان شاء الله يعجبكم لما تشوفوه :D
نسألكم الدعاء والتعليق والشير واللايك والمتابعة والاشتراك :D 

هذا أحدث مقال

6 comments

اضف تعليق
27 يونيو 2018 في 8:54 م أزال المؤلف هذا التعليق.
avatar
27 يونيو 2018 في 8:55 م

صراحة شرح اكتر من رائع. اللهم اجعله في ميزان حسناتك.

رد
avatar
4 سبتمبر 2018 في 12:46 م

كيف ممكن اضيف جودة الفيديو للمشغل ؟؟

رد
avatar
غير معرف
15 نوفمبر 2019 في 3:58 ص

اعجبني الشرح.. شكرا

رد
avatar