নিম্নলিখিত ধারক বিন্যাসে স্ট্রীম সরাসরি ExoPlayer দ্বারা চালানো যেতে পারে। অন্তর্ভুক্ত অডিও এবং ভিডিও নমুনা বিন্যাসগুলিকে অবশ্যই সমর্থিত হতে হবে (বিশদ বিবরণের জন্য নমুনা বিন্যাস বিভাগটি দেখুন)। চিত্র ধারক এবং বিন্যাস সমর্থনের জন্য, চিত্রগুলি দেখুন।
ধারক বিন্যাস | সমর্থিত | মন্তব্য |
---|---|---|
MP4 | হ্যাঁ | |
M4A | হ্যাঁ | |
FMP4 | হ্যাঁ | |
ওয়েবএম | হ্যাঁ | |
ম্যাট্রোস্কা | হ্যাঁ | |
MP3 | হ্যাঁ | কিছু স্ট্রীম শুধুমাত্র ধ্রুবক বিটরেট অনুসন্ধান ব্যবহার করে অনুসন্ধানযোগ্য** |
ওগ | হ্যাঁ | ভরবিস, ওপাস এবং FLAC ধারণ করে |
WAV | হ্যাঁ | |
MPEG-TS | হ্যাঁ | |
MPEG-PS | হ্যাঁ | |
FLV | হ্যাঁ | খোঁজা যায় না* |
ADTS (AAC) | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট ব্যবহার করে অনুসন্ধানযোগ্য** |
FLAC | হ্যাঁ | ExoPlayer লাইব্রেরিতে FLAC লাইব্রেরি বা FLAC এক্সট্র্যাক্টর ব্যবহার করা *** |
এএমআর | হ্যাঁ | শুধুমাত্র ধ্রুবক বিটরেট ব্যবহার করে অনুসন্ধানযোগ্য** |
* চাওয়া অসমর্থিত কারণ ধারকটি মেটাডেটা (উদাহরণস্বরূপ, একটি নমুনা সূচক) সরবরাহ করে না যাতে একটি মিডিয়া প্লেয়ারকে একটি দক্ষ উপায়ে একটি অনুসন্ধান সম্পাদন করার অনুমতি দেওয়া হয়। যদি চাওয়া প্রয়োজন হয়, আমরা আরও উপযুক্ত কন্টেইনার বিন্যাস ব্যবহার করার পরামর্শ দিই।
** এই এক্সট্র্যাক্টরগুলির একটি ধ্রুবক বিটরেট অনুমান ব্যবহার করে আনুমানিক অনুসন্ধান সক্ষম করার জন্য FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
পতাকা রয়েছে৷ এই কার্যকারিতা ডিফল্টরূপে সক্রিয় করা হয় না. এটিকে সমর্থন করে এমন সমস্ত এক্সট্র্যাক্টরের জন্য এই কার্যকারিতা সক্ষম করার সবচেয়ে সহজ উপায় হল DefaultExtractorsFactory.setConstantBitrateSeekingEnabled
ব্যবহার করা, যেমন এখানে বর্ণনা করা হয়েছে।
*** FLAC লাইব্রেরি এক্সট্র্যাক্টর কাঁচা অডিও আউটপুট করে, যা সমস্ত API স্তরে ফ্রেমওয়ার্ক দ্বারা পরিচালনা করা যেতে পারে। ExoPlayer লাইব্রেরি FLAC এক্সট্র্যাক্টর FLAC অডিও ফ্রেমগুলি আউটপুট করে এবং তাই একটি FLAC ডিকোডার থাকার উপর নির্ভর করে (উদাহরণস্বরূপ, একটি MediaCodec
ডিকোডার যা FLAC পরিচালনা করে (এপিআই স্তর 27 থেকে প্রয়োজনীয়), বা FLAC সক্ষম সহ FFmpeg লাইব্রেরি )। DefaultExtractorsFactory
এক্সটেনশন এক্সট্র্যাক্টর ব্যবহার করে যদি অ্যাপ্লিকেশনটি FLAC লাইব্রেরি দিয়ে তৈরি করা হয়। অন্যথায়, এটি ExoPlayer লাইব্রেরি এক্সট্র্যাক্টর ব্যবহার করে।
MediaItem ব্যবহার করে
একটি প্রগতিশীল স্ট্রীম চালাতে, মিডিয়া 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 আপনার অ্যাপের প্রয়োজন অনুযায়ী প্লেব্যাকের অভিজ্ঞতার জন্য একাধিক উপায় প্রদান করে। উদাহরণের জন্য কাস্টমাইজেশন পৃষ্ঠা দেখুন।