মিডিয়া3

মিডিয়া ব্যবহারের ক্ষেত্রে সমর্থন লাইব্রেরি.
সর্বশেষ আপডেট স্থিতিশীল রিলিজ প্রার্থী মুক্তি বিটা রিলিজ আলফা রিলিজ
20 ডিসেম্বর, 2024 1.5.1 - 1.6.0-beta01 1.6.0-আলফা01

নির্ভরতা ঘোষণা করা

Media3 এর উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:

গ্রোভি কোটলিন
dependencies {
   
def media3_version = "1.4.1"

   
// For media playback using ExoPlayer
    implementation
"androidx.media3:media3-exoplayer:$media3_version"

   
// For DASH playback support with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-dash:$media3_version"
   
// For HLS playback support with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-hls:$media3_version"
   
// For SmoothStreaming playback support with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
   
// For RTSP playback support with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-rtsp:$media3_version"
   
// For MIDI playback support with ExoPlayer (see additional dependency requirements in
   
// https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation
"androidx.media3:media3-exoplayer-midi:$media3_version"
   
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-ima:$media3_version"

   
// For loading data using the Cronet network stack
    implementation
"androidx.media3:media3-datasource-cronet:$media3_version"
   
// For loading data using the OkHttp network stack
    implementation
"androidx.media3:media3-datasource-okhttp:$media3_version"
   
// For loading data using librtmp
    implementation
"androidx.media3:media3-datasource-rtmp:$media3_version"

   
// For building media playback UIs
    implementation
"androidx.media3:media3-ui:$media3_version"
   
// For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation
"androidx.media3:media3-ui-leanback:$media3_version"

   
// For exposing and controlling media sessions
    implementation
"androidx.media3:media3-session:$media3_version"

   
// For extracting data from media containers
    implementation
"androidx.media3:media3-extractor:$media3_version"

   
// For integrating with Cast
    implementation
"androidx.media3:media3-cast:$media3_version"

   
// For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation
"androidx.media3:media3-exoplayer-workmanager:$media3_version"

   
// For transforming media files
    implementation
"androidx.media3:media3-transformer:$media3_version"

   
// For applying effects on video frames
    implementation
"androidx.media3:media3-effect:$media3_version"

   
// For muxing media files
    implementation
"androidx.media3:media3-muxer:$media3_version"

   
// Utilities for testing media components (including ExoPlayer components)
    implementation
"androidx.media3:media3-test-utils:$media3_version"
   
// Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation
"androidx.media3:media3-test-utils-robolectric:$media3_version"

   
// Common functionality for reading and writing media containers
    implementation
"androidx.media3:media3-container:$media3_version"
   
// Common functionality for media database components
    implementation
"androidx.media3:media3-database:$media3_version"
   
// Common functionality for media decoders
    implementation
"androidx.media3:media3-decoder:$media3_version"
   
// Common functionality for loading data
    implementation
"androidx.media3:media3-datasource:$media3_version"
   
// Common functionality used across multiple media libraries
    implementation
"androidx.media3:media3-common:$media3_version"
   
// Common Kotlin-specific functionality
    implementation
"androidx.media3:media3-common-ktx:$media3_version"
}
dependencies {
   
val media3_version = "1.4.1"

   
// For media playback using ExoPlayer
    implementation
("androidx.media3:media3-exoplayer:$media3_version")

   
// For DASH playback support with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-dash:$media3_version")
   
// For HLS playback support with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-hls:$media3_version")
   
// For SmoothStreaming playback support with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version")
   
// For RTSP playback support with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-rtsp:$media3_version")
   
// For MIDI playback support with ExoPlayer (see additional dependency requirements in
   
// https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
    implementation
("androidx.media3:media3-exoplayer-midi:$media3_version")
   
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-ima:$media3_version")

   
// For loading data using the Cronet network stack
    implementation
("androidx.media3:media3-datasource-cronet:$media3_version")
   
// For loading data using the OkHttp network stack
    implementation
("androidx.media3:media3-datasource-okhttp:$media3_version")
   
// For loading data using librtmp
    implementation
("androidx.media3:media3-datasource-rtmp:$media3_version")

   
// For building media playback UIs
    implementation
("androidx.media3:media3-ui:$media3_version")
   
// For building media playback UIs for Android TV using the Jetpack Leanback library
    implementation
("androidx.media3:media3-ui-leanback:$media3_version")

   
// For exposing and controlling media sessions
    implementation
("androidx.media3:media3-session:$media3_version")

   
// For extracting data from media containers
    implementation
("androidx.media3:media3-extractor:$media3_version")

   
// For integrating with Cast
    implementation
("androidx.media3:media3-cast:$media3_version")

   
// For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
    implementation
("androidx.media3:media3-exoplayer-workmanager:$media3_version")

   
// For transforming media files
    implementation
("androidx.media3:media3-transformer:$media3_version")

   
// For applying effects on video frames
    implementation
("androidx.media3:media3-effect:$media3_version")

   
// For muxing media files
    implementation
("androidx.media3:media3-muxer:$media3_version")

   
// Utilities for testing media components (including ExoPlayer components)
    implementation
("androidx.media3:media3-test-utils:$media3_version")
   
// Utilities for testing media components (including ExoPlayer components) via Robolectric
    implementation
("androidx.media3:media3-test-utils-robolectric:$media3_version")

   
// Common functionality for reading and writing media containers
    implementation
("androidx.media3:media3-container:$media3_version")
   
// Common functionality for media database components
    implementation
("androidx.media3:media3-database:$media3_version")
   
// Common functionality for media decoders
    implementation
("androidx.media3:media3-decoder:$media3_version")
   
// Common functionality for loading data
    implementation
("androidx.media3:media3-datasource:$media3_version")
   
// Common functionality used across multiple media libraries
    implementation
("androidx.media3:media3-common:$media3_version")
   
// Common Kotlin-specific functionality
    implementation
("androidx.media3:media3-common-ktx:$media3_version")
}

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যুক্ত করুন দেখুন।

প্রতিক্রিয়া

আপনার প্রতিক্রিয়া জেটপ্যাককে আরও ভাল করতে সাহায্য করে। আপনি প্রশ্ন, পরিচিত সমস্যা এবং বৈশিষ্ট্য অনুরোধের উত্তর খুঁজতে এবং নতুন সমস্যা ফাইল করতে Media3 সমস্যা ট্র্যাকার ব্যবহার করতে পারেন।

সংস্করণ 1.6.0

1.6.0-beta01

ফেব্রুয়ারী 26, 2025

androidx.media3:media3-*:1.6.0-beta01 প্রকাশিত হয়েছে। সংস্করণ 1.6.0-beta01-এ এই কমিট রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • Kotlin 1.9.20 থেকে 2.0.20 এ আপগ্রেড করুন এবং Compose Compiler Gradle প্লাগইন ব্যবহার করুন। KotlinX Coroutines লাইব্রেরি 1.8.1 থেকে 1.9.0 এ আপগ্রেড করুন।
  • এক্সো প্লেয়ার:
    • প্লেয়ার তৈরি করার পর প্রাথমিক অডিও সেশন আইডি আর পাওয়া যায় না। প্রয়োজনে প্রাথমিক আপডেট শুনতে আপনি AnalyticsListener.onAudioSessionIdChanged ব্যবহার করতে পারেন।
  • ট্রান্সফরমার:
    • MediaProjectionAssetLoader যোগ করুন, যা স্ক্রীন রেকর্ডিংয়ের জন্য একটি MediaProjection থেকে মিডিয়া সরবরাহ করে এবং ট্রান্সফরমার ডেমো অ্যাপে স্ক্রিন রেকর্ডিংয়ের জন্য সমর্থন যোগ করুন।
    • Codec ইন্টারফেসে #getInputFormat() যোগ করুন।
    • সম্ভব হলে DefaultVideoFrameProcessor এবং DefaultVideoCompositor কলারের উপর GlObjectsProvider রিলিজ করার দায়িত্বটি সরিয়ে নিন।
  • ভিডিও:
    • দেরী MediaCodecVideoRenderer ডিকোডার ইনপুট বাফার ড্রপ করতে পরীক্ষামূলক ExoPlayer API যোগ করুন যা নির্ভর করে না। DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs দিয়ে এটি সক্ষম করুন।
  • অধিবেশন:
    • প্লেব্যাক বিরতি, বন্ধ বা ব্যর্থ হলে অতিরিক্ত 10 মিনিটের জন্য ফোরগ্রাউন্ড পরিষেবা অবস্থা রাখুন। এটি ব্যবহারকারীদের বিভিন্ন ডিভাইসে ফোরগ্রাউন্ড পরিষেবা বিধিনিষেধ ঝুঁকি ছাড়াই এই সময়সীমার মধ্যে প্লেব্যাক পুনরায় শুরু করতে দেয়৷ উল্লেখ্য যে, player.pause() কল করার সময় stopSelf() এর আগে ফোরগ্রাউন্ড পরিষেবা বন্ধ করতে ব্যবহার করা যাবে না যখন onTaskRemoved ওভাররাইড করার সময়, পরিবর্তে MediaSessionService.pauseAllPlayersAndStopSelf() ব্যবহার করুন।
    • প্লেব্যাক একটি ত্রুটি বা বন্ধ অবস্থায় প্রবেশ করলে বিজ্ঞপ্তি দৃশ্যমান রাখুন। প্লেলিস্ট সাফ হলে বা প্লেয়ার রিলিজ হলেই বিজ্ঞপ্তিটি সরানো হয়।
    • অ্যান্ড্রয়েড প্ল্যাটফর্ম মিডিয়া সেশন অ্যাকশনগুলির পরিচালনার উন্নতি করুন ACTION_PLAY এবং ACTION_PAUSE উপলব্ধ কমান্ড অনুসারে শুধুমাত্র একটি সেট করতে এবং যদি তাদের মধ্যে শুধুমাত্র একটি সেট করা থাকে তবে গ্রহণ করুন৷
  • অপ্রচলিত চিহ্নগুলি সরান:
    • নিম্নোক্ত অপ্রচলিত DownloadHelper পদ্ধতিগুলি সরানো হয়েছে:
      • Constructor DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[]) , এর পরিবর্তে DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList) ব্যবহার করুন।
      • getRendererCapabilities(RenderersFactory) , সমতুল্য আচরণ একটি RenderersFactory এর সাথে একটি DefaultRendererCapabilitiesList তৈরি করে এবং DefaultRendererCapabilitiesList.getRendererCapabilities() কল করে অর্জন করা যেতে পারে।
    • সরানো হয়েছে PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat) পদ্ধতি। PlayerNotificationManager.setMediaSessionToken(MediaSession.Token) ব্যবহার করুন এবং পরিবর্তে (MediaSession.Token) compatToken.getToken() পাস করুন।

সংস্করণ 1.6.0-alpha03

ফেব্রুয়ারি 06, 2025

androidx.media3:media3-*:1.6.0-alpha03 প্রকাশিত হয়েছে। 1.6.0-alpha03 সংস্করণে এই কমিট রয়েছে।

  • এক্সো প্লেয়ার:
    • অপ্রত্যাশিত মিডিয়াতে ক্লিপিংয়ের অনুমতি দিতে ClippingMediaSource বিকল্প যোগ করুন।
    • বাগ ঠিক করুন যেখানে প্রি-ওয়ার্মিং এর মাধ্যমে মিডিয়া আইটেম ট্রানজিশনের পরে ব্লক করতে পারে।
  • অডিও:
    • androidx.media3.common.audio.SonicAudioProcessor চূড়ান্ত করুন।
  • ভিডিও:
    • MediaCodecVideoRenderer.shouldUsePlaceholderSurface সুরক্ষিত তে পরিবর্তন করুন যাতে অ্যাপ্লিকেশনগুলি প্লেসহোল্ডার সারফেসের ব্যবহার ব্লক করতে ওভাররাইড করতে পারে ( #1905 )।
    • অনুসন্ধানের গতি বাড়ানোর জন্য পরীক্ষামূলক ExoPlayer AV1 নমুনা নির্ভরতা পার্সিং যোগ করুন। নতুন DefaultRenderersFactory.experimentalSetParseAv1SampleDependencies API দিয়ে এটি সক্ষম করুন৷
  • Muxers:
    • ডিফল্টরূপে Mp4Muxer নমুনা ব্যাচিং এবং অনুলিপি অক্ষম করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • androidx.media3.exoplayer.audio.SonicAudioProcessor সরানো হয়েছে।

সংস্করণ 1.6.0-alpha02

30 জানুয়ারী, 2025

androidx.media3:media3-*:1.6.0-alpha02 প্রকাশিত হয়েছে। সংস্করণ 1.6.0-alpha02-এ এই কমিট রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • SimpleBasePlayer এ বাগ ফিক্স করুন যেখানে null MediaMetadata সহ setPlaylist পরে State একটি নতুন currentMediaItemIndex সেট করা মেটাডেটা ( #1940 ) পুনঃমূল্যায়ন করে না।
  • এক্সো প্লেয়ার:
    • MediaCodecVideoRenderer ব্যবহার করে প্লেব্যাকের জন্য পরীক্ষামূলক 'ExoPlayer' প্রি-ওয়ার্মিং সমর্থন যোগ করুন। ExoPlayer এ একটি সেকেন্ডারি MediaCodecVideoRenderer প্রদান করতে experimentalSetEnableMediaCodecVideoRendererPrewarming এর মাধ্যমে আপনি DefaultRenderersFactory কনফিগার করতে পারেন। সক্রিয় থাকলে, মিডিয়া আইটেম ট্রানজিশন লেটেন্সি কমাতে প্লেব্যাকের সময় ExoPlayer ধারাবাহিক মিডিয়া আইটেমগুলির ভিডিও পূর্ব-প্রক্রিয়া করে।
    • একটি মিড-রোল বিজ্ঞাপনের পরে বিষয়বস্তু মিডিয়াতে রূপান্তর করার সময় অতিরিক্ত ডিকোড-শুধু ফ্রেমগুলি দ্রুত ধারাবাহিকভাবে প্রদর্শিত হতে পারে এমন সমস্যাটি সমাধান করুন৷
    • DefaultRenderersFactory ফ্যাক্টরিতে দুটি MetadataRenderer দৃষ্টান্ত যুক্ত করুন অ্যাপগুলিকে ডিফল্টরূপে মেটাডেটার দুটি ভিন্ন স্কিম পেতে সক্ষম করতে।
    • DeviceInfo এবং ডিভাইসের ভলিউম অ্যাসিঙ্ক্রোনাসভাবে শুরু করুন (যদি setDeviceVolumeControlEnabled ব্যবহার করে সক্ষম করা থাকে)। ExoPlayer.Builder.build() , এবং Player.Listener onDeviceInfoChanged এবং onDeviceVolumeChanged এর মাধ্যমে পরিবর্তনগুলিকে অবহিত করার পরে এই মানগুলি অবিলম্বে উপলব্ধ হয় না৷
    • প্লেব্যাক বিরাম দেওয়া হলে একটি খণ্ডের চলমান লোড বাতিল করা উচিত কিনা তা পুনরায় মূল্যায়ন করুন ( #1785 )।
  • ট্রান্সফরমার:
    • MediaMetricsManager ব্যবহার করে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সমর্থন সক্ষম করুন৷ ট্রান্সফরমার প্ল্যাটফর্মে ইভেন্ট এবং কর্মক্ষমতা ডেটা সম্পাদনা করে, যা ডিভাইসে সিস্টেমের কার্যকারিতা এবং ডিবাগিং তথ্য প্রদান করতে সহায়তা করে। ডিভাইসের ব্যবহারকারীর দ্বারা ব্যবহার এবং ডায়াগনস্টিক ডেটা ভাগ করা সক্ষম হলে এই ডেটা Google দ্বারা সংগ্রহ করা যেতে পারে৷ অ্যাপগুলি Transformer.Builder.setUsePlatformDiagnostics(false) দিয়ে ট্রান্সফরমারের জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে অবদান রাখা থেকে অপ্ট-আউট করতে পারে।
    • InAppMuxer InAppMp4Muxer এবং InAppFragmentedMp4Muxer এ বিভক্ত করুন। আপনি একটি নন-ফ্র্যাগমেন্টেড MP4 ফাইল তৈরি করতে InAppMp4Muxer ব্যবহার করেন, যেখানে InAppFragmentedMp4Muxer একটি খণ্ডিত MP4 ফাইল তৈরির জন্য।
    • Muxer ইন্টারফেস media3-muxer থেকে media3-transformer সরান।
    • ট্রান্সকোডিং এবং ট্রান্সমক্সিং ডলবি ভিশন (প্রোফাইল 8) ফর্ম্যাটের জন্য সমর্থন যোগ করুন।
  • নিষ্কাশনকারী:
    • 1 বা 2 বাইটে (4 এর পরিবর্তে) দৈর্ঘ্যের সাথে NAL ইউনিটগুলির হ্যান্ডলিং ঠিক করুন।
    • MP4 সম্পাদনা তালিকায় ArrayIndexOutOfBoundsException ঠিক করুন যখন সম্পাদনা তালিকা একটি নন-সিঙ্ক ফ্রেমে শুরু হয় যেখানে কোনো পূর্ববর্তী সিঙ্ক ফ্রেম নেই ( #2062 )।
  • অডিও:
    • যখন SpeedChangingAudioProcessor ডিফল্ট প্যারামিটারের সাথে কনফিগার করা থাকে তখন SonicAudioProcessor বাইপাস করবেন না।
    • Sonic#getOutputSize() এ আন্ডারফ্লো ঠিক করুন যা DefaultAudioSink স্টল করতে পারে।
    • MediaCodecAudioRenderer.getDurationToProgressUs() এবং DecoderAudioRenderer.getDurationToProgressUs() ঠিক করুন যাতে প্রদত্ত সময়কাল সঠিকভাবে রিসেট করা যায়।
  • পাঠ্য:
    • TTML: রেফারেন্সের জন্য সমর্থন যোগ করুন tts:origin এবং tts:extent ব্যবহার করে style ( #2953 )।
    • WebVTT এবং SubRip টাইমস্ট্যাম্প ঠিক 3 দশমিক স্থানে সীমাবদ্ধ করুন। পূর্বে আমরা ভুলভাবে যে কোনো দশমিক স্থান পার্স করেছি কিন্তু সর্বদা মানটি মিলিসেকেন্ডে অনুমান করেছিলাম, যার ফলে ভুল টাইমস্ট্যাম্প ( #1997 ) হয়।
    • VobSub সাবটাইটেল ( #8260 ) এর জন্য সমর্থন যোগ করুন।
    • একটি প্লেলিস্টে CEA-608 বা CEA-708 ক্যাপশন সহ ক্লিপ করা আইটেম থাকলে প্লেব্যাক ঝুলানো ঠিক করুন।
    • IllegalStateException ঠিক করুন যখন একটি SSA ফাইলে শূন্য সময়কাল সহ একটি কিউ থাকে (শুরু এবং শেষের সময় সমান) ( #2052 )।
    • সাবটাইটেল পার্সিং ত্রুটিগুলি দমন করুন (এবং লগ) যখন সাবটাইটেলগুলি অডিও এবং ভিডিও ( #2052 ) হিসাবে একই পাত্রে মিক্স করা হয়।
  • Muxers:
    • Mp4Muxer.Builder এবং FragmentedMp4Muxer.Builder উভয় ক্ষেত্রে সেটSampleCopyingEnabled( setSampleCopyingEnabled() জন্য setSampleCopyEnabled() পদ্ধতির নাম পরিবর্তন করা হয়েছে।
    • Mp4Muxer.addTrack() এবং FragmentedMp4Muxer.addTrack() এখন একটি TrackToken এর পরিবর্তে একটি int ট্র্যাক আইডি ফেরত দেয়।
    • Mp4Muxer এবং FragmentedMp4Muxer আর Muxer ইন্টারফেস প্রয়োগ করে না।
  • অধিবেশন:
    • একটি লিগ্যাসি সেশনের সাথে সংযুক্ত MediaController Player পদ্ধতিতে কল করার সময় একটি মুলতুবি আপডেট থেকে পরিবর্তনগুলি বাদ দেওয়া হয়েছে এমন বাগটি ঠিক করুন৷
  • UI:
    • media3-ui-compose PresentationState স্টেট হোল্ডার ক্লাস এবং সংশ্লিষ্ট rememberPresentationState Composable যোগ করুন।
  • HLS এক্সটেনশন:
    • ডলবি ভিশন ফরম্যাট ( #1785 ) সনাক্ত করতে HLS প্লেলিস্ট থেকে SUPPLEMENTAL-CODECS ট্যাগ পার্স করুন।
  • ড্যাশ এক্সটেনশন:
    • মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলিতে বিজ্ঞাপন সন্নিবেশের জন্য আপডেটের ব্যবধান গণনা করার সময় সমস্যাটি সমাধান করুন ( #1698 )।
    • ডলবি ভিশন ফরম্যাট ( #1785 ) সনাক্ত করতে DASH ম্যানিফেস্ট থেকে scte214:supplementalCodecs অ্যাট্রিবিউট পার্স করুন।
    • লাইভ স্ট্রিমগুলিতে পিরিয়ড ট্রানজিশন পরিচালনার উন্নতি করুন যেখানে পিরিয়ডে ঘোষিত সময়কালের ( #1698 ) বাইরে মিডিয়া নমুনা রয়েছে।
  • ডেমো অ্যাপ:
    • PlayerSurface Composable এর আকৃতির অনুপাত নিয়ন্ত্রণ করতে PresentationState ব্যবহার করুন। এটি ContentScale প্রকারের উপর নির্ভর করে এবং প্রথম ফ্রেম রেন্ডার হওয়ার আগে এটিকে শাটার-ওভারলে দিয়ে ঢেকে দেয়।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • ExoPlayer.VideoComponent , ExoPlayer.AudioComponent , ExoPlayer.TextComponent এবং ExoPlayer.DeviceComponent Component সরানো হয়েছে৷

সংস্করণ 1.6.0-alpha01

20 ডিসেম্বর, 2024

androidx.media3:media3-*:1.6.0-alpha01 প্রকাশিত হয়েছে। সংস্করণ 1.6.0-alpha01-এ এই কমিট রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • Format.toBundle(boolean excludeMetadata) পদ্ধতি সরান, পরিবর্তে Format.toBundle() ব্যবহার করুন।
    • androidx.media এ সমতুল্য ক্লাস প্রতিস্থাপন করতে AudioManagerCompat এবং AudioFocusRequestCompat যোগ করুন।
  • এক্সো প্লেয়ার:
    • একটি ভিডিও ট্র্যাক নির্বাচন করার সময় ভাষা বিবেচনা করুন. ডিফল্টরূপে, একটি 'প্রধান' ভিডিও ট্র্যাক নির্বাচন করুন যা নির্বাচিত অডিও ট্র্যাকের ভাষার সাথে মেলে, যদি উপলব্ধ থাকে। স্পষ্ট ভিডিও ভাষার পছন্দগুলি TrackSelectionParameters.Builder.setPreferredVideoLanguage(s) দিয়ে প্রকাশ করা যেতে পারে।
    • DefaultTrackSelector.selectVideoTrack() পদ্ধতিতে selectedAudioLanguage প্যারামিটার যোগ করুন।
    • MediaSourceEventListener.onLoadStarted এবং সংশ্লিষ্ট MediaSourceEventListener.EventDispatcher পদ্ধতিতে retryCount প্যারামিটার যোগ করুন।
    • বাগ ফিক্স করুন যেখানে প্লেলিস্ট আইটেম বা পিরিয়ড মাল্টি-পিরিয়ড ড্যাশ স্ট্রীম এর সময়কালের সাথে যা প্রকৃত বিষয়বস্তুর সাথে মেলে না আইটেমের শেষে ফ্রেম ফ্রিজ হতে পারে ( #1698 )।
    • DefaultLoadControlbufferForPlaybackMs এবং bufferForPlaybackAfterRebufferMs এর ডিফল্ট মান যথাক্রমে 1000 এবং 2000 ms-এ হ্রাস করুন।
    • MediaExtractorCompat যোগ করুন, একটি নতুন ক্লাস যা প্ল্যাটফর্ম MediaExtractor এর সমতুল্য বৈশিষ্ট্য প্রদান করে।
    • BasePreloadManager.Listener একটি টপ-লেভেল PreloadManagerListener সরান।
    • RenderersFactory.createSecondaryRenderer প্রি-ওয়ার্মিং এর জন্য সেকেন্ডারি রেন্ডারার প্রদানের জন্য প্রয়োগ করা যেতে পারে। প্রি-ওয়ার্মিং প্লেব্যাকের সময় দ্রুত মিডিয়া আইটেম স্থানান্তর সক্ষম করে।
    • অ্যাডাপ্টিভ স্ট্রিমিং ফরম্যাট DASH, HLS এবং স্মুথস্ট্রিমিং ( #1951 ) এ ম্যানিফেস্ট অনুরোধের জন্য CmcdData পাঠানো সক্ষম করুন।
    • কোডেকটির MediaCodecInfo প্রদান করুন যা MediaCodecRenderer.onReadyToInitializeCodec ( #1963 ) এ আরম্ভ করা হবে।
    • AdPlaybackStates বিজ্ঞাপন গোষ্ঠীগুলি যুক্ত করার মাধ্যমে বাড়তে দেওয়ার জন্য AdsMediaSource পরিবর্তন করুন। অবৈধ পরিবর্তন সনাক্ত করা হয় এবং একটি ব্যতিক্রম নিক্ষেপ করা হয়.
  • ট্রান্সফরমার:
    • Format ব্যবহার করতে VideoFrameProcessor.registerInputStream এবং VideoFrameProcessor.Listener.onInputStreamRegistered এর প্যারামিটার আপডেট করুন।
    • বিকল্প ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ ফরম্যাটে ট্রান্সমক্সিংয়ের জন্য সমর্থন যোগ করুন।
    • DefaultEncoderFactory ব্যবহার করার সময় HDR স্ট্যাটিক মেটাডেটা তৈরি করুন।
  • নিষ্কাশনকারী:
    • AVI: ধ্রুবক বিটরেট কম্প্রেসড অডিও সহ ফাইলগুলির পরিচালনা ঠিক করুন যেখানে স্ট্রিম হেডার খণ্ডের সংখ্যার পরিবর্তে বাইটের সংখ্যা সংরক্ষণ করে৷
  • অডিও:
    • প্লেব্যাক পুনরায় শুরু হলে কল করার জন্য onAudioPositionAdvancing ঠিক করুন (আগে প্লেব্যাক পজ করা হলে এটি বলা হত)।
  • ভিডিও:
    • MediaCodecVideoRenderer ঠিক করুন যাতে কোনো Surface ছাড়াই, রেন্ডারার শুধুমাত্র-প্রথম দিকের ফ্রেমগুলি এড়িয়ে যায় যদি VideoFrameReleaseControl.getFrameReleaseAction FRAME_RELEASE_TRY_AGAIN_LATER না হয়।
  • পাঠ্য:
    • MediaItem.Builder.setSubtitleConfigurations সাথে কনফিগার করা সমস্ত সাবটাইটেল ফাইল সাগ্রহে লোড করা বন্ধ করুন, এবং পরিবর্তে শুধুমাত্র একটি লোড করুন যদি এটি ট্র্যাক নির্বাচন ( #1721 ) দ্বারা নির্বাচিত হয়।
  • প্রভাব:
    • StaticOverlaySettingsOverlaySettings এর কার্যকারিতা সরানো হয়েছে। গতিশীল ওভারলে সেটিংসের অনুমতি দিতে OverlaySettings সাবক্লাস করা যেতে পারে।
  • Muxers:
    • একটি খুব দীর্ঘ সম্পূর্ণ যোগ্য নাম এড়াতে MuxerException Muxer ইন্টারফেসের বাইরে সরানো হয়েছে।
  • অধিবেশন:
    • 'MediaButtonReceiver.shouldStartForegroundService` ( #1887 ) এ একটি প্যারামিটার হিসেবে 'প্রসঙ্গ' যোগ করুন।
  • UI:
    • media3-ui-compose মডিউলে PlayerSurface Composable যোগ করুন।
    • যোগ করুন PlayPauseButtonState , NextButtonState , PreviousButtonState , RepeatButtonState , ShuffleButtonState ক্লাস এবং সংশ্লিষ্ট rememberPlayPauseButtonState PlayPauseButtonState , rememberNextButtonState , rememberPreviousButtonState , rememberRepeatButtonState , rememberShuffleButtonState media3-ui-compose মডিউলে কম্পোজেবল।
  • HLS এক্সটেনশন:
    • HlsInterstitialsAdsLoader এর প্রথম সংস্করণ যোগ করুন। বিজ্ঞাপন লোডার একটি HLS মিডিয়া প্লেলিস্টের HLS ইন্টারস্টিশিয়াল পড়ে এবং সেগুলিকে AdPlaybackState এ ম্যাপ করে যা AdsMediaSource এ পাঠানো হয়। এই প্রাথমিক সংস্করণটি শুধুমাত্র X-ASSET-URI বৈশিষ্ট্য সহ HLS VOD স্ট্রিমগুলিকে সমর্থন করে৷
    • HlsInterstitialsAdsLoader.AdsMediaSourceFactory যোগ করুন। অ্যাপ্লিকেশানগুলি এটি ব্যবহার করে AdsMediaSource দৃষ্টান্ত তৈরি করতে পারে যা একটি সুবিধাজনক এবং নিরাপদ উপায়ে HlsInterstitialsAdsLoader ব্যবহার করে৷
  • ড্যাশ এক্সটেনশন:
    • DASH ( #1898 ) এর জন্য AC-4 লেভেল-4 ফর্ম্যাট সমর্থন যোগ করুন।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, ইত্যাদি):
    • MPEG-H ডিকোডার মডিউল যোগ করুন যা MPEG-H অডিও ডিকোড করতে স্থানীয় MPEG-H ডিকোডার মডিউল ব্যবহার করে ( #1826 )।
  • ডেমো অ্যাপ:
    • PlayPauseButtonState , NextButton , PreviousButton , RepeatButtonState ব্যবহার করে demo-compose MinimalControls ( PlayPauseButton , NextButtonState , PreviousButtonState ) এবং ExtraControls ( RepeatButton , ShuffleButton ) কম্পোজযোগ্য UI উপাদান যোগ করুন ShuffleButtonState
  • অপ্রচলিত চিহ্নগুলি সরান:
    • অপ্রচলিত AudioMixer.create() পদ্ধতি সরান। পরিবর্তে DefaultAudioMixer.Factory().create() ব্যবহার করুন।
    • নিম্নোক্ত অপ্রচলিত Transformer.Builder পদ্ধতিগুলি সরান:
      • setTransformationRequest() , এর পরিবর্তে setAudioMimeType() , setVideoMimeType() , এবং setHdrMode() ব্যবহার করুন।
      • setAudioProcessors() , একটি EditedMediaItem.Builder.setEffects() এ অডিও প্রসেসর সেট করুন এবং পরিবর্তে Transformer.start() এ পাস করুন।
      • setVideoEffects() , একটি EditedMediaItem.Builder.setEffects() এ ভিডিও ইফেক্ট সেট করুন এবং পরিবর্তে Transformer.start() এ পাস করুন।
      • setRemoveAudio() , পরিবর্তে Transformer.start() এ পাস করা EditedMediaItem থেকে অডিও সরাতে EditedMediaItem.Builder.setRemoveAudio() ব্যবহার করুন।
      • setRemoveVideo() , পরিবর্তে Transformer.start() এ পাস করা EditedMediaItem থেকে ভিডিওটি সরাতে EditedMediaItem.Builder.setRemoveVideo() ব্যবহার করুন।
      • setFlattenForSlowMotion() , পরিবর্তে Transformer.start() এ পাস করা EditedMediaItem সমতল করতে EditedMediaItem.Builder.setFlattenForSlowMotion() ব্যবহার করুন।
      • setListener() , পরিবর্তে addListener() , removeListener() বা removeAllListeners() ব্যবহার করুন।
    • নিম্নোক্ত অপ্রচলিত Transformer.Listener পদ্ধতিগুলি সরান:
      • onTransformationCompleted(MediaItem) , পরিবর্তে onCompleted(Composition, ExportResult) ব্যবহার করুন।
      • onTransformationCompleted(MediaItem, TransformationResult) , পরিবর্তে onCompleted(Composition, ExportResult) ব্যবহার করুন।
      • onTransformationError(MediaItem, Exception) , পরিবর্তে onError(Composition, ExportResult, ExportException) ব্যবহার করুন।
      • onTransformationError(MediaItem, TransformationException) , পরিবর্তে onError(Composition, ExportResult, ExportException) ব্যবহার করুন।
      • onTransformationError(MediaItem, TransformationResult, TransformationException) , পরিবর্তে onError(Composition, ExportResult, ExportException) ব্যবহার করুন।
      • onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest) , পরিবর্তে onFallbackApplied(Composition, TransformationRequest, TransformationRequest) ব্যবহার করুন।
    • অপসারিত TransformationResult ক্লাস সরান। পরিবর্তে ExportResult ব্যবহার করুন।
    • অপসারিত TransformationException ক্লাস সরান। পরিবর্তে ExportException ব্যবহার করুন।
    • অপসারিত Transformer.PROGRESS_STATE_NO_TRANSFORMATION ।PROGRESS_STATE_NO_TRANSFORMATION। পরিবর্তে Transformer.PROGRESS_STATE_NOT_STARTED ব্যবহার করুন।
    • অপসারিত Transformer.setListener() সরান। পরিবর্তে Transformer.addListener() , Transformer.removeListener() বা Transformer.removeAllListeners() ব্যবহার করুন।
    • অপসারিত Transformer.startTransformation() সরান। পরিবর্তে Transformer.start(MediaItem, String) ব্যবহার করুন।
    • অপসারিত SingleFrameGlShaderProgram সরান। পরিবর্তে BaseGlShaderProgram ব্যবহার করুন।
    • Transformer.flattenForSlowMotion সরান। পরিবর্তে EditedMediaItem.flattenForSlowMotion ব্যবহার করুন।

সংস্করণ 1.5

সংস্করণ 1.5.1

ডিসেম্বর 19, 2024

androidx.media3:media3-*:1.5.1 প্রকাশিত হয়েছে। সংস্করণ 1.5.1-এ এই কমিটগুলি রয়েছে।

  • এক্সো প্লেয়ার:
    • এই প্ল্যাটফর্ম API ( #1641 ) এর সাথে রিপোর্ট করা কোডেক টাইমআউট সমস্যা এড়াতে MediaCodec-এ অ্যাসিঙ্ক্রোনাস ডিক্রিপশনের ব্যবহার অক্ষম করুন।
  • নিষ্কাশনকারী:
    • MP3: যখন একটি VBRI ফ্রেমের বিষয়বস্তুর সারণী একটি ফাইলের সমস্ত MP3 ডেটা কভার করে না তখন তাড়াতাড়ি প্লেব্যাক বন্ধ করবেন না ( #1904 )।
  • ভিডিও:
    • MediaCodecAdapter ব্যবহার করার রোলব্যাক onOutputFormatChanged ( #1371 ) এ প্রক্রিয়া করার সময় সরবরাহ করা পিক্সেল আকৃতির অনুপাতের মান সরবরাহ করে।
  • পাঠ্য:
    • ReplacingCuesResolver.discardCuesBeforeTimeUs এ বাগ ফিক্স করুন যেখানে timeUs এ সক্রিয় ক্যু (আগে শুরু হয়েছিল কিন্তু এখনও শেষ হয়নি) ভুলভাবে বাতিল করা হয়েছে ( #1939 )।
  • মেটাডেটা:
    • MediaMetadata ( #1958 ) এ ভরবিস মন্তব্য থেকে ডিস্ক/ট্র্যাক নম্বরিং এবং জেনার বের করুন।

সংস্করণ 1.5.0

নভেম্বর 27, 2024

androidx.media3:media3-*:1.5.0 প্রকাশিত হয়েছে। সংস্করণ 1.5.0 এ এই কমিটগুলি রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • ForwardingSimpleBasePlayer যোগ করুন যা সম্পূর্ণ সামঞ্জস্যতা এবং শ্রোতা হ্যান্ডলিং ( #1183 ) নিশ্চিত করার সময় ছোট সমন্বয় সহ অন্য প্লেয়ারের কাছে ফরওয়ার্ড করার অনুমতি দেয়।
    • getPlaylist() পদ্ধতিতে SimpleBasePlayer.State.playlist প্রতিস্থাপন করুন।
    • SimpleBasePlayer.State.Builder.setPlaylist() এর জন্য ওভাররাইড যোগ করুন একটি প্লেলিস্ট কাঠামো তৈরি করার পরিবর্তে সরাসরি একটি Timeline এবং বর্তমান Tracks এবং Metadata নির্দিষ্ট করতে।
    • minSdk বাড়িয়ে 21 করুন (Android Lollipop)। এটি অন্যান্য সমস্ত AndroidX লাইব্রেরির সাথে সারিবদ্ধ।
    • androidx.media3:media3-common-ktx আর্টিফ্যাক্ট যোগ করুন যা কমন লাইব্রেরির উপরে তৈরি Kotlin-নির্দিষ্ট কার্যকারিতা প্রদান করে
    • media3-common-ktx লাইব্রেরিতে Player.Events শোনার জন্য একটি কোরোটিন ঘোরাতে Player.listen সাসপেন্ডিং এক্সটেনশন ফাংশন যোগ করুন।
    • রানটাইম ক্লাস যাচাইকরণ ব্যর্থতা এড়াতে ডিজাইন করা ম্যানুয়ালি বাইরের লাইনযুক্ত অভ্যন্তরীণ ক্লাসগুলি থেকে @DoNotInline টীকাগুলি সরান৷ R8- এর সাম্প্রতিক সংস্করণগুলি রানটাইম ব্যর্থতা এড়াতে এখন স্বয়ংক্রিয়ভাবে আউট-অফ-লাইন কল করে (তাই ম্যানুয়াল আউট-অফ-লাইনিংয়ের আর প্রয়োজন নেই)। লাইব্রেরির সমস্ত গ্রেডল ব্যবহারকারীদের অবশ্যই ইতিমধ্যেই অ্যান্ড্রয়েড গ্রেডল প্লাগইনের একটি সংস্করণ ব্যবহার করতে হবে যা R8 এর একটি সংস্করণ ব্যবহার করে যা compileSdk = 35 এর কারণে এটি করে। নন-গ্রেডল বিল্ড সিস্টেম সহ লাইব্রেরির ব্যবহারকারীদের তাদের R8-সমতুল্য সঙ্কুচিত/অস্পষ্টকারী পদক্ষেপটি নিশ্চিত করতে হবে যাতে রানটাইম ক্লাস যাচাইকরণ ব্যর্থতা এড়াতে অনুরূপ স্বয়ংক্রিয় আউট-অফ-লাইনিং প্রক্রিয়া করে। এই পরিবর্তনটি ইতিমধ্যেই অন্যান্য AndroidX লাইব্রেরিতে করা হয়েছে
  • এক্সো প্লেয়ার:
    • MediaCodecRenderer.onProcessedStreamChange() এখন প্রতিটি মিডিয়া আইটেমের জন্য কল করা যেতে পারে। আগে এটি প্রথমটির জন্য ডাকা হয়নি। এটি সক্ষম করতে MediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart() ব্যবহার করুন।
    • PreloadMediaSource.PreloadControl.onPreloadError যোগ PreloadMediaSource.PreloadControl
    • অ্যাপে প্রিলোড ইভেন্ট প্রচার করতে BasePreloadManager.Listener যোগ করুন।
    • SNTP ক্লায়েন্ট টাইমআউট পরিবর্তন করার অনুমতি দিন এবং টাইমআউটে বিকল্প ঠিকানাগুলি পুনরায় চেষ্টা করুন ( #1540 )।
    • MediaCodecAdapter.Configuration.flags সরান কারণ ক্ষেত্রটি সর্বদা শূন্য ছিল।
    • ব্যবহারকারীকে Wear OS API 35+ এ প্লেব্যাকের জন্য অন্তর্নির্মিত স্পিকার নির্বাচন করার অনুমতি দিন (যেখানে ডিভাইসটি এর জন্য সমর্থনের বিজ্ঞাপন দেয়)।
    • অডিও ফোকাস হ্যান্ডলিং সক্ষম না হওয়া পর্যন্ত ব্লকিং কলটি Context.getSystemService(Context.AUDIO_SERVICE) এ স্থগিত করুন। এটি নিশ্চিত করে যে অডিও ফোকাস হ্যান্ডলিং সক্ষম না থাকলে ব্লকিং কলটি করা হবে না ( #1616 )।
    • লোডিং ব্যর্থ হলে বাফার করা সময়কাল নির্বিশেষে প্লেব্যাকের অনুমতি দিন ( #1571 )।
    • পৃথক রেন্ডারার প্লেব্যাক প্রস্তুত হওয়ার অনুমতি দিলে সংকেত দিতে AnalyticsListener.onRendererReadyChanged() যোগ করুন।
    • MediaCodec.CryptoException কখনও কখনও একটি "অপ্রত্যাশিত রানটাইম ত্রুটি" হিসাবে রিপোর্ট করা ঠিক করুন যখন MediaCodec অ্যাসিঙ্ক্রোনাস মোডে পরিচালিত হয় (এপিআই 31+ এ ডিফল্ট আচরণ)।
    • PreloadMediaSource.PreloadControl.onContinueLoadingRequested() দিয়ে bufferedPositionUs এর পরিবর্তে bufferedDurationUs পাস করুন। এছাড়াও DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS এ পরিবর্তন করে, অ্যাপগুলিকে তখন ডিফল্ট স্টার্ট পজিশন থেকে একটি নির্দিষ্ট সময়কালের প্রতিনিধিত্বকারী একটি মান পাস করতে হবে যার জন্য সংশ্লিষ্ট মিডিয়া সোর্সটিকে এই অবস্থানের পরিবর্তে একটি প্রিলোড পজিশনের সাথে থাকতে হবে।
    • ForwardingRenderer ইমপ্লিমেন্টেশন যোগ করুন যা অন্য রেন্ডারারের কাছে সমস্ত মেথড কল ফরওয়ার্ড করে ( 1703 )।
    • প্লেলিস্টের পরবর্তী আইটেমের জন্য প্লেলিস্ট প্রিলোডিং যোগ করুন। অ্যাপগুলি সেই অনুযায়ী ExoPlayer.setPreloadConfiguration(PreloadConfiguration) কল করে প্রিলোডিং সক্ষম করতে পারে৷ ডিফল্টরূপে প্রিলোডিং অক্ষম করা হয়েছে৷ যখন অপ্ট-ইন করা হয় এবং প্লেব্যাকের সাথে হস্তক্ষেপ না করে, তখন DefaultLoadControl প্রিলোডিং শুরু করতে এবং চালিয়ে যেতে সীমাবদ্ধ করে যখন প্লেয়ার প্লেব্যাকের জন্য লোড হচ্ছে না। অ্যাপগুলি সেই অনুযায়ী LoadControl.shouldContinuePreloading() প্রয়োগ করে এই আচরণটি পরিবর্তন করতে পারে (যেমন যখন DefaultLoadControl এ এই পদ্ধতিটি ওভাররাইড করা হয়)। কোনো অ্যাপ LoadControl কাস্টম বাস্তবায়ন ব্যবহার করলে LoadControl ডিফল্ট বাস্তবায়ন প্রিলোডিং অক্ষম করে।
    • মেথড যোগ করুন MediaSourceEventListener.EventDispatcher.dispatchEvent() সাবক্লাস শ্রোতাদের ( 1736 ) ইভেন্ট আহ্বান করার অনুমতি দিতে।
    • DefaultPreloadManager.Builder যোগ করুন যা ধারাবাহিকভাবে শেয়ার করা কনফিগারেশনের সাথে DefaultPreloadManager এবং ExoPlayer দৃষ্টান্ত তৈরি করে।
    • LoadControl.onTracksSelected() থেকে Renderer[] প্যারামিটার সরান যেহেতু DefaultLoadControl বাস্তবায়ন ExoTrackSelection[] থেকে স্ট্রিমের ধরন পুনরুদ্ধার করতে পারে।
    • অপ্রচলিত DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[]) এবং ওভাররাইড প্রতিরোধ করার জন্য চূড়ান্ত হিসাবে চিহ্নিত পদ্ধতি। এর পরিবর্তে নতুন DefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[]) ব্যবহার করা উচিত।
    • MergingMediaSource এ সেকেন্ডারি সোর্স থেকে MediaSourceEventListener ইভেন্ট রিপোর্ট করুন। এর ফলে সাইডলোড করা সাবটাইটেল (যা MediaItem.LocalConfiguration.subtitleConfigurations এর সাথে যোগ করা হয়েছে) এর জন্য লোড শুরু/ত্রুটি/বাতিল/সম্পূর্ণ ইভেন্ট রিপোর্ট করা হবে, যা AnalyticsListener থেকে নির্গত ডুপ্লিকেট লোড ইভেন্ট হিসাবে প্রদর্শিত হতে পারে।
    • প্লেব্যাক সম্পূর্ণরূপে বন্ধ করা থেকে সাবটাইটেল এবং মেটাডেটা ত্রুটি প্রতিরোধ করুন। পরিবর্তে সমস্যাযুক্ত ট্র্যাক নিষ্ক্রিয় করা হয়েছে এবং অবশিষ্ট ট্র্যাকগুলির প্লেব্যাক চলতে থাকে ( #1722 )।
      • নতুন সাবটাইটেল হ্যান্ডলিংয়ে (এক্সট্রাকশনের সময়), যুক্ত পার্স (যেমন অবৈধ সাবটাইটেল ডেটা) এবং লোড ত্রুটি (যেমন HTTP 404) onLoadError কলব্যাকের মাধ্যমে নির্গত হয়।
      • লিগ্যাসি সাবটাইটেল পরিচালনায় (রেন্ডারিংয়ের সময়), শুধুমাত্র সম্পর্কিত লোড ত্রুটিগুলি onLoadError কলব্যাকের মাধ্যমে নির্গত হয় যখন পার্স ত্রুটিগুলি নিঃশব্দে উপেক্ষা করা হয় (এটি পূর্ব-বিদ্যমান আচরণ)।
    • বাগ ফিক্স করুন যেখানে প্লেলিস্ট আইটেম বা পিরিয়ড মাল্টি-পিরিয়ড ড্যাশ স্ট্রীম এর সময়কালের সাথে যা প্রকৃত বিষয়বস্তুর সাথে মেলে না আইটেমের শেষে ফ্রেম ফ্রিজ হতে পারে ( #1698 )।
    • শেষ আপডেটের পরে ক্লায়েন্ট পুনরায় আরম্ভ করার পর থেকে সর্বাধিক অতিবাহিত সময় সেট করতে SntpClient এ একটি সেটার যুক্ত করুন ( #1794 )।
  • ট্রান্সফরমার:
    • SurfaceAssetLoader যোগ করুন, যা Surface মাধ্যমে ট্রান্সফরমারে ভিডিও ডেটা সারিবদ্ধ করা সমর্থন করে।
    • ImageAssetLoader একটি IllegalStateException নিক্ষেপ করার পরিবর্তে AssetLoader.onError এর মাধ্যমে অসমর্থিত ইনপুট রিপোর্ট করে।
    • ছবি রপ্তানির জন্য MediaItem.Builder.setImageDurationMs ব্যবহার করে ছবির সময়কাল নির্ধারণ করা বাধ্যতামূলক করুন৷
    • অডিও EditedMediaItems এর ক্রমগুলির ফাঁকগুলির জন্য রপ্তানি সমর্থন যোগ করুন৷
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector : চ্যানেল-ভিত্তিক অডিওর চেয়ে অবজেক্ট-ভিত্তিক অডিও পছন্দ করুন যখন অন্যান্য কারণগুলি সমান হয়।
  • নিষ্কাশনকারী:
    • Mp4Extractor এবং FragmentedMp4Extractor H264 নমুনাগুলি সনাক্ত করার অনুমতি দিন যা পরবর্তী নমুনাগুলির দ্বারা রেফারেন্স হিসাবে ব্যবহৃত হয় না৷
    • AmrExtractor এ সূচক-ভিত্তিক চাওয়া সক্রিয় করতে বিকল্প যোগ করুন।
    • বৈধ ফ্রেমের মধ্যে 128kB-এর বেশি MP3 ফাইলগুলিকে ছেঁটে ফেলা হিসাবে বিবেচনা করুন (অবৈধের পরিবর্তে)। এর মানে শেষ পর্যন্ত নন-MP3 ডেটা সহ ফাইল, MP3 বাইটের দৈর্ঘ্য নির্দেশ করার জন্য অন্য কোনও মেটাডেটা নেই, এখন ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1} ( #1563 )।
    • MP4 ফাইল ( #1659 ) এ সম্পাদনা তালিকা প্রক্রিয়া করার সময় নন-কীফ্রেম মিডিয়া স্টার্ট পজিশনের জন্য প্রিরোল নমুনা হ্যান্ডলিং ঠিক করুন।
    • Mp4Extractor এবং FragmentedMp4Extractor ( #1531 ) এ mdhd বক্স থেকে মিডিয়া সময়কাল ব্যবহার করে উন্নত ফ্রেম রেট গণনা।
    • MP4 সম্পাদনা তালিকায় media_time এর ভুল স্কেলিং ঠিক করুন। যদিও মুভি টাইমস্কেল ব্যবহার করে segment_duration ইতিমধ্যেই সঠিকভাবে স্কেল করা হয়েছিল, media_time এখন ট্র্যাক টাইমস্কেল ব্যবহার করে সঠিকভাবে স্কেল করা হয়েছে, যেমন MP4 ফর্ম্যাট স্ট্যান্ডার্ড ( #1792 ) দ্বারা নির্দিষ্ট করা হয়েছে।
    • সম্পাদনা তালিকা ( #1797 ) সহ MP4-এর জন্য endIndices গণনার মধ্যে আউট-অফ-অর্ডার ফ্রেমগুলি পরিচালনা করুন।
    • -1 মান ( #1819 ) পরিচালনা করতে MP4 ফাইলের mdhd বক্সে মিডিয়া সময়কাল পার্সিং ঠিক করুন।
    • H.263 ভিডিও ( #1821 ) এর জন্য MP4 ফাইলে h263 বক্স সনাক্ত করার জন্য সমর্থন যোগ করুন।
    • AC-4 Level-4 ISO বেস মিডিয়া ফাইল ফরম্যাট সমর্থন যোগ করুন ( #1265 )।
  • ডেটা সোর্স:
    • API স্তর 34 ( #1262 ) এর পরিবর্তে সংস্করণ S এক্সটেনশন 7 থেকে শুরু করার অনুমতি দিতে HttpEngineDataSource আপডেট করুন।
    • DataSourceContractTest : দাবী করে যে DataSource.getUri() সমাধান করা URI ফেরত দেয় (নথিভুক্ত হিসাবে)। যেখানে এটি অনুরোধ করা URI থেকে ভিন্ন, সেখানে নতুন DataSourceContractTest.TestResource.Builder.setResolvedUri() পদ্ধতি ব্যবহার করে পরীক্ষাগুলি এটি নির্দেশ করতে পারে।
    • DataSourceContractTest : দাবি করুন যে DataSource.getUri() এবং getResponseHeaders() তাদের 'ওপেন' মান ফিরিয়ে দেয় একটি ব্যর্থ কলের পরে open() (একটি 'না পাওয়া' রিসোর্সের কারণে) এবং পরবর্তী close() কলের আগে।
      • DataSourceContractTest.getNotFoundResources() ওভাররাইড করা পরীক্ষার সাব-ক্লাসগুলিকে একাধিক 'পাওয়া যায়নি' রিসোর্স প্রদান করতে এবং যে কোনো প্রত্যাশিত শিরোনামও প্রদান করতে দেয়। এটি HTTP 404 (শিরোনাম সহ) এবং "সার্ভার পাওয়া যায়নি" (কোন শিরোনাম নেই) এর মধ্যে পার্থক্য করতে দেয়।
  • অডিও:
    • মিডিয়াতে উপস্থিত থাকলে কোডেকে স্বয়ংক্রিয়ভাবে CTA-2075 লাউডনেস মেটাডেটা কনফিগার করুন।
    • খোঁজার সময় মসৃণ ভলিউম র‌্যাম্প ডাউন নিশ্চিত করুন।
    • অনুসন্ধানের সময় ঘটতে পারে এমন পপ শব্দগুলি ঠিক করুন।
    • Sonic এর টাইম-স্ট্রেচিং/পিচ-শিফটিং অ্যালগরিদমের জন্য ট্রাঙ্কেশন ত্রুটি জমে যাওয়া ঠিক করুন।
    • SpeedChangingAudioProcessor এ বাগ ফিক্স করুন যা ড্রপ আউটপুট ফ্রেম সৃষ্টি করে।
  • ভিডিও:
    • MediaCodecVideoRenderer ডিকোডিং নমুনাগুলি এড়িয়ে চলে যা অন্য নমুনা দ্বারা রেন্ডার করা বা রেফারেন্স হিসাবে ব্যবহৃত হয় না।
    • API 35 এবং তার উপরে, MediaCodecAdapter এখন configure একটি null Surface পেতে পারে এবং কোডেক এটিকে সমর্থন করলে ( MediaCodecInfo.detachedSurfaceSupported ) পূর্বে সেট করা Surface অপসারণের জন্য একটি নতুন পদ্ধতি detachOutputSurface এ কল করতে পারে।
    • MediaCodecAdapter সরবরাহকৃত পিক্সেল আকৃতির অনুপাতের মানগুলি ব্যবহার করুন যদি onOutputFormatChanged ( #1371 ) এ প্রক্রিয়া করার সময় দেওয়া হয়।
    • Galaxy Tab S7 FE-তে ডিভাইসের সমস্যার সমাধান যোগ করুন যার ফলে 60fps সুরক্ষিত H264 স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত হয় ( #1619 )।
    • শেষ নমুনার পরে আটকে যায় এমন কোডেকগুলির জন্য সমাধান যোগ করুন একটি শেষ-অফ-স্ট্রীম সংকেত ফেরত না দিয়ে।
  • পাঠ্য:
    • একটি কাস্টম VoiceSpan যোগ করুন এবং WebVTT ভয়েস স্প্যান ( #1632 ) এর জন্য পপুলেট করুন।
    • খুব বড় সাবটাইটেল টাইমস্ট্যাম্প সহ HLS-এ WebVTT নিশ্চিত করুন (যা মাইক্রোসেকেন্ড হিসাবে উপস্থাপিত হলে এবং 90,000 MPEG টাইমবেস দ্বারা গুণিত হলে 64-বিট long ওভারফ্লো হয়) প্রদর্শিত হয় ( #1763 )।
    • ডলবি ভিশন সামগ্রীতে CEA-608 সাবটাইটেল সমর্থন করুন ( #1820 )।
    • যখন CEA-608 সাবটাইটেল সক্রিয় থাকে তখন DASH মাল্টি-পিরিয়ড স্ট্রিমগুলিতে ঝুলন্ত প্লেব্যাক ঠিক করুন ( #1863 )।
  • মেটাডেটা:
    • বরফযুক্ত বা vnd.dvb.ait বিষয়বস্তু ধারণকারী ট্র্যাকগুলিতে C.TRACK_TYPE_METADATA টাইপ বরাদ্দ করুন৷
  • ছবি:
    • গ্লাইড বা কয়েলের মতো বাহ্যিক চিত্র লোডিং লাইব্রেরির সাথে সরলীকৃত একীকরণের জন্য ExternallyLoadedImageDecoder যোগ করুন।
  • ডেটা সোর্স:
    • FileDescriptorDataSource যোগ করুন, একটি নতুন DataSource যা একটি FileDescriptor ( #3757 ) থেকে পড়তে ব্যবহার করা যেতে পারে।
  • প্রভাব:
    • ছোটখাটো SurfaceTexture স্কেলিং এর জন্য DefaultVideoFrameProcessor সমাধান যোগ করুন। SurfaceTexture একটি ছোট স্কেলিং অন্তর্ভুক্ত থাকতে পারে যা একটি ক্রপ করা বাফারের প্রান্তের চারপাশে 1-টেক্সেল সীমানা কেটে দেয়। এটি এখন এমনভাবে পরিচালনা করা হয় যে আউটপুট প্রত্যাশার কাছাকাছি।
    • গতি বাড়ান DefaultVideoFrameProcessor.queueInputBitmap() । ফলস্বরূপ, Transformer দিয়ে ভিডিওতে ছবি রপ্তানি করা দ্রুততর হয়।
  • আইএমএ এক্সটেনশন:
    • প্লেলিস্ট সাফ করার ফলে ImaServerSideAdInsertionMediaSource এ একটি ArrayIndexOutOfBoundsException হতে পারে এমন বাগ ঠিক করুন।
    • বাগ ফিক্স করুন যেখানে সার্ভার-সাইড ঢোকানো DAI স্ট্রীম প্রিরোল ছাড়াই একটি ArrayIndexOutOfBoundsException হতে পারে যখন শেষ মিডরোল ( #1741 ) বাজবে।
  • অধিবেশন:
    • MediaButtonReceiver.shouldStartForegroundService(Intent) যোগ করুন অ্যাপগুলিকে এই পদ্ধতিটি ওভাররাইড করে প্লেব্যাক পুনরায় চালু করার জন্য আসা একটি প্লে কমান্ডকে দমন করার অনুমতি দিতে৷ ডিফল্টরূপে, পরিষেবাটি সর্বদা শুরু হয় এবং একটি ForegroundServiceDidNotStartInTimeException ( #1528 ) দিয়ে সিস্টেমটি পরিষেবাটি ক্র্যাশ না করে প্লেব্যাক দমন করা যায় না।
    • একটি লিগ্যাসি পরিষেবার সাথে সংযুক্ত থাকাকালীন পদ্ধতির MediaBrowserServiceCompat ভেরিয়েন্টের পরিবর্তে MediaSessionCompat.Callback এ পাঠানো একটি MediaBrowser থেকে পাঠানো কাস্টম কমান্ডের কারণে বাগ সংশোধন করুন৷ এটি লিগ্যাসি পরিষেবা ( #1474 ) দ্বারা ফেরত পাঠানো প্রকৃত রিটার্ন মান পেতে MediaBrowser কে বাধা দেয়।
    • মিডিয়া বোতামের জন্য ব্রডকাস্ট রিসিভার সেট করার সময় নির্দিষ্ট নির্মাতাদের ডিভাইস দ্বারা নিক্ষিপ্ত IllegalArgumentException পরিচালনা করুন ( #1730 )।
    • মিডিয়া আইটেমগুলির জন্য কমান্ড বোতাম যোগ করুন। এটি MediaBrowserCompat সাথে লিগ্যাসি লাইব্রেরির সাথে Custom browse actions হিসাবে পরিচিত ছিল তার জন্য Media3 API যোগ করে। নোট করুন যে মিডিয়া আইটেমগুলির জন্য Media3 কমান্ড বোতামগুলি MediaBrowser এবং MediaController উভয়ের জন্য উপলব্ধ। AAOS-এর কাস্টম ব্রাউজ অ্যাকশন দেখুন।
    • একটি মিডিয়া3 কন্ট্রোলার কখনও কখনও play() অনুরোধ করার পরে একটি সেশন অ্যাপকে একটি ফোরগ্রাউন্ড পরিষেবা শুরু করতে দিতে অক্ষম হয় এমন বাগটি ঠিক করুন৷
    • CommandButton.Builder.setIconUri সীমাবদ্ধ করুন শুধুমাত্র Uris কন্টেন্ট গ্রহণ করতে।
    • একটি লিগ্যাসি MediaBrowserCompat এর সাথে সংযোগ করার সময় প্রাথমিক MediaBrowserCompat এ Media3 ব্রাউজারের সংযোগ ইঙ্গিতগুলি পাস করুন৷ পরিষেবাটি onGetRoot() এ প্রথম কলের সাথে রুট ইঙ্গিত হিসাবে পাস করা সংযোগের ইঙ্গিতগুলি পেতে পারে৷
    • বাগ ফিক্স করুন যেখানে একটি MediaBrowser একটি লিগ্যাসি ব্রাউজার পরিষেবার সাথে সংযুক্ত ছিল, ব্রাউজারটি parentid এ সদস্যতা নেওয়ার পরে পরিষেবার দ্বারা প্রেরিত একটি ত্রুটি পায়নি৷
    • আন্তঃঅপারেবিলিটি আচরণের উন্নতি করুন, যাতে একটি Media3 ব্রাউজার যা একটি লিগ্যাসি MediaBrowserService এর সাথে সংযুক্ত থাকে একটি পিতামাতার সদস্যতা নেওয়ার সময় একটি parentId এর সন্তানদের দুবার অনুরোধ না করে।
  • UI:
    • XML-ভিত্তিক শেয়ার্ড ট্রানজিশনের সমস্যার কারণে PlayerView -in-Compose- AndroidView ওয়ার্কঅ্যারাউন্ড অপ্ট-ইন-এ প্রসারিত/ক্রপ করা ভিডিও তৈরি করুন। AndroidView ভিতরে PlayerView ব্যবহার করা অ্যাপগুলিকে অপ্ট-ইন করার জন্য PlayerView.setEnableComposeSurfaceSyncWorkaround কল করতে হবে ( #1237 , #1594 )।
    • চাহিদা অনুযায়ী পূর্ণস্ক্রীন বোতামের আইকনের আপডেটের অনুমতি দিতে PlayerView setFullscreenButtonState যোগ করুন, যেমন আউট-অফ-ব্যান্ড এবং প্রতিক্রিয়াশীলভাবে একটি ক্লিক ইন্টারঅ্যাকশন ( #1590 , #184 )।
    • অ্যাপ-সংজ্ঞায়িত টেক্সট ট্র্যাক নির্বাচনের পছন্দগুলি থাকলে টেক্সট নির্বাচনে "কোনও নয়" পছন্দ কাজ করছে না এমন বাগ ঠিক করুন।
  • ড্যাশ এক্সটেনশন:
    • একটি সেগমেন্টের মাঝখানে শুরু হওয়া পিরিয়ডের জন্য সমর্থন যোগ করুন ( #1440 )।
  • মসৃণ স্ট্রিমিং এক্সটেনশন:
    • টেক্সট ট্র্যাক ( #1779 ) সহ স্মুথস্ট্রিমিং স্ট্রিমগুলি চালানোর সময় Bad magic number for Bundle ঠিক করুন।
  • RTSP এক্সটেনশন:
    • এনকোড করা @ অক্ষর ( #1138 ) রয়েছে এমন URLগুলির জন্য ব্যবহারকারীর তথ্য অপসারণ ঠিক করুন।
    • হেডার এক্সটেনশন ( #1225 ) সহ RTP প্যাকেট পার্স করার সময় ক্র্যাশিং ঠিক করুন।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, ইত্যাদি):
    • IAMF ডিকোডার মডিউল যোগ করুন, যা অডিও সংশ্লেষণ করতে libiamf নেটিভ লাইব্রেরি ব্যবহার করে IAMF ট্র্যাক ধারণকারী MP4 ফাইলের প্লেব্যাকের জন্য সমর্থন প্রদান করে।
      • প্লেব্যাক একটি স্টেরিও লেআউটের পাশাপাশি 5.1 এর সাথে স্থানিককরণের সাথে ঐচ্ছিক হেড ট্র্যাকিং সক্ষম করা আছে, কিন্তু বাইনরাল প্লেব্যাক সমর্থন বর্তমানে উপলব্ধ নেই।
    • Android 15 ( #1685 ) এ ডিকোডার এক্সটেনশনের জন্য 16 KB পৃষ্ঠা সমর্থন যোগ করুন।
  • কাস্ট এক্সটেনশন:
    • CastSession সংযোগ বিচ্ছিন্ন হওয়ার পরে টাইমলাইন পরিষ্কার করা বন্ধ করুন, যা প্রেরক অ্যাপটিকে সংযোগ বিচ্ছিন্ন হওয়ার পরে স্থানীয়ভাবে প্লেব্যাক পুনরায় শুরু করতে সক্ষম করে।
    • একটি Context প্রদান করা হলে CastPlayer এর DeviceInfo পপুলেট করুন। এটি একটি RoutingSessionMediaSession লিঙ্ক করতে সক্ষম করে, যা আউটপুট সুইচার ( #1056 ) একীভূত করার জন্য প্রয়োজনীয়।
  • পরীক্ষা উপযোগিতা:
    • DataSourceContractTest এখন যাচাই করার জন্য পরীক্ষাগুলি অন্তর্ভুক্ত করে:
      • ইনপুট স্ট্রীম read position আপডেট করা হয়েছে৷
      • আউটপুট বাফার offset সঠিকভাবে প্রয়োগ করা হয়।
  • ডেমো অ্যাপ
    • ডেমো শর্ট-ফর্ম অ্যাপে মেমরি লিক সমাধান করুন ( #1839 )।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • অপসারিত Player.hasPrevious , Player.hasPreviousWindow() সরান। পরিবর্তে Player.hasPreviousMediaItem() ব্যবহার করুন।
    • অবচিত Player.previous() পদ্ধতি সরান। পরিবর্তে Player.seekToPreviousMediaItem() ব্যবহার করুন।
    • অবমূল্যায়িত DrmSessionEventListener.onDrmSessionAcquired পদ্ধতি সরান।
    • অবমূল্যায়িত DefaultEncoderFactory কনস্ট্রাক্টরগুলি সরান। পরিবর্তে DefaultEncoderFactory.Builder ব্যবহার করুন।

সংস্করণ 1.5.0-আরসি 02

নভেম্বর 19, 2024

1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.5.0-আরসি 01

13 নভেম্বর, 2024

1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.5.0-BETA01

30 অক্টোবর, 2024

1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.5.0-আলফা 01

10 সেপ্টেম্বর, 2024

1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.4.0

সংস্করণ 1.4.1

আগস্ট 27, 2024

androidx.media3:media3-*:1.4.1 প্রকাশিত হয়েছে। সংস্করণ 1.4.1 এ এই কমিটস রয়েছে।

  • এক্সো প্লেয়ার:
    • PreloadMediaSource ( #1568 ) এ অসাধারণভাবে প্রিলোড কলব্যাকগুলি হ্যান্ডেল করুন।
    • লোডিং ব্যর্থ হওয়ার সময় বাফার সময়কাল নির্বিশেষে প্লেব্যাকের অনুমতি দিন ( #1571 )।
  • নিষ্কাশনকারী:
    • এমপি 3: একটি Info ফ্রেমের দৈর্ঘ্যের ক্ষেত্রের উপর ভিত্তি করে নন-এমপি 3 ডেটা ট্রেলিং নন-এমপি 3 ডেটা সঠিকভাবে উপেক্ষা করে Searched too many bytes ( #1480 )।
  • পাঠ্য:
    • টিটিএমএল: শতাংশের tts:fontSize মানগুলি নিশ্চিত করার জন্য তারা শতাংশ tts:fontSize মানগুলি।
    • অনুরোধ করা আউটপুট শুরুর সময়টি Subtitle ( #1516 ) এর চূড়ান্ত ইভেন্টের সময়ের চেয়ে বেশি বা সমান হওয়ার কারণে ভুলভাবে পরিচালনা করার কারণে LegacySubtitleUtil IndexOutOfBoundsException ঠিক করুন।
  • DRM:
    • android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE ত্রুটি। এই ত্রুটিটি ফ্রেমওয়ার্ক MediaDrm.requiresSecureDecoder পদ্ধতি ( #1603 ) এর একটি অসম্পূর্ণ বাস্তবায়নের কারণে ঘটে।
  • প্রভাব:
    • GlObjectsProvider একটি release() পদ্ধতি যুক্ত করুন।
  • অধিবেশন:
    • ডকুমেন্টেড হিসাবে ( #1493 ) হিসাবে KEYCODE_HEADSETHOOK একটি ডাবল-ট্যাপকে একটি 'সন্ধান করুন' অ্যাকশনে রূপান্তর করুন।
    • ForegroundServiceDidNotStartInTimeException এক্সসেপশন ( #1581 ) এড়াতে এটিকে উপেক্ষা করবেন কিনা তা সিদ্ধান্ত নেওয়ার সময় MediaButtonReceiver 'প্লে' কমান্ড হিসাবে KEYCODE_HEADSETHOOK হ্যান্ডেল করুন।
  • RTSP এক্সটেনশন:
    • এসডিপি পার্সিংয়ে অবৈধ মিডিয়া বিবরণ এড়িয়ে যান ( #1087 )।

সংস্করণ 1.4.0

25 জুলাই, 2024

androidx.media3:media3-*:1.4.0 প্রকাশিত হয়েছে। সংস্করণ 1.4.0-এ এই কমিট রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • ফরোয়ার্ড তাদের উপেক্ষা করার পরিবর্তে সুরক্ষিত BasePlayer.seekTo() এবং SimpleBasePlayer.handleSeek() পদ্ধতিগুলিতে কল করার জন্য নো-অপের সন্ধান করেছে। আপনি যদি কোনও কাস্টম প্লেয়ারে এই পদ্ধতিগুলি প্রয়োগ করে থাকেন তবে আপনাকে mediaItemIndex == C.INDEX_UNSET সাথে এই অতিরিক্ত কলগুলি পরিচালনা করতে হবে।
    • বর্ধিত জাভা 8 ডেসুগারিং ( #1312 ) এর উপর সংকলন নির্ভরতা সরান।
    • MediaItem.Builder.setImageDurationMs() এ পাস করা সময়কালটি একটি নন-ইমেজ MediaItem জন্য উপেক্ষা করা হয়েছে (ডকুমেন্টেড হিসাবে) নিশ্চিত করুন।
    • Format উদাহরণগুলি সম্পর্কে অ্যাপ্লিকেশন সরবরাহিত কাস্টম তথ্য সঞ্চয় করতে Format.customData যুক্ত করুন।
  • এক্সো প্লেয়ার:
    • BasePreloadManager যুক্ত করুন যা তাদের rankingData দ্বারা নির্ধারিত অগ্রাধিকারগুলির উপর ভিত্তি করে একাধিক উত্সের জন্য প্রিলোডিংকে সমন্বিত করে। এই শ্রেণিটি প্রসারিত করে কাস্টমাইজেশন সম্ভব। DefaultPreloadManager যুক্ত করুন যা উত্সগুলির মিডিয়া নমুনাগুলি মেমরিতে প্রিলোড করার জন্য PreloadMediaSource ব্যবহার করে এবং একটি পূর্ণসংখ্যা rankingData ব্যবহার করে যা ইউআইতে কোনও আইটেমের সূচককে নির্দেশ করে।
    • একাধিক খেলোয়াড়কে সমর্থন করার জন্য LoadControl বাস্তবায়ন সক্ষম করতে LoadControl বেশিরভাগ পদ্ধতিতে PlayerId যুক্ত করুন।
    • Buffer.isDecodeOnly() এবং C.BUFFER_FLAG_DECODE_ONLY সরান। এই পতাকাটি সেট করার দরকার নেই কারণ রেন্ডারার এবং ডিকোডাররা টাইমস্ট্যাম্পের উপর ভিত্তি করে বাফারগুলি এড়িয়ে যাওয়ার সিদ্ধান্ত নেবে। কাস্টম Renderer বাস্তবায়নগুলি বাফার সময়টি কমপক্ষে BaseRenderer.getLastResetPositionUs() কাস্টম SimpleDecoder বাস্তবায়নগুলি প্রয়োজনে isAtLeastOutputStartTimeUs() চেক করতে পারে বা DecoderOutputBuffer.shouldBeSkipped সহ অন্যান্য বাফারগুলি চিহ্নিত করতে পারে Old এগুলি এড়িয়ে যাওয়ার জন্য hold
    • প্রদত্ত rankingData দিয়ে কোনও MediaSource প্রিলোড না করার নির্দেশ দেওয়ার জন্য TargetPreloadStatusControl.getTargetPreloadStatus(T) দ্বারা একটি নাল মান ফেরত দেওয়ার অনুমতি দিন।
    • BasePreloadManager remove(MediaSource) যুক্ত করুন।
    • প্রিলোড ম্যানেজার উদাহরণটি রাখার সময় সমস্ত হোল্ডিং উত্স প্রকাশের জন্য BasePreloadManager reset() যুক্ত করুন।
    • PriorityTaskManager ব্যবহৃত অগ্রাধিকারের মানটি সংজ্ঞায়িত করতে এবং এপিআই 35 থেকে মিডিয়াকোডেক গুরুত্বের জন্য সংজ্ঞায়িত করতে ExoPlayer.setPriority() (এবং Builder.setPriority() ) যুক্ত করুন।
    • শেষ রিভিউর সময় আপডেট করার সাথে সমস্যাটি সমাধান করুন যার ফলস্বরূপ সিএমসিডি ( #1124 ) এর ভুল bs (বাফার অনাহারে) কী তৈরি হয়েছিল।
    • উত্সটি শেষের দিকে লোড হয়েছে তা নির্দেশ করতে PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) যুক্ত করুন। এটি DefaultPreloadManager এবং কাস্টম PreloadMediaSource.PreloadControl বাস্তবায়নগুলি পরবর্তী উত্সটি প্রিলোড করতে বা অন্যান্য পদক্ষেপ নিতে দেয়।
    • আইটেমগুলির শেষে নীরবতা এড়িয়ে যাওয়া বাগটি ঠিক করুন প্লেব্যাক ব্যতিক্রমকে ট্রিগার করতে পারে।
    • প্রিলোডিং পিরিয়ডটি বাতিল করতে PreloadMediaSource clear যুক্ত করুন।
    • নতুন ত্রুটি কোড PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED যুক্ত করুন।
    • প্রাথমিক সামগ্রী মিডিয়া প্রস্তুতি শেষ হওয়ার আগে AdsMediaSource লোড প্রেরোল বিজ্ঞাপনগুলি ( #1358 ) দিন।
    • মূল সময়টি ইতিমধ্যে ম্যানিফেস্ট থেকে সরানো হওয়ার পরে মাল্টি-পিরিয়ড ড্যাশ লাইভ স্ট্রিমটি পুনরায় প্রস্তুত করার সময় প্লেব্যাকটি STATE_ENDED চলে গেছে এমন বাগটি ফিক্স করুন।
    • PreloadMediaSource.PreloadControl onTimelineRefreshed() এর নাম পরিবর্তন করুন onSourcePrepared() এবং onPrepared()onTracksSelected() । এছাড়াও DefaultPreloadManager.Stage ইন্টডিইএফগুলির নামকরণ করুন।
    • সিপিইউ ওয়েক-সাইকেলগুলির সাথে আরও ভালভাবে সারিবদ্ধ করার জন্য গতিশীল শিডিয়ুলিংয়ের জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন এবং যখন রেন্ডারাররা অগ্রগতি করতে পারে তখন জেগে উঠতে বিলম্ব করুন। আপনার এক্সোপ্লেয়ার উদাহরণটি সেটআপ করার সময় আপনি experimentalSetDynamicSchedulingEnabled() ব্যবহার করে এটি সক্ষম করতে পারেন।
    • Renderer.getDurationToProgressUs() যুক্ত করুন। একজন Renderer এক্সোপ্লেয়ারে ফিরে আসার জন্য এই পদ্ধতিটি বাস্তবায়ন করতে পারে যে প্লেব্যাকটি অবশ্যই রেন্ডারারের অগ্রগতির জন্য অগ্রসর হতে হবে। যদি ExoPlayer experimentalSetDynamicSchedulingEnabled() দিয়ে সেট করা থাকে তবে ExoPlayer তার কাজের কার্য নির্ধারণের সময় গণনা করার সময় এই পদ্ধতিটি কল করবে।
    • MediaCodecAdapter#OnBufferAvailableListener যুক্ত করতে সতর্ক করতে যুক্ত করুন যখন ইনপুট এবং আউটপুট বাফারগুলি MediaCodecRenderer দ্বারা ব্যবহারের জন্য উপলব্ধ থাকে। MediaCodecRenderer এই কলব্যাকগুলি গ্রহণ করার সময় ExoPlayer সংকেত দেবেন এবং যদি ExoPlayer experimentalSetDynamicSchedulingEnabled() দিয়ে সেট করা থাকে, তবে ExoPlayer তার কাজের লুপটি নির্ধারণ করবে কারণ রেন্ডারাররা অগ্রগতি করতে পারে।
    • পৃথক পরামিতিগুলির পরিবর্তে LoadControl পদ্ধতির জন্য ডেটা ক্লাস ব্যবহার করুন।
    • ExoPlayer.isReleased() ডাকা হয়েছে কিনা তা পরীক্ষা করতে Exoplayer.release() যুক্ত করুন।
    • সর্বাধিক অবস্থানটি কনফিগার করতে ExoPlayer.Builder.setMaxSeekToPreviousPositionMs() যুক্ত করুন যার জন্য সর্বাধিক অবস্থানটি seekToPrevious() পূর্ববর্তী আইটেমটি ( #1425 ) সন্ধান করে।
    • কিছু অডিও ফোকাস অসঙ্গতিগুলি ঠিক করুন, যেমন প্লেয়ার বিরতি দেওয়ার সময় পুরো বা ক্ষণস্থায়ী ফোকাস ক্ষতির প্রতিবেদন না করা ( #1436 )।
    • প্রাথমিক প্রস্তুতি পদক্ষেপের পরে অতিরিক্ত ট্র্যাকগুলি ( #1476 ) রিপোর্ট করার কারণে এক্সট্র্যাক্টরদের দ্বারা সৃষ্ট সম্ভাব্য IndexOutOfBoundsException ঠিক করুন।
    • ExoPlayer.setVideoEffect() এর Effects রেন্ডারারের অফসেট অপসারণ ( #1098 ) সহ টাইমস্ট্যাম্পগুলি গ্রহণ করবে।
    • অন্য প্লেলিস্ট আইটেম ( #1483 ) এর সামনে পড়ার সময় ঘটেছিল প্লেয়ার ত্রুটিটি পরিচালনা করার সময় সম্ভাব্য IllegalArgumentException ঠিক করুন।
  • ট্রান্সফরমার:
    • আউটপুট ফাইলের সংশ্লিষ্ট ট্র্যাকটি কীভাবে তৈরি করা হয়েছিল তা নির্দেশ করে ExportResult audioConversionProcess এবং videoConversionProcess যুক্ত করুন।
    • ট্রিম অপ্টিমাইজেশন H.264 স্তরের চেকগুলি রিলাক্স করুন।
    • একটি অনুক্রমে এসডিআর এবং এইচডিআর ইনপুট মিডিয়াগুলির মধ্যে পরিবর্তনের জন্য সমর্থন যুক্ত করুন।
    • রচনা-স্তরের অডিও প্রভাবগুলির জন্য সমর্থন যুক্ত করুন।
    • এইচডিআর ভিডিওগুলিতে ট্রান্সকোডিং আল্ট্রা এইচডিআর চিত্রগুলির জন্য সমর্থন যুক্ত করুন।
    • সমস্যাটি সমাধান করুন যেখানে DefaultAudioMixer পুনরায় সেট করা এবং পুনরায় ব্যবহার করার পরে বাইটের সঠিক পরিমাণ আউটপুট দেয় না।
    • একটি ডিকোডার বাগের চারপাশে কাজ করুন যেখানে পিসিএম ইনপুট পরিচালনা করার সময় স্টেরিওতে অডিও চ্যানেলের সংখ্যা ক্যাপ করা হয়েছিল।
    • ExoPlayerAssetLoader ট্র্যাকগুলি নির্বাচন করার সময়, অডিও চ্যানেল গণনা সীমাবদ্ধতাগুলি উপেক্ষা করুন কারণ তারা কেবল প্লেব্যাকের জন্য আবেদন করে।
    • androidx.media3.transformer.Muxer ইন্টারফেসটি androidx.media3.muxer.Muxer এবং androidx.media3.transformer.Muxer সরান।
    • সামগ্রী URI স্কিমগুলি থেকে HIC চিত্র লোড হচ্ছে ঠিক করুন। ( #1373 )।
    • এভি সিঙ্ক উন্নত করতে AudioGraphInput ইনপুটে অডিও ট্র্যাক সময়কাল সামঞ্জস্য করুন।
    • ExportResult.processedInputs ইনপুটস ফিল্ড সরান। আপনি যদি এই ক্ষেত্রটি কোডেক বিশদগুলির জন্য ব্যবহার করেন তবে পরিবর্তে DefaultDecoderFactory.listener ব্যবহার করুন। কোডেক ব্যতিক্রমের ক্ষেত্রে, কোডেকের বিশদটি ExportException.codecInfo উপলব্ধ থাকবে।
  • নিষ্কাশনকারী:
    • এমপিইজি-টিএস: রোল ফরোয়ার্ড পরিবর্তনটি নিশ্চিত করে যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে। আই-ফ্রেমে কেবলমাত্র এইচএলএস স্ট্রিম ( #1150 ) এবং এইচ .262 এইচএলএস স্ট্রিম ( #1126 ) এ উদ্ভূত সমস্যাগুলি সমাধান করার জন্য ফিক্সগুলি অন্তর্ভুক্ত করে।
    • এমপি 3: অন্তর্নিহিত স্ট্রিম (যেমন ফাইলের আকার, বা এইচটিটিপি Content-Length শিরোনাম) দ্বারা প্রতিবেদন করা আকারের তুলনায় কোনও Info ফ্রেম থেকে ডেটা আকার পছন্দ করুন। এটি নিয়মিত বিটরেট থেকে গণনা অনুসন্ধান থেকে অ-খেলাধুলা ট্রেলার ডেটা (যেমন অ্যালবাম আর্টওয়ার্ক) বাদ দিতে সহায়তা করে, সন্ধানকে আরও সঠিক করে তোলে ( #1376 )।
    • এমপি 3: Info ফ্রেমের পরে ফ্রেমের বিটরেট থেকে এক্সট্রাপোলেট করার পরিবর্তে ধ্রুবক বিটরেট সন্ধানের জন্য গড় বিটরেট গণনা করতে একটি Info ফ্রেমে ফ্রেম গণনা এবং অন্যান্য ডেটা ব্যবহার করুন (যেমন PCUT ফ্রেম ( #1376 )।
    • এভিআই পাত্রে পিসিএম অডিও ফর্ম্যাট নিষ্কাশন ঠিক করুন।
  • অডিও:
    • ডিটিএস ফিক্স করুন: এক্স প্রোফাইল 2 পাসথ্রু প্লেব্যাকের জন্য এনকোডিং বৈশিষ্ট্য ( #1299 )।
    • অফলোড প্লেব্যাকের জন্য, AudioTrack.stop() কল করার আগে DefaultAudioSink স্ট্রিম সমাপ্তির জন্য ট্র্যাকিং ক্ষেত্রটি পুনরায় সেট করুন যাতে AudioTrack.StreamEventCallback#onPresentationEnded সঠিকভাবে সনাক্ত করে যখন সমস্ত মুলতুবি ডেটা বাজানো হয়।
    • SilenceSkippingAudioProcessor বাগটি ঠিক করুন যেখানে বিভিন্ন অডিও ফর্ম্যাটগুলির মধ্যে রূপান্তর (উদাহরণস্বরূপ স্টেরিও থেকে মনোও) প্রসেসরটিকে একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারে ( #1352 )।
    • MediaCodecAudioRenderer.getDurationToProgressUs() প্রয়োগ করুন যাতে এক্সপ্লেয়ারটি যখন মিডিয়াকোডেকিউডিয়েন্ডারার অগ্রগতি করতে পারে তখন তার মূল কাজের লুপটি গতিশীলভাবে নির্ধারণ করে।
  • ভিডিও:
    • ইস্যু করুন যেখানে Listener.onRenderedFirstFrame() খুব তাড়াতাড়ি এসে পৌঁছেছে যখন মিড-প্লেব্যাকের পৃষ্ঠগুলি স্যুইচ করার সময়।
    • প্রয়োজনে একটি সামঞ্জস্যপূর্ণ এভি 1 ডিকোডার ব্যবহার করতে ডলবি ভিশনের জন্য ডিকোডার ফ্যালব্যাক লজিকটি ঠিক করুন ( #1389 )।
    • কোডেক ব্যতিক্রম ঠিক করুন যা কোনও ভিডিও রেন্ডারার মিড-প্লেব্যাক সক্ষম করার কারণে হতে পারে।
  • পাঠ্য:
    • ইস্যু ঠিক করুন যেখানে অনুসন্ধানের অবস্থানটি এড়িয়ে যাওয়ার আগে সাবটাইটেলগুলি শুরু হয়। এই সমস্যাটি কেবল মিডিয়া 3 1.4.0-ALPHA01 এ চালু হয়েছিল।
    • ডিফল্ট সাবটাইটেল পার্সিং আচরণ পরিবর্তন করুন তাই এটি রেন্ডারিংয়ের সময় নিষ্কাশনের সময় ঘটে ( এক্সপ্লেয়ারটির আর্কিটেকচার ডায়াগ্রামটি এক্সট্রাকশন এবং রেন্ডারিংয়ের মধ্যে পার্থক্যের জন্য দেখুন)।
      • এই পরিবর্তনটি MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false) এবং TextRenderer.experimentalSetLegacyDecodingEnabled(true) উভয়কেই কল করে ওভাররাইড করা যেতে পারে। এই উপাদানগুলি কীভাবে একটি ExoPlayer উদাহরণে নিমজ্জিত করা যায় তার জন্য কাস্টমাইজেশনের উপর ডক্সগুলি দেখুন। এই পদ্ধতিগুলি (এবং উত্তরাধিকার সাবটাইটেল ডিকোডিংয়ের জন্য সমস্ত সমর্থন) ভবিষ্যতের প্রকাশে সরানো হবে।
      • কাস্টম SubtitleDecoder বাস্তবায়নের সাথে অ্যাপ্লিকেশনগুলি পরিবর্তে SubtitleParser (এবং SubtitleParser.Factory SubtitleDecoderFactory পরিবর্তে) প্রয়োগ করতে সেগুলি আপডেট করতে হবে।
    • পিজিএস: আক্ষরিক রঙের মান ( #1367 ) এর পরিবর্তে 0 রঙ সূচক হিসাবে 0 সমাধান করতে রান-দৈর্ঘ্যের ডিকোডিং ঠিক করুন।
    • সিইএ -708: rowLock মান উপেক্ষা করুন। সিইএ -708-ই এস -2023 স্পেসে বলা হয়েছে যে স্ট্রিমের উপস্থিত মানগুলি নির্বিশেষে rowLock এবং columnLock উভয়কেই সত্য বলে ধরে নেওয়া উচিত ( columnLock সমর্থন প্রয়োগ করা হয়নি, সুতরাং এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
      • এটি মূলত 1.3.0-alpha01 রিলিজ নোটগুলিতে অন্তর্ভুক্ত ছিল, তবে পরিবর্তনটি দুর্ঘটনাক্রমে 1.3.0-rc01 রিলিজের আগে ফিরিয়ে দেওয়া হয়েছিল। এটি এখন স্থির, সুতরাং পরিবর্তনটি আবার উপস্থিত রয়েছে।
    • সিইএ -708: 'সেট পেন লোকেশন' কমান্ড ( #1315 ) এর এক্সোপ্লেয়ারের নিষ্পাপ হ্যান্ডলিং দ্বারা যুক্ত হওয়া ডুপ্লিকেট নিউলাইনগুলি এড়িয়ে চলুন।
    • যখন কোনও ওয়েবভিটিটি সাবটাইটেল নমুনায় কোনও ড্যাশ স্ট্রিমের অংশ হিসাবে ( #1516 ) অংশ হিসাবে কোনও সংকেত থাকে না তখন LegacySubtitleUtil থেকে একটি IllegalArgumentException ঠিক করুন।
  • মেটাডেটা:
    • আইডি 3 বাছাই ট্যাগগুলিতে এমপি 4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম বাছাই' ( soal ), 'শিল্পী বাছাই' ( soar ) এবং 'অ্যালবাম আর্টিস্ট বাছাই' ( soaa ) এমপি 4 ট্যাগগুলি ভুলভাবে TSO2 , TSOA এবং TSOP আইডি 3 ট্যাগগুলিতে ( #1302 ) ম্যাপ করা হয়েছিল।
    • এমপি 4 (/আইটিউনস) সংখ্যাসূচক gnre (জেনার) এবং tmpo (টেম্পো) ট্যাগগুলি পড়ার ঠিক করা হয়েছে যখন মানটি একের বেশি দীর্ঘ হয়।
    • MediaMetadata.genre ( #1305 ) এ আইডি TCON ফ্রেম প্রচার করুন।
  • ছবি:
    • নন-স্কোয়ার ড্যাশ থাম্বনেইল গ্রিডগুলির জন্য সমর্থন যুক্ত করুন ( #1300 )।
    • এপিআই 34+ এর জন্য AVIF এর জন্য সমর্থন যুক্ত করুন।
    • ExoPlayer.setImageOutput() এর জন্য পূর্ববর্তী সেট ImageOutput সাফ করার জন্য null প্যারামিটার হিসাবে অনুমতি দিন।
  • ডেটাসোর্স:
    • android.resource://package/id কাঁচা রিসোর্স ইউআরআইগুলির জন্য সমর্থন প্রয়োগ করুন যেখানে package বর্তমান অ্যাপ্লিকেশনটির প্যাকেজের চেয়ে আলাদা। এটি আগে কাজ করার জন্য নথিভুক্ত ছিল না, তবে নামের চেয়ে অন্য প্যাকেজে সংস্থান অ্যাক্সেস করার আরও কার্যকর উপায়।
    • অধীর আগ্রহে চেক url DataSpec কনস্ট্রাক্টরগুলিতে নন-নুল। এই প্যারামিটারটি ইতিমধ্যে নন-নাল হওয়ার জন্য টীকাযুক্ত ছিল।
    • নির্মাণে ( #1405 ) হার্ড-কোডড না হয়ে open() এর সময় বাইট অ্যারেতে একটি ইউআরআই সমাধান করার জন্য ByteArrayDataSource অনুমতি দিন।
  • DRM:
    • DefaultDrmSessionManagerProvider ম্যানেজারপ্রোভাইডারে ( #1271 ) LoadErrorHandlingPolicy সেট করার অনুমতি দিন।
  • প্রভাব:
    • SpeedChangeEffect একই EditedMediaItem বা Composition মধ্যে একাধিক গতির পরিবর্তনগুলি সমর্থন করুন।
    • আল্ট্রা এইচডিআর বিটম্যাপ ইনপুট থেকে এইচএলজি এবং পিকিউ আউটপুট জন্য সমর্থন।
    • EGL_GL_COLORSPACE_BT2020_HLG_EXT এর জন্য সমর্থন যুক্ত করুন, যা এক্সোপ্লেয়ার.সেটভিডোইফেক্ট এবং ট্রান্সফর্মারের ডিবাগ সারফেসভিউতে এইচএলজি পৃষ্ঠের আউটপুট উন্নত করে।
    • setOverlayFrameAnchor() এ প্রয়োগ করা এক্স এবং ওয়াই মানগুলি উল্টিয়ে ডকুমেন্টেশনের সাথে সামঞ্জস্য করার জন্য ওভারলে ম্যাট্রিক্স বাস্তবায়ন আপডেট করুন। যদি OverlaySettings.Builder.setOverlayFrameAnchor() ব্যবহার করে, তাদের x এবং y মানগুলি -1 দ্বারা গুণ করে ফ্লিপ করুন।
    • ExoPlayer#setVideoEffects ( #821 ) এর সাথে ব্যবহৃত হলে TimestampWrapper ক্র্যাশ হয় যেখানে বাগটি ঠিক করুন।
    • লিনিয়ার রঙ থেকে বৈদ্যুতিক বিটি 709 এসডিআর ভিডিওতে ডিফল্ট এসডিআর রঙের কার্যকারী স্থান পরিবর্তন করুন। মূল কালারস্পেস ধরে রাখতে তৃতীয় বিকল্পও সরবরাহ করুন।
    • সম্পাদিতমিডাই আইটেমসেসেন্স ( #1055 ) এর অনির্দিষ্ট জেড-অর্ডার সংজ্ঞায়িত করার অনুমতি দিন।
    • এইচডিআর সামগ্রীর বিভিন্ন টুকরো জুড়ে একটি ধারাবাহিক আলোকসজ্জা পরিসীমা বজায় রাখুন (এইচএলজি পরিসীমা ব্যবহার করে)।
    • এইচডিআর সামগ্রীতে আল্ট্রা এইচডিআর (বিটম্যাপ) ওভারলেগুলির জন্য সমর্থন যুক্ত করুন।
    • এপিআই 26 এর আগে ব্যবহার করার জন্য SeparableConvolution প্রভাবগুলি অনুমতি দিন।
    • ওভারলে এবং ফ্রেমের গতিশীল পরিসীমা অবশ্যই মেলে অবশ্যই অব্যবহৃত OverlaySettings.useHdr সরান।
    • TextOverlay জন্য এইচডিআর সমর্থন যুক্ত করুন। পাঠ্য ওভারলেটির আলোকসজ্জা OverlaySettings.Builder.setHdrLuminanceMultiplier() এর সাথে সামঞ্জস্য করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • অ্যাপসকে স্থিতিশীল করার জন্য ডিএআই বিজ্ঞাপন স্ট্রিমগুলি খেলতে প্রয়োজনীয় এপিআই প্রচার করুন।
    • ImaServerSideAdInsertionMediaSource.AdLoader replaceAdTagParameters(Map <String, String>) যুক্ত করুন যা রানটাইমে বিজ্ঞাপন ট্যাগ প্যারামিটারগুলি প্রতিস্থাপনের অনুমতি দেয়।
    • বিজ্ঞাপন প্লেব্যাকের সময় কোনও প্লেয়ার ত্রুটি ঘটলে ( #1334 ) যখন কোনও খেলোয়াড়ের ত্রুটি ঘটেছিল তখন VideoAdPlayer.VideoAdPlayerCallback.onError() ডাকা হয় না এমন বাগটি ফিক্স করুন।
    • data:// বিজ্ঞাপন ট্যাগ ইউআরআইএস ( #700 ) ব্যবহার করার সময় একটি NullPointerException ঠিক করতে ইমাম এসডিকে সংস্করণটি 3.33.0 এ বাম্প করুন।
  • অধিবেশন:
    • CommandButton.enabled এর ডিফল্ট পরিবর্তন করুন। true হিসাবে চিহ্নিত করা হয়েছে এবং সম্পর্কিত কমান্ডটি উপলব্ধ থাকলেও মানটি কন্ট্রোলারদের জন্য মিথ্যা থাকতে পারে তা নিশ্চিত করে।
    • CommandButton জন্য আইকন ধ্রুবকগুলি যুক্ত করুন যা কাস্টম আইকন সংস্থানগুলির পরিবর্তে ব্যবহার করা উচিত।
    • MediaSessionService.isPlaybackOngoing() যুক্ত করুন অ্যাপ্লিকেশনগুলিকে জিজ্ঞাসা করতে onTaskRemoved() ( #1219 ) এ পরিষেবাটি বন্ধ করা দরকার কিনা তা জিজ্ঞাসা করতে।
    • MediaSessionService.pauseAllPlayersAndStopSelf() যুক্ত করুন যা সুবিধামত সমস্ত সেশনের প্লেব্যাক বিরতি দিতে এবং stopSelf() MediaSessionService লাইফসাইকেলটি বন্ধ করতে কল করতে দেয়।
    • প্লেব্যাক চলমান থাকলে বা অন্যথায় পরিষেবাটি বন্ধ করে দিলে একটি নিরাপদ ডিফল্ট বাস্তবায়ন সরবরাহ করার জন্য ওভাররাইড MediaSessionService.onTaskRemoved(Intent)
    • প্ল্যাটফর্ম সেশন মেটাডেটা ( #1256 ) এ সময়কাল নির্ধারণ না করে লাইভ স্ট্রিমগুলির জন্য মিডিয়া বিজ্ঞপ্তিতে সিকবারটি লুকান।
    • MediaDescriptionCompat কমপ্যাটে MediaMetadata রূপান্তরকে সারিবদ্ধ করুন, মিডিয়া 1 এর মতো মেটাডেটা বৈশিষ্ট্যগুলি নির্বাচন করার সময় একই পছন্দের ক্রম এবং যুক্তি ব্যবহার করতে।
    • MediaSession.sendError() যুক্ত করুন যা মিডিয়া 3 নিয়ামককে অ-মারাত্মক ত্রুটিগুলি প্রেরণের অনুমতি দেয়। বিজ্ঞপ্তি নিয়ামক ব্যবহার করার PlaybackState ( MediaSession.getMediaNotificationControllerInfo() দেখুন get
    • কোনও নির্দিষ্ট নিয়ামকের কাছ থেকে প্লেয়ার ইন্টারঅ্যাকশনগুলির একটি সিরিজ শেষ হলে সেশনগুলি অবহিত করার জন্য MediaSession.Callback.onPlayerInteractionFinished() যুক্ত করুন।
    • SessionError যুক্ত করুন এবং ত্রুটি কোডের পরিবর্তে SessionResult এবং LibraryResult এটি ব্যবহার করুন ত্রুটি সম্পর্কে আরও তথ্য সরবরাহ করতে এবং যদি সম্ভব হয় তবে কীভাবে ত্রুটিটি সমাধান করবেন সে সম্পর্কে আরও তথ্য সরবরাহ করতে।
    • মিডিয়া সেশন প্রকাশের অ্যাপ্লিকেশনগুলির সাথে মিথস্ক্রিয়া পরীক্ষা করতে ব্যবহার করা যেতে পারে মিডিয়া 3 কন্ট্রোলার টেস্ট অ্যাপের জন্য কোডটি প্রকাশ করুন।
    • মিডিয়া 3 এর MediaSession[Builder].setSessionExtras() এ মিডিয়া 1 কন্ট্রোলারের PlaybackStateCompat.getExtras() এ পাস করা অতিরিক্তগুলি প্রচার করুন।
    • প্ল্যাটফর্ম সেশনে এবং থেকে মারাত্মক এবং অ-মারাত্মক ত্রুটিগুলি মানচিত্র করুন। একটি PlaybackException PlaybackStateCompat মারাত্মক ত্রুটি অবস্থায় ম্যাপ করা হয়। মিডিয়াসেশন সহ মিডিয়া বিজ্ঞপ্তি নিয়ামককে প্রেরণ করা একটি SessionError MediaSession.sendError(ControllerInfo, SessionError) PlaybackStateCompat একটি অ-মারাত্মক ত্রুটিতে ম্যাপ করা হয়েছে যার অর্থ ত্রুটি কোড এবং বার্তা সেট করা আছে তবে প্ল্যাটফর্ম সেশনের অবস্থাটি STATE_ERROR থেকে আলাদা রয়েছে।
    • বৈশ্বিক সেশন ক্রিয়াকলাপকে ওভাররাইড করার জন্য সেশন ক্রিয়াকলাপকে নিয়ন্ত্রণকারী প্রতি সেট করার অনুমতি দিন। ConnectionResult ক্রিয়াকলাপটি সংযোগের সময় কন্ট্রোলারের জন্য সংজ্ঞায়িত AcceptedResultBuilder.setSessionActivivty(PendingIntent) যেতে পারে একবার সংযুক্ত হয়ে গেলে, সেশন ক্রিয়াকলাপটি MediaSession.setSessionActivity(ControllerInfo, PendingIntent) দিয়ে আপডেট করা যেতে পারে।
    • MediaLibrarySession.Callback কলগুলির ত্রুটির প্রতিলিপি উন্নত করুন। ত্রুটির প্রকারটি বেছে নেওয়ার জন্য বা ডিফল্টরূপে ত্রুটিযুক্ত প্রতিরূপের বাইরে অপ্ট-ইনগ আউট করার জন্য ত্রুটি প্রতিরূপটি এখন MediaLibrarySession.Builder.setLibraryErrorReplicationMode() ব্যবহার করে কনফিগার করা যেতে পারে।
  • UI:
    • ExoPlayer ( #1144 ) এর সাথে সংযুক্ত থাকাকালীন PlayerView চিত্র প্রদর্শন সমর্থন যুক্ত করুন।
    • গ্লোবাল ওভাররাইডস ( #1200 ) এর পরিবর্তে PlayerView উদাহরণ প্রতি বিভিন্ন অঙ্কনযোগ্যদের অনুমতি দেওয়ার জন্য এক্সএমএল বৈশিষ্ট্যের মাধ্যমে PlayerControlView বিভিন্ন আইকনগুলির কাস্টমাইজেশন যুক্ত করুন।
    • এপিআই 34 ( #1237 ) এর একটি রচনা AndroidView ভিতরে SurfaceView ব্যবহার করার সময় স্ট্রেচড/ক্রপযুক্ত ভিডিওর কারণ হিসাবে একটি প্ল্যাটফর্ম বাগের চারপাশে কাজ করুন।
  • ডাউনলোড:
    • নিশ্চিত করুন যে DownloadHelper অপ্রকাশিত Renderer দৃষ্টান্তগুলি ফাঁস করে না, যার ফলে শেষ পর্যন্ত একটি অ্যাপ্লিকেশন IllegalStateException: Too many receivers, total of 1000, registered for pid ( #1224 ) এর জন্য নিবন্ধিত।
  • ক্রোনেট এক্সটেনশন:
    • CronetDataSource -এ SocketTimeoutException ঠিক করুন। ক্রোনেটের কয়েকটি সংস্করণে, কলব্যাক দ্বারা সরবরাহিত অনুরোধটি সর্বদা এক নয়। এটি কলব্যাকটি সম্পূর্ণ না করে এবং সময় দেওয়ার জন্য অনুরোধ করে (https://issuetracker.google.com/328442628)।
  • এইচএলএস এক্সটেনশন:
    • ফিক্স বাগ যেখানে মুলতুবি থাকা ইএমএসজি নমুনাগুলি একটি বিচ্ছিন্নতার জন্য অপেক্ষা করছে HlsSampleStreamWrapper এ একটি ভুল অফসেট সহ একটি IndexOutOfBoundsException বা একটি IllegalArgumentException ( #1002 ) সৃষ্টি করে।
    • বাগটি ঠিক করুন যেখানে অ-প্রাথমিক প্লেলিস্টগুলি এলএল-এইচএলএস স্ট্রিমগুলির জন্য পুনরায় লোড করতে থাকে ( #1240 )।
    • বাগটি ফিক্স করুন যেখানে ইনিশিয়ালাইজেশন বিভাগগুলির সাথে এইচএলএসের জন্য সিএমসিডি সক্ষম করার ফলে Source Error এবং IllegalArgumentException ঘটে।
    • লাইভ প্লেব্যাক ( #1240 ) চলাকালীন অ-প্রাথমিক প্লে প্লেলিস্টগুলি রিফ্রেশ করা হয় না যেখানে বাগটি ফিক্স করুন।
    • এইচএলএস লাইভ স্ট্রিমগুলির জন্য সিএমসিডি সক্ষম করার যেখানে ArrayIndexOutOfBoundsException ( #1395 ) এর কারণে সিএমসিডি সক্ষম করা বাগটি ঠিক করুন।
  • ড্যাশ এক্সটেনশন:
    • বাগটি ঠিক করুন যেখানে একটি বহু-কালীন লাইভ স্ট্রিম পুনরায় প্রস্তুত করা একটি IndexOutOfBoundsException ( #1329 ) নিক্ষেপ করতে পারে।
    • dashif:Laurl লাইসেন্স ইউআরএল ( #1345 )।
  • কাস্ট এক্সটেনশন:
    • মিডিয়া 3 মিডিয়া আইটেমের ( #1255 ) শিল্পীর কাছে MediaQueueItem অ্যালবামের শিরোনাম রূপান্তরিত করে এমন বাগটি ঠিক করুন।
  • পরীক্ষা উপযোগিতা:
    • onInit() এবং FakeRenderer onRelease() প্রয়োগ করুন।
    • TestPlayerRunHelper.runUntil()/playUntil() পরিবর্তন করুন ননফ্যাটাল ত্রুটিগুলিতে ব্যর্থ হওয়ার পদ্ধতিগুলি (যেমন যারা AnalyticsListener.onVideoCodecError() ) তে রিপোর্ট করা হয়েছে। এই আচরণটি অক্ষম করতে নতুন TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
  • ডেমো অ্যাপ:
    • সংক্ষিপ্ত ফর্ম ডেমো অ্যাপে DefaultPreloadManager ব্যবহার করুন।
    • কমান্ড লাইন ( #1266 ) থেকে Intent যুক্তি সহ পুনরাবৃত্তি মোড সেট করার অনুমতি দিন।
    • ডিভাইস দ্বারা সমর্থিত হলে HttpEngineDataSource হিসাবে HttpDataSource হিসাবে ব্যবহার করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • CronetDataSourceFactory সরান। পরিবর্তে CronetDataSource.Factory ব্যবহার করুন।
    • কিছু DataSpec কনস্ট্রাক্টর সরান। পরিবর্তে DataSpec.Builder ব্যবহার করুন।
    • DefaultHttpDataSource , OkHttpDataSource এবং CronetDataSource থেকে setContentTypePredicate(Predicate) পদ্ধতি সরান। পরিবর্তে প্রতিটি XXXDataSource.Factory এ সমতুল্য পদ্ধতি ব্যবহার করুন।
    • OkHttpDataSource কনস্ট্রাক্টর এবং OkHttpDataSourceFactory সরান। পরিবর্তে OkHttpDataSource.Factory ব্যবহার করুন।
    • PlayerMessage.setHandler(Handler) সরান। পরিবর্তে setLooper(Looper) ব্যবহার করুন।
    • Timeline.Window.isLive ফিল্ড সরান। পরিবর্তে isLive() পদ্ধতিটি ব্যবহার করুন।
    • DefaultHttpDataSource কনস্ট্রাক্টরগুলি সরান। পরিবর্তে DefaultHttpDataSource.Factory ব্যবহার করুন।
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS সরান। পরিবর্তে DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS ব্যবহার করুন।
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) সরান। পরিবর্তে MediaCodecInfo.canReuseCodec(Format, Format) ব্যবহার করুন।
    • DrmSessionManager.DUMMY এবং getDummyDrmSessionManager() পদ্ধতি সরান। পরিবর্তে DrmSessionManager.DRM_UNSUPPORTED ব্যবহার করুন।
    • AnalyticsListener.onAudioInputFormatChanged(EventTime, Format) , AnalyticsListener.onVideoInputFormatChanged(EventTime, Format) , AudioRendererEventListener.onAudioInputFormatChanged(Format) , VideoRendererEventListener.onVideoInputFormatChanged(Format) । পরিবর্তে DecoderReuseEvaluation নেয় এমন ওভারলোডগুলি ব্যবহার করুন।
    • RendererSupport.FormatSupport intdef এবং FORMAT_HANDLED , FORMAT_EXCEEDS_CAPABILITIES , FORMAT_UNSUPPORTED_DRM , FORMAT_UNSUPPORTED_SUBTYPE , FORMAT_UNSUPPORTED_TYPE কনস্ট্যান্টগুলি সরান। এর পরিবর্তে androidx.media3.common.C এ সমতুল্য INTDEF এবং ধ্রুবকগুলি ব্যবহার করুন (যেমন C.FORMAT_HANDLED ফরম্যাট_হ্যান্ডল)।
    • Bundleable ইন্টারফেস সরান। এর মধ্যে রয়েছে সমস্ত Bundleable.Creator<Foo> CREATOR ধ্রুবক ক্ষেত্রগুলি অপসারণ করা। কলারদের পরিবর্তে প্রতিটি প্রকারের Bundle toBundle() এবং static Foo fromBundle(Bundle) পদ্ধতিগুলি।

সংস্করণ 1.4.0-rc01

10 জুলাই, 2024

1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.4.0-beta01

জুন 26, 2024

1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.4.0-alpha02

জুন 07, 2024

1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.4.0-alpha01

এপ্রিল 17, 2024

1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।

সংস্করণ 1.3.0

সংস্করণ 1.3.1

11 এপ্রিল, 2024

androidx.media3:media3-*:1.3.1 প্রকাশিত হয়েছে। সংস্করণ 1.3.1 এ এই কমিটস রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • স্থানীয়করণ বা অন্যান্য বিকল্প লেবেলগুলিকে অনুমতি দেওয়ার জন্য Format.labels যুক্ত করুন।
  • এক্সো প্লেয়ার:
    • ইস্যু ঠিক করুন যেখানে PreloadMediaPeriod আবার যখন প্রিললোড করা হয় তখন স্ট্রিমগুলি ধরে রাখতে পারে না।
    • ট্র্যাক পুনঃনির্ধারণে খেলার সময়কালে সঠিক সংশ্লিষ্ট TrackSelectionResult প্রয়োগ করুন।
    • মিডিয়া আইটেমগুলির মধ্যে স্থানান্তরিত হওয়ার সময় কেবল খেলার সময়কালের অগ্রগতির পরে প্রাথমিক-সক্ষম রেন্ডারারগুলি শুরু করুন ( #1017 )।
    • প্রোগুয়ার্ড -keepclasseswithmembers বিধি DefaultVideoFrameProcessor.Factory.Builder.build() ( #1187 ) এর জন্য বিধি বিধিগুলিতে অনুপস্থিত রিটার্ন প্রকার যুক্ত করুন।
  • ট্রান্সফরমার:
    • এপিআই 30 এর আগে নেতিবাচক উপস্থাপনা টাইমস্ট্যাম্পগুলি সমর্থন না করে MediaMuxer কারণে নিক্ষিপ্ত ব্যতিক্রমের জন্য ওয়ার্কআরাউন্ড যুক্ত করুন।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector : কম বা আনসেট ফ্রেম রেটযুক্ত ব্যক্তিদের তুলনায় 'যুক্তিসঙ্গত' ফ্রেম রেট (> = 10 এফপিএস) সহ ভিডিও ট্র্যাকগুলি পছন্দ করুন। এটি নিশ্চিত করে যে প্লেয়ারটি মোশন ফটোগুলি থেকে প্রাপ্ত এমপি 4 এস -এ 'রিয়েল' ভিডিও ট্র্যাকটি নির্বাচন করে যাতে দুটি এইচইভিসি ট্র্যাক থাকতে পারে যেখানে একটির উচ্চতর রেজোলিউশন রয়েছে তবে খুব কম সংখ্যক ফ্রেম ( #1051 ) রয়েছে।
  • নিষ্কাশনকারী:
    • ওয়েভ ফাইলগুলি ( #1117 ) থেকে বিজোড় আকারের খণ্ডগুলি পড়ার সময় প্যাডিংটি এড়িয়ে যাওয়া হয়নি এমন সমস্যাটি ঠিক করুন।
    • এমপি 3: XING এবং VBRI মতো মেটাডেটা ফ্রেম থেকে পপুলেট Format.averageBitrate
    • এমপিইজি-টিএস: একটি পরিবর্তন প্রত্যাবর্তন করুন যা লক্ষ্য করে যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে তা নিশ্চিত করার লক্ষ্যে। এটি কেবলমাত্র এইচএলএস স্ট্রিম ( #1150 ) এবং এইচ .262 এইচএলএস স্ট্রিম ( #1126 ) এর সাথে নতুন সমস্যার কারণে পরিবর্তনের কারণে ঘটে।
  • অডিও:
    • অডিও ট্র্যাক অফলোড মোডে আরম্ভ করতে ব্যর্থ হলে অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন।
  • ভিডিও:
    • গ্যালাক্সি ট্যাব এস 7 ফে, গুগল টিভির সাথে ক্রোমকাস্ট এবং লেনোভো এম 10 এফএইচডি প্লাসের জন্য কোনও ডিভাইস ইস্যুর জন্য ওয়ার্কআআআআআআআআআআআআআআআআআআআর
    • ওয়ার্কআরাউন্ড যুক্ত করুন যা নিশ্চিত করে যে প্রথম ফ্রেমটি সর্বদা রেন্ডার করার সময় রেন্ডার করা হয় এমনকি যদি ডিভাইসটি এপিআই ( #1169 ) দ্বারা প্রয়োজনীয় হিসাবে এটি স্বয়ংক্রিয়ভাবে এটি না করে। ( #966 )।
    • সমস্যাটি সমাধান করুন যেখানে এইচডিআর রঙিন তথ্য হ্যান্ডলিং কোডেকের দুর্ব্যবহারের কারণ ঘটায় এবং এসডিআর ভিডিও ট্র্যাকগুলির জন্য অভিযোজিত ফর্ম্যাট স্যুইচগুলি ( #1158 ) প্রতিরোধ করে।
  • পাঠ্য:
    • ওয়েবভিটিটি: WebvttParser.parse ( #1177 ) থেকে মজাদার অতিরিক্ত CuesWithTiming দৃষ্টান্ত তৈরি করা থেকে সরাসরি ক্রমাগত সংকেতগুলি প্রতিরোধ করুন।
  • DRM:
    • একটি NoSuchMethodError চারপাশে কাজ করুন যা MediaDrm ফ্রেমওয়ার্ক দ্বারা ResourceBusyException বা কিছু অ্যান্ড্রয়েড 14 ডিভাইসে ( #1145 ) NotProvisionedException পরিবর্তে নিক্ষেপ করা যেতে পারে।
  • প্রভাব:
    • রঙের জায়গাগুলি রূপান্তর করে এসডিআর টোন-ম্যাপিংয়ে উন্নত হয়েছে।
  • অধিবেশন:
    • কন্ট্রোলার যখন বর্তমান আইটেমটি প্রতিস্থাপন করে ( #951 ) যখন বর্তমান অবস্থানটি পিছনে লাফিয়ে যায় তখন সমস্যাটি ঠিক করুন।
    • সমস্যাটি সমাধান করুন যেখানে কেবল নন-নাল extras সহ MediaMetadata মিডিয়া কন্ট্রোলার এবং সেশনগুলির মধ্যে সংক্রমণ হয় না ( #1176 )।
  • UI:
    • অডিও ট্র্যাক ভাষার নাম অন্তর্ভুক্ত করার জন্য ফ্যালব্যাক যদি Locale কোনও ডিসপ্লে নাম সনাক্ত করতে না পারে ( #988 )।
  • ড্যাশ এক্সটেনশন:
    • ম্যানিফেস্ট থেকে সমস্ত Label উপাদানগুলিকে Format.labels ( #1054 ) জনকে পপুলেট করুন।
  • RTSP এক্সটেনশন:
    • এসডিপি পার্সিং ( #1087 ) এ খালি সেশন তথ্য মানগুলি (আই-ট্যাগ) এড়িয়ে যান।
  • ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
    • ডিফল্টরূপে স্থানীয় নির্ভরতা হিসাবে এমআইডিআই এক্সটেনশনটি অক্ষম করুন কারণ এটি কনফিগার করার জন্য একটি অতিরিক্ত মাভেন রিপোজিটরি প্রয়োজন। স্থানীয় নির্ভরতা থেকে এই মডিউলটির প্রয়োজন এমন ব্যবহারকারীরা এটি পুনরায় সক্ষম করতে পারেন

সংস্করণ 1.3.0

6 মার্চ, 2024

androidx.media3:media3-*:1.3.0 প্রকাশিত হয়েছে। সংস্করণ 1.3.0 এ এই কমিটস রয়েছে।

  • সাধারণ গ্রন্থাগার:
    • android.resource://package/[type/]name কাঁচা রিসোর্স ইউআরআইগুলির জন্য সমর্থন প্রয়োগ করুন যেখানে package বর্তমান অ্যাপ্লিকেশনটির প্যাকেজের চেয়ে আলাদা। এটি সর্বদা কাজ করার জন্য নথিভুক্ত করা হয়েছে, তবে এখন পর্যন্ত সঠিকভাবে প্রয়োগ করা হয়নি।
    • অ্যাপ্লিকেশন কোড দ্বারা সেট করা মাইম প্রকারগুলি স্বাভাবিক করুন বা মিডিয়া থেকে সম্পূর্ণ নিম্ন-কেস হতে পড়ুন।
    • AdPlaybackState একক Uri পরিবর্তে সম্পূর্ণ MediaItem সাথে বিজ্ঞাপনগুলি সংজ্ঞায়িত করুন।
    • minSdk 19 (অ্যান্ড্রয়েড কিটকাট) এ বাড়ান। এটি অন্যান্য সমস্ত অ্যান্ড্রয়েডএক্স লাইব্রেরির সাথে একত্রিত , এবং আমাদের অ্যান্ড্রয়েডএক্স নির্ভরতার সর্বশেষ সংস্করণগুলিতে আপগ্রেড করার জন্য আমাদের প্রয়োজন।
    • MediaMetadata.Builder.populate(MediaMetadata)artworkUri এবং artworkData উভয়কেই জনপ্রিয় করুন যখন তাদের মধ্যে কমপক্ষে একটি নাল ( #964 ) হয়।
  • এক্সো প্লেয়ার:
    • PreloadMediaSource এবং PreloadMediaPeriod যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে প্লেব্যাকের আগে একটি নির্দিষ্ট শুরুর অবস্থানে একটি সামগ্রী মিডিয়া উত্স প্রিলোড করতে দেয়। PreloadMediaSource Timeline পাওয়ার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার, প্রদত্ত শুরুর অবস্থানে পিরিয়ড প্রস্তুত এবং ক্যাশে, ট্র্যাকগুলি নির্বাচন করা এবং সময়ের জন্য মিডিয়া ডেটা লোড করার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার যত্ন নেয়। অ্যাপ্লিকেশনগুলি PreloadMediaSource.PreloadControl প্রয়োগ করে প্রিলোড অগ্রগতি নিয়ন্ত্রণ করে এবং প্লেব্যাকের জন্য প্লেয়ারকে প্রিলোড উত্সটি সেট করে।
    • ExoPlayer.setImageOutput যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে ImageRenderer.ImageOutput সেট করতে দেয়।
    • DefaultRenderersFactory এখন নাল ImageOutput এবং ImageDecoder.Factory.DEFAULT সহ ডিফল্টরূপে প্লেয়ারকে একটি ImageRenderer সরবরাহ করে।
    • Player.Listener.onPositionDiscontinuity
    • নিষ্কাশনের সময় সাবটাইটেলগুলি পার্স করার জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন। আপনি এটি MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ব্যবহার করে এটি সক্ষম করতে পারেন।
    • PreloadMediaSource সহ অভিযোজিত মিডিয়া উত্সগুলিকে সমর্থন করুন।
    • HttpEngineDataSource , HttpDataSource httpengine এপিআই ব্যবহার করে প্রয়োগ করুন।
    • সাবক্লাসিং CompositeSequenceableLoader প্রতিরোধ করুন। এই উপাদানটি পূর্বে এক্সটেনসিবল করা হয়েছিল তবে লাইব্রেরির মধ্যে কখনও সাবক্লাস করা হয়নি। ডেকরেটর প্যাটার্ন ব্যবহার করে একটি উদাহরণ মোড়ানো এবং একটি কাস্টম CompositeSequenceableLoaderFactory প্রয়োগ করে কাস্টমাইজেশনগুলি করা যেতে পারে।
    • সমস্যাটি ঠিক করুন যেখানে একই সময়ে পুনরাবৃত্তি করার ফলে এই আইটেমটি থেকে মেটাডেটা সাফ হয়ে যায় ( #1007 )।
    • BundledChunkExtractor.Factory এবং DefaultHlsExtractorFactory setSubtitleParserFactory এবং null নালকে অস্বীকার করার জন্য experimentalSetSubtitleParserFactory পদ্ধতিগুলির নামকরণ করুন। পার্সিং আচরণ নিয়ন্ত্রণের জন্য নতুন experimentalParseSubtitlesDuringExtraction(boolean) পদ্ধতিগুলি ব্যবহার করুন।
    • SubtitleParser.Factory কাস্টমাইজ করার জন্য সমর্থন যুক্ত করুন at এক্সট্রাকশন চলাকালীন ব্যবহৃত ফ্যাক্টরি। এটি MediaSource.Factory.setSubtitleParserFactory() দিয়ে অর্জন করা যেতে পারে।
    • MergingMediaSource থেকে উত্পন্ন সমস্ত Format.id ক্ষেত্রগুলিতে উত্স উপসর্গ যুক্ত করুন। এটি কোন উত্সটি একটি Format তৈরি করেছে তা সনাক্ত করতে সহায়তা করে ( #883 )।
    • কাস্টম কমন মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) কী নামগুলি কেবল হাইফেন ( #1028 ) এর জন্য এটি সংশোধন করে কী নামগুলি বৈধ করার জন্য ব্যবহৃত রেজেক্সটি ঠিক করুন।
    • ডাবল-এনকোডিং সিএমসিডি ক্যোয়ারী প্যারামিটারগুলি ( #1075 ) বন্ধ করুন।
  • ট্রান্সফরমার:
    • এইচ .265/এইচইভিসি এসইএফ স্লো মোশন ভিডিওগুলি সমতল করার জন্য সমর্থন যুক্ত করুন।
    • ট্রান্সমাক্সিংয়ের গতি বাড়ান, বিশেষত 'ভিডিও সরান' সম্পাদনাগুলির জন্য।
    • আউটপুট ফাইলটি কোনও ভিডিও ফ্রেমে শুরু হয় তা নিশ্চিত করতে API যুক্ত করুন। এটি প্লেয়ার বাস্তবায়নের সাথে ট্রিমিং অপারেশনগুলির আউটপুটকে আরও সামঞ্জস্যপূর্ণ করে তুলতে পারে যা প্রথম ভিডিও ফ্রেমটি উপস্থাপনা টাইমস্ট্যাম্প ( #829 ) না হওয়া পর্যন্ত দেখায় না।
    • একক সম্পদ এমপি 4 ট্রিম অপারেশন অনুকূলকরণের জন্য সমর্থন যুক্ত করুন।
    • আউটপুট ফাইলে কোনও ভিডিও ফ্রেমের প্রথম টাইমস্ট্যাম্প রয়েছে তা নিশ্চিত করতে সহায়তা যুক্ত করুন। আইওএস ভিত্তিক প্লেয়ারগুলিতে কালো ফ্রেম দিয়ে শুরু হওয়া আউটপুট ফাইলগুলি ফিক্স করে ( #829 )।
  • ট্র্যাক নির্বাচন:
    • চিত্র ট্র্যাক নির্বাচন সক্ষম করতে DefaultTrackSelector.selectImageTrack যুক্ত করুন।
    • TrackSelectionParameters.isPrioritizeImageOverVideoEnabled যুক্ত করুন is ডিফল্ট মানটি false যার অর্থ একটি ভিডিও ট্র্যাক নির্বাচন করা অগ্রাধিকার দেওয়া হয়।
  • নিষ্কাশনকারী:
    • ColorInfo.colorSpace , ColorInfo.colorTransfer এবং ColorInfo.colorRange মান ( #692 ) পুনরুদ্ধার করতে এমপি 4 এক্সট্র্যাক্টরে অতিরিক্ত এভি 1 সি পার্সিং যুক্ত করুন।
    • এমপি 3: একটি Info শিরোনাম ( Xing হেডারের সিবিআর সমতুল্য) সহ ফাইলগুলির জন্য ধ্রুবক বিট্রেট (সিবিআর) ব্যবহার করুন। পূর্বে আমরা Info শিরোনাম থেকে সিক টেবিলটি ব্যবহার করেছি, তবে এর ফলে আমরা এটি উপেক্ষা করে এবং ফাইলটি সিবিআর বলে ধরে নিই তার চেয়ে কম সুনির্দিষ্ট সন্ধান করতে পারে।
    • এমপিইজি 2-টিএস: ডিটিএস, ডিটিএস-এলবিআর এবং ডিটিএস যুক্ত করুন: এক্স প্রোফাইল 2 সমর্থন ( #275 )।
    • টিএস বর্ণনাকারীদের কাছ থেকে অডিও প্রকারগুলি বের করুন এবং তাদের পতাকাগুলিতে ম্যাপ করুন, ব্যবহারকারীদের আরও ভাল-অবহিত অডিও ট্র্যাক নির্বাচনগুলি ( #973 ) করার অনুমতি দেয়।
  • অডিও:
    • মসৃণ ভলিউম র‌্যাম্পের সাথে অ্যালগরিদম এড়িয়ে যাওয়া নীরবতা উন্নত করুন; ন্যূনতম নীরবতা এবং আরও প্রাকৃতিক নীরবতার সময়কাল ধরে রাখা ( #7423 )।
    • এড়িয়ে যাওয়া নীরবতা আরও নির্ধারিতভাবে রিপোর্ট করুন ( #1035 )।
  • ভিডিও:
    • MediaCodecVideoRenderer কনস্ট্রাক্টর পরিবর্তন করুন যা একটি VideoFrameProcessor.Factory নেয় Fact ফ্যাক্টরি আর্গুমেন্ট গ্রহণ করে এবং এটি একটি কনস্ট্রাক্টর দিয়ে প্রতিস্থাপন করুন যা একটি VideoSinkProvider যুক্তি নেয়। MediaCodecVideoRenderer যা একটি কাস্টম VideoFrameProcessor.Factory ইনজেকশন করতে VideoFrameProcessor.Factory CompositingVideoSinkProvider
  • পাঠ্য:
    • সমাধানের জন্য বিটম্যাপ সংকেতগুলির সিরিয়ালাইজেশন ঠিক করুন Tried to marshall a Parcel that contained Binder objects DefaultExtractorsFactory.setTextTrackTranscodingEnabled ( #836 ) ব্যবহার করার সময় বাইন্ডার অবজেক্টের ত্রুটি রয়েছে।
    • সিইএ -708: rowLock মান উপেক্ষা করুন। সিইএ -708-ই এস -2023 স্পেসে বলা হয়েছে যে স্ট্রিমের উপস্থিত মানগুলি নির্বিশেষে rowLock এবং columnLock উভয়কেই সত্য বলে ধরে নেওয়া উচিত ( columnLock সমর্থন প্রয়োগ করা হয়নি, সুতরাং এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
  • ছবি:
    • ড্যাশ থাম্বনেইলগুলির জন্য সমর্থন যুক্ত করুন। গ্রিড চিত্রগুলি ক্রপযুক্ত এবং পৃথক থাম্বনেইলগুলি তাদের উপস্থাপনার সময়গুলির কাছাকাছি ImageOutput সরবরাহ করা হয়।
  • DRM:
    • ডিফল্টরূপে অবিলম্বে ডিআরএম সামগ্রীতে 'ক্লিয়ার লিড' আনক্রিপ্ট করা নমুনাগুলি খেলুন, এমনকি পরবর্তী এনক্রিপ্ট করা নমুনাগুলির কীগুলি এখনও প্রস্তুত না হলেও। প্লেব্যাকের অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না থাকলে এটি মিড-প্লেব্যাক স্টলগুলির দিকে নিয়ে যেতে পারে (তবে পূর্বে প্লেব্যাক এই মুহুর্তে মোটেও শুরু হত না)। এই আচরণটি MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey ক্লারকন্টেন্টওয়াইথআউটকি বা DefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys উইথআউটকেইস দিয়ে অক্ষম করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • Fix issue where DASH and HLS ads without the appropriate file extension can't be played.
  • অধিবেশন:
    • Disable double-click detection for TV apps ( #962 ).
    • Fix issue where MediaItem.RequestMetadata with just non-null extras is not transmitted between media controllers and sessions.
    • Add constructor to MediaLibrarySession.Builder that only takes a Context instead of a MediaLibraryService .
  • HLS Extension:
    • Reduce HlsMediaPeriod to package-private visibility. This type shouldn't be directly depended on from outside the HLS package.
    • Resolve seeks to beginning of a segment more efficiently ( #1031 ).
  • Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
    • MIDI decoder: Ignore SysEx event messages ( #710 ).
  • পরীক্ষা উপযোগিতা:
    • Don't pause playback in TestPlayerRunHelper.playUntilPosition . The test keeps the playback in a playing state, but suspends progress until the test is able to add assertions and further actions.
  • ডেমো অ্যাপ:
    • Add a shortform demo module to demo the usage of PreloadMediaSource with the short-form content use case.

Version 1.3.0-rc01

22 ফেব্রুয়ারি, 2024

Use the 1.3.0 stable version .

সংস্করণ 1.3.0-beta01

7 ফেব্রুয়ারি, 2024

Use the 1.3.0 stable version .

সংস্করণ 1.3.0-alpha01

15 জানুয়ারী, 2024

Use the 1.3.0 stable version .

সংস্করণ 1.2.0

সংস্করণ 1.2.1

জানুয়ারী 9, 2024

  • এক্সো প্লেয়ার:
    • Fix issue where manual seeks outside of the LiveConfiguration.min/maxOffset range keep adjusting the offset back to min/maxOffset .
    • Fix issue that OPUS and VORBIS channel layouts are wrong for 3, 5, 6, 7 and 8 channels ( #8396 ).
    • Fix issue where track selections after seek to zero in a live stream incorrectly let the stream start at its default position ( #9347 ).
    • Fix the issue where new instances of CmcdData.Factory were receiving negative values for bufferedDurationUs from chunk sources, resulting in an IllegalArgumentException ( #888 ).
  • ট্রান্সফরমার:
    • Work around an issue where the encoder would throw at configuration time due to setting a high operating rate.
  • নিষ্কাশনকারী:
    • Mark secondary (unplayable) HEVC tracks in JPEG motion photos as ROLE_FLAG_ALTERNATE to prevent them being automatically selected for playback because of their higher resolution.
    • Fix wrong keyframe detection for TS H264 streams ( #864 ).
    • Fix duration estimation of TS streams that are longer than 47721 seconds ( #855 ).
  • অডিও:
    • Fix handling of EOS for SilenceSkippingAudioProcessor when called multiple times ( #712 ).
  • ভিডিও:
    • Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps AVC streams to be marked as unsupported ( #693 ).
  • মেটাডেটা:
    • Fix bug where MediaMetadata was only populated from Vorbis comments with upper-case keys ( #876 ).
    • Catch OutOfMemoryError when parsing very large ID3 frames, meaning playback can continue without the tag info instead of playback failing completely.
  • DRM:
    • Extend workaround for spurious ClearKey https://default.url license URL to API 33+ (previously the workaround only applied on API 33 exactly) ( #837 ).
    • Fix ERROR_DRM_SESSION_NOT_OPENED when switching from encrypted to clear content without a surface attached to the player. The error was due to incorrectly using a secure decoder to play the clear content.
  • অধিবেশন:
    • Put the custom keys and values in MediaMetadataCompat to MediaMetadata.extras and MediaMetadata.extras to MediaMetadataCompat ( #756 , #802 ).
    • Fix broadcasting notifyChildrenChanged for legacy controllers ( #644 ).
    • Fix a bug where setting a negative time for a disabled setWhen timer of the notification caused a crash on some devices ( #903 ).
    • Fix IllegalStateException when the media notification controller hasn't completed connecting when the first notification update is requested ( #917 ).
  • UI:
    • Fix issue where forward and rewind buttons are not visible when used with Material Design in a BottomSheetDialogFragment ( #511 ).
    • Fix issue where the numbers in the fast forward button of the PlayerControlView were misaligned ( #547 ).
  • ড্যাশ এক্সটেনশন:
    • Parse "f800" as channel count of 5 for Dolby in DASH manifest ( #688 ).
  • Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
    • MIDI: Fix issue where seeking forward skips the Program Change events ( #704 ).
    • Migrate to FFmpeg 6.0 and update supported NDK to r26b ( #707 , #867 ).
  • Cast Extension:
    • Sanitize creation of a Timeline to not crash the app when loading media fails on the cast device ( #708 ).

সংস্করণ 1.2.0

15 নভেম্বর, 2023

  • সাধারণ গ্রন্থাগার:
    • Add a @Nullable Throwable parameter to the methods in the Log.Logger interface. The message parameter to these methods no longer contains any information about the Throwable passed to the Log.{d,i,w,e}() methods, so implementations will need to manually append this information if desired (possibly using Logger.appendThrowableString(String, Throwable) ).
    • Fix Kotlin compatibility issue where nullable generic type parameters and nullable array element types are not detected as nullable. Examples are TrackSelectorResult and SimpleDecoder method parameters ( #6792 ).
    • Change default UI and notification behavior in Util.shouldShowPlayButton to show a "play" button while playback is temporarily suppressed (eg due to transient audio focus loss). The legacy behavior can be maintained by using PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) or MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) ( #11213 ).
    • Upgrade androidx.annotation:annotation-experimental to 1.3.1 to fix https://issuetracker.google.com/251172715.
    • Move ExoPlayer.setAudioAttributes to the Player interface.
  • এক্সো প্লেয়ার:
    • Fix seeking issues in AC4 streams caused by not identifying decode-only samples correctly ( #11000 ).
    • Add suppression of playback on unsuitable audio output devices (eg the built-in speaker on Wear OS devices) when this feature is enabled via ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput . The playback suppression reason will be updated as Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT if playback is attempted when no suitable audio outputs are available, or if all suitable outputs are disconnected during playback. The suppression reason will be removed when a suitable output is connected.
    • Add MediaSource.canUpdateMediaItem and MediaSource.updateMediaItem to accept MediaItem updates after creation via Player.replaceMediaItem(s) .
    • Allow MediaItem updates for all MediaSource classes provided by the library via Player.replaceMediaItem(s) ( #33 , #9978 ).
    • Rename MimeTypes.TEXT_EXOPLAYER_CUES to MimeTypes.APPLICATION_MEDIA3_CUES .
    • Add PngExtractor that sends and reads a whole PNG file into the TrackOutput as one sample.
    • Enhance SequenceableLoader.continueLoading(long) method in the SequenceableLoader interface to SequenceableLoader.continueLoading(LoadingInfo loadingInfo) . LoadingInfo contains additional parameters, including playbackSpeed and lastRebufferRealtimeMs in addition to the existing playbackPositionUs .
    • Enhance ChunkSource.getNextChunk(long, long, List, ChunkHolder) method in the ChunkSource interface to ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder) .
    • Add additional fields to Common Media Client Data (CMCD) logging: buffer starvation ( bs ), deadline ( dl ), playback rate ( pr ) and startup ( su ) ( #8699 ).
    • Add luma and chroma bitdepth to ColorInfo ( #491 ).
    • Add additional fields to Common Media Client Data (CMCD) logging: next object request ( nor ) and next range request ( nrr ) ( #8699 ).
    • Add functionality to transmit Common Media Client Data (CMCD) data using query parameters ( #553 ).
    • Fix ConcurrentModificationException in ExperimentalBandwidthMeter ( #612 ).
    • Add MediaPeriodId parameter to CompositeMediaSource.getMediaTimeForChildMediaTime .
    • Support ClippingMediaSource (and other sources with period/window time offsets) in ConcatenatingMediaSource2 ( #11226 ).
    • Change BaseRenderer.onStreamChanged() to also receive a MediaPeriodId argument.
  • ট্রান্সফরমার:
    • Parse EXIF rotation data for image inputs.
    • Remove TransformationRequest.HdrMode annotation type and its associated constants. Use Composition.HdrMode and its associated constants instead.
    • Simplify the OverlaySettings to fix rotation issues.
    • Changed frameRate and durationUs parameters of SampleConsumer.queueInputBitmap to TimestampIterator .
  • Track Selection:
    • Add DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness to explicitly allow or disallow non-seamless adaptation. The default stays at its current behavior of true .
  • নিষ্কাশনকারী:
    • MPEG-TS: Ensure the last frame is rendered by passing the last access unit of a stream to the sample queue ( #7909 ).
    • Fix typo when determining rotationDegrees . Changed projectionPosePitch to projectionPoseRoll ( #461 ).
    • Remove the assumption that Extractor instances can be directly inspected with instanceof . If you want runtime access to the implementation details of an Extractor you must first call Extractor.getUnderlyingInstance .
    • Add BmpExtractor .
    • Add WebpExtractor .
    • Add HeifExtractor .
    • Add QuickTime classic support to Mp4Extractor .
  • অডিও:
    • Add support for 24/32-bit big-endian PCM in MP4 and Matroska, and parse PCM encoding for lpcm in MP4.
    • Add support for extracting Vorbis audio in MP4.
    • Add AudioSink.getFormatOffloadSupport(Format) that retrieves level of offload support the sink can provide for the format through a DefaultAudioOffloadSupportProvider . It returns the new AudioOffloadSupport that contains isFormatSupported , isGaplessSupported , and isSpeedChangeSupported .
    • Add AudioSink.setOffloadMode() through which the offload configuration on the audio sink is configured. Default is AudioSink.OFFLOAD_MODE_DISABLED .
    • Offload can be enabled through setAudioOffloadPreference in TrackSelectionParameters . If the set preference is to enable, the device supports offload for the format, and the track selection is a single audio track, then audio offload will be enabled.
    • If audioOffloadModePreference is set to AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED , then the DefaultTrackSelector will only select an audio track and only if that track's format is supported in offload. If no audio track is supported in offload, then no track will be selected.
    • Disabling gapless support for offload when pre-API level 33 due to playback position issue after track transition.
    • Remove parameter enableOffload from DefaultRenderersFactory.buildAudioSink method signature.
    • Remove method DefaultAudioSink.Builder.setOffloadMode .
    • Remove intdef value DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED .
    • Add support for Opus gapless metadata during offload playback.
    • Allow renderer recovery by disabling offload if failed at first write ( #627 ).
    • Enable Offload Scheduling by default for audio-only offloaded playback.
    • Delete ExoPlayer.experimentalSetOffloadSchedulingEnabled and AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged .
    • Renamed onExperimentalSleepingForOffloadChanged as onSleepingForOffloadChanged and onExperimentalOffloadedPlayback as onOffloadedPlayback .
    • Move audio offload mode related TrackSelectionParameters interfaces and definitions to an inner AudioOffloadPreferences class.
    • Add onAudioTrackInitialized and onAudioTrackReleased callbacks to AnalyticsListener , AudioRendererEventListener and AudioSink.Listener .
    • Fix DTS Express audio buffer underflow issue ( #650 ).
    • Fix bug where the capabilities check for E-AC3-JOC throws an IllegalArgumentException ( #677 ).
  • ভিডিও:
    • Allow MediaCodecVideoRenderer to use a custom VideoFrameProcessor.Factory .
    • Fix bug where the first frame couldn't be rendered if the audio stream starts with negative timestamps ( #291 ).
  • পাঠ্য:
    • Remove ExoplayerCuesDecoder . Text tracks with sampleMimeType = application/x-media3-cues are now directly handled by TextRenderer without needing a SubtitleDecoder instance.
  • মেটাডেটা:
    • MetadataDecoder.decode will no longer be called for "decode-only" samples as the implementation must return null anyway.
  • প্রভাব:
    • Add VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) queuing bitmap input by timestamp.
    • Change VideoFrameProcessor.registerInputStream() to be non-blocking. Apps must implement VideoFrameProcessor.Listener#onInputStreamRegistered() .
    • Changed frameRate and durationUs parameters of VideoFrameProcessor.queueInputBitmap to TimestampIterator .
  • আইএমএ এক্সটেনশন:
    • Fix bug where a multi-period DASH live stream that is not the first item in a playlist can throw an exception ( #571 ).
    • Release StreamManager before calling AdsLoader.destroy()
    • Bump IMA SDK version to 3.31.0.
  • অধিবেশন:
    • Set the notifications foreground service behavior to FOREGROUND_SERVICE_IMMEDIATE in DefaultMediaNotificationProvider ( #167 ).
    • Use only android.media.session.MediaSession.setMediaButtonBroadcastReceiver() above API 31 to avoid problems with deprecated API on Samsung devices ( #167 ).
    • Use the media notification controller as proxy to set available commands and custom layout used to populate the notification and the platform session.
    • Convert media button events that are received by MediaSessionService.onStartCommand() within Media3 instead of routing them to the platform session and back to Media3. With this, the caller controller is always the media notification controller and apps can easily recognize calls coming from the notification in the same way on all supported API levels.
    • Fix bug where MediaController.getCurrentPosition() is not advancing when connected to a legacy MediaSessionCompat .
    • Add MediaLibrarySession.getSubscribedControllers(mediaId) for convenience.
    • Override MediaLibrarySession.Callback.onSubscribe() to assert the availability of the parent ID for which the controller subscribes. If successful, the subscription is accepted and notifyChildrenChanged() is called immediately to inform the browser ( #561 ).
    • Add session demo module for Automotive OS and enable session demo for Android Auto.
    • Do not set the queue of the framework session when COMMAND_GET_TIMELINE is not available for the media notification controller. With Android Auto as the client controller reading from the framework session, this has the effect that the queue button in the UI of Android Auto is not displayed ( #339 ).
    • Use DataSourceBitmapLoader by default instead of SimpleBitmapLoader ( #271 , #327 ).
    • Add MediaSession.Callback.onMediaButtonEvent(Intent) that allows apps to override the default media button event handling.
  • UI:
    • Add a Player.Listener implementation for Wear OS devices that handles playback suppression due to Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT by launching a system dialog to allow a user to connect a suitable audio output (eg bluetooth headphones). The listener will auto-resume playback if a suitable device is connected within a configurable timeout (default is 5 minutes).
  • ডাউনলোড:
    • Declare "data sync" foreground service type for DownloadService for Android 14 compatibility. When using this service, the app also needs to add dataSync as foregroundServiceType in the manifest and add the FOREGROUND_SERVICE_DATA_SYNC permission ( #11239 ).
  • HLS Extension:
    • Refresh the HLS live playlist with an interval calculated from the last load start time rather than the last load completed time ( #663 ).
  • ড্যাশ এক্সটেনশন:
    • Allow multiple of the same DASH identifier in segment template URL.
    • Add experimental support for parsing subtitles during extraction. This has better support for merging overlapping subtitles, including resolving flickering when transitioning between subtitle segments. You can enable this using DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ( #288 ).
  • RTSP এক্সটেনশন:
    • Fix a race condition that could lead to IndexOutOfBoundsException when falling back to TCP, or playback hanging in some situations.
    • Check state in RTSP setup when returning loading state of RtspMediaPeriod ( #577 ).
    • Ignore custom Rtsp request methods in Options response public header ( #613 ).
    • Use RTSP Setup Response timeout value in time interval of sending keep-alive RTSP Options requests ( #662 ).
  • Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
    • Release the MIDI decoder module, which provides support for playback of standard MIDI files using the Jsyn library to synthesize audio.
    • Add DecoderOutputBuffer.shouldBeSkipped to directly mark output buffers that don't need to be presented. This is preferred over C.BUFFER_FLAG_DECODE_ONLY that will be deprecated.
    • Add Decoder.setOutputStartTimeUs and SimpleDecoder.isAtLeastOutputStartTimeUs to allow decoders to drop decode-only samples before the start time. This should be preferred to Buffer.isDecodeOnly that will be deprecated.
    • Fix bug publishing MIDI decoder artifact to Maven repository. The artifact is renamed to media3-exoplayer-midi ( #734 ).
  • লিনব্যাক এক্সটেনশন:
    • Fix bug where disabling a surface can cause an ArithmeticException in Leanback code ( #617 ).
  • পরীক্ষা উপযোগিতা:
    • Make TestExoPlayerBuilder and FakeClock compatible with Espresso UI tests and Compose UI tests. This fixes a bug where playback advances non-deterministically during Espresso or Compose view interactions.
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Remove TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) and TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) . Use Composition.Builder.setHdrMode(int) and pass the Composition to Transformer.start(Composition, String) instead.
    • Remove deprecated DownloadNotificationHelper.buildProgressNotification method, use a non deprecated method that takes a notMetRequirements parameter instead.

সংস্করণ 1.2.0-rc01

November 1, 2023

Use the 1.2.0 stable version .

Version 1.2.0-beta01

অক্টোবর 19, 2023

Use the 1.2.0 stable version .

সংস্করণ 1.2.0-alpha02

সেপ্টেম্বর 29, 2023

Use the 1.2.0 stable version .

সংস্করণ 1.2.0-alpha01

আগস্ট 17, 2023

Use the 1.2.0 stable version .

সংস্করণ 1.1.0

সংস্করণ 1.1.1

16 আগস্ট, 2023

  • সাধারণ গ্রন্থাগার:
    • সমস্ত মডিউল ( #499 ) থেকে দুর্ঘটনাক্রমে যোগ করা multidex নির্ভরতা সরান।
  • এক্সো প্লেয়ার:
    • PlaybackStatsListener এ সমস্যাটি ঠিক করুন যেখানে প্লেলিস্ট সাফ করার পরে ভুয়া PlaybackStats তৈরি করা হয়।
    • কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিং-এ অতিরিক্ত ক্ষেত্র যুক্ত করুন: স্ট্রিমিং ফরম্যাট (sf), স্ট্রিম টাইপ (st), সংস্করণ (v), শীর্ষ বিরেট (tb), অবজেক্টের সময়কাল (d), মাপা থ্রুপুট (mtp) এবং অবজেক্ট টাইপ (ot) ( #8699 )।
  • অডিও:
    • একটি বাগ ঠিক করুন যেখানে Player.getState() খুব ছোট ফাইল ( #538 ) খেলার সময় STATE_ENDED এ রূপান্তরিত হয়নি।
  • অডিও অফলোড:
    • RFC 7845 অনুযায়ী অফলোড করা Opus প্লেব্যাকের জন্য Ogg ID হেডার এবং কমেন্ট হেডার পৃষ্ঠাগুলিকে বিটস্ট্রিমে প্রিপেন্ড করুন।
  • ভিডিও:
    • H.265/HEVC: SPS স্বল্প এবং দীর্ঘমেয়াদী রেফারেন্স ছবির তথ্য পার্সিং ঠিক করুন।
  • পাঠ্য:
    • CEA-608: Change cue truncation logic to only consider visible text. পূর্বে ইন্ডেন্ট এবং ট্যাব অফসেট অন্তর্ভুক্ত করা হয়েছিল যখন কিউ দৈর্ঘ্য 32 টি অক্ষরে সীমাবদ্ধ করা হয়েছিল (যা প্রযুক্তিগতভাবে বিশেষভাবে সঠিক ছিল) ( #11019 )।
  • আইএমএ এক্সটেনশন:
    • IMA SDK সংস্করণকে 3.30.3 এ বাম্প করুন৷
  • অধিবেশন:
    • Add custom layout to the state of the controller and provide a getter to access it. When the custom layout changes, MediaController.Listener.onCustomLayoutChanged is called. Apps that want to send different custom layouts to different Media3 controller can do this in MediaSession.Callback.onConnect by using an AcceptedResultBuilder to make sure the custom layout is available to the controller when connection completes.
    • Fix cases where MediaLibraryServiceLegacyStub sent an error to a Result that didn't support this which produced an UnsupportedOperationException ( #78 ).
    • Fix the way PlayerWrapper creates a VolumeProviderCompat by determining volumeControlType through both legacy commands ( COMMAND_ADJUST_DEVICE_VOLUME and COMMAND_SET_DEVICE_VOLUME ) and new commands ( COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS and COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS ) ( #554 ).

সংস্করণ 1.1.0

5 জুলাই, 2023

  • সাধারণ গ্রন্থাগার:
    • অনুপযুক্ত অডিও রুটের জন্য দমন কারণ যোগ করুন এবং খুব দীর্ঘ চাপা কারণ পরিবর্তন করার জন্য প্রস্তুত হলে প্লে করুন। ( #15 )।
    • প্লেয়ারে কমান্ড যোগ করুন:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • প্লেয়ারে ওভারলোড করা পদ্ধতি যোগ করুন যা ব্যবহারকারীদের ভলিউম ফ্ল্যাগ নির্দিষ্ট করতে দেয়:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo এর জন্য Builder যোগ করুন এবং বিদ্যমান কনস্ট্রাক্টরকে অবমূল্যায়ন করুন।
    • দূরবর্তী প্লেব্যাকের জন্য রাউটিং কন্ট্রোলার আইডি নির্দিষ্ট করতে DeviceInfo.routingControllerId যোগ করুন।
    • Player.replaceMediaItem(s) যোগ করুন একটি শর্টকাট হিসাবে একই অবস্থানে আইটেম যোগ এবং অপসারণ ( #8046 )।
  • এক্সো প্লেয়ার:
    • ExoPlayer-কে শুধুমাত্র ডিভাইসের ভলিউম পদ্ধতির নিয়ন্ত্রণ করার অনুমতি দিন যদি স্পষ্টভাবে অপ্ট ইন করা থাকে। এতে অ্যাক্সেস পেতে ExoPlayer.Builder.setDeviceVolumeControlEnabled ব্যবহার করুন:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) এবং setDeviceVolume(int, int)
      • increaseDeviceVolume(int) এবং increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) এবং decreaseDeviceVolume(int, int)
    • Add FilteringMediaSource that allows to filter available track types from a MediaSource .
    • অভিযোজিত স্ট্রিমিং ফরম্যাট DASH, HLS এবং স্মুথস্ট্রিমিং-এর বহির্গামী অনুরোধগুলিতে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) অন্তর্ভুক্ত করার জন্য সমর্থন যোগ করুন। নিম্নলিখিত ক্ষেত্রগুলি, br , bl , cid , rtp , এবং sid , অন্তর্ভুক্ত করা হয়েছে ( #8699 )। API গঠন এবং API পদ্ধতি:
      • CMCD logging is disabled by default, use MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory) to enable it.
      • সমস্ত কীগুলি ডিফল্টরূপে সক্রিয় থাকে, কোন কীগুলি লগ করা হয়েছে তা ফিল্টার করতে CmcdConfiguration.RequestConfig.isKeyAllowed(String key) ওভাররাইড করুন৷
      • কাস্টম কী লগিং সক্ষম করতে CmcdConfiguration.RequestConfig.getCustomData() ওভাররাইড করুন।
    • একটি কাস্টম *.exolist.json ফাইল ( #439 ) দিয়ে ডেমো অ্যাপ শুরু করা সহজ করতে প্রধান ডেমোর প্রকাশে অতিরিক্ত অ্যাকশন যোগ করুন।
    • ভিডিও প্লেব্যাকের সময় Effect ব্যবহার করার জন্য ExoPlayer.setVideoEffects() যোগ করুন।
    • একটি int পরিবর্তে sourceId long হিসাবে সংরক্ষণ করতে SampleQueue আপডেট করুন। এটি পাবলিক পদ্ধতি SampleQueue.sourceId এবং SampleQueue.peekSourceId এর স্বাক্ষর পরিবর্তন করে।
    • LoadControl পদ্ধতিতে প্যারামিটার যোগ করুন shouldStartPlayback এবং onTracksSelected করা উচিত যা প্রাসঙ্গিক MediaPeriod সাথে এই পদ্ধতিগুলিকে সংযুক্ত করার অনুমতি দেয়।
    • একটি টাইমলাইন প্যারামিটার যোগ করে ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) এর স্বাক্ষর পরিবর্তন করুন যা মানচিত্রে কী হিসাবে ব্যবহৃত UID-এর সাথে পিরিয়ড ধারণ করে। মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলির সাথে একযোগে সমস্যা এড়াতে এটি প্রয়োজন।
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) এবং BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) বাতিল করুন। mediaTimeOffsetUs ছাড়া পদ্ধতির বৈকল্পিক পরিবর্তে কল করা যেতে পারে। মনে রাখবেন যে অবহেলিত ভেরিয়েন্টের জন্যও, অফসেটটি আর প্রেরক দ্বারা প্রেরিত MediaLoadData অবজেক্টের startTimeUs এবং endTimeUs এ যোগ করা হয় না।
    • ExoTrackSelection.blacklist নাম পরিবর্তন করে excludeTrack এবং isTrackExcludedisBlacklisted
    • খালি প্লেলিস্টে কল করা হলে ExoPlayer.setMediaItem(s) এবং addMediaItem(s) এর মধ্যে অসামঞ্জস্যপূর্ণ আচরণ ঠিক করুন৷
  • ট্রান্সফরমার:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) সরান। পরিবর্তে ExoPlayerAssetLoader.Factory(MediaSource.Factory) এবং Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) ব্যবহার করুন।
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) সরান।
    • Fix a bug where transformation could get stuck (leading to muxer timeout) if the end of the video stream was signaled at the moment when an input frame was pending processing.
    • সমর্থন প্রসারিত করতে findDecoder/EncoderForFormat ইউটিলিটিগুলি ব্যবহার করার পরিবর্তে MediaCodecList এর মাধ্যমে কোডেক অনুসন্ধান করুন।
    • DefaultEncoderFactory বি-ফ্রেম কনফিগারেশন সরান কারণ এটি কিছু ডিভাইসে কাজ করে না।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange যোগ করুন যা ডিফল্টরূপে অক্ষম থাকে। সক্রিয় করা হলে, রেন্ডারারের ক্ষমতা পরিবর্তিত হলে DefaultTrackSelector একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে৷
  • নিষ্কাশনকারী:
    • Ogg: দীর্ঘ সময়ের ( #391 ) সাথে ফাইল খুঁজতে গিয়ে বাগ ফিক্স করুন।
    • FMP4: সমস্যাটি ঠিক করুন যেখানে TimestampAdjuster ইএমএসজি পরমাণু ( #356 ) থেকে মেটাডেটা নমুনা সময় সহ একটি ভুল টাইমস্ট্যাম্প অফসেট শুরু করে।
  • অডিও:
    • টানেলিং সক্ষম হলে এবং AudioProcessors সক্রিয় থাকাকালীন কিছু প্লেব্যাক ব্যর্থ হলে বাগ ঠিক করুন, যেমন ফাঁকহীন ছাঁটাইয়ের জন্য ( #10847 )।
    • সরাসরি প্লেব্যাকে (অফলোড) Ogg প্যাকেটে ওপাস ফ্রেমগুলিকে এনক্যাপসুলেট করুন।
    • অফলোড শিডিউলিংয়ের সাথে ঘুমের সময় বর্তমান অবস্থান এক্সট্রাপোলেট করুন।
    • খেলোয়াড়ের জীবনচক্রের শেষে সংস্থানগুলি প্রকাশ করার জন্য Renderer.release() এবং AudioSink.release() যোগ করুন।
    • DefaultAudioSink এ অডিও ক্ষমতার পরিবর্তনগুলি শুনুন। DefaultAudioSink এর কনস্ট্রাক্টরে একটি প্রয়োজনীয় প্যারামিটার context যোগ করুন, যার সাহায্যে DefaultAudioSink AudioCapabilitiesReceiver এ শ্রোতা হিসাবে নিবন্ধন করবে এবং ক্ষমতা পরিবর্তনের সাথে জানানো হলে তার audioCapabilities বৈশিষ্ট্য আপডেট করবে।
    • AudioSink.Listener ইন্টারফেস এবং RendererCapabilities.Listener যা onRendererCapabilitiesChanged ইভেন্টগুলিতে ট্রিগার করে একটি নতুন ইন্টারফেস এ onAudioCapabilitiesChanged এ একটি নতুন ইভেন্টের মাধ্যমে অডিও ক্ষমতার পরিবর্তনগুলি প্রচার করুন৷
    • অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য ChannelMixingAudioProcessor যোগ করুন।
    • DecoderDiscardReasons নতুন int মান DISCARD_REASON_AUDIO_BYPASS_POSSIBLE যোগ করুনDiscardঅডিও ক্ষমতা পরিবর্তনের পরে বাইপাস মোড সম্ভব হলে অডিও ডিকোডার বাতিল করার কারণ।
    • DTS Express এবং DTS:X ( #335 ) এর জন্য সরাসরি প্লেব্যাক সমর্থন যোগ করুন।
  • ভিডিও:
    • যখন রেন্ডারার অক্ষম থাকে তখন MediaCodecVideoRenderer 0 এর প্রস্থ এবং উচ্চতা সহ একটি VideoSize রিপোর্ট করুন৷ Player.Listener.onVideoSizeChanged সেই অনুযায়ী বলা হয় যখন Player.getVideoSize() পরিবর্তন হয়। এই পরিবর্তনের সাথে, MediaCodecVideoRenderer সাথে ExoPlayer-এর ভিডিওর আকার 0 এর প্রস্থ এবং উচ্চতা থাকে যখন Player.getCurrentTracks ভিডিও সমর্থন করে না, বা সমর্থিত ভিডিও ট্র্যাকের আকার এখনও নির্ধারণ করা হয়নি।
  • DRM:
    • DefaultDrmSession এ কয়েকটি অভ্যন্তরীণ-শুধু পদ্ধতির দৃশ্যমানতা হ্রাস করুন যেগুলি DRM প্যাকেজের বাইরে থেকে কল করা হবে বলে আশা করা হয় না:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • মুক্সার:
    • একটি নতুন মুক্সার লাইব্রেরি যোগ করুন যা একটি MP4 কন্টেইনার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • DAI-এর জন্য মাল্টি-পিরিয়ড লাইভ DASH স্ট্রিমগুলি সক্ষম করুন৷ অনুগ্রহ করে মনে রাখবেন যে বর্তমান বাস্তবায়ন এখনও লাইভ স্ট্রীম ( #10912 ) এ খোঁজা সমর্থন করে না।
    • লাইভ স্ট্রিমগুলিতে একটি নতুন বিজ্ঞাপন গোষ্ঠী সন্নিবেশিত করা হয়েছে এমন একটি বাগ ঠিক করুন কারণ পরপর টাইমলাইনে গণনা করা সামগ্রীর অবস্থান সামান্য পরিবর্তিত হয়।
  • অধিবেশন:
    • Add helper method MediaSession.getControllerForCurrentRequest to obtain information about the controller that is currently calling a Player method.
    • Add androidx.media3.session.MediaButtonReceiver to enable apps to implement playback resumption with media button events sent by, for example, a Bluetooth headset ( #167 ).
    • Add default implementation to MediaSession.Callback.onAddMediaItems to allow requested MediaItems to be passed onto Player if they have LocalConfiguration (eg URI) ( #282 ).
    • Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
    • Add default implementation to MediaSession.Callback.onAddMediaItems to allow requested MediaItems to be passed onto Player if they have LocalConfiguration (eg URI) ( #282 ).
    • Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
  • UI:
    • একটি প্লে/পজ বোতামের সাহায্যে কাস্টম UI উপাদানগুলি লিখতে Util পদ্ধতিগুলি যোগ করুন shouldShowPlayButton এবং handlePlayPauseButtonAction
  • RTSP এক্সটেনশন:
    • MPEG4-LATM-এর জন্য, ডিফল্ট প্রোফাইল-লেভেল-আইডি মান ব্যবহার করুন যদি ডিসক্রাইব রেসপন্স এসডিপি বার্তা ( #302 ) এ অনুপস্থিত থাকে।
    • RTSP সেশন থেকে আপেক্ষিক পাথ রেজোলিউশনের জন্য বেস Uri ব্যবহার করুন যদি DESCRIBE রেসপন্স হেডারে উপস্থিত থাকে ( #11160 )।
  • ড্যাশ এক্সটেনশন:
    • মাল্টি পিরিয়ড DASH স্ট্রীমগুলির জন্য MediaLoadData.startTimeMs এবং MediaLoadData.endTimeMs থেকে মিডিয়া টাইম অফসেট সরান৷
    • একটি বাগ ঠিক করুন যেখানে একটি মাল্টি-পিরিয়ড লাইভ ড্যাশ মিডিয়া সোর্স পুনরায় প্রস্তুত করার ফলে একটি IndexOutOfBoundsException ( #10838 ) তৈরি হয়।
  • HLS Extension:
    • HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) যোগ করুন লোডিং থ্রেডের TimestampAdjuster শুরু হওয়ার জন্য অপেক্ষা করার জন্য একটি সময়সীমা সেট করতে। যদি টাইমআউটের আগে আরম্ভ করা সম্পূর্ণ না হয়, তাহলে প্লেব্যাকের অন্তহীন স্টল এড়াতে একটি PlaybackException নিক্ষেপ করা হয়। টাইমআউট ডিফল্টরূপে শূন্য সেট করা হয় ( #323 )।
  • পরীক্ষা উপযোগিতা:
    • DataSourceContractTest এ URI স্কিমের ক্ষেত্রে অসংবেদনশীলতা পরীক্ষা করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • DefaultAudioSink কনস্ট্রাক্টর সরান, পরিবর্তে DefaultAudioSink.Builder ব্যবহার করুন।
    • HlsMasterPlaylist সরান, পরিবর্তে HlsMultivariantPlaylist ব্যবহার করুন।
    • Player.stop(boolean) সরান। পরিবর্তে Player.stop() এবং Player.clearMediaItems() (যদি reset true হয়) ব্যবহার করুন।
    • দুটি অবচয়িত SimpleCache কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা আরও ভাল পারফরম্যান্সের জন্য পরিবর্তে একটি DatabaseProvider নেয়।
    • DefaultBandwidthMeter কনস্ট্রাক্টর সরান, পরিবর্তে DefaultBandwidthMeter.Builder ব্যবহার করুন।
    • DefaultDrmSessionManager কনস্ট্রাক্টর সরান, পরিবর্তে DefaultDrmSessionManager.Builder ব্যবহার করুন।
    • দুটি অবচয়িত HttpDataSource.InvalidResponseCodeException কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা ত্রুটি লগিং উন্নত করতে অতিরিক্ত ক্ষেত্র ( cause , responseBody ) গ্রহণ করে৷
    • DownloadHelper.forProgressive , DownloadHelper.forHls , DownloadHelper.forDash এবং DownloadHelper.forSmoothStreaming সরান, পরিবর্তে DownloadHelper.forMediaItem ব্যবহার করুন।
    • অবচয়িত DownloadService কনস্ট্রাক্টর সরান, একটি অপ্রচলিত কনস্ট্রাক্টর ব্যবহার করুন যাতে একটি channelDescriptionResourceId প্যারামিটার প্রদান করার বিকল্প রয়েছে।
    • অক্ষরগুলির ( ASCII_NAME , UTF8_NAME , ISO88591_NAME , UTF16_NAME এবং UTF16LE_NAME ) জন্য অপ্রচলিত স্ট্রিং ধ্রুবকগুলি সরান com.google.common.base.Charsets kotlin.text প্যাকেজ থেকে Kotlin Charsets ব্যবহার করুন, java.nio.charset.StandardCharsets
    • অবচয়িত WorkManagerScheduler কনস্ট্রাক্টর সরান, একটি অপ্রত্যাশিত কনস্ট্রাক্টর ব্যবহার করুন যার পরিবর্তে একটি Context প্যারামিটার প্রদান করার বিকল্প রয়েছে।
    • ক্রিয়েট createVideoSampleFormat , createAudioSampleFormat , createContainerFormat , এবং createSampleFormat , যেগুলি Format শ্রেণীকে ইনস্ট্যান্টিয়েট করতে ব্যবহৃত হয়েছিল সেগুলি সরান৷ পরিবর্তে Format উদাহরণ তৈরি করার জন্য Format.Builder ব্যবহার করুন।
    • অপসারিত পদ্ধতিগুলি সরান copyWithMaxInputSize , copyWithSubsampleOffsetUs , copyWithLabel , copyWithManifestFormatInfo , copyWithGaplessInfo , copyWithFrameRate , copyWithDrmInitData , copyWithMetadata , copyWithMetadata , copyWithBitrate , copyWithVideoSize ব্যবহার করুন পরিবর্তে Format.buildUpon() এবং সেটার পদ্ধতি।
    • অপসারিত ExoPlayer.retry() মুছে ফেলুন, এর পরিবর্তে prepare() ব্যবহার করুন।
    • অপ্রচলিত শূন্য-আর্গ DefaultTrackSelector কনস্ট্রাক্টর সরান, পরিবর্তে DefaultTrackSelector(Context) ব্যবহার করুন।
    • অপসারিত OfflineLicenseHelper কনস্ট্রাক্টর সরান, পরিবর্তে OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) ব্যবহার করুন৷
    • অপসারিত DownloadManager কনস্ট্রাক্টর সরান, এর পরিবর্তে একটি Executor নেওয়া কনস্ট্রাক্টর ব্যবহার করুন।
    • অপ্রচলিত Cue কনস্ট্রাক্টর সরান, পরিবর্তে Cue.Builder ব্যবহার করুন।
    • অপসারিত OfflineLicenseHelper কনস্ট্রাক্টর সরান, পরিবর্তে OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) ব্যবহার করুন৷
    • চারটি অপ্রচলিত AnalyticsListener পদ্ধতি সরান:
      • onDecoderEnabled , পরিবর্তে onAudioEnabled এবং/অথবা onVideoEnabled ব্যবহার করুন।
      • onDecoderInitialized , onAudioDecoderInitialized এবং/অথবা onVideoDecoderInitialized ব্যবহার করুন।
      • onDecoderInputFormatChanged , onAudioInputFormatChanged এবং/অথবা onVideoInputFormatChanged ব্যবহার করুন।
      • onDecoderDisabled , onAudioDisabled এবং/অথবা onVideoDisabled ব্যবহার করুন।
    • বাতিল করা Player.Listener.onSeekProcessed এবং AnalyticsListener.onSeekProcessed সরান, পরিবর্তে DISCONTINUITY_REASON_SEEK সাথে onPositionDiscontinuity ব্যবহার করুন।
    • ExoPlayer.setHandleWakeLock(boolean) সরান, পরিবর্তে setWakeMode(int) ব্যবহার করুন।
    • অপসারিত DefaultLoadControl.Builder.createDefaultLoadControl() সরান, পরিবর্তে build() ব্যবহার করুন।
    • অপসারিত MediaItem.PlaybackProperties সরান, পরিবর্তে MediaItem.LocalConfiguration ব্যবহার করুন৷ অপ্রচলিত ক্ষেত্র MediaItem.playbackProperties এখন MediaItem.LocalConfiguration টাইপের।

সংস্করণ 1.1.0-rc01

জুন 21, 2023

Use the 1.1.0 stable version .

সংস্করণ 1.1.0-beta01

7 জুন, 2023

Use the 1.1.0 stable version .

সংস্করণ 1.1.0-alpha01

10 মে, 2023

Use the 1.1.0 stable version .

সংস্করণ 1.0.0

সংস্করণ 1.0.2

18 মে, 2023

androidx.media3:media3-*:1.0.2 is released. Version 1.0.2 contains these commits.

This release corresponds to the ExoPlayer 2.18.7 release .

This release contains the following changes since the 1.0.1 release :

  • Core library:
    • Buffer.isLastSample() যোগ করুন যা বোঝায় যদি Buffer ফ্ল্যাগ C.BUFFER_FLAG_LAST_SAMPLE থাকে।
    • 'স্ট্রিমের শেষ' নমুনা না পড়ে ফ্রেমের সাথে শেষ নমুনাটি সারিবদ্ধ থাকলে যেখানে শেষ ফ্রেম রেন্ডার নাও হতে পারে সেই সমস্যার সমাধান করুন। ( #11079 )।
  • নিষ্কাশনকারী:
    • RTSP এবং MP4 এক্সট্র্যাক্টর ( #303 ) দ্বারা ইতিমধ্যে ব্যবহৃত পার্সিং লজিক পুনরায় ব্যবহার করে MPEG-TS ফাইলগুলিতে H.265 SPS-এর পার্সিং ঠিক করুন।
  • পাঠ্য:
    • SSA: UTF-16 ফাইলগুলির জন্য সমর্থন যোগ করুন যদি তারা একটি বাইট অর্ডার চিহ্ন দিয়ে শুরু করে ( #319 )।
  • অধিবেশন:
    • Fix issue where MediaController doesn't update its available commands when connected to a legacy MediaSessionCompat that updates its actions.
    • Fix bug that prevented the MediaLibraryService from returning null for a call from System UI to Callback.onGetLibraryRoot with params.isRecent == true on API 30 ( #355 ).
    • Fix memory leak of MediaSessionService or MediaLibraryService ( #346 ).
    • Fix bug where a combined Timeline and position update in a MediaSession may cause a MediaController to throw an IllegalStateException .

সংস্করণ 1.0.1

18 এপ্রিল, 2023

androidx.media3:media3-*:1.0.1 is released. Version 1.0.1 contains these commits.

This release corresponds to the ExoPlayer 2.18.6 release .

  • Core library:
    • ডিফল্ট অবস্থানে যাওয়ার সময় লক্ষ্য লাইভ স্ট্রিম ওভাররাইড রিসেট করুন ( #11051 )।
    • মিডিয়াতে খালি নমুনা স্ট্রীম প্লেব্যাক আটকে যেতে পারে এমন বাগ ঠিক করুন।
  • অধিবেশন:
    • Fix bug where multiple identical queue items published by a legacy MediaSessionCompat result in an exception in MediaController ( #290 ).
    • Add missing forwarding of MediaSession.broadcastCustomCommand to the legacy MediaControllerCompat.Callback.onSessionEvent ( #293 ).
    • Fix bug where calling MediaSession.setPlayer doesn't update the available commands.
    • Fix issue that TrackSelectionOverride instances sent from a MediaController are ignored if they reference a group with Format.metadata ( #296 ).
    • Fix issue where Player.COMMAND_GET_CURRENT_MEDIA_ITEM needs to be available to access metadata via the legacy MediaSessionCompat .
    • Fix issue where MediaSession instances on a background thread cause crashes when used in MediaSessionService ( #318 ).
    • Fix issue where a media button receiver was declared by the library without the app having intended this ( #314 ).
  • ড্যাশ:
    • খালি সেগমেন্ট টাইমলাইনগুলির হ্যান্ডলিং ঠিক করুন ( #11014 )।
  • RTSP:
    • RTSP Error 461 UnsupportedTransport ( #11069 ) এর সাথে UDP এর সাথে RTSP সেটআপ ব্যর্থ হলে TCP দিয়ে পুনরায় চেষ্টা করুন।

সংস্করণ 1.0.0

22 মার্চ, 2023

androidx.media3:media3-*:1.0.0 is released. সংস্করণ 1.0.0 এই কমিট ধারণ করে.

This release corresponds to the ExoPlayer 2.18.5 release .

There are no changes since 1.0.0-rc02.

Version 1.0.0-rc02

2 মার্চ, 2023

androidx.media3:media3-*:1.0.0-rc02 is released. Version 1.0.0-rc02 contains these commits.

This release corresponds to the ExoPlayer 2.18.4 release .

  • Core library:
    • API 33 ( #10970 ) এ নেটওয়ার্ক প্রকার সনাক্তকরণ ঠিক করুন।
    • ExoPlayer.isTunnelingEnabled ( #10977 ) কল করার সময় NullPointerException ঠিক করুন।
  • ডাউনলোড:
    • SegmentDownloader এবং সাবক্লাসে ( #248 ) কনফিগারযোগ্য মার্জ করার জন্য দুটি সেগমেন্টের শুরুর সময়ের সর্বাধিক পার্থক্য করুন।
  • অডিও:
    • Samsung ডিভাইসে ভাঙা ফাঁকহীন MP3 প্লেব্যাক ঠিক করুন ( #8594 )।
    • অডিও নিষ্ক্রিয় করার সাথে সাথে প্লেব্যাকের গতি সেট করা বাগটি ঠিক করুন যা পূর্ববর্তী গতি পরিবর্তন ( #10882 ) দ্বারা ওভাররাইড হতে পারে।
  • ভিডিও:
    • HEVC HEVCProfileMain10 এর পরিবর্তে HEVC HDR10 বিন্যাস HEVCProfileMain10HDR10 এ ম্যাপ করুন।
    • Google TV এবং Lenovo M10 FHD Plus-এর সাথে Chromecast-এ ডিভাইস সংক্রান্ত সমস্যার সমাধান যোগ করুন যার ফলে 60fps AVC স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত হয় ( #10898 )।
    • স্ক্রীন রিফ্রেশ রেট থেকে অনেক বেশি ফ্রেম রেট সহ মিডিয়া প্লে করার সময় ফ্রেম রিলিজ কর্মক্ষমতা সমস্যাগুলি ঠিক করুন৷
  • কাস্ট:
    • মিডিয়া আইটেমগুলির মধ্যে স্থানান্তর করার সময় ক্ষণস্থায়ী STATE_IDLE ঠিক করুন ( #245 )।
  • RTSP:
    • অবৈধ আরটিএসপির পার্সিংয়ে নিক্ষিপ্ত IllegalArgumentException ধরুন প্রতিক্রিয়া বার্তা বর্ণনা করুন ( #10971 )।
  • অধিবেশন:
    • Fix a bug where notification play/pause button doesn't update with player state ( #192 ).
  • আইএমএ এক্সটেনশন:
    • একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই) LOADED ইভেন্টটি পাওয়া যায়নি৷

সংস্করণ 1.0.0-rc01

ফেব্রুয়ারী 16, 2023

androidx.media3:media3-*:1.0.0-rc01 is released. সংস্করণ 1.0.0-rc01 এই কমিট ধারণ করে।

This release corresponds to the ExoPlayer 2.18.3 release .

  • Core library:
    • MediaCodecSelector এর পছন্দগুলি বজায় রাখার জন্য রেন্ডারারের ডিকোডার অর্ডারিং লজিককে টুইক করুন, এমনকি একটি ডিকোডার রিপোর্ট করলেও এটি কার্যকরীভাবে মিডিয়া চালাতে সক্ষম নাও হতে পারে। উদাহরণস্বরূপ ডিফল্ট নির্বাচকের সাথে, শুধুমাত্র কার্যকরী সমর্থন সহ হার্ডওয়্যার ডিকোডারকে সফ্টওয়্যার ডিকোডারের চেয়ে পছন্দ করা হবে যা সম্পূর্ণরূপে ফর্ম্যাট সমর্থন করে ( #10604 )।
    • ExoPlayer.Builder.setPlaybackLooper যোগ করুন যা একটি নতুন ExoPlayer উদাহরণের জন্য একটি পূর্ব-বিদ্যমান প্লেব্যাক থ্রেড সেট করে৷
    • ডাউনলোড ম্যানেজার সাহায্যকারীদের সাফ করার অনুমতি দিন ( #10776 )।
    • BasePlayer.seekTo এ পরামিতি যোগ করুন যাতে অনুসন্ধানের জন্য ব্যবহৃত কমান্ড নির্দেশ করে।
    • API 21+ ( #220 ) তে অঙ্কনযোগ্য লোড করার সময় থিম ব্যবহার করুন।
    • ConcatenatingMediaSource2 যোগ করুন যা একাধিক মিডিয়া আইটেমকে একক উইন্ডোতে একত্রিত করার অনুমতি দেয় ( #247 )।
  • নিষ্কাশনকারী:
    • একটি NullPointerException এর পরিবর্তে একটি ParserException নিক্ষেপ করুন যদি ট্র্যাক পরমাণু পার্স করার সময় নমুনা টেবিল (stbl) একটি প্রয়োজনীয় নমুনা বিবরণ (stsd) অনুপস্থিত থাকে।
    • fMP4 ( #10941 ) এ সরাসরি সিঙ্ক ফ্রেমে খোঁজার সময় সঠিকভাবে নমুনাগুলি এড়িয়ে যান।
  • অডিও:
    • সরাসরি প্লেব্যাকে (পাসথ্রু) AudioTrack জন্য ন্যূনতম বাফার আকার গণনা করতে সংকুচিত অডিও বিন্যাস বিটরেট ব্যবহার করুন।
  • পাঠ্য:
    • যদি একটি সাবটাইটেল ফাইলে কোন সংকেত না থাকে তাহলে TextRenderer Subtitle.getEventTime এ একটি অবৈধ (নেতিবাচক) সূচক পাস করার সমাধান করুন।
    • SubRip: UTF-16 ফাইলগুলির জন্য সমর্থন যোগ করুন যদি তারা একটি বাইট অর্ডার চিহ্ন দিয়ে শুরু করে।
  • মেটাডেটা:
    • ID3 v2.4 দ্বারা অনুমোদিত, ID3 ফ্রেম থেকে একাধিক নাল-বিচ্ছিন্ন মান পার্স করুন।
    • মেটাডেটা দ্বারা বর্ণিত বিষয়বস্তুর ধরন বা ফোল্ডারের ধরন বোঝাতে MediaMetadata.mediaType যোগ করুন।
    • MediaMetadata.isBrowsable এর প্রতিস্থাপন হিসাবে MediaMetadata.folderType যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
  • ড্যাশ:
    • টাইল গণনা সহ চিত্র অভিযোজন সেটের জন্য সম্পূর্ণ পার্সিং যোগ করুন ( #3752 )।
  • UI:
    • Fix the deprecated PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) to ensure visibility changes are passed to the registered listener ( #229 ).
    • Fix the ordering of the center player controls in PlayerView when using a right-to-left (RTL) layout ( #227 ).
  • অধিবেশন:
    • Add abstract SimpleBasePlayer to help implement the Player interface for custom players.
    • Add helper method to convert platform session token to Media3 SessionToken ( #171 ).
    • Use onMediaMetadataChanged to trigger updates of the platform media session ( #219 ).
    • Add the media session as an argument of getMediaButtons() of the DefaultMediaNotificationProvider and use immutable lists for clarity ( #216 ).
    • Add onSetMediaItems callback listener to provide means to modify/set MediaItem list, starting index and position by session before setting onto Player ( #156 ).
    • Avoid double tap detection for non-Bluetooth media button events ( #233 ).
    • Make QueueTimeline more robust in case of a shady legacy session state ( #241 ).
  • মেটাডেটা:
    • ID3 v2.4 দ্বারা অনুমোদিত, ID3 ফ্রেম থেকে একাধিক নাল-বিচ্ছিন্ন মান পার্স করুন।
    • মেটাডেটা দ্বারা বর্ণিত বিষয়বস্তুর ধরন বা ফোল্ডারের ধরন বোঝাতে MediaMetadata.mediaType যোগ করুন।
    • MediaMetadata.isBrowsable এর প্রতিস্থাপন হিসাবে MediaMetadata.folderType যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
  • কাস্ট এক্সটেনশন:
    • 21.2.0-এ কাস্ট SDK সংস্করণকে বাম্প করুন।
  • আইএমএ এক্সটেনশন:
    • থ্রেডিং সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে ImaServerSideAdInsertionMediaSource এর প্লেয়ার লিসেনারকে সরিয়ে দিন।
    • টিভি ডিভাইসে স্কিপ বোতামে ফোকাস করার অনুরোধ করার জন্য ImaServerSideAdInsertionMediaSource.AdsLoader.Builder এ যখন উপলব্ধ একটি প্রপার্টি focusSkipButtonWhenAvailable যোগ করুন এবং এটিকে ডিফল্টরূপে সত্যে সেট করুন৷
    • ImaServerSideAdInsertionMediaSource.AdsLoader এ একটি পদ্ধতি focusSkipButton() যোগ করুন প্রোগ্রাম্যাটিকভাবে স্কিপ বোতামে ফোকাস করার অনুরোধ করতে।
    • IMA SDK সংস্করণকে 3.29.0 এ বাম্প করুন৷
  • ডেমো অ্যাপ:
    • রানটাইমে বিজ্ঞপ্তি ডাউনলোড করার জন্য বিজ্ঞপ্তির অনুমতির অনুরোধ করুন ( #10884 )।

Version 1.0.0-beta03

নভেম্বর 22, 2022

androidx.media3:media3-*:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.

This release corresponds to the ExoPlayer 2.18.2 release .

  • Core library:
    • বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে ExoPlayer.isTunnelingEnabled যোগ করুন ( #2518 )।
    • একটি একক MediaSource ( #7279 ) মোড়ানো সহজ করতে WrappingMediaSource যোগ করুন।
    • অপর্যাপ্ত উপলব্ধ মেমরির কারণে প্লেব্যাক আটকে যাওয়ার আগে ব্যাক বাফার বাতিল করুন।
    • অফলোড সক্ষম হলে ট্রেসিং "doSomeWork" ব্লকটি বন্ধ করুন৷
    • PlaybackStatsListener ( #180 ) এ দ্রুত অনুসন্ধানের সাথে সেশন ট্র্যাকিং সমস্যা সমাধান করুন।
    • একটি একক-আইটেম প্লেলিস্ট ( #10667 ) এ seekToNext বা seekToPrevious কল করার সময় অনুপস্থিত onMediaItemTransition কলব্যাক পাঠান।
    • Player.getSurfaceSize যোগ করুন যা ভিডিওটি রেন্ডার করা হয়েছে এমন পৃষ্ঠের আকার প্রদান করে।
    • প্লেয়ার রিলিজের সময় শ্রোতাদের অপসারণ করার ফলে একটি IllegalStateException ( #10758 ) হতে পারে এমন ত্রুটির সমাধান করুন৷
  • নির্মাণ:
    • সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন compileSdkVersion প্রয়োগ করুন ( #10684 )।
    • অন্য গ্রেডল বিল্ডে অন্তর্ভুক্ত করার সময় প্রকাশনা ব্লক এড়িয়ে চলুন।
  • ট্র্যাক নির্বাচন:
    • ডিসপ্লে সমর্থন না করলে ডলবি ভিশনে অন্যান্য ট্র্যাক পছন্দ করুন। ( #8944 )।
  • ডাউনলোড:
    • একই PriorityTaskManager ( #10570 ) এর সাথে একযোগে ডাউনলোড এবং প্লেব্যাকের কারণে ProgressiveDownloader সম্ভাব্য অসীম লুপ ঠিক করুন।
    • ডাউনলোড বিজ্ঞপ্তি অবিলম্বে প্রদর্শিত করুন ( #183 )।
    • অত্যধিক থ্রেড তৈরি এড়াতে সমান্তরাল ডাউনলোড অপসারণ 1-এ সীমাবদ্ধ করুন ( #10458 )।
  • ভিডিও:
    • ডলবি ভিশনের বিকল্প ডিকোডার ব্যবহার করে দেখুন যদি ডিসপ্লে সমর্থন না করে। ( #9794 )।
  • অডিও:
    • একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory ত্রুটি এড়াতে AudioTrack দৃষ্টান্ত প্রকাশের জন্য SingleThreadExecutor ব্যবহার করুন ( #10057 )।
    • Adds AudioOffloadListener.onExperimentalOffloadedPlayback for the AudioTrack offload state. ( #134 )।
    • AudioTrackBufferSizeProvider একটি সর্বজনীন ইন্টারফেস করুন।
    • পছন্দের অডিও আউটপুট ডিভাইস সেট করতে ExoPlayer.setPreferredAudioDevice যোগ করুন ( #135 )।
    • Rename androidx.media3.exoplayer.audio.AudioProcessor to androidx.media3.common.audio.AudioProcessor .
    • সমস্ত অ্যান্ড্রয়েড সংস্করণে ( #10701 ) যথাক্রমে 7.1 এবং 7.1.4 চ্যানেল মাস্কে 8-চ্যানেল এবং 12-চ্যানেল অডিও ম্যাপ করুন।
  • মেটাডেটা:
    • MetadataRenderer এখন মেটাডেটা উপলব্ধ হওয়ার সাথে সাথে রেন্ডার করার জন্য কনফিগার করা যেতে পারে। MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) দিয়ে একটি উদাহরণ তৈরি করুন রেন্ডারার মেটাডেটা প্রথম দিকে আউটপুট করবে নাকি প্লেয়ার পজিশনের সাথে সিঙ্ক করবে।
  • DRM:
    • অ্যান্ড্রয়েড 13 ক্লিয়ারকি বাস্তবায়নে একটি বাগ নিয়ে কাজ করুন যা একটি অ-খালি কিন্তু অবৈধ লাইসেন্স URL প্রদান করে।
    • setMediaDrmSession failed: session not opened ত্রুটি (যেমন Widevine থেকে ClearKey)।
  • পাঠ্য:
    • CEA-608: ফিল্ড 2-এ পরিষেবা সুইচ কমান্ডগুলি সঠিকভাবে পরিচালনা করা হয়েছে তা নিশ্চিত করুন ( #10666 )।
  • ড্যাশ:
    • ম্যানিফেস্ট ( #10460 ) থেকে EventStream.presentationTimeOffset পার্স করুন।
  • UI:
    • TrackSelectionDialogBuilder ( #10429 ) এ প্রিসেট হিসাবে প্লেয়ারের বর্তমান ওভাররাইড ব্যবহার করুন।
  • অধিবেশন:
    • Ensure commands are always executed in the correct order even if some require asynchronous resolution ( #85 ).
    • Add DefaultMediaNotificationProvider.Builder to build DefaultMediaNotificationProvider instances. The builder can configure the notification ID, the notification channel ID and the notification channel name used by the provider. Also, add method DefaultMediaNotificationProvider.setSmallIcon(int) to set the notifications small icon. ( #104 ).
    • Ensure commands sent before MediaController.release() are not dropped ( #99 ).
    • SimpleBitmapLoader can load bitmap from file:// URIs ( #108 ).
    • Fix assertion that prevents MediaController to seek over an ad in a period ( #122 ).
    • When playback ends, the MediaSessionService is stopped from the foreground and a notification is shown to restart playback of the last played media item ( #112 ).
    • Don't start a foreground service with a pending intent for pause ( #167 ).
    • Manually hide the 'badge' associated with the notification created by DefaultNotificationProvider on API 26 and API 27 (the badge is automatically hidden on API 28+) ( #131 ).
    • Fix bug where a second binder connection from a legacy MediaSession to a Media3 MediaController causes IllegalStateExceptions ( #49 ).
  • RTSP:
    • H263 খণ্ডিত প্যাকেট হ্যান্ডলিং যোগ করুন ( #119 )।
    • MP4A-LATM ( #162 ) এর জন্য সমর্থন যোগ করুন।
  • আইএমএ:
    • IMA SDK বিজ্ঞাপন লোড করার সময় আটকে যায় এমন ক্ষেত্রে পরিচালনা করতে বিজ্ঞাপনের তথ্য লোড করার সময়সীমা যোগ করুন ( #10510 )।
    • বিষয়বস্তুর শেষ পর্যন্ত খোঁজার সময় মিড-রোল বিজ্ঞাপনগুলি এড়িয়ে যাওয়া প্রতিরোধ করুন ( #10685 )।
    • সার্ভার-সাইড সন্নিবেশিত বিজ্ঞাপন সহ লাইভ স্ট্রিমগুলির জন্য উইন্ডোর সময়কাল সঠিকভাবে গণনা করুন, উদাহরণস্বরূপ IMA DAI ( #10764 )।
  • FFmpeg এক্সটেনশন:
    • NDK 23.1.7779620 এবং তার উপরে ( #9933 ) এর সাথে FFmpeg লাইব্রেরি লিঙ্ক করতে নতুন প্রয়োজনীয় পতাকা যুক্ত করুন।
  • AV1 এক্সটেনশন:
    • সর্বশেষ অ্যান্ড্রয়েড স্টুডিও রিলিজের ( #9933 ) সাথে অসঙ্গতি এড়াতে CMake সংস্করণ আপডেট করুন।
  • কাস্ট এক্সটেনশন:
    • একটি MediaController ( #142 ) দিয়ে প্লেব্যাক নিয়ন্ত্রণ করার সময় CastPlayer সনাক্ত করতে সক্ষম হতে getDeviceInfo() প্রয়োগ করুন।
  • ট্রান্সফরমার:
    • যখন একটি আউটপুট নমুনা তৈরি করা খুব ধীর তা সনাক্ত করতে muxer ওয়াচডগ টাইমার যোগ করুন৷
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Transformer.Builder.setOutputMimeType(String) সরান। এই বৈশিষ্ট্য সরানো হয়েছে. ডিফল্ট মুক্সার ব্যবহার করা হলে MIME প্রকারটি সর্বদা MP4 হবে।

Version 1.0.0-beta02

জুলাই 21, 2022

androidx.media3:media3-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.

This release corresponds to the ExoPlayer 2.18.1 release .

  • Core library:
    • নিশ্চিত করুন যে ExoPlayer.setShuffleOrder সাথে ShuffleOrder পরিবর্তন করার ফলে Player.Listener#onTimelineChanged with reason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED ( #9889 )।
    • প্রগতিশীল মিডিয়ার জন্য, শুধুমাত্র বাফার অবস্থানে নির্বাচিত ট্র্যাকগুলি অন্তর্ভুক্ত করুন ( #10361 )।
    • সমস্ত ExoPlayer লগ আউটপুট ( #9752 ) এর জন্য কাস্টম লগারকে অনুমতি দিন।
    • DefaultMediaSourceFactorysetDataSourceFactory এর বাস্তবায়ন ঠিক করুন, যা কিছু ক্ষেত্রে অ-কার্যকর ছিল ( #116 )।
  • নিষ্কাশনকারী:
    • H265 স্বল্পমেয়াদী রেফারেন্স ছবি সেটের পার্সিং ঠিক করুন ( #10316 )।
    • esds বক্স ( #10381 ) থেকে বিটরেটের পার্সিং ঠিক করুন।
  • ড্যাশ:
    • ম্যানিফেস্ট ( #10246 ) থেকে ClearKey লাইসেন্স URL পার্স করুন।
  • UI:
    • নিশ্চিত করুন যে টকব্যাক প্লেব্যাক কন্ট্রোল মেনুতে বর্তমানে সক্রিয় গতির বিকল্প ঘোষণা করেছে ( #10298 )।
  • RTSP:
    • VP8 খণ্ডিত প্যাকেট হ্যান্ডলিং যোগ করুন ( #110 )।
  • লিনব্যাক এক্সটেনশন:
    • LeanbackAdapter ( 10420 ) এ যখন-তৈরি পরিবর্তন হয় playWhenReady শুনুন।
  • কাস্ট:
    • CastTimeline Window.mediaItem হিসাবে প্লেলিস্ট পদ্ধতিতে পাস করা MediaItem ব্যবহার করুন ( #25 , #8212 )।
    • CastPlayer ( #25 ) এর সাথে Player.getMetadata() এবং Listener.onMediaMetadataChanged() সমর্থন করুন।

সংস্করণ 1.0.0-beta01

16 জুন, 2022

androidx.media3:media3-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

This corresponds to the ExoPlayer 2.18.0 release .

  • Core library:
    • MediaMetricsManager মাধ্যমে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সমর্থন সক্ষম করুন৷ ExoPlayer প্লেব্যাক ইভেন্ট এবং কর্মক্ষমতা ডেটা প্ল্যাটফর্মে ফরোয়ার্ড করবে, যা ডিভাইসে সিস্টেম কর্মক্ষমতা এবং ডিবাগিং তথ্য প্রদান করতে সাহায্য করে। ডিভাইসের ব্যবহারকারীর দ্বারা ব্যবহার এবং ডায়াগনস্টিক ডেটা ভাগ করা সক্ষম হলে এই ডেটা Google দ্বারা সংগ্রহ করা যেতে পারে৷ অ্যাপগুলি ExoPlayer.Builder.setUsePlatformDiagnostics(false) দিয়ে ExoPlayer-এর জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে অবদান রাখা থেকে অপ্ট-আউট করতে পারে।
    • MergingMediaSource ব্যবহার করার সময় ট্র্যাকগুলি প্রায়ই রিসেট করা হয় এমন বাগ ঠিক করুন, উদাহরণস্বরূপ যখন সাইড-লোড করা সাবটাইটেল এবং নির্বাচিত সাবটাইটেল মিড-প্লেব্যাক ( #10248 ) পরিবর্তন করা হয়।
    • API 29 এবং 30-এ 5G-NSA নেটওয়ার্কের ধরন সনাক্ত করা বন্ধ করুন৷ এই প্লেব্যাকগুলি একটি 4G নেটওয়ার্ক ধরে নেবে৷
    • MediaSource.Factory.setDrmSessionManagerProvider এবং MediaSource.Factory.setLoadErrorHandlingPolicynull পাস করার অনুমতি দিন। প্রয়োজনে DefaultDrmSessionManagerProvider এবং DefaultLoadErrorHandlingPolicy এর উদাহরণগুলি স্পষ্টভাবে পাস করা যেতে পারে।
    • সঠিক LocalConfiguration জানা না থাকলে মিডিয়া প্লে করার জন্য প্রয়োজনীয় মেটাডেটা উপস্থাপন করতে MediaItem.RequestMetadata যোগ করুন। এছাড়াও MediaMetadata.mediaUrl মুছে ফেলুন কারণ এটি এখন RequestMetadata তে অন্তর্ভুক্ত।
    • খেলোয়াড়দের একটি আইটেম সেট করার অনুমতি দিতে সক্ষম করতে Player.Command.COMMAND_SET_MEDIA_ITEM যোগ করুন।
  • ট্র্যাক নির্বাচন:
    • TrackSelectionOverrides ক্লাসকে TrackSelectionParameters এ সমতল করুন এবং TrackSelectionOverride শীর্ষ স্তরের শ্রেণীতে উন্নীত করুন।
    • TracksInfo Tracks এবং TracksInfo.TrackGroupInfo ইনফোকে Tracks.Group পুনঃনামকরণ করুন। Player.getCurrentTracksInfo এবং Player.Listener.onTracksInfoChanged এর নামও Player.getCurrentTracks এবং Player.Listener.onTracksChanged করা হয়েছে। This includes 'un-deprecating' the Player.Listener.onTracksChanged method name, but with different parameter types.
    • DefaultTrackSelector.buildUponParameters এবং DefaultTrackSelector.Parameters.buildUpon পরিবর্তন করুন DefaultTrackSelector.Parameters.Builder এর পরিবর্তে DefaultTrackSelector.ParametersBuilder ফেরত দিন।
    • DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities যোগ করুন যা ডিফল্টরূপে সক্ষম। সক্রিয় করা হলে, DefaultTrackSelector এমন অডিও ট্র্যাক পছন্দ করবে যার চ্যানেলের সংখ্যা ডিভাইসের আউটপুট ক্ষমতার বেশি নয়। হ্যান্ডহেল্ড ডিভাইসে, DefaultTrackSelector মাল্টিচ্যানেল অডিও ফরম্যাটের চেয়ে স্টেরিও/মনো পছন্দ করবে, যদি না মাল্টিচ্যানেল ফর্ম্যাটটি স্থানিক (Android 12L+) বা ডলবি চারপাশের সাউন্ড ফর্ম্যাট না হয়। উপরন্তু, অডিও স্থানিককরণকে সমর্থন করে এমন ডিভাইসগুলিতে, DefaultTrackSelector স্প্যাটিলাইজার বৈশিষ্ট্যগুলির পরিবর্তনের জন্য নিরীক্ষণ করবে এবং এর উপর একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে। একটি television UI মোড সহ ডিভাইসগুলিকে এই সীমাবদ্ধতাগুলি থেকে বাদ দেওয়া হয়েছে এবং সর্বোচ্চ চ্যানেল গণনা সহ বিন্যাসটিকে অগ্রাধিকার দেওয়া হবে৷ এই বৈশিষ্ট্যটি সক্ষম করার জন্য, DefaultTrackSelector দৃষ্টান্ত একটি Context দিয়ে তৈরি করা আবশ্যক।
  • ভিডিও:
    • DummySurface নাম পরিবর্তন করে PlaceholderSurface করুন।
    • MediaCodecVideoRenderer.getCodecMaxInputSize এ AV1 সমর্থন যোগ করুন।
  • অডিও:
    • LG AC3 অডিও ডিকোডার বিজ্ঞাপন অ-মানক MIME প্রকার ব্যবহার করুন৷
    • API <21-এ ধীরগতির ART যাচাইকরণ রোধ করতে android.media.AudioAttributes থেকে AudioAttributes.getAudioAttributesV21() এর রিটার্ন টাইপটিকে একটি নতুন AudioAttributesV21 র্যাপার ক্লাসে পরিবর্তন করুন।
    • প্ল্যাটফর্ম (API 29+) জিজ্ঞাসা করুন বা অডিও পাসথ্রু-এর জন্য অডিও এনকোডিং চ্যানেল গণনা অনুমান করুন যখন ফর্ম্যাট অডিও চ্যানেল গণনা সেট করা নেই, যা HLS খণ্ডহীন প্রস্তুতি ( 10204 ) এর সাথে ঘটে।
    • চ্যানেল মাস্ক AudioFormat.CHANNEL_OUT_7POINT1POINT4 দিয়ে AudioTrack কনফিগার করুন যদি ডিকোডার 12টি চ্যানেল PCM অডিও ( #10322 .
  • ডিআরএম
    • বিন্যাস পরিবর্তন ( 10274 ) এর পরে অবিলম্বে খোঁজার সময় DRM সেশনটি সর্বদা সঠিকভাবে আপডেট করা হয়েছে তা নিশ্চিত করুন।
  • পাঠ্য:
    • Player.getCurrentCues() পরিবর্তন করুন List<Cue> এর পরিবর্তে CueGroup ফেরত দিতে।
    • SSA: OutlineColour শৈলী সেটিং সমর্থন করুন যখন BorderStyle == 3 (অর্থাৎ OutlineColour কিউর পটভূমি সেট করে) ( #8435 )।
    • CEA-708: একাধিক পরিষেবা ব্লকে ডেটা পার্স করুন এবং বর্তমানে নির্বাচিত পরিষেবা নম্বরের সাথে যুক্ত নয় এমন ব্লকগুলিকে উপেক্ষা করুন।
    • RawCcExtractor সরান, যা শুধুমাত্র একটি Google-অভ্যন্তরীণ সাবটাইটেল বিন্যাস পরিচালনা করতে ব্যবহৃত হয়েছিল।
  • নিষ্কাশনকারী:
    • AVI ( #2092 ) এর জন্য সমর্থন যোগ করুন।
    • ম্যাট্রোস্কা: অপাস ট্র্যাকের জন্য DiscardPadding পার্স করুন।
    • MP4: esds বক্স থেকে বিটরেট পার্স করুন।
    • ওগ: ডুপ্লিকেট ওপাস আইডি এবং মন্তব্য শিরোনাম ( #10038 ) অনুমতি দিন।
  • UI:
    • Fix delivery of events to OnClickListener s set on PlayerView in the case that useController=false ( #9605 ). এছাড়াও সমস্ত ভিউ কনফিগারেশনের জন্য OnLongClickListener এ ইভেন্টের ডেলিভারি ঠিক করুন।
    • Fix incorrectly treating a sequence of touch events that exit the bounds of PlayerView before ACTION_UP as a click ( #9861 ).
    • PlayerView অ্যাক্সেসিবিলিটি সমস্যাটি ঠিক করুন যেখানে ট্যাপ করা নিয়ন্ত্রণগুলি লুকানোর পরিবর্তে প্লেব্যাককে টগল করতে পারে ( #8627 )।
    • ExoPlayer পরিবর্তে Player ইন্টারফেসের সাথে কাজ করতে TrackSelectionView এবং TrackSelectionDialogBuilder পুনরায় লিখুন। এটি ভিউগুলিকে অন্যান্য Player বাস্তবায়নের সাথে ব্যবহার করার অনুমতি দেয় এবং UI মডিউল থেকে ExoPlayer মডিউলে নির্ভরতা সরিয়ে দেয়। এটি একটি ব্রেকিং পরিবর্তন.
    • PlayerView ট্র্যাক সিলেক্টরে জোর করে টেক্সট ট্র্যাক দেখাবেন না এবং "কোনটিই" নির্বাচন করা না থাকলে একটি উপযুক্ত বাধ্যতামূলক পাঠ্য ট্র্যাক নির্বাচন করুন ( #9432 )।
  • ড্যাশ:
    • ডিটিএস AudioChannelConfiguration উপাদান থেকে চ্যানেল গণনা পার্স করুন। এটি ডিটিএস স্ট্রীমের জন্য অডিও পাসথ্রু পুনরায় সক্ষম করে ( #10159 )।
    • DashMediaSource.Factory.setCompositeSequenceableLoaderFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
  • HLS:
    • প্লেলিস্ট CODECS অ্যাট্রিবিউটে অডিও কোডেক ( #10065 ) না থাকলে খণ্ডিত প্রস্তুতিতে পতন।
    • HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory , HlsMediaSource.Factory.setPlaylistParserFactory , এবং HlsMediaSource.Factory.setPlaylistTrackerFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory , DefaultHlsPlaylistParserFactory , অথবা DefaultHlsPlaylistTracker.FACTORY এর একটি রেফারেন্স প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে৷
  • মসৃণ স্ট্রিমিং:
    • SsMediaSource.Factory.setCompositeSequenceableLoaderFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
  • RTSP:
    • H263 ( #63 ) এর জন্য RTP রিডার যোগ করুন।
    • MPEG4 ( #35 ) এর জন্য RTP রিডার যোগ করুন।
    • HEVC ( #36 ) এর জন্য RTP রিডার যোগ করুন।
    • AMR এর জন্য RTP রিডার যোগ করুন। বর্তমানে শুধুমাত্র মনো-চ্যানেল, নন-ইন্টারলিভড AMR স্ট্রীম সমর্থিত। যৌগিক AMR RTP পেলোড সমর্থিত নয়। ( #46 )
    • VP8 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
    • WAV ( #56 ) এর জন্য RTP রিডার যোগ করুন।
    • RTSP মৌলিক অনুমোদন হেডার ঠিক করুন। ( #9544 )।
    • বাধ্যতামূলক SDP ক্ষেত্রগুলি পরীক্ষা করা বন্ধ করুন কারণ ExoPlayer-এর তাদের প্রয়োজন নেই ( #10049 )।
    • RTSP টাইমিং ( #10165 ) পার্স করার সময় চেক করা ব্যতিক্রম ছুঁড়ে দিন।
    • VP9 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
    • OPUS ( #53 ) এর জন্য RTP রিডার যোগ করুন।
  • তথ্য সূত্র:
    • DummyDataSource থেকে PlaceholderDataSource নামকরণ করুন।
    • OkHttp ব্যাহত হ্যান্ডলিং ওয়ার্কআউন্ড।
  • অধিবেশন:
    • Replace MediaSession.MediaItemFiller with MediaSession.Callback.onAddMediaItems to allow asynchronous resolution of requests.
    • Support setMediaItems(s) methods when MediaController connects to a legacy media session.
    • Remove MediaController.setMediaUri and MediaSession.Callback.onSetMediaUri . The same functionality can be achieved by using MediaController.setMediaItem and MediaSession.Callback.onAddMediaItems .
    • Forward legacy MediaController calls to play media to MediaSession.Callback.onAddMediaItems instead of onSetMediaUri .
    • Add MediaNotification.Provider and DefaultMediaNotificationProvider to provide customization of the notification.
    • Add BitmapLoader and SimpleBitmapLoader for downloading artwork images.
    • Add MediaSession.setCustomLayout() to provide backwards compatibility with the legacy session.
    • Add MediaSession.setSessionExtras() to provide feature parity with legacy session.
    • Rename MediaSession.MediaSessionCallback to MediaSession.Callback , MediaLibrarySession.MediaLibrarySessionCallback to MediaLibrarySession.Callback and MediaSession.Builder.setSessionCallback to setCallback .
    • Fix NPE in MediaControllerImplLegacy ( #59 ).
    • Update session position info on timeline change( #51 ).
    • Fix NPE in MediaControllerImplBase after releasing controller ( #74 ).
  • বিজ্ঞাপন প্লেব্যাক / IMA:
    • মিডিয়া রেটিং কাউন্সিলের (MRC) সুপারিশের সাথে সারিবদ্ধ হতে প্রতি 100ms থেকে প্রতি 200ms-এ বিজ্ঞাপন ভোটের হার কমিয়ে দিন।
  • FFmpeg এক্সটেনশন:
    • একটি CMake বাগ এড়াতে CMake সংস্করণ 3.21.0+ এ আপডেট করুন যার ফলে AndroidStudio-এর গ্রেডেল সিঙ্ক ব্যর্থ হয় ( #9933 )।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) সরান। পরিবর্তে Player.Listener.onTracksChanged(Tracks) ব্যবহার করুন।
    • Player.getCurrentTrackGroups এবং Player.getCurrentTrackSelections সরান। পরিবর্তে Player.getCurrentTracks ব্যবহার করুন। এছাড়াও আপনি ExoPlayer.getCurrentTrackGroups এবং ExoPlayer.getCurrentTrackSelections ব্যবহার করা চালিয়ে যেতে পারেন, যদিও এই পদ্ধতিগুলি অবহেলিত থাকে৷
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT এবং DEFAULT_TRACK_SELECTOR_PARAMETERS ধ্রুবকগুলি সরান৷ সম্ভব হলে এর পরিবর্তে getDefaultTrackSelectorParameters(Context) ব্যবহার করুন এবং অন্যথায় DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
    • কনস্ট্রাক্টর DefaultTrackSelector(ExoTrackSelection.Factory) সরান। পরিবর্তে DefaultTrackSelector(Context, ExoTrackSelection.Factory) ব্যবহার করুন।
    • Remove Transformer.Builder.setContext . এর পরিবর্তে Context Transformer.Builder কনস্ট্রাক্টরের কাছে পাঠানো উচিত।

Version 1.0.0-alpha03

14 মার্চ, 2022

androidx.media3:media3-*:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

This corresponds to the ExoPlayer 2.17.1 release .

  • অডিও:
    • HLS-এ Dolby Atmos (E-AC3-JOC) এর জন্য অডিও ক্ষমতা পরীক্ষা করার ত্রুটি ঠিক করুন।
  • নিষ্কাশনকারী:
    • FMP4: সমস্যাটি ঠিক করুন যেখানে v0 এবং v1 emsg পরমাণু ( #9996 ) উভয় স্ট্রিমের জন্য ভুল ক্রমে emsg নমুনা মেটাডেটা আউটপুট হতে পারে।
  • পাঠ্য:
    • SubtitleConfiguration ফিল্ডকে অগ্রাধিকার দিতে SingleSampleMediaSource.Factory.setTrackId এবং MediaItem.SubtitleConfiguration.Builder.setId এর মিথস্ক্রিয়া ঠিক করুন এবং এটি সেট না থাকলে Factory মানতে ফিরে যান ( #10016 )।
  • বিজ্ঞাপন প্লেব্যাক:
    • লাইভ HLS SSAI স্ট্রীমগুলিতে বিজ্ঞাপনের সময়সীমার মধ্যে অডিও আন্ডাররান ঠিক করুন।

Version 1.0.0-alpha02

2 মার্চ, 2022

androidx.media3:media3-*:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

This corresponds to the ExoPlayer 2.17.0 release .

  • মূল গ্রন্থাগার:
    • সুরক্ষিত পদ্ধতি যোগ করুন DefaultRenderersFactory.getCodecAdapterFactory() যাতে DefaultRenderersFactory এর সাবক্লাসগুলি যা buildVideoRenderers() বা buildAudioRenderers() ওভাররাইড করে কোডেক অ্যাডাপ্টার ফ্যাক্টরি অ্যাক্সেস করতে পারে এবং তাদের তৈরি করা MediaCodecRenderer দৃষ্টান্তগুলিতে এটি পাস করতে পারে।
    • ICY হেডার ফিল্ডের name এবং genre যথাক্রমে MediaMetadata.station এবং MediaMetadata.genre এ প্রচার করুন যাতে তারা Player.Listener.onMediaMetadataChanged() ( #9677 ) এর মাধ্যমে অ্যাপে পৌঁছায়।
    • DefaultHttpDataSource#getResponseHeaders থেকে নাল কীগুলি সরান।
    • একটি MediaCodec দৃষ্টান্ত তৈরি করতে ব্যর্থ হলে ঘুমান এবং পুনরায় চেষ্টা করুন। এটি একটি সমস্যাকে ঘিরে কাজ করে যা কিছু ডিভাইসে একটি সুরক্ষিত কোডেক থেকে অন্য কোডেকে স্যুইচ করার সময় ঘটে ( #8696 )।
    • MediaCodecAdapter.getMetrics() যোগ করুন যাতে ব্যবহারকারীরা MediaCodec থেকে মেট্রিক্স ডেটা পেতে পারেন। ( #9766 )।
    • Maven নির্ভরতা রেজোলিউশন ( #8353 ) ঠিক করুন।
    • লাইভ স্ট্রিমগুলির জন্য স্বয়ংক্রিয় গতির সামঞ্জস্য অক্ষম করুন যাতে কম লেটেন্সি বৈশিষ্ট্য নেই বা গতি সেট করার জন্য ব্যবহারকারীর অনুরোধ নেই ( #9329 )।
    • DecoderCounters#inputBufferCount queuedInputBufferCount এ পুনঃনামকরণ করুন।
    • SimpleExoPlayer.renderers ব্যক্তিগত করুন। Renderers ExoPlayer.getRenderer এর মাধ্যমে অ্যাক্সেস করা যেতে পারে।
    • Player.EventFlags এ মানগুলি মেলানোর জন্য কিছু AnalyticsListener.EventFlags ধ্রুবক মান আপডেট করা হয়েছে।
    • AnalyticsCollector একটি ইন্টারফেসে বিভক্ত করুন এবং ডিফল্ট বাস্তবায়নে এটিকে R8 দ্বারা ছিনিয়ে নেওয়ার অনুমতি দিতে যদি কোনো অ্যাপের প্রয়োজন না হয়।
  • ট্র্যাক নির্বাচন:
    • ট্র্যাক নির্বাচনে ( #9402 ) পছন্দের ভিডিও রোল পতাকা সমর্থন করে।
    • অভিযোজনের জন্য একাধিক ভিডিও ট্র্যাক নির্বাচন করার সময় পছন্দের MIME প্রকার এবং ভূমিকা ফ্ল্যাগগুলি গ্রহণ করতে ভিডিও ট্র্যাক নির্বাচন যুক্তি আপডেট করুন ( #9519 )।
    • ভিডিও এবং অডিও ট্র্যাক নির্বাচন লজিক আপডেট করুন শুধুমাত্র অভিযোজিত নির্বাচনের জন্য ফরম্যাট বেছে নিতে যাতে একই স্তরের ডিকোডার এবং হার্ডওয়্যার সমর্থন রয়েছে ( #9565 )।
    • একাধিক কোডেক প্রাইমারি, হার্ডওয়্যার-এক্সিলারেটেড ডিকোডার ( #4835 ) দ্বারা সমর্থিত হলে আরও দক্ষ কোডেক পছন্দ করতে ভিডিও ট্র্যাক নির্বাচন লজিক আপডেট করুন।
    • প্রযুক্তিগত ট্র্যাক নির্বাচনের সীমাবদ্ধতার (উদাহরণস্বরূপ, পছন্দের MIME প্রকার, বা সর্বাধিক চ্যানেল গণনা) থেকে অডিও বিষয়বস্তু পছন্দগুলি (উদাহরণস্বরূপ, "ডিফল্ট" অডিও ট্র্যাক বা সিস্টেম লোকেল ভাষার সাথে মিলে যাওয়া একটি ট্র্যাক)।
    • ট্র্যাক নির্বাচনের সমস্যাটি ঠিক করুন যেখানে একটি ট্র্যাক গ্রুপকে ওভাররাইড করা একই ধরণের অন্যান্য ট্র্যাক গ্রুপগুলিকে নিষ্ক্রিয় করে না ( #9675 )।
    • ট্র্যাক নির্বাচনের সমস্যাটি ঠিক করুন যেখানে অ-খালি এবং খালি ট্র্যাক ওভাররাইডের মিশ্রণ সঠিকভাবে প্রয়োগ করা হয়নি ( #9649 )।
    • একটি TrackGroupArray এ ডুপ্লিকেট TrackGroup নিষিদ্ধ করুন। TrackGroup গুলিকে সর্বদা TrackGroup কনস্ট্রাক্টরে একটি id সেট করে আলাদা করা যায়। একটি সক্রিয় ট্র্যাক ওভাররাইড ( #9718 ) সহ অ্যাপটিকে ব্যাকগ্রাউন্ড করার পরে প্লেব্যাক পুনরায় শুরু করার সময় এটি একটি ক্র্যাশ সংশোধন করে।
    • প্লেব্যাক লাইভ প্রান্তের খুব কাছাকাছি হলেও পর্যাপ্ত নেটওয়ার্ক ব্যান্ডউইথের অধীনে একটি গুণমান বৃদ্ধির অনুমতি দেওয়ার জন্য AdaptiveTrackSelection যুক্তি সংশোধন করুন ( #9784 )।
  • ভিডিও:
    • প্রয়োজনে একটি সামঞ্জস্যপূর্ণ H264/H265 ডিকোডার ব্যবহার করতে ডলবি ভিশনের জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন।
  • অডিও:
    • প্রয়োজনে একটি সামঞ্জস্যপূর্ণ E-AC3 ডিকোডার ব্যবহার করতে ডলবি অ্যাটমস (E-AC3-JOC) এর জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন৷
    • AudioCapabilities এপিআই পরিবর্তন করুন যাতে AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES স্পষ্টভাবে পাস করার প্রয়োজন হয়৷ DEFAULT_AUDIO_CAPABILITIES এর পরিবর্তে null
    • Allow customization of the AudioTrack buffer size calculation by injecting an AudioTrackBufferSizeProvider to DefaultAudioSink . ( #8891 ).
    • Retry AudioTrack creation if the requested buffer size was > 1MB. ( #9712 ).
  • নিষ্কাশনকারী:
    • WAV: RF64 স্ট্রিমগুলির জন্য সমর্থন যোগ করুন ( #9543 )।
    • H.265 SPS NAL ইউনিটের ভুল পার্সিং ঠিক করুন ( #9719 )।
    • Ogg Opus এবং Ogg Vorbis ফাইলগুলিতে Vorbis মন্তব্যগুলি ( METADATA_BLOCK_PICTURE সহ) পার্স করুন৷
  • পাঠ্য:
    • একটি MediaItem.SubtitleConfiguration.id ক্ষেত্র যোগ করুন যা কনফিগারেশন ( #9673 ) থেকে তৈরি সাবটাইটেল ট্র্যাকের Format.id ক্ষেত্রে প্রচারিত হয়।
    • Matroska পাত্রে WebVTT সাবটাইটেলের জন্য মৌলিক সমর্থন যোগ করুন ( #9886 )।
    • একটি পরিষেবা ব্লকের ঘোষিত আকারের চেয়ে বেশি পড়া থেকে Cea708Decoder প্রতিরোধ করুন।
  • DRM:
    • DrmSessionManager থেকে playbackLooper সরান DrmSessionManager.(pre)acquireSession । যখন একটি কাস্টম MediaSource একটি অ্যাপ্লিকেশন দ্বারা একটি DrmSessionManager ব্যবহার করা হয়, তখন playbackLooper পরিবর্তে DrmSessionManager.setPlayer এ পাস করতে হবে৷
  • বিজ্ঞাপন প্লেব্যাক / IMA:
    • IMA ডায়নামিক অ্যাড ইনসার্শন (DAI) ( #8213 ) এর জন্য সমর্থন যোগ করুন।
    • একটি বিজ্ঞাপন গোষ্ঠী পুনরায় সেট করার অনুমতি দেওয়ার জন্য AdPlaybackState এ একটি পদ্ধতি যুক্ত করুন যাতে এটি আবার চালানো যায় ( #9615 )।
    • বিজ্ঞাপন প্লেব্যাকের সময় প্লেব্যাকের গতি 1.0 প্রয়োগ করুন ( #9018 )।
    • সমস্যাটি ঠিক করুন যেখানে একটি বিজ্ঞাপন গোষ্ঠী লোড করতে ব্যর্থ হয়েছে যা তাৎক্ষণিক প্লেব্যাক রিসেট করেছে ( #9929 )।
  • UI:
    • নির্দিষ্ট থিম ব্যবহার করার সময় StyledPlayerView রিওয়াইন্ড এবং ফাস্টফরওয়ার্ড বোতামে সংখ্যার রঙ ঠিক করুন ( #9765 )।
    • প্লেব্যাক স্পিড স্ট্রিংস ( #9811 ) সঠিকভাবে অনুবাদ করুন।
  • ড্যাশ:
    • Representation পার্স করা অপরিহার্য এবং সম্পূরক বৈশিষ্ট্য যোগ করুন ( #9579 )।
    • forced-subtitle ট্র্যাক ভূমিকা সমর্থন করুন ( #9727 )।
    • C.SELECTION_FLAG_DEFAULT হিসাবে main ট্র্যাক ভূমিকাকে ব্যাখ্যা করা বন্ধ করুন।
    • DVB নেমস্পেস ( #9856 ) ঘোষণা করে না এমন ম্যানিফেস্টের জন্য বেস ইউআরএল এক্সক্লুশন লজিক ঠিক করুন।
    • আপেক্ষিক MPD.Location অবস্থান ইউআরএল ( #9939 ) সমর্থন করুন।
  • HLS:
    • শুধুমাত্র অডিও HLS স্ট্রিমগুলির জন্য Format.label সঠিকভাবে পূরণ করুন ( #9608 )।
    • স্টার্ট আপের সময় উন্নত করতে ডিফল্টরূপে খণ্ডহীন প্রস্তুতি ব্যবহার করুন। যদি আপনার উপস্থাপনায় মিক্সড ক্লোজড-ক্যাপশন ট্র্যাক থাকে যা মাস্টার প্লেলিস্টে ঘোষিত না হয়, তাহলে আপনাকে প্লেব্যাকের জন্য উপলব্ধ হতে মাস্টার প্লেলিস্টে যোগ করতে হবে, অথবা HlsMediaSource.Factory.setAllowChunklessPreparation(false) দিয়ে খণ্ডহীন প্রস্তুতি বন্ধ করতে হবে।
    • HLS ( #2882 ) এ কী-ফ্রেম নির্ভুল খোঁজার সমর্থন করুন।
  • RTSP:
    • যেকোনো সার্ভার সংযোগের জন্য ব্যবহৃত SocketFactory ওভাররাইড করতে একটি ক্লায়েন্ট API প্রদান করুন ( #9606 )।
    • যদি উভয়ই উপস্থিত থাকে তবে BASIC এর চেয়ে DIGEST প্রমাণীকরণ পদ্ধতি পছন্দ করুন ( #9800 )।
    • RTSP ট্র্যাক টাইমিং উপলব্ধ না হলে হ্যান্ডেল করুন ( #9775 )।
    • অবৈধ RTP-তথ্য হেডার মান উপেক্ষা করুন ( #9619 )।
  • ট্রান্সফরমার:
    • প্রয়োজনীয় সর্বনিম্ন API সংস্করণ 21-এ বৃদ্ধি করুন।
    • TransformationException এখন ট্রান্সফর্মেশনের সময় ঘটে যাওয়া ত্রুটি বর্ণনা করতে ব্যবহৃত হয়।
    • রূপান্তর বিকল্পগুলি নির্দিষ্ট করার জন্য TransformationRequest যোগ করুন।
    • একাধিক শ্রোতাদের নিবন্ধন করার অনুমতি দিন।
    • কোডেক আউটপুট আংশিকভাবে পড়া হলে ট্রান্সফরমার আটকে যাওয়া ঠিক করুন।
    • Muxer থ্রো রিলিজ করার সময় Transformer.getProgress এ সম্ভাব্য NPE ঠিক করুন।
    • রূপান্তর প্রয়োগের জন্য একটি ডেমো অ্যাপ যোগ করুন।
  • মিডিয়া সেশন এক্সটেনশন:
    • ডিফল্টরূপে, MediaSessionConnector এখন স্টপে প্লেলিস্ট সাফ করে। যে অ্যাপগুলি প্লেলিস্টটিকে ধরে রাখতে চায় তারা সংযোগকারীতে setClearMediaItemsOnStop(false) কল করতে পারে৷
  • কাস্ট এক্সটেনশন:
    • বাগ সংশোধন করুন যা CastPlayer সঠিকভাবে onIsPlayingChanged কল করতে বাধা দেয় ( #9792 )।
    • DefaultMediaItemConverter ( #9663 ) সহ আর্টওয়ার্ক সহ অডিও মেটাডেটা সমর্থন করে।
  • FFmpeg এক্সটেনশন:
    • build_ffmpeg.sh কে GNU এর পরিবর্তে LLVM এর বিন ইউটিলসের উপর নির্ভর করুন ( #9933 )।
  • অ্যান্ড্রয়েড 12 সামঞ্জস্যতা:
    • com.google.android.gms:play-services-cast-framework:20.1.0 এর উপর নির্ভর করতে কাস্ট এক্সটেনশন আপগ্রেড করুন। play-services-cast-framework আগের সংস্করণগুলি অ্যান্ড্রয়েড 12 টার্গেট করা অ্যাপগুলির সাথে সামঞ্জস্যপূর্ণ নয় এবং PendingIntent s ( #9528 ) তৈরি করার সময় একটি IllegalArgumentException এর সাথে ক্র্যাশ হবে৷
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Player.EventListener সরান। পরিবর্তে Player.Listener ব্যবহার করুন।
    • Remove MediaSourceFactory#setDrmSessionManager , MediaSourceFactory#setDrmHttpDataSourceFactory , and MediaSourceFactory#setDrmUserAgent . Use MediaSourceFactory#setDrmSessionManagerProvider instead.
    • Remove MediaSourceFactory#setStreamKeys . Use MediaItem.Builder#setStreamKeys instead.
    • Remove MediaSourceFactory#createMediaSource(Uri) . Use MediaSourceFactory#createMediaSource(MediaItem) instead.
    • DashMediaSource , HlsMediaSource এবং SsMediaSource থেকে setTag সরান। Use MediaItem.Builder#setTag instead.
    • Remove DashMediaSource#setLivePresentationDelayMs(long, boolean) . Use MediaItem.Builder#setLiveConfiguration and MediaItem.LiveConfiguration.Builder#setTargetOffsetMs to override the manifest, or DashMediaSource#setFallbackTargetLiveOffsetMs to provide a fallback value.
    • সরান (Simple)ExoPlayer.setThrowsWhenUsingWrongThread । থ্রেড প্রয়োগ থেকে অপ্ট আউট করা আর সম্ভব নয়৷
    • ActionFile এবং ActionFileUpgradeUtil সরান। DefaultDownloadIndex এ লিগ্যাসি অ্যাকশন ফাইল মার্জ করতে ActionFileUpgradeUtil ব্যবহার করতে ExoPlayer 2.16.1 বা তার আগে ব্যবহার করুন।
    • Remove ProgressiveMediaSource#setExtractorsFactory . পরিবর্তে ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) কনস্ট্রাক্টর ব্যবহার করুন।
    • Remove ProgressiveMediaSource.Factory#setTag and, and ProgressiveMediaSource.Factory#setCustomCacheKey . Use MediaItem.Builder#setTag and MediaItem.Builder#setCustomCacheKey instead.
    • DefaultRenderersFactory(Context, @ExtensionRendererMode int) এবং DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) কনস্ট্রাক্টরগুলি সরান৷ Use the DefaultRenderersFactory(Context) constructor, DefaultRenderersFactory#setExtensionRendererMode , and DefaultRenderersFactory#setAllowedVideoJoiningTimeMs instead.
    • সমস্ত পাবলিক CronetDataSource কনস্ট্রাক্টর সরান। পরিবর্তে CronetDataSource.Factory ব্যবহার করুন।
  • নিম্নলিখিত IntDefs শুধুমাত্র @Target(TYPE_USE) এ পরিবর্তন করুন। এটি কোটলিনে ব্যবহারের সংকলনকে ভেঙে ফেলতে পারে, যেটি টাইপ ( Int ) টীকা করার জন্য টীকাটি সরানোর মাধ্যমে ঠিক করা যেতে পারে।
    • @AacAudioObjectType
    • @Ac3Util.SyncFrameInfo.StreamType
    • @AdLoadException.Type
    • @AdtsExtractor.Flags
    • @AmrExtractor.Flags
    • @AspectRatioFrameLayout.ResizeMode
    • @AudioFocusManager.PlayerCommand
    • @AudioSink.SinkFormatSupport
    • @BinarySearchSeeker.TimestampSearchResult.Type
    • @BufferReplacementMode
    • @C.BufferFlags
    • @C.ColorRange
    • @C.ColorSpace
    • @C.ColorTransfer
    • @C.CryptoMode
    • @C.Encoding
    • @C.PcmEncoding
    • @C.Projection
    • @C.SelectionReason
    • @C.StereoMode
    • @C.VideoOutputMode
    • @CacheDataSource.Flags
    • @CaptionStyleCompat.EdgeType
    • @DataSpec.Flags
    • @DataSpec.HttpMethods
    • @DecoderDiscardReasons
    • @DecoderReuseResult
    • @DefaultAudioSink.OutputMode
    • @DefaultDrmSessionManager.Mode
    • @DefaultTrackSelector.SelectionEligibility
    • @DefaultTsPayloadReaderFactory.Flags
    • @EGLSurfaceTexture.SecureMode
    • @EbmlProcessor.ElementType
    • @ExoMediaDrm.KeyRequest.RequestType
    • @ExtensionRendererMode
    • @Extractor.ReadResult
    • @FileTypes.Type
    • @FlacExtractor.Flags ( com.google.android.exoplayer2.ext.flac প্যাকেজে)
    • @FlacExtractor.Flags ( com.google.android.exoplayer2.extractor.flac প্যাকেজে)
    • @FragmentedMp4Extractor.Flags
    • @HlsMediaPlaylist.PlaylistType
    • @HttpDataSourceException.Type
    • @IllegalClippingException.Reason
    • @IllegalMergeException.Reason
    • @LoadErrorHandlingPolicy.FallbackType
    • @MatroskaExtractor.Flags
    • @Mp3Extractor.Flags
    • @Mp4Extractor.Flags
    • @NotificationUtil.Importance
    • @PlaybackException.FieldNumber
    • @PlayerNotificationManager.Priority
    • @PlayerNotificationManager.Visibility
    • @PlayerView.ShowBuffering
    • @Renderer.State
    • @RendererCapabilities.AdaptiveSupport
    • @RendererCapabilities.Capabilities
    • @RendererCapabilities.DecoderSupport
    • @RendererCapabilities.FormatSupport
    • @RendererCapabilities.HardwareAccelerationSupport
    • @RendererCapabilities.TunnelingSupport
    • @SampleStream.ReadDataResult
    • @SampleStream.ReadFlags
    • @StyledPlayerView.ShowBuffering
    • @SubtitleView.ViewType
    • @TextAnnotation.Position
    • @TextEmphasisSpan.MarkFill
    • @TextEmphasisSpan.MarkShape
    • @Track.Transformation
    • @TrackOutput.SampleDataPart
    • @Transformer.ProgressState
    • @TsExtractor.Mode
    • @TsPayloadReader.Flags
    • @WebvttCssStyle.FontSizeUnit

সংস্করণ 1.0.0-alpha01

27 অক্টোবর, 2021

androidx.media3:media3-*:1.0.0-alpha01 is released. সংস্করণ 1.0.0-alpha01-এ এই কমিট রয়েছে।

নতুন বৈশিষ্ট্য

Media3 is the new home for media support libraries, including ExoPlayer. The first alpha contains early, functional implementations of libraries for implementing media use cases, including:

  • ExoPlayer, an application-level media player for Android that is easy to customize and extend.
  • Media session functionality, for exposing and controlling playbacks. This new session module uses the same Player interface as ExoPlayer.
  • UI components for building media playback user interfaces.
  • Modules wrapping functionality in other libraries for use with ExoPlayer, for example, ad insertion via the IMA SDK.

For more information, see the Media3 GitHub project .

ExoPlayer was previously hosted in a separate ExoPlayer GitHub project . In Media3 its package name is androidx.media3.exoplayer . We plan to continue to maintain and release the ExoPlayer GitHub project for a while to give apps time to migrate to Media3. Media3 has replacements for all the ExoPlayer modules, except for the legacy media2 and mediasession extensions, which are replaced by the new media3-session module. This provides direct integration between players and media sessions without needing to use an adapter/connector class.