নিম্নলিখিত কন্টেইনার ফর্ম্যাটের স্ট্রিমগুলি সরাসরি ExoPlayer দ্বারা চালানো যেতে পারে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা ফর্ম্যাটগুলিও সমর্থিত হতে হবে (বিস্তারিত জানার জন্য নমুনা ফর্ম্যাট বিভাগটি দেখুন)। চিত্রের কন্টেইনার এবং ফর্ম্যাট সমর্থনের জন্য, চিত্রগুলি দেখুন।
| ধারক বিন্যাস | সমর্থিত | মন্তব্য |
|---|---|---|
| এমপি৪ | হ্যাঁ | |
| এম৪এ | হ্যাঁ | |
| এফএমপি৪ | হ্যাঁ | |
| ওয়েবএম | হ্যাঁ | |
| মাত্রোস্কা | হ্যাঁ | |
| MP3 সম্পর্কে | হ্যাঁ | কিছু স্ট্রিম শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য** |
| ওগ | হ্যাঁ | Vorbis, Opus এবং FLAC ধারণকারী |
| WAV সম্পর্কে | হ্যাঁ | |
| এমপিইজি-টিএস | হ্যাঁ | |
| এমপিইজি-পিএস | হ্যাঁ | |
| এফএলভি | হ্যাঁ | খোঁজা যায় না* |
| ADTS (AAC) | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য** |
| এফএলএসি | হ্যাঁ | ExoPlayer লাইব্রেরিতে FLAC লাইব্রেরি অথবা FLAC এক্সট্র্যাক্টর ব্যবহার করা *** |
| এএমআর | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট সিকিং ব্যবহার করে অনুসন্ধানযোগ্য** |
* সিকিং সমর্থিত নয় কারণ কন্টেইনারটি মেটাডেটা (উদাহরণস্বরূপ, একটি নমুনা সূচক) প্রদান করে না যাতে মিডিয়া প্লেয়ার দক্ষতার সাথে সিক সম্পাদন করতে পারে। যদি সিকিংয়ের প্রয়োজন হয়, তাহলে আমরা আরও উপযুক্ত কন্টেইনার ফর্ম্যাট ব্যবহার করার পরামর্শ দিচ্ছি।
** এই এক্সট্র্যাক্টরগুলিতে FLAG_ENABLE_CONSTANT_BITRATE_SEEKING ফ্ল্যাগ রয়েছে যা একটি ধ্রুবক বিটরেট অনুমান ব্যবহার করে আনুমানিক অনুসন্ধান সক্ষম করে। এই কার্যকারিতাটি ডিফল্টরূপে সক্ষম হয় না। এটি সমর্থন করে এমন সমস্ত এক্সট্র্যাক্টরের জন্য এই কার্যকারিতা সক্ষম করার সবচেয়ে সহজ উপায় হল DefaultExtractorsFactory.setConstantBitrateSeekingEnabled ব্যবহার করা, যেমনটি এখানে বর্ণিত হয়েছে।
*** FLAC লাইব্রেরি এক্সট্র্যাক্টর কাঁচা অডিও আউটপুট করে, যা সমস্ত API স্তরের ফ্রেমওয়ার্ক দ্বারা পরিচালনা করা যেতে পারে। ExoPlayer লাইব্রেরি FLAC এক্সট্র্যাক্টর FLAC অডিও ফ্রেম আউটপুট করে এবং তাই একটি FLAC ডিকোডারের উপর নির্ভর করে (উদাহরণস্বরূপ, একটি MediaCodec ডিকোডার যা FLAC পরিচালনা করে (API স্তর 27 থেকে প্রয়োজনীয়), অথবা FLAC সক্ষম FFmpeg লাইব্রেরি )। যদি অ্যাপ্লিকেশনটি FLAC লাইব্রেরি দিয়ে তৈরি করা হয় তবে DefaultExtractorsFactory এক্সটেনশন এক্সট্র্যাক্টর ব্যবহার করে। অন্যথায়, এটি ExoPlayer লাইব্রেরি এক্সট্র্যাক্টর ব্যবহার করে।
মিডিয়াআইটিম ব্যবহার করা
একটি প্রগতিশীল স্ট্রিম চালানোর জন্য, মিডিয়া URI দিয়ে একটি MediaItem তৈরি করুন এবং এটি প্লেয়ারে পাঠান।
কোটলিন
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)) // Prepare the player. player.prepare()
জাভা
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(progressiveUri)); // Prepare the player. player.prepare();
প্রোগ্রেসিভমিডিয়াসোর্স ব্যবহার করা
আরও কাস্টমাইজেশন বিকল্পের জন্য, আপনি একটি ProgressiveMediaSource তৈরি করতে পারেন এবং MediaItem এর পরিবর্তে এটি সরাসরি প্লেয়ারে পাঠাতে পারেন।
কোটলিন
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a progressive media source pointing to a stream uri. val mediaSource: MediaSource = ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
জাভা
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a progressive media source pointing to a stream uri. MediaSource mediaSource = new ProgressiveMediaSource.Factory(dataSourceFactory) .createMediaSource(MediaItem.fromUri(progressiveUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
প্লেব্যাক কাস্টমাইজ করা হচ্ছে
আপনার অ্যাপের চাহিদা অনুযায়ী প্লেব্যাক অভিজ্ঞতা তৈরি করার জন্য ExoPlayer আপনাকে একাধিক উপায় প্রদান করে। উদাহরণের জন্য কাস্টমাইজেশন পৃষ্ঠাটি দেখুন।