শুরু হচ্ছে

সহজ ব্যবহারের ক্ষেত্রে, ExoPlayer দিয়ে শুরু করার জন্য নিম্নলিখিত পদক্ষেপগুলি বাস্তবায়ন করা প্রয়োজন:

  1. আপনার প্রকল্পে নির্ভরতা হিসেবে ExoPlayer যোগ করুন।
  2. একটি ExoPlayer ইনস্ট্যান্স তৈরি করুন।
  3. প্লেয়ারটিকে একটি ভিউতে সংযুক্ত করুন (ভিডিও আউটপুট এবং ব্যবহারকারীর ইনপুটের জন্য)।
  4. খেলার জন্য একটি MediaItem দিয়ে খেলোয়াড়কে প্রস্তুত করুন।
  5. হয়ে গেলে প্লেয়ারটি ছেড়ে দিন।

এই ধাপগুলি নীচে আরও বিশদে বর্ণনা করা হয়েছে। সম্পূর্ণ উদাহরণের জন্য, প্রধান ডেমো অ্যাপে PlayerActivity দেখুন।

নির্ভরতা হিসেবে ExoPlayer যোগ করুন

এক্সোপ্লেয়ার মডিউল যোগ করুন

AndroidX Media3 ব্যবহার শুরু করার সবচেয়ে সহজ উপায় হল আপনার অ্যাপ মডিউলের build.gradle ফাইলে আপনার প্রয়োজনীয় লাইব্রেরির উপর gradle নির্ভরতা যোগ করা।

উদাহরণস্বরূপ, DASH প্লেব্যাক সাপোর্ট এবং UI উপাদান সহ ExoPlayer এর উপর নির্ভর করার জন্য আপনি এইভাবে মডিউলের উপর নির্ভরতা যোগ করতে পারেন:

কোটলিন

implementation("androidx.media3:media3-exoplayer:1.8.0")
implementation("androidx.media3:media3-exoplayer-dash:1.8.0")
implementation("androidx.media3:media3-ui:1.8.0")
implementation("androidx.media3:media3-ui-compose:1.8.0")

খাঁজকাটা

implementation "androidx.media3:media3-exoplayer:1.8.0"
implementation "androidx.media3:media3-exoplayer-dash:1.8.0"
implementation "androidx.media3:media3-ui:1.8.0"
implementation("androidx.media3:media3-ui-compose:1.8.0")

যেখানে 1.8.0 আপনার পছন্দের সংস্করণ (সর্বশেষ সংস্করণটি রিলিজ নোট দেখে পাওয়া যাবে)। সমস্ত মডিউল একই সংস্করণের হতে হবে।

AndroidX Media3 এর লাইব্রেরি মডিউল রয়েছে যা অতিরিক্ত কার্যকারিতা প্রদানের জন্য বহিরাগত লাইব্রেরির উপর নির্ভর করে। কিছু Maven সংগ্রহস্থল থেকে পাওয়া যায়, অন্যগুলি ম্যানুয়ালি তৈরি করতে হয়। বিস্তারিত জানার জন্য লাইব্রেরি ডিরেক্টরি ব্রাউজ করুন এবং পৃথক README দেখুন।

উপলব্ধ লাইব্রেরি মডিউল সম্পর্কে আরও তথ্য Google Maven AndroidX Media পৃষ্ঠায় পাওয়া যাবে।

জাভা 8 সাপোর্ট চালু করুন

যদি ইতিমধ্যেই সক্ষম না করা থাকে, তাহলে আপনাকে android বিভাগে নিম্নলিখিতটি যোগ করে ExoPlayer-এর উপর নির্ভরশীল সমস্ত build.gradle ফাইলে কমপক্ষে Java 8 সমর্থন চালু করতে হবে:

compileOptions {
  targetCompatibility JavaVersion.VERSION_1_8
}

প্লেয়ার তৈরি করুন

আপনি ExoPlayer.Builder ব্যবহার করে একটি ExoPlayer ইনস্ট্যান্স তৈরি করতে পারেন, যা বিভিন্ন ধরণের কাস্টমাইজেশন বিকল্প প্রদান করে। নিম্নলিখিত কোডটি একটি ইনস্ট্যান্স তৈরির সবচেয়ে সহজ উদাহরণ।

কোটলিন

val player = ExoPlayer.Builder(context).build()

জাভা

ExoPlayer player = new ExoPlayer.Builder(context).build();

থ্রেডিং সম্পর্কে একটি নোট

ExoPlayer ইন্সট্যান্সগুলি একটি একক অ্যাপ্লিকেশন থ্রেড থেকে অ্যাক্সেস করতে হবে। বেশিরভাগ ক্ষেত্রে, এটি অ্যাপ্লিকেশনের প্রধান থ্রেড হওয়া উচিত। ExoPlayer এর UI উপাদান বা IMA এক্সটেনশন ব্যবহার করার সময় অ্যাপ্লিকেশনের প্রধান থ্রেড ব্যবহার করা বাধ্যতামূলক।

যে থ্রেডে ExoPlayer ইনস্ট্যান্স অ্যাক্সেস করতে হবে তা প্লেয়ার তৈরি করার সময় একটি Looper পাস করে স্পষ্টভাবে নির্দিষ্ট করা যেতে পারে। যদি কোনও Looper নির্দিষ্ট না থাকে, তাহলে প্লেয়ারটি যে থ্রেডে তৈরি করা হয়েছে তার Looper ব্যবহার করা হয়, অথবা যদি সেই থ্রেডে Looper না থাকে, তাহলে অ্যাপ্লিকেশনের মূল থ্রেডের Looper ব্যবহার করা হয়। সব ক্ষেত্রেই, যে থ্রেড থেকে প্লেয়ারটি অ্যাক্সেস করতে হবে তার Looper Player.getApplicationLooper ব্যবহার করে জিজ্ঞাসা করা যেতে পারে।

এক্সোপ্লেয়ারের থ্রেডিং মডেল সম্পর্কে আরও তথ্যের জন্য, এক্সোপ্লেয়ার জাভাডোকের "থ্রেডিং মডেল" বিভাগটি দেখুন।

প্লেয়ারটিকে একটি ভিউতে সংযুক্ত করুন

ExoPlayer লাইব্রেরি মিডিয়া প্লেব্যাকের জন্য পূর্বে তৈরি UI উপাদানগুলির একটি পরিসর প্রদান করে। এর মধ্যে রয়েছে PlayerView , যা একটি PlayerControlView , একটি SubtitleView এবং একটি Surface ধারণ করে যার উপর ভিডিও রেন্ডার করা হয়। আপনার অ্যাপ্লিকেশনের লেআউট xml-এ একটি PlayerView অন্তর্ভুক্ত করা যেতে পারে। উদাহরণস্বরূপ, প্লেয়ারটিকে ভিউয়ের সাথে আবদ্ধ করার জন্য:

কোটলিন

// Bind the player to the view.
playerView.player = player

জাভা

// Bind the player to the view.
playerView.setPlayer(player);

ExoPlayer-এর পূর্ব-নির্মিত UI উপাদান ব্যবহার ঐচ্ছিক। যেসব ভিডিও অ্যাপ তাদের নিজস্ব UI বাস্তবায়ন করে, তাদের জন্য ExoPlayer-এর setVideoSurfaceView , setVideoTextureView , setVideoSurfaceHolder এবং setVideoSurface পদ্ধতি ব্যবহার করে লক্ষ্য SurfaceView , TextureView , SurfaceHolder বা Surface যথাক্রমে সেট করা যেতে পারে। Listener.onCues কলব্যাক ব্যবহার করে প্লেব্যাকের সময় রেন্ডার করা ক্যাপশন গ্রহণ করা যেতে পারে এবং setImageOutput ব্যবহার করে ডিকোড করা ছবি গ্রহণ করা যেতে পারে।

আরও আরামদায়ক ব্যবহারকারীর অভিজ্ঞতার জন্য, keepScreenOn অ্যাট্রিবিউট যোগ করার কথা বিবেচনা করুন অথবা ExoPlayer-এ ওয়েক লক সেট করার কথা বিবেচনা করুন । আপনি ব্যাকগ্রাউন্ড ওয়ার্ক পেজে ডিভাইসটিকে জাগ্রত রাখে এমন অন্যান্য ক্রিয়াগুলি তদন্ত করতে পারেন।

android:keepScreenOn="true"

Media3 UI উপাদান ব্যবহার এবং তাদের কাস্টমাইজেশন সম্পর্কে আরও পড়ুন UI পৃষ্ঠায়

প্লেলিস্টটি পূরণ করুন এবং প্লেয়ারটি প্রস্তুত করুন

ExoPlayer-এ, প্রতিটি মিডিয়াকে একটি MediaItem দ্বারা প্রতিনিধিত্ব করা হয়। একটি মিডিয়া প্লে করার জন্য, আপনাকে একটি সংশ্লিষ্ট MediaItem তৈরি করতে হবে, এটি প্লেয়ারে যোগ করতে হবে, প্লেয়ারটি প্রস্তুত করতে হবে এবং প্লেব্যাক শুরু করার জন্য play কল করতে হবে:

কোটলিন

// Build the media item.
val mediaItem = MediaItem.fromUri(videoUri)
// Set the media item to be played.
player.setMediaItem(mediaItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

জাভা

// Build the media item.
MediaItem mediaItem = MediaItem.fromUri(videoUri);
// Set the media item to be played.
player.setMediaItem(mediaItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

এক্সোপ্লেয়ার সরাসরি প্লেলিস্ট সমর্থন করে, তাই প্লেয়ারটিকে একাধিক মিডিয়া আইটেম দিয়ে একের পর এক চালানোর জন্য প্রস্তুত করা সম্ভব:

কোটলিন

// Build the media items.
val firstItem = MediaItem.fromUri(firstVideoUri)
val secondItem = MediaItem.fromUri(secondVideoUri)
// Add the media items to be played.
player.addMediaItem(firstItem)
player.addMediaItem(secondItem)
// Prepare the player.
player.prepare()
// Start the playback.
player.play()

জাভা

// Build the media items.
MediaItem firstItem = MediaItem.fromUri(firstVideoUri);
MediaItem secondItem = MediaItem.fromUri(secondVideoUri);
// Add the media items to be played.
player.addMediaItem(firstItem);
player.addMediaItem(secondItem);
// Prepare the player.
player.prepare();
// Start the playback.
player.play();

প্লেব্যাকের সময় প্লেলিস্টটি আপডেট করা যেতে পারে, প্লেয়ারটিকে আবার প্রস্তুত করার প্রয়োজন ছাড়াই। প্লেলিস্ট পৃষ্ঠায় প্লেলিস্টটি পূরণ এবং পরিচালনা সম্পর্কে আরও পড়ুন। মিডিয়া আইটেম পৃষ্ঠায় সাবটাইটেল ফাইল ক্লিপিং এবং সংযুক্ত করার মতো মিডিয়া আইটেম তৈরি করার সময় উপলব্ধ বিভিন্ন বিকল্প সম্পর্কে আরও পড়ুন।

প্লেয়ার নিয়ন্ত্রণ করুন

প্লেয়ার প্রস্তুত হয়ে গেলে, প্লেয়ারে কলিং পদ্ধতি ব্যবহার করে প্লেব্যাক নিয়ন্ত্রণ করা যেতে পারে। এখানে কিছু সর্বাধিক ব্যবহৃত পদ্ধতি রয়েছে:

  • play এবং pause প্লেব্যাক শুরু এবং পজ করুন।
  • seekTo মিডিয়ার মধ্যে অনুসন্ধানের অনুমতি দেয়।
  • hasPrevious , hasNext , previous এবং next প্লেলিস্টের মাধ্যমে নেভিগেট করার অনুমতি দেয়।
  • setRepeatMode মিডিয়া লুপ করা হবে কিনা এবং কীভাবে তা নিয়ন্ত্রণ করে।
  • setShuffleModeEnabled প্লেলিস্ট শাফলিং নিয়ন্ত্রণ করে।
  • setPlaybackParameters প্লেব্যাকের গতি এবং অডিও পিচ সামঞ্জস্য করে।

যদি প্লেয়ারটি PlayerView বা PlayerControlView এর সাথে আবদ্ধ থাকে, তাহলে এই উপাদানগুলির সাথে ব্যবহারকারীর মিথস্ক্রিয়া প্লেয়ারে সংশ্লিষ্ট পদ্ধতিগুলি ব্যবহার করবে।

প্লেয়ারটিকে ছেড়ে দিন

অন্যান্য অ্যাপ্লিকেশনের ব্যবহারের জন্য ভিডিও ডিকোডারের মতো সীমিত সংস্থানগুলি খালি করার জন্য, প্লেয়ারটি যখন আর প্রয়োজন হয় না তখন ছেড়ে দেওয়া গুরুত্বপূর্ণ। এটি ExoPlayer.release এ কল করে করা যেতে পারে।