Media3
| লেটেস্ট আপডেট | স্টেবল রিলিজ | রিলিজ ক্যান্ডিডেট | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| ২৬ অক্টোবর, ২০২৬ | ১.১১.১ | - | - | 1.12.0-alpha02 |
ডিপেন্ডেন্সি ঘোষণা করা
Media3-তে ডিপেন্ডেন্সি যোগ করতে, আপনার প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টের জন্য ডিপেন্ডেন্সি যোগ করুন:
Groovy
dependencies { def media3_version = "1.11.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 using Jetpack Compose implementation "androidx.media3:media3-ui-compose:$media3_version" // For building media playback UIs using Jetpack Compose with Material Design 3 implementation "androidx.media3:media3-ui-compose-material3:$media3_version" // For building media playback UIs using Views 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 inspecting media files implementation "androidx.media3:media3-inspector:$media3_version" // For extracting and processing video frames implementation "androidx.media3:media3-inspector-frame:$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 applying Lottie effects on video frames implementation "androidx.media3:media3-effect-lottie:$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" }
Kotlin
dependencies { val media3_version = "1.11.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 using Compose implementation("androidx.media3:media3-ui-compose:$media3_version") // For building media playback UIs using Views implementation("androidx.media3:media3-ui:$media3_version") // For building media playback UIs using Jetpack Compose implementation("androidx.media3:media3-ui-compose:$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 inspecting media files implementation("androidx.media3:media3-inspector:$media3_version") // For extracting and processing video frames implementation("androidx.media3:media3-inspector-frame:$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 applying Lottie effects on video frames implementation("androidx.media3:media3-effect-lottie:$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") }
ডিপেন্ডেন্সি সম্পর্কে আরও তথ্যের জন্য, বিল্ড ডিপেন্ডেন্সি যোগ করুন দেখুন।
মতামত
আপনার মতামত Jetpack-কে আরও উন্নত করতে সাহায্য করে। আপনি Media3 সমস্যা ট্র্যাকার ব্যবহার করে প্রশ্নের উত্তর, পরিচিত সমস্যা এবং ফিচার অনুরোধ খুঁজে পেতে এবং নতুন সমস্যা ফাইল করতে পারেন।
ভার্সন 1.12.0
ভার্সন 1.12.0-alpha02
২৬ অক্টোবর, ২০২৬
ভার্সন 1.12.0-alpha02-এ নিম্নলিখিত কমিট রয়েছে।
- Play পরিষেবার উপর প্রভাব:
- নতুন
media3-effect-play-servicesমডিউল নিয়ে আসা হয়েছে যা Google Play পরিষেবার মিডিয়া এফেক্ট প্রদান করে, এর মধ্যে ভিডিও এনহ্যান্সমেন্টের জন্যEnhancementSessionDecoratorএবং অডিও সোর্স আলাদা করার জন্যStudioSoundAudioProcessorঅন্তর্ভুক্ত।
- নতুন
Version 1.12.0-alpha01
২১ অক্টোবর, ২০২৬
1.12.0-alpha01 ভার্সনে নিম্নলিখিত কমিট অন্তর্ভুক্ত।
- কমন লাইব্রেরি:
C.COLOR_SPACE_DISPLAY_P3যোগ করুন এবংMediaFormatUtilওColorInfoISO কালার ম্যাপিংয়ে Display P3 কালার স্পেসের জন্য সহায়তা প্রদান করুন।- পরীক্ষামূলক ফিচার ফ্ল্যাগ ও
পর্যায়ক্রমিক প্রকাশ (
Flags.setCanaryModeEnabled) ম্যানেজ করতে সেন্ট্রালFlagsরেজিস্ট্রি যোগ করুন। নতুন ফ্ল্যাগ API ব্যবহার করার জন্য আগে থেকে থাকা অনেক@ExperimentalApiপদ্ধতি মাইগ্রেট করা হয়েছে। MediaMetadata.playlistId,MediaMetadata.Builder.setPlaylistId(String),MediaMetadata.categoriesএবংMediaMetadata.Builder.setCategories(List<String>)যোগ করুন।androidx.media3.common.util.NonNullApi-এর পরিবর্তে JSpecifyorg.jspecify.annotations.NullMarkedব্যবহার করুন।
- ExoPlayer:
- পরবর্তী পিরিয়ডের প্রথম চাঙ্ক লোড হতে না পারলে, DASH মাল্টি-পিরিয়ড প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে (#3396)।
AnalyticsListener.onLoadError-এwasCanceled = trueরিপোর্ট করুন এবং লোড করার চেষ্টা শেষ হয়ে গেলেMediaSourceEventListener.onLoadError।ExoPlayer.addVideoFrameMetadataListenerএবংExoPlayer.removeVideoFrameMetadataListenerব্যবহার করে একাধিকVideoFrameMetadataListenerইনস্ট্যান্স রেজিস্টার করার সুবিধা,ExoPlayer.setVideoFrameMetadataListenerএবংExoPlayer.clearVideoFrameMetadataListenerবন্ধ করা হচ্ছে।- প্রতিটি সময়ের জন্য
AdPlaybackStateস্প্লিট ও অফসেট করে মাল্টি-পিরিয়ড কন্টেন্টে (যেমন, DASH) বিজ্ঞাপনের জন্য সহায়তা যোগ করুন। PreCacheHelper-এ রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করুন যেখানে চলমান প্রস্তুতির অনুরোধ বাতিল করার পরেও ব্যাকগ্রাউন্ড ডাউনলোড শুরু হতে পারে।ProgressiveMediaSource-এsetLoadOnlySelectedTracks(true)এবংDefaultMediaSourceFactory-এ শুধু বেছে না নেওয়া ভিডিও এবং ইমেজ ট্র্যাক ফিল্টার করার জন্য সীমাবদ্ধ করুন। অডিও ও টেক্সট ট্র্যাক সবসময় লোড করা হয় যাতে রি-বাফারিং ছাড়াই নিরবচ্ছিন্নভাবে ট্র্যাক পাল্টানো যায়।ProgressiveMediaSourceওDefaultMediaSourceFactory-এ ডিফল্ট হিসেবেsetLoadOnlySelectedTracks(true)চালু করুন। এটি মেমরি বাঁচায় এবং সব ট্র্যাক বেছে না নেওয়া হলেDefaultLoadControlবাফার অ্যালোকেশন ক্যালকুলেশনকে আরও নির্ভুলভাবে কাজ করতে দেয়। মনে রাখবেন যে, মিড-প্লেব্যাকের সময় বেছে না নেওয়া ভিডিও বা ইমেজ ট্র্যাক নতুন করে চালু করা হলে, অতিরিক্ত বাফারিং হতে পারে।- ডায়নামিক শিডিউলিং চালু থাকলে (#3286),
Player.getCurrentPosition()-এর পুরনো ভ্যালু (প্রতি সেকেন্ডে মাত্র কয়েকবার আপডেট করা) দেখানোর সমস্যা সমাধান করা হয়েছে। AudioTrackপ্লেব্যাক হেড পজিশনে অপ্রত্যাশিতভাবে কমে যাওয়া বা রিসেট হওয়ার সমস্যা সমাধান করা হয়েছে। এটি ভুলভাবে ইন্টিজার ওভারফ্লো হিসেবে বিবেচিত হতে পারে, যার ফলে প্লেব্যাক বাফারিংয়ে আটকে যেতে পারে (#3407)।- পরীক্ষামূলক
DefaultMediaCodecAdapterFactory.setAsyncCryptoSynchronizationEnabled(boolean)সরান। - ইন্টারস্টিশিয়াল বা শেষে ক্লিপ করা কন্টেন্টের বিজ্ঞাপনে ফিরে আসার সময় অপ্রয়োজনীয় রেন্ডারার আবার চালু করা এবং গ্লিচ এড়িয়ে চলুন (#3371)।
Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONচালু থাকলে, আসন্ন প্লেলিস্ট আইটেমে রেন্ডারার সংক্রান্ত সমস্যার কারণে বর্তমান প্লেব্যাক অকালে বন্ধ হয়ে যাওয়ার সমস্যা সমাধান করুন।Flags.FLAG_PER_STREAM_MEDIA_PROGRESSIONচালু থাকার সময়ExoPlayerঅপ্রস্তুত মিডিয়া পিরিয়ডে রেন্ডারার ট্রানজিশন করলেNullPointerExceptionহতে পারে, সেটি ঠিক করুন।Flags.FLAG_VIDEO_RENDERER_DURATION_TO_PROGRESSচালু থাকার সময় ডায়নামিক শিডিউলিংয়ের সময় ভিডিও ফ্রেম অপ্রত্যাশিতভাবে স্কিপ বা ড্রপ হয়ে যাওয়ার সমস্যার সমাধান করুন।- লাইভস্ট্রিমে বিজ্ঞাপন চলাকালীন প্লেব্যাক বন্ধ করার সময়
অ্যানালিটিক্স লিসেনারে
ArrayIndexOutOfBoundsExceptionসংক্রান্ত সমস্যার সমাধান করুন (#৩৪২৩)। preload()কখনও কল না করা হলেও,PreloadMediaSourceঅপ্রত্যাশিতভাবে প্রিলোড ইভেন্ট পোস্ট করতে পারে, এমন সমস্যার সমাধান করা হয়েছে (#3408)।- মেটাডেটা ট্র্যাকের জন্য
Format.subsampleOffsetUsউপেক্ষা করার ফলে ডিকোড করা SCTE-35 স্প্লাইস কমান্ডে (#৩৪১৩) ভুল প্লেব্যাক টাইমস্ট্যাম্পের সমস্যা সমাধান করা হয়েছে। PreloadMediaSourceএবংDefaultPreloadManager-এ মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে যখন একই সোর্সেpreload()একাধিকবার কল করা হয় (#3445)।- কন্টেন্ট টাইমলাইন রিফ্রেশ করা বাকি থাকাকালীন
AdsMediaSourceরিলিজ করার সময়NullPointerExceptionসংক্রান্ত সমস্যার সমাধান করা (#3442)। - প্রোগ্রেসিভ মিডিয়ার প্লেব্যাক ভুল পজিশনে জাম্প করার সমস্যা সমাধান করা হয়েছে। এটি তখন হয় যখন খোঁজার পরে লোড (বা শূন্য নয় এমন পজিশনে প্লেব্যাক শুরু করা) ব্যর্থ হয় এবং আবার চেষ্টা করা হয় (#3440)।
- Xiaomi TV Stick 4K (MiTV-AYFR0) H.264 ডিকোডারের জন্য ওয়ার্কঅ্যারাউন্ড যোগ করুন রেজোলিউশন পরিবর্তন করার সময় ফ্রিজ হয়ে যায় (#3457).
SteeringManifestTracker-এNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন, যখন পোস্ট করা লোড সম্পূর্ণ হওয়ার আগে ট্র্যাকার বন্ধ হয়ে যায় অথবা ত্রুটি সংক্রান্ত কলব্যাক সম্পন্ন হয় (#3443)।- MP4 ফাইলের
mebxবক্সড মেটাডেটা ট্র্যাক থেকে HAGC (ST 2094-50) টাইমড মেটাডেটা প্লেব্যাক সাপোর্ট করে। - প্লেলিস্টে ধীরে ধীরে প্রস্তুত হওয়া মিডিয়া পিরিয়ড এড়িয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- CompositionPlayer:
- প্লেব্যাক ওয়ার্কফ্লোর জন্য
Composition.Builder.setVideoFrameAggregationParametersব্যবহার করে ভিডিও ফ্রেম অ্যাগ্রিগেশনের ফ্রেম রেট কনফিগার করার সুবিধা। - ফ্রেম অ্যাগ্রিগেশনের সময় সবচেয়ে কাছাকাছি টাইমস্ট্যাম্প সহ ফ্রেম বেছে নেওয়ার মাধ্যমে, টাইমস্ট্যাম্প কোয়ান্টাইজেশন বা রাউন্ডিং মিসম্যাচের কারণে মাল্টি-সিকোয়েন্স কম্পোজিশনে ফ্রেম ড্রপ সংক্রান্ত সমস্যার সমাধান করুন। এটি শুধুমাত্র API 29 থেকে চালু করা হয়েছে, কারণ এর জন্য প্রতিটি ভিডিও সিকোয়েন্সে ফ্লাইটে একটি অতিরিক্ত ফ্রেম হোল্ড করতে হয়।
- প্লেব্যাক ওয়ার্কফ্লোর জন্য
- ট্রান্সফর্মার:
- এক্সপোর্ট ওয়ার্কফ্লোর জন্য
Composition.Builder.setVideoFrameAggregationParametersব্যবহার করে ভিডিও ফ্রেম অ্যাগ্রিগেশনের ফ্রেম রেট কনফিগার করার সুবিধা। - ফ্রেম অ্যাগ্রিগেশনের সময় সবচেয়ে কাছাকাছি টাইমস্ট্যাম্প সহ ফ্রেম বেছে নেওয়ার মাধ্যমে, টাইমস্ট্যাম্প কোয়ান্টাইজেশন বা রাউন্ডিং মিসম্যাচের কারণে মাল্টি-সিকোয়েন্স কম্পোজিশনে ফ্রেম ড্রপ সংক্রান্ত সমস্যার সমাধান করুন। এটি শুধুমাত্র API 29 থেকে চালু করা হয়েছে, কারণ এর জন্য প্রতিটি ভিডিও সিকোয়েন্সে ফ্লাইটে একটি অতিরিক্ত ফ্রেম হোল্ড করতে হয়।
AudioProcessorsব্যবহার করার সময়Transformer#setAudioMimeType(AUDIO_RAW)-এর প্রতি শ্রদ্ধাশীল হন। এই সমস্যার সমাধান করার আগে,MimeTypes.AUDIO_RAW-এর অনুরোধ করা এবংAudioProcessorপ্রয়োগ করার ফলে আউটপুট কম্প্রেস হয়ে যেত।
- এক্সপোর্ট ওয়ার্কফ্লোর জন্য
- ট্র্যাক বেছে নেওয়া:
- কিছু ডিভাইসে কাজ করে এমন Dolby Vision ট্র্যাকের পরিবর্তে SDR ট্র্যাক ভুলভাবে বেছে নেওয়ার সমস্যা সমাধান করা হয়েছে (#3135)।
- এক্সট্র্যাক্টর:
- Mp4Extractor: MP4-এ Opus-এর জন্য
dOpsবক্স পার্সিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানেPreSkip,InputSampleRateওOutputGainবিগ-এন্ডিয়ান থেকে লিটল-এন্ডিয়ানে কনভার্ট করা হয়নি, যার ফলে কোনও এডিট লিস্ট না থাকলে অডিওর প্রথম ~২৯৯ মিলি সেকেন্ড ড্রপ হয়ে যায় (#৩৪৩১)। Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES,Mp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265,FragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIESএবংFragmentedMp4Extractor.FLAG_READ_WITHIN_GOP_SAMPLE_DEPENDENCIES_H265সরিয়ে দিন কারণ H.264 ও H.265-এর জন্য GOP-এর মধ্যে স্যাম্পেল ডিপেন্ডেন্সি পার্সিং ডিফল্ট হিসেবে চালু করা আছে।- Mp4Extractor:
Mp4LocationDataপূরণ করার জন্য উচ্চতার স্থানাঙ্ক সহxyzবক্স থেকে লোকেশন মেটাডেটা পার্সিং সংক্রান্ত সমস্যার সমাধান করুন। - এনকোড করা অডিও ফর্ম্যাটের জন্য স্যাম্পেল প্রতি অডিও ফ্রেমের সংখ্যা গণনা করতে
ExtractorUtil.getFramesPerEncodedSampleযোগ করুন (#3367)। - টপ-লেভেল UUID বক্স থেকে XMP মেটাডেটা এক্সট্র্যাক্ট করতে
FLAG_READ_XMP_METADATA-এMp4Extractorযোগ করুন। - ডিভিডি-স্টাইল MPEG-PS কন্টেন্ট চালানোর সময়, পেলোড অডিও রিডারে (#3327) পাস করার আগে,
PsExtractor-এর প্রতিটি PES প্যাকেট থেকেprivate_stream_1সাব-স্ট্রিম হেডার বাদ দিয়ে, নষ্ট হয়ে যাওয়া AC-3, DTS এবং LPCM অডিও ঠিক করুন। - Fix failure in
FragmentedMp4Extractorwhen a version 1tfdtbox encodes a negativebaseMediaDecodeTime(#3412). - MPEG-TS:
Format.stereoMode(#৩৪১৯) পপুলেট করতে H.264 এবং H.265 ফ্রেম প্যাকিং অ্যারেঞ্জমেন্ট SEI মেসেজ পার্স করার সুবিধা। - Dolby Vision প্রোফাইল ২০ কনফিগারেশন ডেটা পার্স করুন এবং ভুল রঙের (#৩৪২৭) সাথে স্ট্যান্ডার্ড HEVC হিসেবে প্লেব্যাক করার পরিবর্তে কাজ করে না এমন Dolby Vision প্রোফাইল বাতিল করুন।
- MP3: LAME/Xing এনকোডার ডিলে ও প্যাডিং মেটাডেটা অ্যাডজাস্টমেন্ট আগের অবস্থায় ফিরিয়ে আনুন
কারণ এটি অনেক
MediaCodecMP3 ডিকোডারের সাথে কাজ করে না (#3425)। - Matroska: নেস্টেড
ChapterAtomএলিমেন্ট (#3438) পার্স করার সময়NullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন। - Ogg: এমন একটি প্যাকেটের ক্ষেত্রে সমস্যা সমাধান করা হয়েছে যার সাইজ ২৫৫ বাইটের গুণিতক এবং পৃষ্ঠার সীমানায় শেষ হয়, সেটি পরবর্তী প্যাকেটের সাথে মার্জ করা হয়।
- MP4:
Mp4ExtractorওFragmentedMp4Extractor-এmebxবক্স করা টাইমড মেটাডেটা ট্র্যাক পার্স করুন।it35কী সহ ট্র্যাকগুলিMimeTypes.APPLICATION_ITUT_T35(HAGC প্লেব্যাক চালু করা) হিসাবে প্রকাশ করা হয়।FLAG_EMIT_RAW_MEBX_DATAসেট না করা থাকলে, অন্যান্যmebxট্র্যাক উপেক্ষা করা হয়, যেক্ষেত্রে সবmebxট্র্যাক রMimeTypes.APPLICATION_MEBXহিসেবে এমিট করা হয়। - Ogg: গ্যাপলেস প্লেব্যাকের জন্য Opus এন্ড-প্যাডিং এক্সট্র্যাক্ট করার সুবিধা (#2576) এবং কন্টিনিউড প্যাকেট দিয়ে শুরু হওয়া পৃষ্ঠায় খোঁজার পরে স্যাম্পেল টাইমস্ট্যাম্প সংক্রান্ত সমস্যার সমাধান।
- Ogg: মিড-স্ট্রিম Opus আইডি এবং কমেন্ট হেডার প্যাকেট উপেক্ষা করে চেইনড Ogg Opus স্ট্রিমে ডিকোড সংক্রান্ত সমস্যা এবং ~১ সেকেন্ড টাইমস্ট্যাম্প জাম্পের সমাধান করা হয়েছে।
- Mp4Extractor: MP4-এ Opus-এর জন্য
- ইন্সপেক্টর:
MetadataRetrieverব্যবহার করে MP4 ফাইল থেকে XMP মেটাডেটা ফিরিয়ে আনার সুবিধা।MediaExtractorCompat-এmebxবক্স করা টাইমড মেটাডেটা ট্র্যাকMimeTypes.APPLICATION_MEBXহিসেবে এক্সট্র্যাক্ট করার সুবিধা।
- ইন্সপেক্টর ফ্রেম:
FrameExtractor-এর সাহায্যে আল্ট্রা HDR ফ্রেম এক্সট্র্যাক্ট করার সময় SDR বেস ইমেজে ওয়াইড-গ্যামাট BT.2020 রঙের ক্লিপিং সংক্রান্ত সমস্যার সমাধান করুন। আউট-অফ-গ্যামুট রঙ এখন ক্ল্যাম্প করার পরিবর্তে sRGB গ্যামুটে সফটলি কম্প্রেস করা হয়েছে।
- অডিও:
- ভুল থ্রেডে
android.media.AudioDeviceCallbackইনভোক করে এমন ডিভাইসের জন্য ওয়ার্কঅ্যারাউন্ড যোগ করুন (#3386)। - কমপ্রেসড অফলোড সহ ট্র্যাক ট্রানজিশনের পরে সম্ভাব্য আটকে থাকা প্লেব্যাক ঠিক করুন।
- Amazon Fire TV স্টিকের একটি সমস্যার সমাধান করা হয়েছে যেখানে পিরিয়ড ট্রানজিশনের সময় AC-3 অডিও ফ্রিজ হয়ে যেতে পারত (#3448)।
- Ogg এবং WebM/Matroska-এর জন্য এন্ড-অফ-স্ট্রিম এনকোডার প্যাডিং ট্রিম করার সুবিধা Opus গ্যাপলেস প্লেব্যাক (#২৫৭৬)।
- ট্র্যাক ট্রানজিশনের সময় ডায়নামিক অফলোড গ্যাপলেস ডিলে ও প্যাডিং আপডেট সংক্রান্ত সমস্যার সমাধান করুন যাতে সেগুলি বর্তমানে চলা ট্র্যাকের পরিবর্তে আসন্ন ট্র্যাকে প্রয়োগ করা যায়।
- প্লেলিস্টের মাঝে গ্যাপলেস ট্রানজিশন ছাড়াও, সিঙ্গেল স্ট্রিম ও প্লেলিস্টের ফাইনাল স্ট্রিমে এনকোডার এন্ড-প্যাডিং ট্রিম করা (#২৫৭৬)।
- স্টার্ট-অফ-স্ট্রিম এনকোডার ডিলে ট্রিম করা সম্পূর্ণ হওয়ার পরে এবং এন্ড-অফ-স্ট্রিম প্যাডিং ট্রিম করার প্রয়োজন না থাকলে,
TrimmingAudioProcessor-এ অপ্রয়োজনীয় অডিও বাফার কপি করা এড়িয়ে চলুন।
- ভুল থ্রেডে
- ভিডিও:
- একই রিলিজ টাইমস্ট্যাম্প সহ লেট ভিডিও ফ্রেমের রিপোর্টিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে যাতে সেগুলি এড়িয়ে যাওয়া হিসেবে নয়, ড্রপ করা হিসেবে রিপোর্ট করা হয়।
- টেক্সট:
- মিডিয়ার সাপেক্ষে সাইডলোড করা সাবটাইটেলের টাইমস্ট্যাম্প
পরিবর্তন করতে
MediaItem.SubtitleConfiguration.timeOffsetUsযোগ করুন। প্লেব্যাক চলাকালীনPlayer.replaceMediaItem(int, MediaItem)-এর মাধ্যমে অফসেট পরিবর্তন করা যেতে পারে, এতে প্লেব্যাক বন্ধ হবে না (#১৯৭৬)। - SubRip: বাইট অর্ডার মার্ক ছাড়া স্বতন্ত্র SubRip সাবটাইটেলের অক্ষর এনকোডিং শনাক্ত করতে
DefaultSubtitleParserFactory-এCharsetDetectorইনজেক্ট করার জন্য সহায়তা যোগ করুন (#২২৪৭)।
- মিডিয়ার সাপেক্ষে সাইডলোড করা সাবটাইটেলের টাইমস্ট্যাম্প
পরিবর্তন করতে
- প্রভাব:
- StudioSound GMSCore মডিউল ব্যবহার করে অডিও সোর্স আলাদা করার জন্য
SoundSeparationAudioProcessorপ্রয়োগ করুন।
- StudioSound GMSCore মডিউল ব্যবহার করে অডিও সোর্স আলাদা করার জন্য
- Muxers:
Mp4MuxerএবংFragmentedMp4Muxer-এ Opus-এর জন্যdOpsবক্স রাইটিং ঠিক করুন যেখানেPreSkip,InputSampleRateএবংOutputGainবিগ-এন্ডিয়ানের পরিবর্তে লিটল-এন্ডিয়ানে লেখা হয়েছিল (#3431)।Mp4Muxerব্যবহার করেMp4LocationData-এ জিপিএস অল্টিটিউড লেখার সুবিধা।ParcelFileDescriptor-এ সরাসরি মাক্সিং করার অনুমতি দিতেMuxer.Factory.create(ParcelFileDescriptor)যোগ করুন।- মিডিয়া ডিকোড টাইমস্ট্যাম্প প্রদান করতে ফ্র্যাগমেন্টেড MP4 ফাইলের
trafবক্সে ডিফল্ট হিসেবেtfdt(ট্র্যাক ফ্র্যাগমেন্ট বেস মিডিয়া ডিকোড টাইম) বক্স লিখুন। Mp4Muxer-এ E-AC-3 এবং E-AC-3 JOC (Dolby Atmos)dec3কন্টেনার বক্স লেখার জন্য সহায়তা।MediaMuxerCompat-এ WebM ফর্ম্যাট সাপোর্ট যোগ করুন।FragmentedMp4Extractor-এFLAG_READ_MFRA_FOR_SEEK_MAPব্যবহার করে খোঁজার অনুমতি দিতে, ফ্র্যাগমেন্ট করা MP4 ফাইলের শেষেmfra(মুভি ফ্র্যাগমেন্ট র্যান্ডম অ্যাক্সেস) বক্স লিখুন।- অন্য কোনও স্যাম্পেল লেখার আগে EOS স্যাম্পেল লেখার সময়
Mp4WriterএবংFragmentedMp4Writer-এ ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন। - কন্টেনার হেডারে (#৩৩৬৯)
dby1মানানসই ব্র্যান্ডের বিজ্ঞাপন দিয়ে Dolby কন্টেন্ট MP4 বা ফ্র্যাগমেন্টেড MP4 ফাইলে মাক্স করার সময় কন্টেনার সংক্রান্ত সমস্যার সমাধান করুন। Mp4MuxerএবংFragmentedMp4Muxer-এ ৩২-বিট ফ্লোট PCM অডিও ট্র্যাকের জন্য সহায়তা (#3389)।- ট্র্যাক যোগ করার সময়
Mp4MuxerএবংFragmentedMp4Muxer-এ কাজ করে না এমন Dolby Vision প্রোফাইল বাতিল করুন। Mp4MuxerএবংFragmentedMp4Muxer-এ ২৪-বিট ও ৩২-বিট ইন্টিজার PCM অডিও ট্র্যাক কাজ করে।
- IMA এক্সটেনশন:
ImaServerSideAdInsertionMediaSource-এ IMA SDK-তে প্লেয়ার পজ ও আবার চালু করার ইভেন্ট ফরওয়ার্ড করুন।
- সেশন:
MediaConstants.EXTRAS_KEY_PLAYLIST_ID,MediaConstants.EXTRAS_KEY_PLAYLIST_TITLE,MediaConstants.EXTRAS_KEY_PLAYLIST_ARTWORK_URIএবংMediaConstants.EXTRAS_KEY_CATEGORIESযোগ করুন যাতে পুরনো মেটাডেটা ও বিবরণ থেকে প্লেলিস্ট ও আইটেম মেটাডেটা পপুলেট করা যায় এবংMediaConstants.EXTRAS_KEY_SUGGESTED_TYPEওMediaConstants.EXTRAS_KEY_TTL_SECONDSযোগ করুন যাতে সাজেশনLibraryParams.extrasপাওয়া যায়।PendingIntent-এর কঠোর সীমা প্রয়োগ করে এমন ডিভাইসেMediaSessionতৈরি বা রিলিজ করার সময়SecurityExceptionক্র্যাশ হওয়ার সমস্যার সমাধান করা।- Android 12 (API 31 ও 32)-এ প্লে করার অনুরোধের সময়
MediaSession.getControllerForCurrentRequest()-এরnullরিটার্ন করার সমস্যা সমাধান করুন, যখনMediaSessionServiceএখনও ফোরগ্রাউন্ডে ছিল না। MediaControllerযখন একটি লিগ্যাসি সেশনে কানেক্ট করে যা একটি নেতিবাচক সর্বোচ্চ ভলিউম রিপোর্ট করে তখনIllegalArgumentExceptionক্র্যাশ হওয়া সংক্রান্ত সমস্যার সমাধান করুন।- পজ করা পুরনো
MediaSessionCompat-এMediaController.setMediaItemবাsetMediaItems-এর পরেplay()কল করার সময়,onPlayFrom*-এর পরিবর্তে কাজ করে না এমনonPrepareFrom*কলব্যাক ডিসপ্যাচ করা বা অনুরোধ করা মিডিয়া আইটেম আবার শুরু না করেইonPlay()ডিসপ্যাচ করার সমস্যা সমাধান করুন। - কাস্টম কমান্ড রেসপন্স
(#3432) পাওয়ার সময়
পুরনো
MediaBrowser-এNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন। IllegalArgumentExceptionক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন, যখন অন্তর্নিহিতBundle-এ ডুপ্লিকেট 'কী' সহ পুরনো মেটাডেটা পাওয়া যায়।- পুরনো
MediaSessionCompatকন্ট্রোল করার সময় একইLooperইটারেশনের মধ্যে করা আউটগোয়িংMediaControllerCompat.TransportControlsকল একত্রিত করুন (যেমন, এখনsetMediaItem,prepareওplay-কে একসাথে কল করলে একটিইonPlayFrom*কলব্যাক পাঠানো হয়)।
- UI:
- ডান থেকে বাঁদিকে লেখা সাবটাইটেলে বিরামচিহ্নের অবস্থান এবং স্প্যান রেঞ্জ সংরক্ষণ সংক্রান্ত সমস্যার সমাধান করা হয়েছে যখন দ্বিমুখী টেক্সট র্যাপিং চালু থাকে (#3454, #3455).
media3-ui-composeমডিউলেTrackSelectionStateএবংTrackSelectionParametersStateক্লাস এবং তাদের সংশ্লিষ্ট কম্পোজেবল স্টেট রিমেম্বার ফাংশন যোগ করুন।PresentationState.videoAspectRatioচালু করুন এবংModifier.resizeWithContentScale-কেsourceSizeDp: Size?-এর পরিবর্তেaspectRatio: Float?নিতে বলুন।- প্লেয়ারের বর্তমান কিউ শোনার জন্য
CuesStateক্লাস এবংrememberCuesStateকম্পোজেবলmedia3-ui-composeমডিউলে যোগ করুন। ProgressSlider-এ স্ক্রাবিং মোড সাপোর্ট যোগ করুন যদি এটিExoPlayerবাCompositionPlayer-এর উপর ভিত্তি করে হয়।PresentationState-এshowArtwork-এর জন্য সহায়তা যোগ করুন এবংContentFrameওPlayer-এ প্রদত্ত ঐচ্ছিকartworkকম্পোজেবলের রেন্ডারিংয়ের সময় নির্ধারণ করতে এটি ব্যবহার করুন।artworkস্লটের ডিফল্ট ভ্যালু হিসেবে ব্যবহার করার জন্যArtworkComposable যোগ করুন।PlayPauseButtonState-এ নতুন ফিল্ড যোগ করুন (showBuffering,showRetry,showReplay) এবং আরও আইকন ও বাফারিং ইন্ডিকেটর রেন্ডার করতেPlayPauseButton-এ সেগুলি ব্যবহার করুন।- কাস্টম প্লেব্যাক স্টেট পর্যবেক্ষণ করার অনুমতি দিতে
PlaybackStateক্লাস যোগ করুন, এবং বোতাম-ইন্ডিপেন্ডেন্ট কম্পোনেন্ট হিসেবেBufferingIndicatorচালু করুন। - মাল্টি-পিরিয়ড লাইভস্ট্রিমে লাইভ পোস্ট-রোল প্লেসহোল্ডারের জন্য পিরিয়ড বাউন্ডারিতে
PlayerViewএবংPlayerControlViewবিজ্ঞাপন মার্কার দেখানোর সমস্যা সমাধান করুন। Player,ContentFrame,PlayerDefaultsএবংMiniController-এর কম্পোজেবল স্লট আর প্যারামিটার হিসেবে প্লেয়ার বা কন্ট্রোলের দৃশ্যমানতা পায় না। পরিবর্তে, কলিং স্কোপ থেকে সেগুলি ক্যাপচার করুন (যেমন,topControlsএখন@Composable BoxScope.() -> Unit)। এটি একটি অস্থির API-তে ব্রেকিং পরিবর্তন।- স্কেল করা কন্টেন্টকে তার কন্টেনারের মধ্যে পজিশন করতে
alignmentপ্যারামিটারকেContentFrame,PlayerএবংModifier.resizeWithContentScale-এ যোগ করুন এবংContentFrame-এর কন্টেন্টকে তার সীমার মধ্যে ক্লিপ করুন, যাতেContentScale.Crop-এর সাথে স্কেল করা ভিডিও আর এর বাইরে না যায়। isLiveএবংliveOffsetMsএক্সপোজ করেProgressSlider,ProgressStateWithTickCountএবংProgressStateWithTickInterval-এ লাইভস্ট্রিম UI সাপোর্ট যোগ করুন।LiveButtonকম্পোজেবলকেmedia3-ui-compose-material3(#২২১৩)-এ যোগ করুন।
- Ktor এক্সটেনশন:
- মিড-স্ট্রিম কানেকশন ব্যর্থ হলে
KtorDataSourceযাতেHttpDataSourceException-এর পরিবর্তে ইনপুট-শেষ-হয়ে-গেছে হিসেবে বিবেচনা করতে পারে, সেই সমস্যার সমাধান করা হয়েছে (#3460)।
- মিড-স্ট্রিম কানেকশন ব্যর্থ হলে
- HLS এক্সটেনশন:
EXT-X-STREAM-INF-এVIDEO-RANGE(PQএবংHLG) পার্স করুন এবংEXT-X-I-FRAME-STREAM-INF-কেFormat.colorInfo-এ (#3441)।- MPEG-TS
EXT-X-MAPপার্স করার সময়NullPointerExceptionঠিক করুন PES মিডিয়া স্যাম্পেল সহ ইনিশিয়ালাইজেশন সেগমেন্ট (#3456). - এক্সপোজড HLS ট্র্যাকের জন্য
Format.idএবংFormat.metadatanullহয়ে যাওয়ার রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3402)। - অ্যাসেট-লিস্ট বিজ্ঞাপন
X-PLAYOUT-LIMIT-এ ক্লিপ করুন এবং যেগুলি সম্পূর্ণভাবে সীমা অতিক্রম করে সেগুলি এড়িয়ে যান এবং ইন্টারস্টিশিয়ালX-RESUME-OFFSETবাদ দিলে এবংX-PLAYOUT-LIMITসেট করা থাকলেও এর সময়কাল অজানা থাকলে, কন্টেন্ট রিজিউম অফসেট ডিফল্ট হিসেবে ০-তে সেট করুন। - একটি
X-ASSET-LISTইন্টারস্টিশিয়াল ওভাররাইট সমাধান করার সময় একই বিজ্ঞাপন গ্রুপের অন্যান্য ইন্টারস্টিশিয়ালের কন্টেন্ট রিজুম অফসেট কন্ট্রিবিউশন ওভাররাইট হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- DASH এক্সটেনশন:
DashManifestParser-এ বিকল্প MPD ইনসার্শন (urn:mpeg:dash:event:alternativeMPD:insert:2025) এবং রিপ্লেসমেন্ট (urn:mpeg:dash:event:alternativeMPD:replace:2025) ইভেন্ট পার্স করার জন্য সহায়তা এবংPeriod.alternativeMpdEvents-এAlternativeMpdEventইনস্ট্যান্স হিসেবে সেগুলি প্রকাশ করা। এটি অ্যাপের জন্য একটি ব্রেকিং পরিবর্তন যাDashManifestParser-এর সাবক্লাস:DashManifestParser.buildPeriodএখন একটি অতিরিক্তList<AlternativeMpdEvent>প্যারামিটার নেয় এবং আগের ওভারলোড সরিয়ে দেওয়া হয়েছে। অ্যাপ ওভাররাইড করাDashManifestParser.parseEventStream(XmlPullParser)-কে অবশ্যই ওভাররাইড করতে হবে পরিবর্তেDashManifestParser.parseEventStream(XmlPullParser, String), কারণ আগেরটি বন্ধ করা হয়েছে এবং ভবিষ্যতে রিলিজের সময় এটি ব্যক্তিগত করা হবে।EssentialPropertyএবংSupplementalPropertyডেসক্রিপ্টর থেকে CICP রঙের তথ্য (ColourPrimaries,TransferCharacteristics,MatrixCoefficientsএবংVideoFullRangeFlag)Format.colorInfo-এ পার্স করুন (#3426)।- ট্রিক মোডে
@idভ্যালুর হোয়াইটস্পেস-সেপারেটেড তালিকা (http://dashif.org/guidelines/trickmode) ডেসক্রিপ্টর@valueঅ্যাট্রিবিউট (#3315) কাজ করে। DashManifestParser-এ<ProducerReferenceTime>পার্স করার জন্য সহায়তা,AdaptationSet.producerReferenceTimes-এ এটি এক্সপোজ করা এবং VOD স্ট্রিমের জন্যTimeline.Window.presentationStartTimeMsওTimeline.Window.windowStartTimeMsপপুলেট করতে এটি ব্যবহার করা।- DASH কন্টেন্ট স্টিয়ারিংয়ের জন্য সহায়তা যোগ করুন (#১৬৮৯)।
<UTCTiming>এলিমেন্টে অ্যাট্রিবিউট না থাকা DASH ম্যানিফেস্ট পার্স করার সময় হতে পারে এমনNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করা (#৩৪৩৬)।
- RTSP এক্সটেনশন:
- RTSP ক্লায়েন্ট বন্ধ হওয়ার পরে নেটওয়ার্ক থেকে দেরিতে পাওয়া উত্তর প্রসেস করার সময়
IllegalStateExceptionক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। - দ্রুত স্ক্রাব করার ফলে TCP প্রোটোকল ফলব্যাক মেকানিক ভুলভাবে ট্রিগার হওয়ার সমস্যা সমাধান করা হয়েছে।
- ট্র্যাক আবার বেছে নেওয়া, সেশন টিয়ারডাউন বা URI রিডাইরেকশনের সময় RTSP ক্লায়েন্ট স্টেট রিসেট করার পরে
দেরিতে পাওয়া নেটওয়ার্ক রেসপন্স প্রসেস করার সময়
যে
IllegalStateExceptionক্র্যাশ হতে পারে তা ঠিক করুন। - প্লেব্যাক রিস্টার্ট করার আগে আবার সিক করার ফলে
IllegalStateExceptionক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। - ভিডিওর কোনও অংশে যাওয়ার ফিচার ব্যবহার করার সময়, ভিডিওর কোনও অংশে যাওয়ার ফিচার আগে থেকেই পেন্ডিং থাকলে, অডিও ড্রপআউট এবং ভিডিও প্লেব্যাক ফ্রিজ হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- H.264 এবং H.265 কীফ্রেম অ্যাক্সেস ইউনিট এগ্রিগেশন বা নন-IDR প্যাকেট দিয়ে শেষ হওয়ার কারণে কীফ্রেম হিসেবে ফ্ল্যাগ করা হয়নি, যার ফলে বাফারিংয়ে প্লেব্যাক আটকে থাকার সমস্যা সমাধান করা হয়েছে (#3434)।
- RTSP ক্লায়েন্ট বন্ধ হওয়ার পরে নেটওয়ার্ক থেকে দেরিতে পাওয়া উত্তর প্রসেস করার সময়
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- Opus এক্সটেনশন: ভুল Opus ডেটা ডিকোড করার সময় JNI ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা।
- Opus এক্সটেনশন: প্রি-স্কিপ এবং ডিসকার্ড প্যাডিং একই প্যাকেটে পড়লে ডিসকার্ড প্যাডিং উপেক্ষা করার সমস্যা সমাধান করা হয়েছে (#২৫৭৬)।
- কাস্ট এক্সটেনশন:
- সেশন উপলভ্য না থাকার কারণ দেখানোর জন্য
SessionAvailabilityListener.SessionUnavailableReasonপরিচয় করিয়ে দিন এবংSessionAvailabilityListener.onCastSessionUnavailable-এর জন্য ওভারলোড করা পদ্ধতি প্রদান করুন যাতে এটি প্রকাশ করা যায়। - কাস্ট সেশন বন্ধ করার পরে প্লেব্যাক অপ্রত্যাশিতভাবে লোকাল ডিভাইসে আবার চালু হওয়ার সমস্যা সমাধান করা।
RemoteCastPlayer-এRemoteMediaClientঅপারেশন (যেমন, চালানো, পজ করা, স্পিড পরিবর্তন করা, রিপিট মোড, ভলিউম, মিউট করা বা ট্র্যাক বেছে নেওয়া) ব্যর্থ হলে, একটি ত্রুটি লগ করুন (#3373)।RemoteCastPlayer-এArrayIndexOutOfBoundsExceptionঠিক করুন যখন খোঁজার অপারেশন বাকি থাকার সময় কাস্ট রিসিভার কিউ পরিবর্তন হয় বা ছোট হয় (#3372)।- ডিফল্ট Cast রিসিভারের সাথে সম্পর্কিত একটি সমস্যার সমাধান করা হয়েছে যেখানে টাইমলাইন শুধুমাত্র অ্যাক্টিভ আইটেমের ঠিক আশেপাশের মিডিয়া আইটেমগুলি দেখায়, পুরো প্লেলিস্ট নয় (#3129)।
- প্লেলিস্ট (
setMediaItems,addMediaItems,moveMediaItems,removeMediaItems) পরিবর্তন করার সময় বাRemoteCastPlayer-এ খোঁজার সময় টাইমলাইন ও প্লেব্যাক পজিশন অবিলম্বে আপডেট করুন এবং পরপর প্লেলিস্ট অপারেশন সারিবদ্ধ করুন যাতে সেগুলি নির্ভরযোগ্যভাবে ক্রমে কার্যকর হয় (#২৬৩৯, #৩২৭২)। RemoteCastPlayer-এ খালি সারিতেaddMediaItemsকল করার সময় Cast রিসিভারে মিডিয়া আইটেম লোড না হওয়ার সমস্যা সমাধান করা হয়েছে (#২৪০২)।RemoteCastPlayer-এ এমন একটি সমস্যার সমাধান করা হয়েছে যেখানে Cast রিসিভার কিউয়ের শেষে পৌঁছালে প্লেলিস্ট রেখে দেওয়ার পরিবর্তে টাইমলাইন মুছে যায়।- মিডিয়া আইটেম লোড করার আগে
RemoteCastPlayer-এ সেট করা থাকলে,playWhenReady,repeatModeএবংplaybackParametersট্রান্সফার বা প্রয়োগ না হওয়ার সমস্যা সমাধান করুন (যেমন,CastPlayer-এ লোকাল-টু-রিমোট প্লেব্যাক ট্রান্সফারের সময়) (#৮৮৯)।
- সেশন উপলভ্য না থাকার কারণ দেখানোর জন্য
- ডেমো অ্যাপ:
- সেশন ডেমো অ্যাপ ক্যাটালগে DRM-সুরক্ষিত মিডিয়া আইটেম এবং অতিরিক্ত HLS স্যাম্পেল স্ট্রিমের জন্য সহায়তা যোগ করুন।
- কাস্ট করার সময় সাবটাইটেল ও অডিও ট্র্যাক বেছে নেওয়ার সুবিধা চালু করতে, সেশন ডেমো অ্যাপে
CastTrackSelector-এর সাথেRemoteCastPlayerকনফিগার করুন।
- বাতিল করা চিহ্ন সরান:
DashUtil.buildDataSpec(Representation, RangedUri, int)এবংDashUtil.buildDataSpec(Representation, String, RangedUri, int)সরান। পরিবর্তেDashUtil.buildDataSpec(Representation, BaseUrl, RangedUri, int, Map<String, String>)ব্যবহার করুন।
- বিল্ড:
- Gradle
minSdkবাড়িয়ে ২৪ করুন।
- Gradle
ভার্সন 1.11.0
1.11.1
সেপ্টেম্বর 10, 2026
- ExoPlayer:
- প্রোগ্রেসিভ মিডিয়ার জন্য HAGC মেটাডেটা চালু/বন্ধ করতে ফ্ল্যাগটি
MediaSource.FactoryথেকেExtractorsFactory-এ সরান। আগেরsetExperimentalEnableHagcPlaybackপদ্ধতি সরিয়ে দিয়ে তার জায়গায়ExtractorsFactory.setParseHagcMetadataপদ্ধতি ব্যবহার করা হচ্ছে। এছাড়াও, এটি এমন একটি সমস্যার সমাধান করে যেখানে Matroska/WebM কন্টেনারের জন্য বন্ধ করার সুবিধা কাজ করেনি। - ট্রানজিশন না করা সেকেন্ডারি রেন্ডারার প্রি-ওয়ার্ম করার সময় প্লেব্যাক স্টল সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
- প্রি-ওয়ার্মিং সংক্রান্ত সমস্যার সমাধান করুন যেখানে একটি সিক রিসেট এবং উভয় রেন্ডারারকে অক্ষম করার সময়
Surfaceপ্রাথমিক রেন্ডারারে ফেরত দেওয়া উচিত। ArrayIndexOutOfBoundsException-এর সমস্যা সমাধান করুন, যখন লাইভ টাইমলাইন রিফ্রেশ ডিফল্ট পজিশনকে সার্ভার-সাইডে যোগ করা বিজ্ঞাপনের পরে সরিয়ে দেয়, যা বর্তমানে চালানো হচ্ছে (#3348)।- স্ক্রাবিং মোড সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেখানে
ScrubbingModeParameters.allowSkippingMediaCodecFlushচালু থাকা অবস্থায় খোঁজার সময় পুরনো ভিডিও ফ্রেম অল্প সময়ের জন্য দেখা যেতে পারে।
- প্রোগ্রেসিভ মিডিয়ার জন্য HAGC মেটাডেটা চালু/বন্ধ করতে ফ্ল্যাগটি
- এক্সট্র্যাক্টর:
- Matroska: ক্লাস্টারের পরে ট্র্যাক রাখলে, খোঁজা যায় এমন টাইমলাইন তৈরি না হওয়ার সমস্যার সমাধান করা হয়েছে (#3377).
- অডিও:
SilenceSkippingAudioProcessor-এ বাফার সাইজ গণনা করার সমস্যা সমাধান করুন যাতে ন্যূনতম নীরবতার সময়কাল ফ্রেম সাইজ (#3271) দ্বারা ভুলভাবে কমানো না হয়।- Android-এর সংজ্ঞা অনুযায়ী স্যাম্পেলকে আনসাইনড হিসেবে বিবেচনা করতে
PcmAudioUtil-এ ৮-বিট PCM হ্যান্ডলিং সংক্রান্ত সমস্যার সমাধান করা (#৩২৭১)। - অফলোড সংক্রান্ত সমস্যার সমাধান করুন, যার ফলে সীমিত হার্ডওয়্যার বাফার সাইজের কারণে প্রি-রোল বা গ্যাপলেস ট্রানজিশনের সময় প্লেব্যাক বন্ধ হয়ে যেতে পারে।
DefaultAudioSink-এ বাগ ঠিক করুন যেখানে প্লেব্যাক থ্রেড আর লাইভ না থাকলে রিলিজ কাউন্ট কমে না (#৩৩৩৮)।
- সেশন:
Player.Listenerকলব্যাক থেকে প্রসেসে থাকাMediaControllerরিলিজ করা হলেNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন (#৩৩৭৫)।MediaBrowserযখনonGetLibraryRoot()বাonConnectAsync()থেকে অ্যাসিঙ্ক্রোনাস ফলাফল প্রদানকারী কোনও পরিষেবার সাথে কানেক্ট করে, তখন প্রধান থ্রেডে ডেডলক সংক্রান্ত সমস্যার সমাধান করুন (#3393)।
- HLS এক্সটেনশন:
- DASH এক্সটেনশন:
presentationTimeOffset(#3334) সহ ইমেজ ট্র্যাকের জন্য ভুল স্যাম্পেল টাইমস্ট্যাম্প গণনা সংক্রান্ত সমস্যার সমাধান করুন।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- Opus: একাধিক
OpusDecoderইনস্ট্যান্স একসাথে শুরু করার সময় মেমরি করাপশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। - MPEG-H: মেমরি লিক, নন-ASCII অক্ষর ট্রাঙ্কেট করা এবং
MpeghUiManager-এ কমান্ড পাঠানোর সময় কম মেমরি থাকলে সম্ভাব্য নেটিভ ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3365)।
- Opus: একাধিক
ভার্সন 1.11.0
আগস্ট ০৫, ২০২৬
- কমন লাইব্রেরি:
- অডিও চ্যানেল মাস্ক স্পষ্টভাবে উপস্থাপন করতে
Format.channelMaskযোগ করুন, এবং নিরাপদে এটি সমাধান করতে একটি নতুনUtil.getAudioTrackChannelConfig(Format)ওভারলোড যোগ করুন। - Kotlin 2.0.20 থেকে 2.2.0-এ আপগ্রেড করুন।
- অডিও চ্যানেল মাস্ক স্পষ্টভাবে উপস্থাপন করতে
- ExoPlayer:
- ExoPlayer-এ
IllegalStateExceptionবাIndexOutOfBoundsException-এর কারণ হতে পারে এমন টাইমিং-নির্ভর কনকারেন্সি বাগ ঠিক করুন। AdsMediaSource-এ বিজ্ঞাপন গ্রুপের সংখ্যা চেক করার প্রসেস শিথিল করুন যাতে কোনও বিজ্ঞাপন গ্রুপ সম্পূর্ণভাবে প্রসেস করা হলে (hasUnplayedAds()হলfalse) বিজ্ঞাপন গ্রুপের সংখ্যা কমানোর অনুমতি দেওয়া হয়, রিসেট ওয়ার্কফ্লো চলাকালীন ডায়নামিক বিজ্ঞাপন গ্রুপের সাইজ পরিবর্তন করা যায়।- স্ট্রিমকে ফ্ল্যাগ রিপোর্ট করার অনুমতি দিতে
SampleStream-এgetFlags()এবংFLAG_STRICT_DURATIONযোগ করুন এবং এই ফ্ল্যাগগুলি ডাইনামিকভাবে চেক করার জন্য রেন্ডারার আপডেট করুন। - স্ট্রিম ফর্ম্যাট সঠিক ভ্যালু প্রদান না করলে, কোডেক অপারেটিং রেট গণনা করতে
MediaCodecVideoRenderer-এ ফ্রেম রেট এস্টিমেটর এবংMediaCodecAudioRenderer-এ কোডেক আউটপুট ফর্ম্যাটে ফিরে যান এবং অপ্রয়োজনীয় কোডেক রিসেট এড়িয়ে চলুন। - কোর প্লেয়ারে ক্লায়েন্ট-সাইড ইনসার্ট করা বিজ্ঞাপনের জন্য কন্টেন্টের ক্লিপিং সরান। পরিবর্তে,
AdsMediaSourceক্লিপিং লজিকের যত্ন নেয়। কন্টেন্ট ক্লিপিং ইন্টার্নালি প্রয়োগ করতে, কাস্টম ক্লায়েন্ট-সাইড ইনসার্ট করা বিজ্ঞাপনের সোর্স আপডেট করতে হবে। - সঠিকভাবে ফর্ম্যাট করা কিন্তু শনাক্ত করা যায়নি এমন কোডেক প্রোফাইল বা লেভেল সহ ট্র্যাককে
supported=YES-এর পরিবর্তেsupported=NO_EXCEEDS_CAPABILITIESহিসেবে চিহ্নিত করুন (যেভাবে অনুপস্থিত বা ভুলভাবে ফর্ম্যাট করা প্রোফাইল বা লেভেল সংক্রান্ত তথ্য সহ ট্র্যাককে চিহ্নিত করা হয়)। এর ফলে, আরও ভালভাবে কাজ করে এমন বিকল্প থাকলে, এইসব ট্র্যাক (যেগুলি ডিভাইসে কাজ করার সম্ভাবনা কম) বেছে নেওয়া হয় না। DefaultPreloadManager.SimpleRankingDataComparatorযোগ করুন, যা হল একটিRankingDataComparatorযা বর্তমানে চলা মিডিয়া আইটেমের ইন্ডেক্স থেকে দূরত্বের ভিত্তিতে মিডিয়া আইটেমের র্যাঙ্ক তুলনা করে। আরও ফাইন-টিউন করা তুলনামূলক লজিকের প্রয়োজন হলে, অ্যাপ তারcompare(Integer, Integer)পদ্ধতি ওভাররাইড করতে পারে। কাস্টমSimpleRankingDataComparator,DefaultPreloadManager.Builder-এর নতুন কনস্ট্রাক্টরের মাধ্যমে ইনজেক্ট করা যেতে পারে।- উপলভ্য হিপ মেমরি কম থাকলে,
বাফার বাইট সাইজের সীমায় ফিরে গিয়ে
DefaultLoadControl.prioritizeTimeOverSizeThresholds-এর OOM ঝুঁকি কমান। MediaItem.imageDurationUsসেট করা না থাকলে স্থির ছবি ম্যানেজ করার পদ্ধতি অ্যালাইন করুন: JPEG এবং HEIC স্থির ছবি এখন খুব কম ডিফল্ট সময়সীমার সাথে 'প্লে' হয় (PNG এবং অন্যান্য ছবি আগে যেভাবে কাজ করত)।BandwidthMeterথেকেMediaSourceপর্যন্ত প্লাম্ব করতেMediaSource.prepareSource(MediaSourceCaller, PlayerId, BandwidthMeter)যোগ করুন। কাস্টম ইমপ্লিমেন্টেশন সহ বাতিল করা পদ্ধতিটি এখনও ডিফল্টভাবে কল করা হবে, তবে নতুন পদ্ধতিটি ইমপ্লিমেন্ট করার এবং পুরনো পদ্ধতির সাথে সমতা পেতেBandwidthMeter.getTransferListener()ব্যবহার করার পরামর্শ দেওয়া হয়।DefaultBandwidthMeter-এ, কাস্টমInitialBitrateSupplier-এর জন্য সহায়তা যোগ করুন। এটি অ্যাপকে প্রাথমিক বিটরেট অনুমান নির্ধারণের জন্য নিজস্ব লজিক প্রদান করার অনুমতি দেয়, যাDefaultBandwidthMeterতৈরি করার সময় এবং নেটওয়ার্কের ধরন পরিবর্তনের সময় ব্যবহার করা হবে।DefaultBandwidthMeter.Builder.setInitialBitrateSupplier()-এর মাধ্যমে সাপ্লায়ার সেট করা যেতে পারে।- ডিফল্ট হিসেবে ডায়নামিক শিডিউলিং চালু করুন।
ExoPlayerপ্লেব্যাক ওয়ার্ক লুপ স্ট্যাটিক ইন্টারভ্যালের পরিবর্তে ডায়নামিক হিসেবে চলবে। - অ্যাক্টিভ প্লেব্যাকে প্রি-রোল স্যাম্পেল সহ ট্র্যাক যোগ করার সময় অপ্রয়োজনীয় রিসেট হওয়ার সম্ভাবনা থাকে, এটি সরিয়ে দিন।
DefaultBandwidthMeter-এ,getInitialBitrateCountryGroupAssignmentঅপ্টিমাইজ করুন যাতে অ্যারের পরিবর্তে ৩২-বিট ইন্টিজারে প্যাক করা কান্ট্রি গ্রুপ অ্যাসাইনমেন্ট ফেরত দেওয়া যায়, যার ফলে কোডের সাইজ কমে যায় এবং অ্যালোকেশন এড়ানো যায়।- কিছু ডিভাইসে
AudioTrackইনিশিয়ালাইজেশন সংক্রান্ত সমস্যার সমাধান করুন। এর জন্য, অন্যান্য রিট্রাই (বাফার সাইজ অর্ধেক করে) সফল না হলে, রিট্রাই লজিক যাতে সবসময় কমপক্ষে ১ সেকেন্ডের বাফার সাইজ ব্যবহার করে তা নিশ্চিত করুন (#3207)। - কিছু ডিভাইসে কোডেক সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে ইনপুট বাফার পাওয়ার আগে আগে ফ্লাশ করা হলে কোডেক সব স্যাম্পেল গ্রাস করছিল।
- প্রতি-স্ট্রিম ভিত্তিতে উন্নত মিডিয়া প্রসেসিংয়ের অনুমতি দিতে
এক্সপেরিমেন্টাল
ExoPlayer.Builder.enablePerStreamMediaProgression()যোগ করুন। এটি প্লেলিস্ট আইটেমের মধ্যে স্টার্টআপ লেটেন্সি কমায় এবং খুব ছোট কন্টেন্টের ক্ষেত্রে প্লেব্যাক "আটকে" যাওয়া এড়ায় (#3122)। - অডিও সেশন আইডি ব্যবহার সম্পর্কিত রেস কন্ডিশন ঠিক করুন যেখানে
ExoPlayer-এর মাধ্যমে অটোমেটিক জেনারেট করা প্রাথমিক অডিও সেশন আইডিsetAudioSessionId-এর মাধ্যমে সেট করা ভ্যালুর পরিবর্তে ব্যবহার করা হবে (#3241)। - প্রোগ্রেসিভ মিডিয়ার (যেমন, MP4, Matroska) জন্য পরীক্ষামূলক HAGC (ST 2094-50) টাইমড মেটাডেটা প্লেব্যাক সাপোর্ট যোগ করুন। প্লেয়ার অটোমেটিক
HAGC মেটাডেটা ট্র্যাককে সংশ্লিষ্ট ভিডিও ট্র্যাকের সাথে মার্জ করে এবং API 37+ ডিভাইসে ডিকোডারে
আউট-অফ-ব্যান্ড মেটাডেটা ডেলিভার করে। এই আচরণ
DefaultMediaSourceFactory.setExperimentalEnableHagcPlayback(false)-এর মাধ্যমে বন্ধ করা যেতে পারে। - ট্র্যাক বেছে নেওয়ার ক্ষেত্রে
Format-এর আপেক্ষিক পছন্দ দেখাতেFormat.selectionPriorityযোগ করুন (#3236)। - স্ক্রাবিং মোড সংক্রান্ত সম্ভাব্য সমস্যার সমাধান করা হয়েছে, যেখানে 'স্ট্রিমের শেষ' পর্যন্ত খোঁজার সময় স্ক্রাবিং বন্ধ হয়ে যেতে পারে।
- ExoPlayer-এ
- CompositionPlayer:
TrackSelectorইনস্ট্যান্স রিলিজ না হওয়ার সমস্যা সমাধান করা হয়েছে।
- ট্রান্সফর্মার:
ExportResult.fileSizeBytes-এর অতিরিক্ত রিপোর্ট করা সংক্রান্ত সমস্যার সমাধান করা।
- ট্র্যাক বেছে নেওয়া:
BaseTrackSelection.DEFAULT_FORMAT_COMPARATORএক্সপোজ করুন এবংAdaptiveTrackSelection.Factory.setTrackFormatComparatorযোগ করুন যাতে কাস্টম ফর্ম্যাট অর্ডারিং এবং শুধুমাত্র বিটরেট অর্ডারিংয়ের বাইরে ABR বেছে নেওয়ার অগ্রাধিকারের অনুমতি দেওয়া যায়।- সময়ের উপর নির্ভর করে এমন কনকারেন্সি সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে ট্র্যাক সিলেকশন প্যারামিটারে দ্রুত সিকোয়েন্সিয়াল আপডেট করার ফলে কিছু আপডেট হারিয়ে যেতে বা ওভাররাইট হতে পারে।
- এক্সট্র্যাক্টর:
- MP4, MP3, এবং FLAC: রানটাইম মেমরি খরচ কমাতে কন্টেইনার পার্সিংয়ের সময় অ্যাটাচ করা ছবি এবং কভার আর্ট মেটাডেটা বাতিল করার অনুমতি দিতে
FLAG_DISABLE_ARTWORK_METADATAযোগ করুন (#২০৭৭)। এছাড়াও, এটিDefaultExtractorsFactory.setDisableArtworkMetadata-এর মাধ্যমে সেন্ট্রালি চালু করা যেতে পারে। - MP4: ITU-T T.35 (
it35) টাইমড মেটাডেটা ট্র্যাক এক্সট্র্যাক্ট করার জন্য সহায়তা যোগ করুন। - MP4: চ্যাপ্টার মেটাডেটা (Nero এবং QuickTime ফর্ম্যাট) এক্সট্র্যাক্ট করার জন্য
সহায়তা যোগ করুন। দুটিই থাকলে QuickTime চ্যাপ্টারকে অগ্রাধিকার দেওয়া হয়। এক্সট্র্যাক্ট করা চ্যাপ্টারের তথ্য ট্র্যাকের
Metadata-এর মধ্যেChapterএন্ট্রি হিসেবে দেখানো হয়, যা MP4, M4A এবং M4B ফাইলে (যেমন অডিওবুক এবং পডকাস্ট) নেটিভ চ্যাপ্টার নেভিগেশনের অনুমতি দেয় (#২৮০৩)। - WAV, Matroska এবং MP4: ৬৪-বিট ফ্লোটিং পয়েন্ট PCM অডিওর জন্য সহায়তা যোগ করা হয়েছে (#৩০৯০)।
- Matroska: সঠিক
ColorInfoপপুলেট করতে কোডেক বিটস্ট্রিম মেটাডেটা ব্যবহার করুন। - MP4:
sidxবক্স না থাকলেmfraবক্স ব্যবহার করে ফ্র্যাগমেন্টেড MP4 ফাইলে খোঁজার জন্য সহায়তা যোগ করুন। এটি চালু করতে,FragmentedMp4Extractor-কেFLAG_READ_MFRA_FOR_SEEK_MAPপ্রদান করুন, যা এখনDefaultExtractorsFactory-এ ডিফল্ট হিসেবে করা হয় (#3088)। - কাজ করে না এমন ভার্সন সহ
av1Cডেটা উপেক্ষা করুন। - MP4:
fpcmবক্সে বিগ-এন্ডিয়ান ফ্লোটিং পয়েন্ট PCM-এর জন্য সহায়তা যোগ করুন। - Matroska: ট্র্যাকের
Metadata-এChapterটি এন্ট্রিতে চ্যাপ্টারের তথ্য পার্স করুন। - MPEG-TS: কোর ও এক্সটেনশন সাবস্ট্রিমকে একটি স্যাম্পেলে একত্রিত করে DTS-HD ও DTS Express স্ট্রিমের এক্সট্র্যাকশন উন্নত করা হয়েছে। এর ফলে, আগে যেখানে দুটি আলাদা স্যাম্পেল হিসেবে আউটপুট করা হতো, সেখানে প্লেব্যাক সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3147)।
- MP4: খালি
ilstমেটাডেটা ট্যাগ আইটেম পার্স করার সময় ইনফিনিট লুপ ও আউট-অফ-বাউন্ড রিড আটকান (#3191). - MPEG-TS: শেষ PES প্যাকেটের দৈর্ঘ্য জানা আছে এমন স্ট্রিমের ক্ষেত্রে শেষ ফ্রেম রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন (#3206)।
- MP3: Xing এবং VBRI হেডার সহ ফাইলের জন্য বিটরেট রিপোর্টিং ঠিক করুন।
- Matroska: শেষ ক্লাস্টারে সংজ্ঞায়িত ট্র্যাকগুলি পরিচালনা করুন (#3250).
- Matroska: ALAC-এর জন্য সহায়তা যোগ করুন (#3268)।
- MP4: ফ্র্যাগমেন্টেড MP4 ফাইলে পরিবর্তনশীল দৈর্ঘ্যের
sgpdবক্সের অনুমতি দিন (#3243)। - AVI: অডিও ট্র্যাকে কীফ্রেম ফ্ল্যাগ ছাড়া ফাইল চালানোর ফলে অডিও লস এবং
OutOfMemoryErrorহওয়ার সমস্যা সমাধান করা হয়েছে। - MP3: Xing/Info হেডার থেকে গ্যাপলেস-অ্যাওয়ার ডিউরেশন ব্যবহার করুন (#3183)।
- MP3: ডিকোড করা PCM ট্রিমিংয়ের সাথে ম্যাচ করতে LAME/Xing এনকোডার ডিলে এবং প্যাডিং মেটাডেটা অ্যাডজাস্ট করুন (#3200)।
- MP4, MP3, এবং FLAC: রানটাইম মেমরি খরচ কমাতে কন্টেইনার পার্সিংয়ের সময় অ্যাটাচ করা ছবি এবং কভার আর্ট মেটাডেটা বাতিল করার অনুমতি দিতে
- অডিও:
- ExoPlayer-এর অডিও রেন্ডারারে ১০০ মিলিসেকেন্ডের অতিরিক্ত সময়কাল যোগ করুন যখন রেডি থেকে নট-রেডি স্টেটে ট্রানজিশন করা হয়, যাতে ট্রানজিয়েন্ট আন্ডাররান ডিবাউন্স করা যায় এবং অ্যাক্টিভ প্লেআউটের সময় অপ্রত্যাশিত বাফারিং স্টেট এড়ানো যায় (#৩২১০)।
DefaultAudioTrackBufferSizeProvider-এ ডিফল্ট PCM বাফার সাইজ লজিক পরিবর্তন করে একটি নির্দিষ্ট ৫০০ মিলি সেকেন্ড বাফার ব্যবহার করুন যাতে এটি ডিভাইসের উপর কম নির্ভরশীল হয়।- প্ল্যাটফর্ম ডিকোডার থেকে স্পেশিয়াল channelMask এক্সট্র্যাক্ট করতে
MediaCodecAudioRendererআপডেট করুন, যাতেDefaultAudioSinkচ্যানেল কাউন্ট থেকে অনুমান করার পরিবর্তে এই এক্সপ্লিসিট মাস্ক ব্যবহার করতে পারে। AudioSink.configure-এর প্যারামিটার ডেটা ক্লাসে কনভার্ট করো।ForwardingAudioSink.configure-এর কাস্টম ওভাররাইড নতুন পদ্ধতি স্বাক্ষরে মাইগ্রেট করতে হবে।EditedMediaItem.Builder#setSpeed(SpeedParameters)-এর সাহায্যে অডিও স্ট্রিম টাইম-স্ট্রেচ করার সময় পিচ বজায় রাখার জন্য সহায়তা যোগ করুন।- ৮-বিট PCM, ১৬-বিট বিগ-এন্ডিয়ান PCM এবং ৬৪-বিট ফ্লোটিং পয়েন্ট PCM-কে ৩২-বিট ফ্লোটিং পয়েন্ট PCM-এ কনভার্ট করার জন্য
ToFloatPcmAudioProcessorউন্নত করুন (#৩০৯০)। DecoderAudioRenderer.getChannelMapping-এর রিটার্ন ভ্যালু পরিবর্তন করেImmutableIntArrayকরুন।- কম্প্রেসড অফলোড মোডে গ্যাপলেস অডিওর প্লেলিস্ট চালানোর সময় প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- অডিও প্রসেসরকে (#৪১৮) প্লেলিস্টের প্রসঙ্গ প্রদান করতে
Timelineএবং পিরিয়ড UIDAudioSink.configureএবংAudioProcessor.StreamMetadata-এ ফরওয়ার্ড করুন। - সময়-ভিত্তিক অডিও প্রসেসিং
(#৪১৮)
অনুমতি দিতে সঠিক
AudioProcessor.StreamMetadata.positionOffsetUsসেট করুন। - বিগ এন্ডিয়ান ৩২-বিট এবং ৬৪-বিট ফ্লোটিং পয়েন্ট PCM-এর জন্য সহায়তা যোগ করুন।
- Google Pixel ডিভাইসে প্লেব্যাকের জন্য EAC3-JOC থেকে EAC3-তে ফলব্যাক পাথ সরিয়ে দিন কারণ তাদের স্ট্যান্ডার্ড EAC3 ডিকোডার EAC3-JOC স্ট্রিম ডিকোড করতে পারে না (#3257)।
- ভিডিও:
- ভিডিও যোগ করার লজিক ঠিক করুন যাতে যোগ করার সময় ড্রপ করা বাফারগুলিকে ড্রপ করার পরিবর্তে স্কিপ করা হিসাবে গণনা করা যায়।
- প্লেসহোল্ডার সারফেস কাজ করে না এমন ডিভাইসে ফ্রেম ড্রপ এড়াতে নতুন সারফেস সেট করার সময় অবিলম্বে রেন্ডারিং সিদ্ধান্ত ঠিক করুন।
- ড্রপ বা স্কিপ করা ফ্রেমের জন্য
MediaCodecVideoRenderer-এ ফ্রেম রেট অনুমান আরও সঠিক করতে এটি ঠিক করুন। - ফ্রেম আগে শিডিউল করার জন্য ব্যবহৃত থ্রেশহোল্ডের কনফিগারেশনের অনুমতি দিন। ডিফল্ট
ভ্যালু হল ৫০ মিলি সেকেন্ড, তবে
MediaCodecVideoRenderer.Builder.setMaxEarlyUsThreshold()-এর মাধ্যমে এই ভ্যালু কাস্টমাইজ করা যায়। VideoFrameReleaseHelper-এ সেই সমস্যার সমাধান করুন যেখানে ডিসপ্লে পরিবর্তন করলে প্রধান থ্রেডে অপ্রয়োজনীয়Choreographerকলব্যাক এবং অতিরিক্ত CPU ওয়েকআপ ট্রিগার হতে পারে।
- টেক্সট:
- মেটাডেটা:
MediaMetadata.discSubtitleফিল্ড যোগ করুন এবং ID3v2.4TSSTএবং VorbisDISCSUBTITLEডেটা থেকে এটি পার্স করুন।- ID3
TPOSফ্রেম থেকে ডিস্ক নম্বর ও গণনা পার্স করুন।
- প্রভাব:
- সিক করার সময় প্লেয়ার যাতে ফ্রিজ না হয়ে যায়, তার জন্য
ফ্লাশ করার সময়
FinalShaderProgramWrapper-এ রিড্র স্টেট মুছে দিন।
- সিক করার সময় প্লেয়ার যাতে ফ্রিজ না হয়ে যায়, তার জন্য
ফ্লাশ করার সময়
- Muxers:
- নতুন
addTrackReferenceAPI-এর মাধ্যমেMp4Muxer-এ ট্র্যাক রেফারেন্স (trefবক্স) যোগ করার সুবিধা যোগ করুন। এটি ট্র্যাকগুলির মধ্যে সম্পর্ক স্থাপন করতে দেয়, যেমন একটি মেটাডেটা ট্র্যাককে ভিডিও ট্র্যাকের সাথে লিঙ্ক করা যা এটি বর্ণনা করে। OggMuxerযোগ করুন যাতেOPUSবাVORBISমিডিয়া স্ট্রিমoggফাইল ফরম্যাটে মিক্স করা যায়।- WAV ফাইল জেনারেশনের জন্য
WavMuxerযোগ করুন (ইন্টিজার এবং ফ্লোটিং-পয়েন্ট PCM-এর সাথে কাজ করে)। - রিজার্ভ করা স্পেস ছাড়াই ছোট নন-স্ট্রিমেবল ফাইল লেখার অনুমতি দিতে
setAttemptStreamableOutputEnabledথেকেInAppMp4Muxer.Factoryযোগ করুন। Mp4MuxerএবংFragmentedMp4Muxer-এ IAMF অডিওর জন্য সহায়তা যোগ করুন।
- নতুন
- IMA এক্সটেনশন:
- পজ বিজ্ঞাপনের জন্য ব্যবহার করতে, বিজ্ঞাপন স্লট প্রদান করার অনুমতি দিতে
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder.setPauseAdSlotযোগ করুন। - একের পর এক স্কিপ করা যায় এমন VAST বিজ্ঞাপনের ক্ষেত্রে দ্বিতীয় বিজ্ঞাপনে অবিলম্বে স্কিপ বোতাম দেখানোর সমস্যাটি সমাধান করুন (#3165)।
- পজ বিজ্ঞাপনের জন্য ব্যবহার করতে, বিজ্ঞাপন স্লট প্রদান করার অনুমতি দিতে
- সেশন:
- ব্যাকগ্রাউন্ড থ্রেড প্লেয়ার লুপার সহ সেশন ব্যবহার করার সময়
IllegalStateException-এর মধ্যে সম্ভাব্য ডেডলক ওMediaNotificationManagerক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন। MediaSessionপদ্ধতির জন্য আরও কঠোর থ্রেডিং প্রয়োজনীয়তা প্রয়োগ করুন। Void মেথড এখন অটোমেটিক অ্যাপ্লিকেশন লুপার থ্রেডে এক্সিকিউশন পোস্ট করে এবং স্টেট অ্যাক্সেসর (গেটার) স্পষ্টভাবে একটিIllegalStateExceptionথ্রো করে যদি অ্যাপ্লিকেশন লুপার ছাড়া অন্য কোনও থ্রেড থেকে কল করা হয়।- সেশন সাইডে প্রতি-কন্ট্রোলার অনুযায়ী স্ট্যাটাস কনসিস্টেন্সি ট্র্যাক করার মাধ্যমে
আউট-অফ-বাউন্ড টাইমলাইন মার্জ ক্র্যাশ (
MediaUtils.mergePlayerInfo-এIllegalStateException) সংক্রান্ত সমস্যার সমাধান করুন। - অ্যাক্টিভ মিডিয়া সেশন কোয়েরি করা এবং Media3
SessionTokenইনস্ট্যান্স ফিরিয়ে আনার জন্য সহায়তা প্রদান করতেandroidx.media3.session.MediaSessionManagerযোগ করুন। MediaSession.Callback.onConnect-এর ডিফল্ট অ্যাকশন পরিবর্তন করুন যদি পদ্ধতিটি ওভাররাইড না করা হয় যাতে শুধুমাত্র বিশ্বস্ত নয় এমন কন্ট্রোলারদের রিড অ্যাক্সেস প্রদান করা যায়।- নতুন API
MediaSession.Builder#setPackageNameOverride-এর মাধ্যমেMediaSessionতৈরি করার সময় প্যাকেজের নাম ওভাররাইড করার জন্য সহায়তা যোগ করুন। সেশনের প্যাকেজের নাম ওভাররাইড করতে কলারের কাছে অবশ্যইandroid.permission.OVERRIDE_MEDIA_SESSION_OWNERঅনুমতি থাকতে হবে। MediaSession.Callback.onConnectAsync()যোগ করুন। নতুন পদ্ধতিটি একটি কন্ট্রোলারের কানেকশন প্রচেষ্টাকে অ্যাসিঙ্ক্রোনাসভাবে প্রসেস করার অনুমতি দেয়। অ্যাপ আগের আচরণ ফিরিয়ে আনতেFutures.immediateFuture(ConnectionResult)-এর সাথে সাথে সাথেFutureফেরত দিতে পারে। নতুন পদ্ধতিতে মাইগ্রেট করার সাজেশন দেওয়া হচ্ছে কারণCallback.onConnectবাতিল করা হতে পারে।- API 36 ও 37-এ ব্লুটুথ AVRCP ব্রাউজিং
MediaLibraryServiceশনাক্ত না করার সমস্যা সমাধান করা হয়েছে। - ছবির সাইজ প্ল্যাটফর্মের সীমার কাছাকাছি হলে
MediaSession-এ আর্টওয়ার্কের ডবল-ডাউনস্কেলিং ঠিক করা, বিজ্ঞপ্তিতে অস্পষ্টতা সমাধান করা (#3134)। - অ্যাপ ব্যাকগ্রাউন্ডে (#3270) থাকাকালীন,
অ্যাসিঙ্ক্রোনাস আর্টওয়ার্ক বিটম্যাপ লোড কলব্যাক ফোরগ্রাউন্ড পরিষেবা চালু করার চেষ্টা করলে,
MediaNotificationManager-এForegroundServiceStartNotAllowedExceptionক্র্যাশ হওয়ার সমস্যার সমাধান করুন। MediaController-এর মাধ্যমে পাওয়াPositionInfoঅবজেক্টের আসলTimelineUID না থাকার সমস্যা সমাধান করা হয়েছে। এখন সেশন নির্ভরযোগ্যভাবে এই UID-গুলি অনুবাদ করে এবং স্ট্যাটাস আপডেট করার সময় প্রোপাগেট করে।MediaSessionService.stopSelfSafely()-এForegroundServiceStartNotAllowedExceptionক্যাচ করে ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন (#3310)।- একই মিডিয়া আইটেমের মধ্যে খোঁজার সময়
MediaController-এ অপ্রত্যাশিতonMediaItemTransition()কলব্যাক সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3248)।
- ব্যাকগ্রাউন্ড থ্রেড প্লেয়ার লুপার সহ সেশন ব্যবহার করার সময়
- UI:
- মিড-প্লেব্যাক চলাকালীন
ContentFrameরিকম্পোজ করা হলে ভুল সাইজে প্রথম ফ্রেম রেন্ডারিং সংক্রান্ত সমস্যার সমাধান করা (#৩২৩৮)। CurrentMediaItemStateক্লাস এবং সংশ্লিষ্টrememberCurrentMediaItemStateকম্পোজেবলmedia3-ui-composeমডিউলে যোগ করুন। বর্তমানে চলাMediaItemসম্পর্কে বিভিন্ন মেটাডেটা তথ্য দেখানোর জন্যdemo-compose-এ এই স্টেট হোল্ডার ব্যবহার করা হয়।media3-ui-composeমডিউলেPlaylistStateক্লাস এবং সংশ্লিষ্টrememberPlaylistStateComposable যোগ করুন। এই স্টেট হোল্ডারdemo-compose-এ ব্যবহার করা হয় যাতে প্লেয়ারে সেট করাMediaItemsসম্পর্কে বিভিন্ন মেটাডেটা তথ্য দেখানো যায়।PlaybackSpeedState-এ ফাস্টফরওয়ার্ডিং/স্লো মোশন API যোগ করুন। বেশিক্ষণ প্রেস করে ফাস্টফরওয়ার্ডিং দেখানোর জন্যdemo-compose-এ এই ফাংশনালিটি ব্যবহার করুন।media3-ui-compose-material3মডিউলেMiniControllerকম্পোজেবল যোগ করুন। এটি বর্তমান মিডিয়া আইটেমের শীর্ষক, আর্টিস্ট, আর্টওয়ার্ক ও প্রগ্রেস দেখানোর সময়Playerনিয়ন্ত্রণ করার জন্য কমপ্যাক্ট অ্যাফর্ডেন্স প্রদান করে।media3-ui-composeমডিউলেErrorStateক্লাস এবং সংশ্লিষ্টrememberErrorStateComposable যোগ করুন।media3-ui-compose-material3-এErrorTextকম্পোজেবল যোগ করুন এবংPlayer-এ এটিকে ডিফল্ট ওভারলে হিসেবে সেট করুন।TopControls,CenterControls,BottomControlsওErrorOverlay-এর জন্য কম্পোজেবল সহPlayerDefaultsঅবজেক্ট প্রকাশ করুন।Playerকম্পোজেবল ও এর কন্টেন্ট স্লটেFocusRequesterযোগ করুন।- স্লাইডিং উইন্ডো UI এনভায়রনমেন্টে
MediaItems-এর প্রিলোডিংয়ের সুবিধা দিতেPlayerPool(common-ktx) এবংrememberPooledPlayer(ui-compose) প্রকাশ করুন।demo-compose-এ এই কার্যকারিতাটি একটি নতুনShortFormPlayerScreen-এর সাথে প্রদর্শন করুন। PlayerViewএবং ComposePresentationState-এ শাটার সাপ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার ফলে টাইমলাইনে ক্র্যাশ হচ্ছিল, কারণ এটি পিরিয়ড UID লুকআপ (#3264) সাপোর্ট করে না।
- মিড-প্লেব্যাক চলাকালীন
- ডাউনলোড:
- ডাউনলোডের জন্য ফেচ করার সময় মিডিয়া প্লেলিস্টে HLS ভেরিয়েবল সংক্রান্ত সমস্যার সমাধান করুন (#3258)।
- Ktor এক্সটেনশন:
- HLS এক্সটেনশন:
- HLS কন্টেন্ট স্টিয়ারিং ও পাথওয়ে ক্লোনিংয়ের জন্য সহায়তা যোগ করুন (#১৬৮৯)।
- অ্যাপকে সম্পূর্ণভাবে প্রসেস করা অ্যাসেট তালিকার ইন্টারস্টিশিয়ালকে
অন-ডিমান্ড রি-রেজোলিউশনের জন্য আবার অনুপলভ্য অবস্থায় রিসেট করার অনুমতি দিতে,
HlsInterstitialsAdsLoader-এsetWithAssetListResetযোগ করুন। EXT-X-STREAM-INFএবংEXT-X-I-FRAME-STREAM-INF-এরSCOREঅ্যাট্রিবিউট পার্স করুন এবং এটিFormat.selectionPriority-এ পপুলেট করুন (#3236)।- প্লেলিস্ট আর প্রাইমারি বা অ্যাক্টিভ না থাকলেও শিডিউল করা HLS প্লেলিস্ট রিফ্রেশ হতে থাকে, এই সমস্যার সমাধান করা হয়েছে (#3254)।
- ইন্টারস্টিশিয়াল অ্যাসেট তালিকা (#৩৩২২) সমাধান করার সময় কন্টেন্ট রিজুম অফসেটের গণনা সংক্রান্ত সমস্যার সমাধান করা।
- প্লেলিস্টের অনুরোধ ব্যর্থ হওয়ার পরে কম লেটেন্সি লাইভ প্লেব্যাক আবার শুরু করার সময় অপ্রত্যাশিত অডিও ট্র্যাক টাইমস্ট্যাম্পের বিচ্ছিন্নতা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3311)।
HlsMediaPeriod.getStreamKeys()-এ বাগ ঠিক করা হয়েছে যেখানে অডিও রেন্ডিশনে ID3 ট্র্যাককে সাবটাইটেল হিসেবে বিবেচনা করা হয় (#3333)।
- DASH এক্সটেনশন:
- ভাষার (#3113) উপর ভিত্তি করে CEA ক্লোজড ক্যাপশনকে আলাদা আলাদা
TrackGroup-এ বিভক্ত করুন। - ম্যানিফেস্ট (MPD) থেকে একাধিক
Locationএলিমেন্ট পার্স করার জন্য সহায়তা যোগ করুন এবং ম্যানিফেস্ট লোড না হলেDashMediaSource-এ লোকেশন ফলব্যাক পারফর্ম করুন। - খালি
<SegmentTimeline/>এলিমেন্ট সহ ম্যানিফেস্ট খোলার সময় ক্র্যাশ (IndexOutOfBoundsException) সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3326)।
- ভাষার (#3113) উপর ভিত্তি করে CEA ক্লোজড ক্যাপশনকে আলাদা আলাদা
- RTSP এক্সটেনশন:
- UDP পোর্ট বাইন্ডিং সংক্রান্ত সমস্যার কারণে RTSP প্লেব্যাক প্রস্তুতি চলাকালীন ট্রানজিয়েন্ট প্লেব্যাক স্টল বা ব্যর্থতা ঠিক করুন।
- কাস্ট এক্সটেনশন:
Cast.initialize(CastParams)কল করে Cast-এর কনফিগারেশনের অনুমতি দিতে নতুনCastParamsক্লাস যোগ করুন।- নতুন
CastParams.getShowSystemOutputSwitcherOnCastIconClick()বিকল্প যোগ করুন, যা উপলভ্য হলে অ্যাপ-মধ্যস্থ কাস্ট ডিভাইস পিকারের পরিবর্তে SystemUI আউটপুট সুইচার ব্যবহার করার জন্য ট্রিগার করে। - মিডিয়া রুট পিকারের দৃশ্যমানতা স্ট্যাটাস পর্যবেক্ষণ করার জন্য
MediaRouteButtonStateএবংrememberMediaRouteButtonStateযোগ করুন এবংMediaRouteButton-এstateপ্যারামিটার যোগ করুন (#3172)। - সেই সমস্যার সমাধান করা হয়েছে যেখানে ট্র্যাক বেছে নেওয়ার পরে
RemoteCastPlayerস্থায়ীভাবে ট্র্যাক-মাস্কিং অবস্থায় আটকে যেতে পারে, যার ফলে Cast রিসিভার থেকে পরবর্তী ট্র্যাক আপডেট উপেক্ষা করা হয় (#3237)। DefaultMediaItemConverter-এNullPointerExceptionদেখানোর সমস্যা সমাধান করা হয়েছে। নন-Media3 প্রেরকের থেকে শুরু করা কাস্ট সেশনে যোগ দেওয়ার সময় এই সমস্যা দেখা যায়।- অ্যাক্টিভ প্লেয়ার পরিবর্তন করার সময়
CastPlayer-কে এমনMediaItemsট্রান্সফার করা থেকে আটকান যা চালানো যায় না (#3199)। - কনফিগার না করা লাইভ স্ট্রিম (
liveConfiguration == UNSET)STREAM_TYPE_BUFFEREDহিসেবে সারিবদ্ধ করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3318)।
- ইউটিলিটি পরীক্ষা করুন:
- হেডার ও বডি সহ
POSTঅনুরোধের জন্য সহায়তা অন্তর্ভুক্ত করতেDataSourceContractTestবড় করুন,HttpDataSourceTestEnv-এ কিছুPOSTরিসোর্স যোগ করুন এবংWebServerDispatcher-এ প্রত্যাশিত HTTP পদ্ধতি, হেডার ও বডির জন্য অ্যাসার্শন যোগ করুন। DataSource.open()থেকে রিটার্ন করা দৈর্ঘ্যের জন্যDataSourceContractTest-এ অ্যাসার্শন আরও কঠোর করুন। যেসব রিসোর্সের ফলেC.LENGTH_UNSETহতে পারে, সেগুলিTestResource.Builder.setMayResolveToUnknownLength(boolean)ব্যবহার করে তা উল্লেখ করতে হবে।TestExoPlayerBuilder-এsetPlaybackLooperযোগ করুন।
- হেডার ও বডি সহ
- বাতিল করা চিহ্ন সরান:
androidx.media3.exoplayer.MetadataRetrieverসরান। পরিবর্তেandroidx.media3.inspector.MetadataRetrieverব্যবহার করুন।androidx.media3.exoplayer.MediaExtractorCompatসরান। পরিবর্তেandroidx.media3.inspector.MediaExtractorCompatব্যবহার করুন।Mp4Extractor.FLAG_READ_MOTION_PHOTO_METADATAসরান। HEIC ফাইল থেকে মোশন ফটো মেটাডেটা এক্সট্র্যাক্ট করতেHeifExtractorব্যবহার করুন।androidx.media3.extractor.metadata.mp4.MotionPhotoMetadataসরান। পরিবর্তেandroidx.media3.extractor.metadata.MotionPhotoMetadataব্যবহার করুন।androidx.media3.extractor.DummyTrackOutputসরান। পরিবর্তেandroidx.media3.extractor.DiscardingTrackOutputব্যবহার করুন।androidx.media3.extractor.DummyExtractorOutputসরান। পরিবর্তেandroidx.media3.extractor.NoOpExtractorOutputব্যবহার করুন।androidx.media3.common.C.generateAudioSessionIdV21সরান। পরিবর্তেandroidx.media3.common.util.Util.generateAudioSessionIdব্যবহার করুন।
- তৈরি করুন
- Gradle কম্পোজিট বিল্ড (
includeBuild) ব্যবহার করার জন্য স্থানীয়ভাবে Media3-এর উপর নির্ভর করার জন্যREADME.mdনির্দেশাবলী আপডেট করা হয়েছে।core_settings.gradleস্ক্রিপ্ট সরিয়ে দেওয়া হয়েছে এবংandroidxMediaModulePrefixওandroidxMediaEnableMidiModuleপ্রপার্টি আর ব্যবহার করা হয় না।
- Gradle কম্পোজিট বিল্ড (
1.11.0-rc01
1.11.0 স্টেবল ভার্সন ব্যবহার করুন।
1.11.0-beta01
৭ জুলাই, ২০২৬
1.11.0 স্টেবল ভার্সন ব্যবহার করুন।
1.11.0-alpha01
২৪ জুন, ২০২৬
1.11.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন ১.১০.০
১.১০.১
১২ মে, ২০২৬
- কমন লাইব্রেরি:
SimpleBasePlayerএবংForwardingSimpleBasePlayer-এonAudioSessionIdChanged-এর হ্যান্ডলিং ঠিক করুন।
- ExoPlayer:
- অডিও সেশন আইডি জেনারেশন সম্পর্কিত রেস কন্ডিশন ঠিক করুন যা
টানেলিং মোডের সাথে
IllegalStateException-এর কারণ হতে পারে। (#৩০৯৯)। - রেন্ডারার প্রিওয়ার্মিংয়ের মাধ্যমে ডিকোডার সংক্রান্ত সমস্যা থেকে রিকভার করার সময় সম্ভাব্য অ্যাপ ক্র্যাশ হওয়ার সমস্যা সমাধান করা।
- AV1-ভিত্তিক Dolby Vision কোডেক ব্যবহার করার সময় ইনিশিয়ালাইজেশন ডেটা প্রদান করার কারণে ভিডিও আর্টিফ্যাক্ট সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#3153)।
- অডিও সেশন আইডি জেনারেশন সম্পর্কিত রেস কন্ডিশন ঠিক করুন যা
টানেলিং মোডের সাথে
- ট্র্যাক বেছে নেওয়া:
- ফলব্যাক MIME টাইপ সংক্রান্ত সমস্যার সমাধান করতে
VideoTrackInfo-এ ট্র্যাক বেছে নেওয়ার লজিক অ্যাডজাস্ট করুন এবং HDR ও কোডেক স্কোর সংক্রান্ত পছন্দ কোয়ালিটি সংক্রান্ত পছন্দে (#3135) সরিয়ে নিয়ে যান।
- ফলব্যাক MIME টাইপ সংক্রান্ত সমস্যার সমাধান করতে
- এক্সট্র্যাক্টর:
- MP3: Xing ডেটার দৈর্ঘ্য জানা স্ট্রিম দৈর্ঘ্যের (#3117) চেয়ে বেশি হলে তা উপেক্ষা করুন।
Mp4Extractor-এArrayIndexOutOfBoundsExceptionঠিক করুন যখনFLAG_OMIT_TRACK_SAMPLE_TABLEসেট করা থাকে এবং ট্র্যাকে সিঙ্ক স্যাম্পেল (stss) বক্স থাকে না।
- অডিও:
- প্লেয়ারে একাধিক অডিও রেন্ডারার যোগ করা হলে অডিও ইভেন্ট ভুলভাবে রুট হতে পারে এমন সমস্যার সমাধান করুন।
- ভিডিও:
- ৩০-এর কম API-তে ফ্রেম রেট পরিবর্তনের সময় কোডেক আবার ব্যবহার করার লজিক অ্যাডজাস্ট করুন যাতে যেখানে কোডেক রিসেট করলে কোনও লাভ নেই সেখানে তা এড়ানো যায় (#3120)।
- API 31+ এর জন্য
queueSecureInputBuffer-এ জোরপূর্বক সিঙ্ক্রোনাইজেশন ওয়ার্কঅ্যারাউন্ড অক্ষম করুন। ওয়ার্কঅ্যারাউন্ডটি ছিল একটি কৃত্রিম বাধা যা ডিক্রিপশনকে সিরিয়ালি চালাতে বাধ্য করেছিল যা API 31-এর আগে বিদ্যমান একটি ফ্রেমওয়ার্ক সমস্যার কারণে বিকৃত ভিডিওকে বাধা দেয়।
- ছবি:
- স্ক্রাবিং মোডে সমস্যা সমাধান করুন যেখানে ব্যবহারকারী "স্ক্রাবিং বন্ধ" করলে তবেই ইমেজ আপডেট কার্যকর হবে (#২৮১৫)।
- সেশন:
- অ্যাপ্লিকেশন থ্রেড মূল থ্রেড না হলে,
থ্রেড বাউন্ডারি জুড়ে
ForegroundServiceStartNotAllowedExceptionপ্রোপাগেট না হওয়ার সমস্যার সমাধান করা হয়েছে (#২৪৯৯)। - সেই সমস্যার সমাধান করুন যেখানে
COMMAND_SEEK_TO_MEDIA_ITEM,MediaController-এ উপলভ্য নয় যখন শুধুমাত্র প্ল্যাটফর্ম সেশনে কানেক্ট করা হয় যা অন্য আইটেম খোঁজার সুবিধা দেয় কিন্তু কোনও প্লেলিস্ট পরিবর্তন করে না। MediaControllerপ্ল্যাটফর্মে মিডিয়া আইটেম সেট করতে না পারার সমস্যা সমাধান করুন মিডিয়া সেশন যাPREPARE_FROMঅ্যাকশনের অনুমতি দেয় না।- API 27 বা তার আগের ভার্সনে প্ল্যাটফর্ম কন্ট্রোলারের মাধ্যমে কানেক্ট করার সময়, নিজস্ব প্রসেস
Controller.isTrusted()-এর সাথে চিহ্নিত না হওয়ার সমস্যা সমাধান করা হয়েছে।
- অ্যাপ্লিকেশন থ্রেড মূল থ্রেড না হলে,
থ্রেড বাউন্ডারি জুড়ে
- HLS এক্সটেনশন:
- স্ট্রিম ফলব্যাকের সময়
ArrayIndexOutOfBoundsExceptionথ্রো করা হলে, ট্র্যাক বেছে নেওয়ার বিকল্প উপলভ্য ট্র্যাকের সাবসেট হলে, বাগ সমাধান করুন (#৩১৬১)। - পরবর্তী আপডেটে
#EXT-X-MAPট্যাগ রিপিট না করা হলে, মিডিয়া প্লেলিস্ট আপডেট জুড়ে ইনিশিয়ালাইজেশন সেগমেন্ট ক্যারি ওভার না হওয়ার সমস্যার সমাধান করা হয়েছে (#3105)।
- স্ট্রিম ফলব্যাকের সময়
- DASH এক্সটেনশন:
SampleQueue-এ ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করুন, যখন এমন চাঙ্ক খোঁজা হচ্ছে যা বর্তমানে বাতিল করা হচ্ছে।
১.১০.০
২৬ মার্চ, ২০২৬
- কমন লাইব্রেরি:
Player.mute()ওPlayer.unmute()-কেUnstableApiথেকে স্টেবল ভার্সনে প্রোমোট করুন।Format.pcmEncodingওC.PcmEncoding-কেUnstableApiথেকে স্টেবল ভার্সনে প্রোমোট করুন।- এম্বেড করা
Formatইনস্ট্যান্সের প্রাইমারি গ্রুপ শনাক্ত করতেFormat.primaryTrackGroupIdযোগ করুন (#২৯৪)।
- ExoPlayer:
AdsMediaSource-এ ক্লিপিং করার ক্ষমতা যোগ করুন।MediaCodecVideoRenderer-এ ডায়নামিক শিডিউলিংয়ের জন্য সহায়তা যোগ করুন যাতে শিডিউলিংয়ের কাজ ও CPU ওয়েক-সাইকেল আরও ভালোভাবে অ্যালাইন করা যায়, যখন ভিডিও ফ্রেম প্রসেস করা যাবে। আপনিDefaultRenderersFactory-এexperimentalSetEnableMediaCodecVideoRendererDurationToProgressUs()ব্যবহার করে এটি চালু করতে পারবেন।DefaultPreloadManager.Builder-এ কাস্টমDataSource.Factoryসেট করার অনুমতি দিন।- কিছু ডিফল্ট কনস্ট্যান্ট
ExoPlayer.Builder-এ সরানোর মাধ্যমে Robolectric ছাড়াইExoPlayer-কে মক করার অনুমতি দিন। এই জটিল ইন্টারফেসের মক তৈরি করা সাধারণত উৎসাহিত করা হয় না - শুধুমাত্র যখন ব্যবহার ন্যূনতম/সহজ/আকস্মিক হয় (#২৯৮৫)।- এর জন্য
DEFAULT_STUCK_PLAYING_DETECTION_TIMEOUT_MS-কেExoPlayerথেকেExoPlayer.Builder-এ সরাতে হয়েছে (অবচয় না করে)।
- এর জন্য
- একটি সমস্যার সমাধান করা হয়েছে যেখানে
ProgressiveMediaSourceপ্লেয়ারে পুরনো টাইমলাইন তথ্য প্রচার করে এবং সারিবদ্ধ পিরিয়ড অপ্রত্যাশিতভাবে মুছে যায় (#৩০১৬)। - ফোন কল চলাকালীন প্লেব্যাকের অনুরোধ করা হলে ExoPlayer যাতে বিলম্বিত অডিও ফোকাসের অনুরোধ না করে সেই সমস্যার সমাধান করুন।
- অন-ডিমান্ড থেকে লাইভ কন্টেন্টে ট্রানজিশন করার সময় অন-ডিমান্ড কন্টেন্টের শেষে রি-বাফারিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#৩০৫২)।
- Dolby Vision Profile 10-এর জন্য সহায়তা যোগ করুন (#২৮৩০)।
- Fix bug where an uninitialized pre roll ad produced an
ArrayIndexOutOfBoundsException(#3125).
- CompositionPlayer:
EditedMediaItem.removeVideo-এর জন্য সহায়তা যোগ করুন।
- ট্রান্সফর্মার:
EditedMediaItem.Builder.setFrameRate()এখন ভিডিওর জন্য সর্বাধিক আউটপুট ফ্রেম রেট সেট করতে পারে, যাsetSpeed()-এর মাধ্যমে মিডিয়া স্পিড বাড়ানোর সময় বিশেষভাবে সহায়ক হয়।
- ট্র্যাক বেছে নেওয়া:
- ট্র্যাক ওভাররাইড সহ অটো-ফিল করা প্যারামিটার হিসেবে আউটপুট অ্যারে অন্তর্ভুক্ত করতে
DefaultTrackSelector.selectAllTracks-এর সিগনেচার পরিবর্তন করুন। - সংশ্লিষ্ট প্রাথমিক ট্র্যাক বেছে নেওয়া হয়েছে কিনা তা নির্বিশেষে এম্বেড করা মেটাডেটা ট্র্যাক বেছে নেওয়া হলে, সেই সমস্যা সমাধান করুন (#২৯৪)।
preferredVideoLanguages,preferredVideoLabels,preferredAudioLabels,preferredTextLabelsএবংselectTextByDefault-এর জন্যTrackSelectionParametersবিকল্প স্টেবিলাইজ করুন।
- ট্র্যাক ওভাররাইড সহ অটো-ফিল করা প্যারামিটার হিসেবে আউটপুট অ্যারে অন্তর্ভুক্ত করতে
- এক্সট্র্যাক্টর:
- MP4:
moov(#৩০৪৬)-এর মতো অন্যান্য বক্সের আগে বড়uuidবক্স সহ ফাইল কাজ করে। - MP4: MP4 কন্টেনারে ভার্সেটাইল ভিডিও কোডিং (VVC) ট্র্যাকের জন্য সহায়তা যোগ করা হয়েছে।
- MP4:
- ইন্সপেক্টর:
- ব্রেকিং পরিবর্তন:
FrameExtractorসরিয়ে দিন। ব্যবহারকারীদের এখন নতুন:media3-inspector-frameমডিউলের উপর নির্ভর করতে হবে এবংandroidx.media3.inspector.frame.FrameExtractor-এ ইমপোর্ট আপডেট করতে হবে। - ডিকোড করা ভিডিও ফ্রেম এক্সট্র্যাক্ট ও প্রসেস করার জন্য নতুন মডিউল নিয়ে আসা।
- ব্রেকিং পরিবর্তন:
- অডিও:
- IAMF ডিকোডার এক্সটেনশনের জন্য অন্তর্নিহিত ডিকোডিং লাইব্রেরি
libiamfথেকেiamf_tools-এ পরিবর্তন করুন। - IAMF ডিকোডিং ডিকোডারের মাধ্যমে (IAMF ডিকোডার এক্সটেনশন ব্যবহার করার সময়) অথবা Android স্পেশিয়ালাইজারের মাধ্যমে বাইনরাল আউটপুট সাপোর্ট করে।
- অটোমোটিভ পরিস্থিতিতে AC-4 ডিকোডার সাপোর্ট অ্যাসেস করার সময়
AC4Profile22এবং অন্যান্য লিগ্যাসি প্রোফাইলের জন্য সাপোর্ট সঠিকভাবে সরিয়ে দিন (#২৬০৯)। DefaultAudioSink-এAudioOutputইনিশিয়ালাইজেশনের আবার চেষ্টা করার লজিক উন্নত করুন (#২৯০৫)।- IAMF ডিকোড করার সময় স্পিকারের (বা প্রযোজ্য হলে স্পেশালাইজার) আউটপুট লেআউট ম্যাচ করার চেষ্টা করুন, IAMF এক্সটেনশন এবং মিডিয়া কোডেক ডিকোডার, দুটির সাথেই, যা AudioCapabilities এবং AudioCapabilitiesReceiver-এ নতুন ফিল্ড ও লজিক দ্বারা সমর্থিত।
- কম্প্রেসড অফলোড মোডে গ্যাপলেস অডিওর প্লেলিস্ট চালানোর সময় প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- IAMF ডিকোডার এক্সটেনশনের জন্য অন্তর্নিহিত ডিকোডিং লাইব্রেরি
- টেক্সট:
- VobSub: ডিফল্ট হিসেবে সবসময় ৫ সেকেন্ডের পরিবর্তে কিউয়ের সময়সীমা
নির্ধারণ করতে
STARTএবংSTOPSPU কন্ট্রোল কমান্ড ব্যবহার করুন (#২৯৩৫)।
- VobSub: ডিফল্ট হিসেবে সবসময় ৫ সেকেন্ডের পরিবর্তে কিউয়ের সময়সীমা
নির্ধারণ করতে
- মেটাডেটা:
- HLS ভেরিয়েন্ট ও রেন্ডিশন (#3043) দ্বারা প্রকাশিত সব সম্ভাব্য মেটাডেটা ট্র্যাক কভার করার জন্য মেটাডেটা রেন্ডারারের ডিফল্ট সংখ্যা বাড়িয়ে চার করুন।
- প্রভাব:
LottieOverlay-কে নতুন:media3-effect-lottieমডিউলে সরানো হয়েছে (যার মধ্যেandroidx.media3.effect.LottieOverlayথেকেandroidx.media3.effect.lottie.LottieOverlay-এ নাম পরিবর্তন করার প্রক্রিয়াও অন্তর্ভুক্ত ছিল)।
- Lottie এফেক্ট:
- নতুন
:media3-effect-lottieমডিউল নিয়ে আসুন যা ভিডিও ফ্রেমে লটি এফেক্ট প্রয়োগ করার ফাংশনালিটি প্রদান করে।
- নতুন
- IMA এক্সটেনশন:
- লেটেস্ট বিজ্ঞাপন মিডিয়া তথ্য API অ্যাক্সেস করতে IMA SDK ভার্সন 3.39.0-এ আপডেট করুন।
- বিজ্ঞাপনের MIME-এর প্রকার IMA LOADED ইভেন্টে দেওয়া MIME-এর প্রকারের সাথে ম্যাচ না করার সমস্যা সমাধান করা হয়েছে। এখন এই সমস্যার সমাধান IMA-এর প্রদান করা বিজ্ঞাপনের মিডিয়া তথ্য ব্যবহার করে বিজ্ঞাপনের MIME টাইপ ম্যাপ করে।
ImaAdsLoaderএবংImaServerSideAdInsertionMediaSource-এsetEnableCustomTabsযোগ করুন, যাতে ব্যবহারকারীরা নিয়ন্ত্রণ করতে পারেন যে কাস্টম ট্যাব ব্যবহার করে বিজ্ঞাপন ক্লিক-থ্রু URL লঞ্চ করা হবে কিনা।ImaAdTagUriBuilderযোগ করুন, এটি এমন একটি ক্লাস যাadTagUriতৈরি করার বিকল্প উপায় অফার করে। এতেsetPreferredLinearOrientationAPI আছে। এটি আলফা টেস্টিংয়ে থাকা একটি API যা আপনাকে লিনিয়ার বিজ্ঞাপনের জন্য পছন্দের ওরিয়েন্টেশন সেট করতে দেবে। আপনি আলফা টেস্টিং গ্রুপে যোগ দিতে চাইলে, আপনার অ্যাকাউন্ট পার্টনারের সাথে যোগাযোগ করুন।
- সেশন:
MediaMetadata.artworkData-এ বড় অ্যারে থাকলে অ্যাপ ক্র্যাশ করতে পারে, এই সমস্যার সমাধান করুন।ActionFactoryইন্টারফেসে@Player.Commandআর্গুমেন্টের জন্য int টাইপ ব্যবহার করুন (#২৯৩৩)।MediaSessionServiceএবংMediaLibraryService-কে একটিLifecycleServiceকরুন, যা পরিষেবার লাইফসাইকেলে লাইফসাইকেল-সচেতন অপারেশন অ্যাটাচ করার অনুমতি দেয় (#১৮৭)।MediaControllerথেকে ডিভাইসের ভলিউম পরিবর্তন করার কমান্ডের জন্য সহায়তা বন্ধ করুন এবংMediaBrowserলোকাল প্লেব্যাকের জন্য। অ্যাপের মাধ্যমে স্থানীয় ডিভাইসের ভলিউম পরিবর্তন করা যাবে না এবং প্রয়োজন হলে, এই উদ্দেশ্যেAudioManagerAPI ব্যবহার করা যেতে পারে।Intent-এর পুরনো ইনস্ট্যান্স শনাক্ত করুন যা ফোরগ্রাউন্ড পরিষেবা হিসেবে পরিষেবাটি শুরু করেছে। এটি সিস্টেমের মাধ্যমেForegroundServiceDidNotStartInTimeExceptionথ্রো করা আটকায়। এটি একটি অস্থির API-তে ব্রেকিং পরিবর্তন কাস্টমMediaNotification.Providerপ্রয়োগকারী অ্যাপের জন্য কারণ সেখানে একটি নতুন প্রয়োজনীয় পদ্ধতি আছে।- হোম স্ক্রিন উইজেটের সাথে ব্যবহার করার জন্য
PendingIntentইনস্ট্যান্সের জন্য বিল্ডার যোগ করুন (#২৯৩৩)। - Compose-ভিত্তিক হোম স্ক্রিন উইজেটের জন্য
Intentইনস্ট্যান্স তৈরি করতে স্ট্যাটিক পদ্ধতি যোগ করুন (#২৯৩৩)। - মিডিয়া আইটেম ট্রানজিশন কন্ট্রোলারকে রিপোর্ট না করার সমস্যা সমাধান করা হয়েছে। 'AUTO' এবং 'SEEK' (#2997) ডিসকন্টিনিউটি কারণে, একটি নির্দিষ্ট মিডিয়া আইটেম ইনডেক্স থেকে একই মিডিয়া আইটেমের অন্য ইনডেক্সে প্লেব্যাক ট্রানজিশন করার সময় এই সমস্যা দেখা যেত।
- সিস্টেম UI বোতাম প্লেসমেন্ট সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেখানে Android Auto-এর মতো অন্যান্য UI সারফেস বা প্রস্তুতকারকদের জন্য এই সমাধান প্রয়োজন নেই (#3041)।
- সাবস্ক্রিপশনের অ্যাক্সেস সিঙ্ক না হওয়ার সমস্যার সমাধান করা হয়েছে (#3056)।
- API 29-এ SysUI সংক্রান্ত সমস্যার সমাধান, যেখানে নির্দিষ্ট সাইজের মিডিয়া সেশন আর্টওয়ার্ক SysUI ক্র্যাশ করতে পারে এবং ডিভাইস রিবুট করতে বাধ্য করতে পারে (#3118)।
- Android Q-তে বিজ্ঞপ্তি আর্টওয়ার্ক আইকন স্কেলিং সংক্রান্ত সমস্যার সমাধান করা (#৩০৮৪)।
- UI:
- প্লেব্যাক স্পিড দেখাতে ও পরিবর্তন করতে
media3-ui-compose-এPlaybackSpeedControlকম্পোজেবল যোগ করুন। - প্লেব্যাক স্পিড কন্ট্রোল করার জন্য
media3-ui-compose-material3-এPlaybackSpeedToggleButtonকম্পোজেবল যোগ করুন। - প্লেয়ারের প্রোগ্রেস দেখাতে এবং টেনে এনে ও ট্যাপ করে (#2288)
খোঁজার জন্য
media3-ui-compose-material3-এProgressSliderকম্পোজেবল যোগ করুন। - PlayerControlView অ্যানিমেট করার সময় বড় অফস্ক্রিন বাফার এড়িয়ে চলুন।
media3-ui-compose-material3-এPlayerকম্পোজেবল যোগ করুন যা উপরে, মাঝে ও নিচে অ্যালাইন করা কাস্টমাইজ করার উপযুক্ত কন্ট্রোল সহContentFrame-কে একত্রিত করে।PlayerControlViewদেখা গেলে, ক্রমাগত ঘোষণা আপডেট হওয়া আটকাতে অ্যাক্সেসিবিলিটি পরিষেবা থেকে প্লেব্যাক পজিশন লুকান।
- প্লেব্যাক স্পিড দেখাতে ও পরিবর্তন করতে
- HLS এক্সটেনশন:
- HLS ইন্টারস্টিশিয়ালের সাথে X-PLAYOUT-LIMIT-এর জন্য সহায়তা (#২৪৮৪)।
#EXT-X-DEFINE-এর সাথেQUERYPARAMঅ্যাট্রিবিউট ব্যবহার করুন (#১৮৫৪)।- রেগুলার এক্সপ্রেশন ম্যাচিং ক্যাশে করার মাধ্যমে HLS প্লেলিস্ট পার্সিং অপ্টিমাইজ করুন (#3008)।
- অডিও রেন্ডিশনে ID3 (EMSG) মেটাডেটা ট্র্যাক এক্সপোজ করুন (#3043)।
- লোড করার সময় কোনও সমস্যা হলে, লোকেশন ফলব্যাক করার অনুমতি দিন, যদি বিভিন্ন লোকেশন থেকে রিডানডেন্ট স্ট্রিম উপলভ্য থাকে (#১৯৮৮)।
- HLS ইন্টারস্টিশিয়ালের জন্য X-SNAP আচরণ ঠিক করুন যাতে শুরু এবং আবার শুরু করার পজিশন সঠিকভাবে গণনা করা যায় (#৩০১৩)।
- DASH এক্সটেনশন:
- RTSP এক্সটেনশন:
- H.264 এবং H.265 স্ট্রিমিংয়ে রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যার ফলে একাধিক RTP প্যাকেটে বিস্তৃত একই অ্যাক্সেস ইউনিটের স্যাম্পেল ভুলভাবে পার্স করা হচ্ছিল। এর ফলে ভিডিওতে ভিজ্যুয়াল আর্টিফ্যাক্ট ও করাপশন দেখা যায় (#3121)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- MPEG-H ডিকোডার এক্সটেনশনে MPEG-H UI ম্যানেজার সাপোর্ট যোগ করা (#3066)।
- কাস্ট এক্সটেনশন:
RemoteCastPlayer.Builder#setTrackSelectorপদ্ধতি যোগ করুন যা কাস্ট প্লেব্যাকের জন্য ট্র্যাক বেছে নেওয়ার সুবিধা প্রয়োগ করতে দেয়।
- বাতিল করা চিহ্ন সরান:
ExperimentalFrameExtractorসরান। পরিবর্তেandroidx.media3.inspector.frame.FrameExtractorব্যবহার করুন।ChannelMixingMatrix.create()সরান। পরিবর্তেChannelMixingMatrix.createForConstantGain()ব্যবহার করুন।androidx.media3.extractor.metadata.flac.VorbisCommentসরান। পরিবর্তেandroidx.media3.extractor.metadata.vorbis.VorbisCommentব্যবহার করুন।MediaSource.prepareSource(MediaSourceCaller, TransferListener)সরান। পরিবর্তেMediaSource.prepareSource(MediaSourceCaller, TransferListener, PlayerId)ব্যবহার করুন।
1.10.0-rc03
২৫ মার্চ, ২০২৬
1.10.0 স্টেবল ভার্সন ব্যবহার করুন।
1.10.0-rc02
১৬ মার্চ, ২০২৬
1.10.0 স্টেবল ভার্সন ব্যবহার করুন।
1.10.0-rc01
১০ মার্চ, ২০২৬
1.10.0 স্টেবল ভার্সন ব্যবহার করুন।
1.10.0-beta01
২৫ ফেব্রুয়ারি, ২০২৬
1.10.0 স্টেবল ভার্সন ব্যবহার করুন।
1.10.0-alpha01
৬ ফেব্রুয়ারি, ২০২৬
1.10.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.9.0
১.৯.৪
১৬ মে, ২০২৬
ভার্সন 1.9.4-এ নিম্নলিখিত কমিট রয়েছে।
- প্রভাব:
- সারফেসলেস কনটেক্সট থেকে ট্রানজিশন করার সময়
GL_DRAW_BUFFERএবংGL_READ_BUFFERস্পষ্টভাবে সেট করুন।
- সারফেসলেস কনটেক্সট থেকে ট্রানজিশন করার সময়
১.৯.৩
১৬ মার্চ, ২০২৬
ভার্সন 1.9.3-এ নিম্নলিখিত কমিট রয়েছে।
- অডিও:
- কম্প্রেসড অফলোড মোডে গ্যাপলেস অডিওর প্লেলিস্ট চালানোর সময় প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে।
১.৯.২
৬ ফেব্রুয়ারি, ২০২৬
ভার্সন 1.9.2-এ নিম্নলিখিত কমিট রয়েছে।
- ExoPlayer:
ProgressiveMediaSourceপ্লেয়ারে পুরনো টাইমলাইন তথ্য প্রচার করে এবং সারিবদ্ধ সময়কাল অপ্রত্যাশিতভাবে মুছে যায় (#3016) এই সমস্যার সমাধান করুন।
- সেশন:
- সিস্টেম UI বোতাম প্লেসমেন্ট সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেখানে Android Auto-এর মতো অন্যান্য UI সারফেস বা প্রস্তুতকারকদের জন্য এই সমাধান প্রয়োজন নেই (#3041)।
- কাস্ট এক্সটেনশন:
- Cast থেকে লোকাল প্লেব্যাকে ট্রান্সফার করার সময় যে সমস্যা হচ্ছিল তা সমাধান করা হয়েছে।
১.৯.১
২৬ জানুয়ারি, ২০২৬
ভার্সন 1.9.1-এ এইসব কমিট আছে।
- কমন লাইব্রেরি:
- টাইমজোন অফসেটে শুধু ঘণ্টা সহ তারিখ-সময় স্ট্রিংয়ের জন্য সহায়তা (#২৯২৯)।
- ExoPlayer:
- প্লেব্যাক শুরু হওয়ার সময় আরও মসৃণ A/V সিঙ্ক করার জন্য, অডিও শুরু হওয়ার পরেই
doSomeWorkইন্টারভ্যাল স্লো করার জন্য ডায়নামিক শিডিউলিংয়ের অনুমতি দিন। DefaultLoadErrorHandlingPolicy-এ বাগ ঠিক করুন যেখানেFileNotFoundExceptionএবং একই ধরনের ব্যতিক্রমের ধরন একাধিকবার আবার চেষ্টা করা হয়েছে।- ডায়নামিক শিডিউলিংয়ের ক্ষেত্রে বাগ ঠিক করুন যেখানে পরবর্তী
doSomeWork-এর জন্য হিসেব করা সময় ভুলবশতdoSomeWork-এর বর্তমান ইটারেশনের অতিবাহিত সময় দ্বারা কমিয়ে দেওয়া হয়েছে। এই সমস্যার সমাধান করলে, সিপিইউ আইডল টাইম বাড়বে এবং পাওয়ার সাশ্রয় হবে। - ফলব্যাক AVC বা HEVC কোডেক ব্যবহার করার চেষ্টা করার সময় Dolby Vision ফাইলের কিছু প্লেব্যাক ব্যর্থ হওয়ার সমস্যা সমাধান করুন।
- প্লেলিস্ট থেকে বর্তমানে চলা আইটেম সরানোর সময় প্লেব্যাক শেষ হওয়ার পরেও লোডিং চলতে থাকার সমস্যাটি সমাধান করা হয়েছে (#২৮৭৩)।
- একই আইটেমে বারবার
ExoPlayer.replaceMediaItemব্যবহার করার সময়MediaItemইনস্ট্যান্স লিক করা এড়িয়ে চলুন (#২৯৯৩)। - ইমার্জেন্সি ওয়েক লক রিলিজের কারণে সম্ভাব্য ANR প্রতিরোধ করুন (#২৯৭৯)।
- প্লেব্যাক শুরু হওয়ার সময় আরও মসৃণ A/V সিঙ্ক করার জন্য, অডিও শুরু হওয়ার পরেই
- এক্সট্র্যাক্টর:
- MP3: LAME ReplayGain ডেটা পার্স করুন (#২৮৪০)।
- অডিও:
- অটোমোটিভ পরিস্থিতিতে AC-4 ডিকোডার সাপোর্ট অ্যাসেস করার সময়
AC4Profile22এবং অন্যান্য লিগ্যাসি প্রোফাইলের জন্য সাপোর্ট সঠিকভাবে সরিয়ে দিন (#২৬০৯)।
- অটোমোটিভ পরিস্থিতিতে AC-4 ডিকোডার সাপোর্ট অ্যাসেস করার সময়
- ভিডিও:
- API 30-এর নিচের ডিভাইসে ভিডিও কোডেক বাতিল করুন যখন কন্টেন্ট ফ্রেম রেট পরিবর্তন হয় যাতে প্লেব্যাক আটকে না যায় (#২৯৪১)।
- টেক্সট:
- VobSub: SPU সঠিকভাবে ম্যানেজ করার মাধ্যমে কিছু বাদ পড়ে যাওয়া সাবটাইটেল ঠিক করুন, যেখানে হয় শুধুমাত্র একটি কন্ট্রোল সিকোয়েন্স থাকে অথবা একাধিক কন্ট্রোল সিকোয়েন্স জুড়ে গুরুত্বপূর্ণ তথ্য ভাগ করা থাকে (#২৯৩৫)।
- IMA এক্সটেনশন:
- ত্রুটি সমাধান: বিজ্ঞাপনের MIME-এর প্রকার IMA LOADED ইভেন্টে দেওয়া MIME-এর প্রকারের সাথে ম্যাচ না করার সমস্যা সমাধান করা হয়েছে। এখন বিজ্ঞাপন পড ইন্ডেক্স ও বিজ্ঞাপনের পজিশন ব্যবহার করে বিজ্ঞাপনের MIME টাইপ ম্যাপ করা হয়।
getAdsManager()এবংAdEvent.getAd()-এর ফলাফল অ্যাক্সেস করার আগে একটি নাল চেক যোগ করুন।
- সেশন:
- প্ল্যাটফর্ম সেশনের সাথে কানেক্ট করা
MediaControllerবন্ধ করার সময় বিজ্ঞাপন প্লেব্যাক চলাকালীন অ্যাপ ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে (#২৯৪৮)। - অন্যান্য প্রসেস থেকে পাঠানো ভুলভাবে তৈরি করা
Bundleইনস্ট্যান্স থেকে রক্ষা করতে বিভিন্ন ক্লাসেextrasBundleইনস্ট্যান্সে অতিরিক্ত যাচাইকরণ যোগ করুন। COMMAND_SEEK_NEXTবাCOMMAND_SEEK_BACK-এর জন্য কমান্ড না থাকার কারণে সিস্টেম মিডিয়া বিজ্ঞপ্তিতে গ্যাপ তৈরি হওয়ার সমস্যা সমাধান করা হয়েছে (#২৯৭৬)।- বিজ্ঞপ্তি আইকনের জন্য বিটম্যাপ স্কেলিং মূল থ্রেড থেকে সরিয়ে দিন (#২৮২৯)।
- পুরনো
MediaMetadataCompatএবংMediaDescriptionCompat(#3018) থেকে কনভার্ট করার সময় লেখক, গীতিকার এবং সুরকারকে ফলব্যাক হিসেবে ব্যবহার না করার সমস্যা সমাধান করা হয়েছে।
- প্ল্যাটফর্ম সেশনের সাথে কানেক্ট করা
- ডাউনলোড:
SegmentDownloader-এর মাধ্যমেPriorityTooLowExceptionম্যানেজ করার সময় সম্ভাব্য ইনফিনিট লুপের সমস্যা সমাধান করুন (DASH, HLS ও SmoothStreaming-এর জন্য)। সুরক্ষিতexecuteপদ্ধতি ব্যবহার করেSegmentDownloader-এর কাস্টম ওভাররাইডকেSupplier-এ র্যাপ করা টাস্ক প্রদান করতে হবে যাতে এটি আবার তৈরি করা যায় (#২৯৩১)।
- HLS এক্সটেনশন:
Listener.onAssetListLoadCompletedকলব্যাকে র অ্যাসেট তালিকার JSON ডকুমেন্ট পাস করুন। এটি একটি ব্রেকিং পরিবর্তন একটি অস্থির API-তে যার জন্য এই কলব্যাকটি বাস্তবায়নকারী অ্যাপগুলির প্রয়োজন টাইপJSONObjectএর একটি অতিরিক্ত আর্গুমেন্ট যোগ করুন (#2950).
- RTSP এক্সটেনশন:
- টাইমস্ট্যাম্প সহ RTP প্যাকেট সঠিকভাবে ম্যানেজ করুন যা র্যাপ করা থাকে (#২৯৩০)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- প্রথম ভিডিও ফ্রেম প্রসেস করার আগে
খোঁজার সময় সম্ভাব্য
NullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন (#২৯৬৫)।
- প্রথম ভিডিও ফ্রেম প্রসেস করার আগে
খোঁজার সময় সম্ভাব্য
- কাস্ট এক্সটেনশন:
- প্লেলিস্ট পরিবর্তন করার সময়
RemoteCastPlayerটাইমলাইন সঠিকভাবে আপডেট হতে না দেওয়ার সমস্যা সমাধান করুন।
- প্লেলিস্ট পরিবর্তন করার সময়
১.৯.০
১৭ ডিসেম্বর, ২০২৫
- কমন লাইব্রেরি:
- অন্যান্য AndroidX লাইব্রেরির সাথে সামঞ্জস্য রেখে
minSdkথেকে23-এ আপডেট করুন। PlayerTransferStateযোগ করুন, যাPlayerইনস্ট্যান্স জুড়ে প্লেব্যাক স্টেট ট্রান্সফার করার সুবিধা প্রদান করে।- প্লেয়ারে
void mute()এবংvoid unmute()পদ্ধতি যোগ করুন যা প্লেয়ারের ভলিউম শূন্যে সেট করার আগে এবং পরে সংরক্ষণ করে এবং ফলস্বরূপ রিস্টোর করে। - অন্যান্য প্লেয়ারের জন্য আবার ব্যবহার করার অনুমতি দিতে
ExoPlayer-এর দ্বারা আগে ইন্টার্নালি ব্যবহার করা ইউটিলিটি ক্লাসWakeLockManager,WifiLockManager,AudioFocusManager,AudioBecomingNoisyManagerএবংStuckPlayerDetectorপ্রকাশ করুন (#১৮৯৩)। - অন্তর্নিহিত ডেলিগেট প্লেয়ার লিসনার ইনস্ট্যান্স তুলনা করার জন্য রেফারেন্স ইকুয়ালিটি ব্যবহার করলে,
ForwardingPlayerলিসনার হ্যান্ডলিং সংক্রান্ত সমস্যার সমাধান করা (#২৬৭৫)। media3-common-ktxলাইব্রেরিতেPlayer.listenToসাসপেন্ডিং এক্সটেনশন ফাংশন যোগ করুন যা নির্দিষ্টPlayer.Eventsউল্লেখ করে যার উপর কাজ করা উচিত।BasePlayer.getBufferedPercentage-এ ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যা ইনটিজার ওভারফ্লোর কারণে হয়। রিপোর্ট করা বাফার পজিশন, রিপোর্ট করা সময়সীমার থেকে অসম্ভব রকমের বেশি হলে এটি হয় (#২৭৫০)।- কাস্টম স্যাম্পেল MIME টাইপ উপেক্ষা না করে এবং কন্টেনার MIME টাইপ থেকে সম্ভাব্য ভুল ট্র্যাক টাইপ ব্যবহার করার জন্য ফিরে না গিয়ে
TrackGroupট্র্যাক টাইপের অটোমেটিক শনাক্তকরণ ঠিক করুন (#২৮৬০)।
- অন্যান্য AndroidX লাইব্রেরির সাথে সামঞ্জস্য রেখে
- ExoPlayer:
- প্লেয়ার আটকে গেলে
StuckPlayerExceptionপ্লেয়ার সংক্রান্ত সমস্যা ট্রিগার করে এমন একটি আটকে যাওয়া প্লেয়ার শনাক্তকরণ যোগ করুন। এটি নিম্নলিখিত ক্ষেত্রে হয়, যেখানে প্রতিটি ডিফল্ট টাইমআউট প্রয়োজন হলেExoPlayer.Builder-এ কনফিগার করা যেতে পারে:STATE_BUFFERING-এর ১০ মিনিট পরে যখন চালানোর চেষ্টা করা হচ্ছে এবং কোনও বাফারিং প্রগ্রেস নেই।STATE_READY-এর ১০ সেকেন্ড পরে যখন চালানোর চেষ্টা করা হচ্ছে এবং কোনও প্লেব্যাক প্রোগ্রেস নেই।- আইটেমের শেষ পর্যন্ত না পৌঁছে, ঘোষিত সময়সীমার বাইরে ১ মিনিট
STATE_READYহওয়ার পরে। - প্লে করার চেষ্টা করার সময় প্লেব্যাক সাপ্রেশন কারণ সহ ১০ মিনিট পরে।
- ব্যাকগ্রাউন্ড প্লেব্যাক চলাকালীন বাফারিং সংক্রান্ত সমস্যার সমাধান করতে ডিফল্ট হিসেবে ওয়েক লক ম্যানেজমেন্ট চালু করুন। এটি
ExoPlayer.Builder.setWakeMode-কেC.WAKE_MODE_LOCAL-এ সেট করার সমতুল্য। ExoPlayer.Builder-এ পাস করাContext-এ কোনও পরিবর্তন রিপোর্ট করা হলে, ভার্চুয়াল ডিভাইস আইডি অটোমেটিক আপডেট করার জন্য লিসেনিং লজিক যোগ করুন।- ভার্চুয়াল ডিভাইস ম্যানুয়ালি আপডেট করতে
ExoPlayer.setVirtualDeviceIdযোগ করুনContextথেকে পাওয়া আইডিExoPlayer.Builder-এ পাস করা হয়েছে। - রেন্ডারার যাতে বর্তমান আইটেম শেষ হওয়ার ১০ সেকেন্ডের বেশি আগে পরবর্তী প্লেলিস্ট আইটেম থেকে ডেটা ব্যবহার না করে তা নিশ্চিত করুন।
- নির্মাণ কাজ শেষ হওয়ার পরে
এইসব সেটিংস আপডেট করতে
ExoPlayer-এsetSeekBackIncrementMs,setSeekForwardIncrementMsএবংsetMaxSeekToPreviousPositionMsযোগ করুন (#২৭৩৬)। DefaultPreloadManager-এ প্রি-ক্যাশিং কার্যকারিতা যোগ করুন। অ্যাপ এখনTargetPreloadStatusControl.getTargetPreloadStatus(T rankingData)-এর মাধ্যমেDefaultPreloadManager.PreloadStatus.specifiedRangeCached(startPositionMs, durationMs)বাDefaultPreloadManager.PreloadStatus.specifiedRangeCached(durationMs)ফেরত দিতে পারে যাতে বোঝা যায় যে মিডিয়া আইটেম প্রি-ক্যাশে করতে হবে।- শর্টফর্ম ডেমো অ্যাপে
DefaultPreloadManager-এর প্রি-ক্যাশিং কার্যকারিতা ব্যবহার করুন। - লোকাল প্লেব্যাকের জন্য
DefaultLoadControl.Builderসেটার যোগ করুন এবংDefaultLoadControl-এর ডিফল্ট ভ্যালু অ্যাডজাস্ট করুন যাতে বিভিন্ন ধরনের লোকাল ফাইলের সাথে ভালভাবে কাজ করে। - খালি প্লেলিস্ট সেট করার ফলে প্লেয়ার
STATE_READYবাSTATE_BUFFERING-এ ছেড়ে দেওয়ার সমস্যা সমাধান করুন। - প্রিলোড ম্যানেজার API উন্নত করুন:
addMediaItems(List<MediaItem>, List<T>)এবংaddMediaSources(List<MediaSource>, List<T>)যোগ করুন যা ব্যাচে মিডিয়া আইটেম বা মিডিয়া সোর্স যোগ করে এবং পরে অটোমেটিকinvalidate()কল করে।removeMediaItems((List<MediaItem>)এবংremoveMediaSources(List<MediaSource>)যোগ করুন যা ব্যাচে মিডিয়া আইটেম বা মিডিয়া সোর্স সরিয়ে দেয় এবং নিশ্চিত করুন যে প্রিলোড ম্যানেজার সরানোর পরে এগুলির কোনওটি প্রিলোড করা শুরু বা প্রিলোড করা চালিয়ে যায় না।DefaultPreloadManager.setCurrentPlayingIndex(int)-কে অটোমেটিক নিজেকে অবৈধ করার অনুমতি দিন। বর্তমানে যা চলছে তার ইনডেক্স আপডেট করার পরে অ্যাপকে আর আলাদা করেinvalidate()কল করতে হবে না।
- স্ক্রাবিং মোডে থাকাকালীন ছবির একই গ্রুপের মধ্যে ফরোয়ার্ড সিক করার জন্য কীফ্রেম রিসেট এড়িয়ে যাওয়ার ক্ষমতা যোগ করুন।
- নির্দিষ্ট
playerNameসহ প্লেয়ারের জন্য টার্গেট বাফার বাইটের ভ্যালু সেট করতে অ্যাপের জন্যDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)যোগ করুন।DefaultLoadControlএখন প্রতিটি প্লেয়ারের জন্য আলাদাভাবে সিদ্ধান্ত নিতে পারে। এই সিদ্ধান্তগুলি প্রতিটি প্লেয়ারের জন্য বরাদ্দ করা বাইট এবং টার্গেট বাফার বাইটের উপর ভিত্তি করে নেওয়া হয়। - বিজ্ঞাপন গ্রুপের প্রতিটি বিজ্ঞাপনের জন্য স্কিপ সংক্রান্ত তথ্য
বহন করতে
AdPlaybackState.AdGroup-এSkipInfoযোগ করুন। - পোস্ট-রোল চালানোর সময়
removeMediaItems(List)কল করার ফলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে (#২৭৪৬)। - প্লেলিস্ট প্লেব্যাকে কিছু স্টাটারিং ঠিক করুন যেখানে ফ্রেমগুলি ভুলবশত সর্বদা শেষ নমুনা হিসাবে সেট করা এবং রেন্ডার করা হয়েছে।
- প্লেয়ার অডিও সেশন আইডি জেনারেট করতে না পারলে আবার চেষ্টা করার পাথ চালু করুন (#২৩৮২, #২৬৭৮)।
DefaultPreloadManager-এ সোর্সের জন্য মোট বাফার বাইট কন্ট্রোল করার জন্য সহায়তা যোগ করুন যাতে প্রিলোডিংয়ের জন্য মোট বাফার বাইট যথেচ্ছভাবে বৃদ্ধি না পায়। ডিফল্ট কন্ট্রোল লজিক ব্যবহার করতে, অ্যাপDefaultLoadControl.Builder.setPlayerTargetBufferBytes(String, int)-এর মাধ্যমেPlayerId.Preload.name("প্রিলোড")-এরplayerName-এর জন্য প্রিলোড করার টার্গেট বাফার বাইট সেট করতে পারে এবংDefaultPreloadManager.Builder.setLoadControl(LoadControl)-এর মাধ্যমে তৈরি করাDefaultLoadControlইনজেক্ট করতে পারে।- ডিফল্ট ইমপ্লিমেন্টেশন (#2834) সহ
ShuffleOrder-এcloneAndSet(int, int)যোগ করুন। - অ্যাডজাস্টমেন্ট বা অটোমেটিক ট্রানজিশন খোঁজার পরে বিজ্ঞাপন প্লেব্যাক এড়িয়ে যাওয়ার সময় কন্টেন্ট রিজিউম অফসেট অ্যাপেন্ড করুন (#২৪৮৪)।
- অডিও ও ভিডিও ট্র্যাকের জন্য কোডেক প্যারামিটার সেট ও পর্যবেক্ষণ করতে API যোগ করুন।
এই ফিচার
MediaCodecভিত্তিক রেন্ডারারের জন্য প্রয়োগ করা হয়েছে এবং এটির জন্য API 29+ প্রয়োজন।- প্যারামিটার প্রয়োগ করতে
ExoPlayer.setAudioCodecParameters()এবংExoPlayer.setVideoCodecParameters()ব্যবহার করুন। - পরিবর্তন শুনতে
ExoPlayer.addAudioCodecParametersChangeListener()এবংExoPlayer.addVideoCodecParametersChangeListener()ব্যবহার করুন। ভেন্ডর-নির্দিষ্ট কী পর্যবেক্ষণ করার জন্য API 31+ প্রয়োজন।
- প্যারামিটার প্রয়োগ করতে
- শূন্য নয় এমন পজিশনে খোঁজার পরে এবং তারপরে শূন্য নয় এমন মিডিয়া সোর্স দিয়ে প্লেয়ার প্রস্তুত করার পরে
একটি শূন্য মিডিয়া সোর্স সেট করার কারণে হওয়া
IllegalStateExceptionসমস্যার সমাধান করুন। - স্ক্রাবিং মোডে থাকাকালীন অন্যান্য মিডিয়া আইটেম খোঁজার সময় বাগ ঠিক করুন
IllegalStateExceptionহতে পারে। DefaultPlaybackSessionManager-এ সম্ভাব্যNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন (#২৮৮৫)।- উপযুক্ত ভিডিওর জন্য পারফর্ম্যান্স খোঁজার ক্ষেত্রে উন্নতি চালু করুন।
- API 36+ ভার্সনে MediaCodec-এ অ্যাসিঙ্ক্রোনাস ডিক্রিপশনের ব্যবহার আবার চালু করা হয়েছে, যেখানে এই প্ল্যাটফর্ম API-এর সাথে টাইমআউট সংক্রান্ত সমস্যা সমাধান করা হয়েছে (#১৬৪১)।
MediaCodecVideoRenderer.experimentalSetLateThresholdToDropDecoderInputUs-এর ডিফল্ট ভ্যালু পরিবর্তন করে ১৫ মিলি সেকেন্ড করুন এবং উপযুক্ত ভিডিওর জন্য ডিকোড করার আগে ভিডিও ফ্রেম আরও দক্ষতার সাথে ড্রপ করার সুবিধা চালু করুন।DefaultLoadControl-এ অটোমেটিক মেমরি গণনায় সর্বোচ্চ মেমরি সীমা যোগ করুন। অতিরিক্ত সংখ্যক ট্র্যাক বেছে নেওয়া হলে তবেই এটি কার্যকর হবে (#২৮৬০)।- প্লেলিস্ট বা রিপিট মোডে চালানোর সময়, স্ক্রাব মোডে শেষের দিকে সিক করলে, পরবর্তী মিডিয়া আইটেমে সিক করার সমস্যা সমাধান করা হয়েছে।
- প্লেয়ার আটকে গেলে
- CompositionPlayer:
- এটি যে এক্সপেরিমেন্টের জন্য উপলভ্য, কিন্তু এখনও ডেভেলপমেন্টের
পর্যায়ে রয়েছে তা বোঝাতে, নতুন
@ExperimentalApiঅ্যানোটেশনের অধীনেCompositionPlayerপ্রকাশ করুন। ভবিষ্যতে রিলিজের সময় কিছু API-তে উল্লেখযোগ্য পরিবর্তন হতে পারে এবং কিছু ব্যবহারের ক্ষেত্রে (কিছু ডকুমেন্ট করা নেই) পরিচিত সমস্যা ও সীমাবদ্ধতা রয়েছে। CompositionPlayer-এCOMMAND_SET_AUDIO_ATTRIBUTESএবং অডিও ফোকাস ম্যানেজ করার জন্য সহায়তা যোগ করুন।CompositionPlayer-এ সেকেন্ডারি সিকোয়েন্সে স্পিড পরিবর্তন করার জন্য সহায়তা যোগ করুন।EditedMediaItem.removeVideo-এর জন্য সহায়তা যোগ করুন।
- এটি যে এক্সপেরিমেন্টের জন্য উপলভ্য, কিন্তু এখনও ডেভেলপমেন্টের
পর্যায়ে রয়েছে তা বোঝাতে, নতুন
- ট্রান্সফর্মার:
- ডিফল্ট মাক্সার হিসেবে
InAppMp4Muxerব্যবহার করুন। EditedMediaItem.Builder#setSpeed()যোগ করুন এবংEffects#createExperimentalSpeedChangingEffects()বন্ধ করুন।EditedMediaItemSequence-এforceAudioTrackএবংforceVideoTrack-এর পরিবর্তেtrackTypesব্যবহার করুন।
- ডিফল্ট মাক্সার হিসেবে
- ট্র্যাক বেছে নেওয়া:
- অন্য কোনও নির্দিষ্ট পছন্দ উল্লেখ না করে, যেকোনও টেক্সট ট্র্যাক বেছে নেওয়ার জন্য
TrackSelectionParameters.selectTextByDefaultযোগ করুন। - নির্দিষ্ট লেবেল সহ ট্র্যাকের জন্য পছন্দ নির্দিষ্ট করতে
TrackSelectionParameters-এpreferredVideoLabels,preferredAudioLabelsএবংpreferredTextLabelsযোগ করুন, যেমন HLS NAME ট্যাগ (#1666) থেকে পড়া ট্র্যাক।
- অন্য কোনও নির্দিষ্ট পছন্দ উল্লেখ না করে, যেকোনও টেক্সট ট্র্যাক বেছে নেওয়ার জন্য
- এক্সট্র্যাক্টর:
- FLAC: এনকোড করা FLAC ডেটাতে জাল হেডার খুঁজে পাওয়ার সম্ভাবনা কমাতে হেডার শনাক্তকরণ আরও কঠোর করা হয়েছে, যার ফলে ডিকোডিং সংক্রান্ত সমস্যা (#৫৫৮) হয়।
- MP3: MP3 ফাইলের শুরুতে ID3 ট্যাগের মধ্যে (এবং আগে) ফাঁকা জায়গা রাখার অনুমতি দিন (#811, #5718)।
- MP3: সিঙ্ক বাইটের জন্য বর্তমান সার্চ সীমার সাথে ম্যাচ করতে স্নিফিং সীমা ১২৮kB পর্যন্ত বাড়ান (#২৭১৩)।
- MP3: মেটাডেটা হেডার (যেমন Xing এবং VBRI) থেকে তথ্য খোঁজার জন্য
FLAG_ENABLE_INDEX_SEEKINGপরিবর্তন করুন, যদি অন্য কোনও তথ্য খোঁজার বিকল্প না থাকে, তাহলে ইন্ডেক্স-ভিত্তিক খোঁজার বিকল্পে ফিরে যান। এটি মেটাডেটা খোঁজার সুবিধা সহ ফাইলের পারফর্ম্যান্স উন্নত করে (#২৮৩৯)। - MP3:
Mp3Extractor-কে ডিফল্ট কনস্ট্যান্ট বিটরেটে (CBR) পরিবর্তন করুন অনুমান যখন কোনও সিকিং মেটাডেটা (যেমন, Xing, VBRI) খুঁজে পাওয়া যায় না, এমনকি যখনFLAG_ENABLE_INDEX_SEEKINGসেট করা থাকে। এটি MP3 স্পেসিফিকেশন ইতিহাসের উপর ভিত্তি করে তৈরি, যেখানে CBR স্ট্যান্ডার্ড এবং VBR-এর জন্য স্পষ্ট হেডার প্রয়োজন। এটি মেটাডেটা ছাড়া ফাইলের জন্য অবিলম্বে খোঁজার ক্ষমতা উন্নত করে, তবে হেডার ছাড়া VBR ফাইলের জন্য সম্ভাব্য নির্ভুলতার খরচ হয়। CBR অনুমান যদি খোঁজা না যায় (যেমন, অজানা দৈর্ঘ্যের স্ট্রিমের জন্য), তাহলে ইন্ডেক্স খোঁজা এখন ফলব্যাক হিসেবে ব্যবহার করা হয় (#২৮৪৮)। - MP4: এক্সট্র্যাক্টর থেকে ট্র্যাক ফর্ম্যাট এমিট করার আগে প্রথম স্যাম্পেলের লেয়ার ভ্যালু দেখে
audio/mpeg(MP3),audio/mpeg-L1এবংaudio/mpeg-L2MIME প্রকারের মধ্যে পার্থক্য করুন (#২৬৮৩)। - MP4: ১ এমবির চেয়ে বড়
stblবক্সের অর্থ হল ফাইলটি ফ্র্যাগমেন্টেড নয়, এটি ধরে নিয়ে খুব বড় ফাইলের স্নিফিং এফিসিয়েন্সি উন্নত করুন (#২৬৫০)। - MP4:
©mvn(মুভমেন্টের নাম) এবং©mvi(মুভমেন্ট ইনডেক্স) মেটাডেটার জন্য সহায়তা যোগ করুন, এগুলি এখনTextInformationFrameঅবজেক্ট হিসেবেFormat.metadata-এ যথাক্রমেMVNMএবংMVINআইডির সাথে নির্গত হয় (#২৭৫৪)। - MP4:
stsdবক্স নেই এমন ট্র্যাক উপেক্ষা করুন (পুরো ফাইল পার্স করতে ব্যর্থ হওয়ার পরিবর্তে)। - Matroska: DTS-HD শনাক্তকরণের জন্য সহায়তা যোগ করুন (#6225)।
MatroskaExtractor-এ এমন একটি সমস্যার সমাধান করা হয়েছে যেখানে একাধিক ট্র্যাক সহ ফাইলের জন্য সিকিং ভুল হতে পারে। কিউ পয়েন্ট এখন সঠিকভাবে সংশ্লিষ্ট ট্র্যাকের সাথে যুক্ত করা হয়েছে, যার ফলে নির্দিষ্ট অংশে যাওয়া আরও সহজ হয়েছে।- MPEG-TS:
ReorderingBufferQueueথেকেIllegalArgumentExceptionঠিক করুন যা টাইমস্ট্যাম্প ছাড়া PES প্যাকেটের কারণে হয়েছে (#২৭৬৪)। - HEIC মোশন ফটো এক্সট্র্যাক্ট করার জন্য সহায়তা যোগ করুন।
HeifExtractorএখন এম্বেড করা ভিডিও এবং অডিও ট্র্যাক সহ HEIC ফাইল পার্স করতে পারে।
- ইন্সপেক্টর:
- মিডিয়া ইনস্পেকশন ইউটিলিটির জন্য ডেডিকেটেড হোম হিসেবে কাজ করার জন্য
নতুন
:media3-inspectorমডিউল চালু করা হয়েছে। এই মডিউলে এখন একটি নতুনandroidx.media3.inspector.MetadataRetrieverআছে, যা মেটাডেটা এবং ফ্রেম এক্সট্র্যাকশন, দুটির জন্যই একটি ইউনিফায়েড API প্রদান করবে। আগে থেকে থাকাandroidx.media3.exoplayer.MetadataRetrieverএখন এই নতুন ভার্সনের জন্য বাতিল করা হয়েছে। - ফ্রেম এক্সট্র্যাকশনের জন্য নতুন পাবলিক API,
androidx.media3.inspector.FrameExtractorচালু করা হয়েছে। এইAutoCloseableক্লাস HDR ভিডিও, ভিডিও এফেক্ট ও কাস্টম ডিকোডার বেছে নেওয়ার সুবিধা সহ ফ্রেম এক্সট্র্যাক্ট করার উপায় প্রদান করে। এটি নির্দিষ্টMediaItem-এর জন্যBuilder-এর মাধ্যমে তৈরি করতে হবে। - FrameExtractor: নির্দিষ্ট টাইমস্ট্যাম্প ছাড়াই মিডিয়া ফাইল থেকে
প্রতিনিধিত্বমূলক থাম্বনেল ফ্রেম এক্সট্র্যাক্ট করতে
getThumbnail()যোগ করুন। androidx.media3.inspector.MediaExtractorCompatযোগ করুন, প্ল্যাটফর্মেরandroid.media.MediaExtractor-এর জন্য একটি ড্রপ-ইন রিপ্লেসমেন্ট যা মিডিয়া ফাইল থেকে র, এনকোড করা মিডিয়া স্যাম্পেল এক্সট্র্যাক্ট করার উপায় প্রদান করে। আগে থেকে থাকাandroidx.media3.exoplayer.MediaExtractorCompatএখন এই নতুন ক্লাসের জন্য বাতিল করা হয়েছে।
- মিডিয়া ইনস্পেকশন ইউটিলিটির জন্য ডেডিকেটেড হোম হিসেবে কাজ করার জন্য
নতুন
- অডিও:
AudioProcessorইনস্ট্যান্সকে খোঁজার ব্যাপারে সচেতন করুন।- কাস্টম অডিও আউটপুট পাথ সাপোর্ট করার জন্য
DefaultAudioSink.Builder-এ নতুনAudioOutputProviderইন্টারফেস ইনজেক্ট করার অনুমতি দিন। ডিফল্ট হলAudioTrackAudioOutputProvider। GainProcessor-এ হ্যান্ডেল সিক।- ট্র্যাক ফর্ম্যাট সাপোর্ট অ্যাসেসমেন্টে AC-4 ডিকোডার প্রোফাইল ও লেভেল সংক্রান্ত ক্ষমতা ব্যবহার করুন (#২৫৮০)।
- প্লেব্যাক শুরু হওয়ার সময় রাউটিং পরিবর্তন কলব্যাক ম্যানেজ করার কারণে সম্ভাব্য বিলম্ব এড়িয়ে চলুন (#২৬৪৬)।
- EAC3, EAC3-JOC এবং AC-4 ফর্ম্যাটের জন্য কোডেক আবার ব্যবহার করার অনুমতি দিন (#১৩৪৬)।
Sonic-এ ফ্লোট PCM স্যাম্পেলের জন্য সহায়তা যোগ করুন।ToFloatPcmAudioProcessor-এ ১৬ বিট PCM স্যাম্পেলের জন্য সহায়তা যোগ করুন।
- ভিডিও:
- বিভিন্ন প্রোফাইল সহ Dolby-Vision কন্টেন্টের জন্য কোডেক আবার ব্যবহার করার সুবিধা বন্ধ করুন।
- নিরাপদ কোডেক (#২৮৫৬)-এর জন্য ভুলভাবে রিপোর্ট করা পারফর্ম্যান্স পয়েন্টের জন্য ওয়ার্কঅ্যারাউন্ড আবার চালু করুন।
- টেক্সট:
- Dolby Vision কন্টেন্টে CEA-6/708 সাবটাইটেল পার্সিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৭৭৫)।
- ছবি:
- ScrubbingMode সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেখানে DASH থাম্বনেল ট্র্যাক স্ক্রাব করার সময় প্লেয়ার আটকে যায় (#২৮১৫)।
- DRM:
MediaDrmCallbackপদ্ধতির রিটার্ন টাইপbyte[]থেকে নতুনMediaDrmCallback.Responseটাইপে পরিবর্তন করুন, যাতে অতিরিক্ত ঐচ্ছিক তথ্য রিটার্ন করা যায়। এটি একটি সোর্স ব্রেকিং পরিবর্তন, তবে রিটার্ন করার আগেnew Response-এর সাথে আগেরbyte[]রিটার্ন ভ্যালু র্যাপ করে সহজেই ব্রেকিং পরিবর্তন সমাধান করা যেতে পারে।- URL ও লেটেন্সির মতো মূল অনুরোধের তথ্য
AnalyticsListener.onDrmKeysLoaded(#১০০১)-এ যোগ করুন। - URL প্যারামিটার থেকে POST বডিতে প্রভিশনিং অনুরোধের ডেটা সরান।
- প্রভাব:
Presentation-কে একটি সাইডের দৈর্ঘ্য দিয়ে তৈরি করা হলে, সেট না করা আউটপুট সাইডকে রাউন্ড করতেPresentation.copyWithUnsetSideRoundedToযোগ করুন।
- Muxers:
MediaMuxerCompatযোগ করুন, ফ্রেমওয়ার্কMediaMuxer-এর জন্য ড্রপ-ইন রিপ্লেসমেন্ট।- মোশন ফটো তৈরি করার অনুমতি দিতে
MuxerUtil.createMotionPhotoFromJpegImageAndBmffVideo()যোগ করুন। OPUS,VORBIS,VP8এবংVP9মিডিয়া স্ট্রিমকেwebmফাইল ফর্ম্যাটে মিক্স করার অনুমতি দিতেWebmMuxerযোগ করুন।
- IMA এক্সটেনশন:
- কাস্টম proguard নিয়ম সরিয়ে দেওয়া, যাতে অ্যাপ IMA Android আর্কাইভে রিলিজ করা নিয়ম ব্যবহার করতে পারে।
ImaServerSideAdInsertionUriBuilder.setNetworkCodeযোগ করুন, এটি হল Google Ad Manager সেটিংসে উল্লেখ করা বিজ্ঞাপন শনাক্তকারী ম্যানেজ করার জন্য IMA SDK-এর Google Ad Manager নেটওয়ার্ক কোড সেট করার নতুন API। নেটওয়ার্ক কোড ঐচ্ছিক হলেও সম্পূর্ণ পরিষেবা স্ট্রিম অনুরোধের জন্য সাজেস্ট করা হয়। নেটওয়ার্ক কোড খুঁজতে, এই নিবন্ধ দেখুন।- IMA ডিপেন্ডেন্সি 3.37.0-এ বাম্প করুন যার জন্য কোর লাইব্রেরি ডিসুগারিং চালু করতে হবে। এছাড়াও, নির্ভরশীল অ্যাপের মাধ্যমে এটি চালু করতে হবে। IMA-এর কনফিগ নোট দেখুন। * SSAI URI বিল্ডারে IMA DAI কাস্টম UI বিকল্পের সুবিধা। সার্ভার সাইড বিজ্ঞাপন ইনসার্ট করার জন্য কাস্টম UI বিকল্পের মধ্যে "এড়িয়ে যাওয়া যাবে" এবং "এই বিজ্ঞাপন সম্পর্কে" রেন্ডারিং সাপোর্ট অন্তর্ভুক্ত। এই ফিচার বর্তমানে অনুমতি তালিকার বাছাই করা প্রকাশকদের জন্য উপলভ্য। এই পরিবর্তন IMA SDK ভার্সন 3.38.0-এ (রিলিজ নোট) আপগ্রেড করে যাতে কাস্টম UI বিকল্প API অ্যাক্সেস করা যায়।
- বিজ্ঞাপনের পরে কন্টেন্ট প্রস্তুত করার সময় হওয়া ত্রুটি ভুলবশত বিজ্ঞাপন প্লেব্যাক ত্রুটি হিসেবে রিপোর্ট করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৬৫৬)।
- সেশন:
- কলটি শুধুমাত্র তথ্য সংগ্রহ করার জন্য নাকি প্লেব্যাক শুরু করার জন্য (#১৭৬৪) তা নির্দেশ করতে
MediaSession.Callback.onPlaybackResumption-এ নতুন প্যারামিটার যোগ করুন। - নিজস্ব অ্যাপ থেকে কন্ট্রোলারকে বিশ্বস্ত হিসেবে ঘোষণা করতে
MediaSession.ControllerInfo.isTrustedআপডেট করুন (#২৫৪২)। - বিজ্ঞপ্তি আপডেট ম্যানুয়ালি ট্রিগার করতে
MediaSessionService.triggerNotificationUpdateযোগ করুন (#১৮৩৩)। - কাস্টম কমান্ড পদ্ধতিতে
ProgressListenerযোগ করুন। MediaLibrarySession.Builder.setLibraryErrorReplicationMode-এর ডিফল্ট ভ্যালু পরিবর্তন করে নন-ফেটাল করুন।MediaButtonReceiver.onForegroundServiceStartNotAllowedException-এContextপ্যারামিটার যোগ করুন (#২৬২৫)।- বাইন্ডারের মাধ্যমে আনার পরিবর্তে
PlaybackInfoপ্ল্যাটফর্ম থেকে ভলিউম কন্ট্রোল আইডি পড়ুন। এটি নিশ্চিত করে যে প্লেব্যাক টাইপ এবং ভলিউম কন্ট্রোল আইডি অ্যাটমিক্যালি পড়া হয় এবং একে অপরের সাথে মেলে। - কাস্টম হ্যান্ডলিংয়ের জন্য কলব্যাকে পাঠানোর আগে
ACTION_UPটি মূল ইভেন্ট ফিল্টার আউট হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে। This brings parity with what media1 did and the platform does (#2637). - কমান্ড উপলভ্য না থাকলেও
PlayerWrapper-এর মাধ্যমেgetCurrentTimeline()-কে কল করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৬৬৫)। - সেই সমস্যার সমাধান করা হয়েছে যেখানে প্রধান লুপারের মেসেজ সারিতে একটি মেসেজ থেকে গিয়েছিল যার ফলে পরিষেবা বন্ধ হওয়ার পরে মেমরি লিক হয়েছিল (#২৬৯২)।
MediaBrowser-এর সাথে কোনও লিগ্যাসি সেশন অ্যাপে কানেক্ট করা থাকলে, কাস্টম কমান্ড সেশনে তখনই পাঠানো হয় যখন কাস্টম অ্যাকশনটি লিগ্যাসি সেশনেরPlaybackStateCompat-এ কাস্টম অ্যাকশন হিসেবে বিজ্ঞাপন দেওয়া হয়। অন্যান্য সব কাস্টম অ্যাকশন পরিষেবাতে পাঠানো হয়।- সেশন দ্বারা অডিও সেশন আইডি সেট করা হলে
মিডিয়া কন্ট্রোলারকে জানানোর জন্য
onAudioSessionIdChangedপ্রয়োগ করা হয়েছে (#২৪৪)। KEYCODE_HEADSETHOOK-এ প্লেয়ার শুরু না হওয়া এবংonStartCommand()-এ মিডিয়া কী ইভেন্টIntentআসার সমস্যা সমাধান করা হয়েছে। এটি ঠিক করা হয়েছে 'KEYCODE_HEADSETHOOK' হ্যান্ডেল করার মাধ্যমে, ঠিক যেমনKEYCODE_MEDIA_PLAY_PAUSE(#২৮১৬)।- সেশন ও কন্ট্রোলারের মধ্যে সারফেস সাইজ সংক্রান্ত তথ্য আদানপ্রদান না হওয়ার ফলে ডেমো সেশনে ভিডিও এফেক্ট প্রয়োগ করা যাচ্ছিল না। এই সমস্যার সমাধান করা হয়েছে। আপনি কন্ট্রোলার ব্যবহার করলে, আপনার প্লেয়ার
setVideoSurfaceHolderকল ম্যানেজ করতে না পারলে, এটি ব্রেকিং পরিবর্তন হতে পারে। - স্প্যান-স্টাইল করা স্ট্রিংয়ের
(#২৮৫৩) মতো
নন-
StringCharSequenceমেটাডেটা ভ্যালুর প্রোপাগেশন সংক্রান্ত সমস্যার সমাধান করুন। CommandButton.executeActionযোগ করুন যাতে কন্ট্রোলাররা আরও সহজে উদ্দিষ্ট অ্যাকশন ট্রিগার করতে পারে। এছাড়াও, কোন অ্যাকশন ট্রিগার করতে হবে তা নির্ধারণ করার জন্য কিছু প্লেয়ার ও সেশন কমান্ডের জন্য প্যারামিটার নির্দিষ্ট করার অনুমতি দিন।CommandButtonইনস্ট্যান্সের জন্য ব্যাকওয়ার্ড কম্প্যাটিবিলিটি যোগ করুনPlayer.Commandবা কাস্টম নয় এমনSessionCommandব্যবহার করে তাদের অ্যাকশন নির্ধারণ করুন। এগুলি এখন প্ল্যাটফর্ম মিডিয়া সেশনে সঠিকভাবে উপস্থাপন করা হয়েছে, যেমন সিস্টেম UI বা Android Auto-এর জন্য।MediaController-কে প্ল্যাটফর্ম মিডিয়া সেশনের সাথে কানেক্ট করার সময় একইBitmapএকাধিকবার কম্প্রেস হওয়ার সমস্যা সমাধান করা।
- কলটি শুধুমাত্র তথ্য সংগ্রহ করার জন্য নাকি প্লেব্যাক শুরু করার জন্য (#১৭৬৪) তা নির্দেশ করতে
- UI:
media3-ui-composeমডিউলেProgressStateWithTickIntervalক্লাস এবং সংশ্লিষ্টrememberProgressStateWithTickIntervalকম্পোজেবল যোগ করুন। এই স্টেট হোল্ডারdemo-compose-এ ব্যবহার করা হয় যাতে বর্তমান পজিশন ও সময়সীমা টেক্সট হিসেবে দেখানো যায়।ui-compose-এMuteButtonStateযোগ করুন যাPlayerভলিউম মিউট করার কাজটি ম্যানেজ করে। এই স্টেট হোল্ডারdemo-compose-এ ব্যবহার করা হয় মিউট/আনমিউট টগল বোতাম দেখানোর জন্য।ProgressStateWithTickCountক্লাস এবং সংশ্লিষ্টrememberProgressStateWithTickCountComposable,media3-ui-composeমডিউলে যোগ করুন। এই স্টেট হোল্ডারdemo-compose-এ প্রোগ্রেস দেখানোর জন্য ব্যবহার করা হয় যা একটি অনুভূমিক কেবল পঠনযোগ্য প্রোগ্রেস বার হিসেবে দেখানো হয়।media3-ui-compose-এContentFrameকম্পোজেবল যোগ করুন যা অ্যাস্পেক্ট রেশিও রিসাইজ করা এবং শাটার দিয়ে কভার করার সাথেPlayerSurfaceম্যানেজমেন্টকে একত্রিত করে।AndroidViewকম্পোজের মধ্যেSurfaceViewব্যবহার করার সময় ভিডিও স্ট্রেচ/ক্রপ হয়ে যাওয়ার মতো API 34 প্ল্যাটফর্মের পরিচিত সমস্যার সমাধান করা হয়েছে। এর ফলেSURFACE_TYPE_SURFACE_VIEWসহContentFrameএবংPlayerSurfaceকম্পোজেবল প্রভাবিত হচ্ছিল (#1237, #2811)।- নতুন
media3-ui-compose-material3মডিউল তৈরি করুন এবং এতে Material3-থিমযুক্ত কম্পোজেবল (PlayPauseButton, NextButton, PreviousButton, SeekBackButton, SeekForwardButton, RepeatButton, ShuffleButton, MuteButton) যোগ করুন। - টেক্সট ফর্ম্যাটে প্লেয়ারের প্রোগ্রেস দেখানোর জন্য
media3-ui-compose-material3-এTimeTextকম্পোজেবল যোগ করুন। এটি বর্তমান পজিশন, সময়সীমা বা বাকি থাকা সময় দেখানোর জন্য কনফিগার করা যেতে পারে। PlayerView-এ মিডিয়া রুট বোতাম যোগ করার জন্য সহায়তা যোগ করুন।- RTL টেক্সট সাবটাইটেলে (#11214) যতিচিহ্ন সঠিকভাবে দেখানোর জন্য
BidiFormatterব্যবহার করুন।
- HLS এক্সটেনশন:
- HLS ইন্টারস্টিশিয়াল স্কিপ অ্যাট্রিবিউট পার্স করুন।
- সর্বজনীন অ্যাক্সেসের জন্য HLS প্লেলিস্ট এবং অ্যাসেট তালিকার ডকুমেন্ট থেকে স্কিপ কন্ট্রোল অ্যাট্রিবিউট
AdPlaybackState-এ ম্যাপ করুন। - প্লেলিস্ট থেকে শুরুর সময় নির্ধারণকারী EXT-X-PROGRAM-START-DATE ট্যাগ সরিয়ে দেওয়ার ফলে প্লেলিস্টের শুরুর সময় বাদ পড়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#২৭৬০)।
- প্লেলিস্টে (#২৮২৬) কোনও নির্দিষ্ট পজিশনের সেগমেন্ট ইন্ডেক্স খুঁজে পেতে বাইনারি সার্চ ব্যবহার করুন।
HlsInterstitialsAdsLoader.skipCurrentAd()এবংskipCurrentAdGroup()এবং বিজ্ঞাপন ও বিজ্ঞাপন গ্রুপ এড়িয়ে যাওয়ার জন্য সংশ্লিষ্ট পদ্ধতি যোগ করুন।- বিজ্ঞাপন দেখানোর সময়সীমা
শুরু হওয়ার সময় জানাতে
HlsInterstitialsAdsLoader.Listener.onAdStartedযোগ করুন (#২৮৫৯)। - ISO 8601 তারিখ-সময় স্ট্রিংয়ে তারিখ/সময় বিভাজক হিসেবে স্পেস গ্রহণ করুন।
- কোনও সেগমেন্ট (#২৮২১) নেই এমন
HlsMediaPlaylist-এর জন্য পরবর্তী চাঙ্ক ফেচ করার বিষয়টি সঠিকভাবে ম্যানেজ করুন। - লাইভ স্ট্রিমের সাথে প্রি-রোলের জন্য ডিফল্ট শুরুর পজিশন ব্যবহার করুন।
- DASH এক্সটেনশন:
- নন-হায়ারার্কিক্যাল
data:URI ম্যানিফেস্টের মাধ্যমে DASH স্ট্রিম চালানোর সময়UnsupportedOperationExceptionসমস্যার সমাধান করা হয়েছে (#2688)। LiveConfiguration-কেMediaItem-এর মাধ্যমে প্রদান করা ভ্যালুতে রিসেট করুনDashMediaSource-এর যখন রিলিজ করা হয় এবং যখন মিডিয়া আইটেম ব্যবহারকারীর মাধ্যমে আপডেট করা হয় (#২৬০৬)।- প্লেয়ারের সমস্যা হিসেবে রিপোর্ট করা হয়নি এমন ভুল ম্যানিফেস্ট আপডেট করার কারণে ক্র্যাশ হওয়া এড়িয়ে চলুন (#২৮০৫)।
- নন-হায়ারার্কিক্যাল
- RTSP এক্সটেনশন:
- H264 এবং H265-এর জন্য ফ্র্যাগমেন্টেড NAL ইউনিট প্রসেস করার সময় মিসিং RTP প্যাকেট সংক্রান্ত সমস্যার সমাধান করুন (#২৬১৩)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- AV1 এক্সটেনশন: AV1 সফ্টওয়্যার ডিকোডার এখন উন্নত ডিকোডিং গতির জন্য আগের
libgav1ইমপ্লিমেন্টেশনকে পরিবর্তন করে হাই-পারফর্ম্যান্সdav1dলাইব্রেরি ব্যবহার করে। - FFmpeg এক্সটেনশন:
STREAMINFOব্লক সঠিকভাবে পার্স করা হয়েছে এবং ডিকোডারে পাস করা হয়েছে কিনা তা নিশ্চিত করার মাধ্যমে কিছু FLAC ফাইল চালানোয় বাধা সৃষ্টি করা সমস্যার সমাধান করা হয়েছে (#২৮৮৭)।
- AV1 এক্সটেনশন: AV1 সফ্টওয়্যার ডিকোডার এখন উন্নত ডিকোডিং গতির জন্য আগের
- কাস্ট এক্সটেনশন:
CastPlayer.Builderযোগ করুন, যাCastPlayer-কে লোকাল ও Cast প্লেব্যাক, দুটিই করতে দেয়। শুধুমাত্র Cast প্লেব্যাক সাপোর্ট করার পুরনোCastPlayerআচরণ বজায় রাখতে, আপনিRemoteCastPlayerব্যবহার করতে পারেন। আগে থেকে থাকাCastPlayerকনস্ট্রাক্টর তাদের পুরনো আচরণ বজায় রাখে, তবেCastPlayerবাRemoteCastPlayerবিল্ডার ব্যবহার করার জন্য বন্ধ করা হয়েছে।DefaultMediaItemConverter-এ নন-নাল MIME-এর ধরন এনফোর্স করা বন্ধ করুন।DefaultCastOptionsProvider#toMediaQueueItem-এ ব্যবহার করার জন্য Cast MEDIA_TYPE অনুমান করতেMediaItem.mediaMetadata.mediaTypeব্যবহার করুন, যখন উপলভ্য থাকে।DefaultCastOptionsProvider-এ রিমোট থেকে লোকাল ট্রান্সফার চালু করুন।- সেশন ডেমোতে Cast-এর জন্য সহায়তা যোগ করুন।
- Composable UI-তে মিডিয়া রুট বোতাম দেখানোর জন্য সহায়তা যোগ করুন।
- অ্যাকশন বার মেনুতে মিডিয়া রুট বোতাম দেখানোর জন্য সহায়তা যোগ করুন।
- View UI হিসেবে মিডিয়া রুট বোতাম দেখানোর জন্য সহায়তা যোগ করুন।
- টেস্ট ইউটিলিটি:
FakeClock-এর অটো-অ্যাডভান্সিং আচরণের জন্য সর্বাধিক সময়ের পার্থক্য যোগ করুন। এটি ডিফল্ট হিসেবে ১ সেকেন্ডের জন্য সেট করা থাকে, তবেFakeClock.Builder-এর মাধ্যমে কনফিগার করা যায়।RobolectricUtil.runMainLooperUntil(এবংrunLooperUntil)-এর জন্য মেসেজের মধ্যে সর্বাধিক সময়ের পার্থক্য যোগ করুন। এটি ডিফল্ট হিসেবে ১ সেকেন্ডে সেট করা থাকে, তবে এই পদ্ধতিগুলির নতুন ওভারলোডের মাধ্যমে কনফিগার করা যায়।CapturingRenderersFactory-কেtest-utilsথেকেtest-utils-robolectric-এ সরান।
- বাতিল করা চিহ্ন সরান:
- বাতিল করা
DefaultPreloadManagerকনস্ট্রাক্টর সরান। পরিবর্তেDefaultPreloadManager.Builderব্যবহার করুন। - বাতিল করা
EditedMediaItemSequenceকনস্ট্রাক্টর সরানো হয়েছে। পরিবর্তেEditedMediaItemSequence.Builderব্যবহার করুন। BitmapFactoryImageDecoder.BitmapDecoderসরান। পরিবর্তেExternallyLoadedImageDecoderব্যবহার করুন।ShadowMediaCodecConfig.forAllSupportedMimeTypes()-এর অবচিত ভার্সন সরিয়ে দিন। পরিবর্তেShadowMediaCodecConfig.withAllDefaultSupportedCodecs()ব্যবহার করুন।ShadowMediaCodecConfig.withNoDefaultSupportedMimeTypes()সরান। পরিবর্তেShadowMediaCodecConfig.withNoDefaultSupportedCodecs()ব্যবহার করুন।
- বাতিল করা
1.9.0-rc01
১ ডিসেম্বর, ২০২৫
1.9.0 স্টেবল ভার্সন ব্যবহার করুন।
1.9.0-beta01
২০ নভেম্বর, ২০২৫
1.9.0 স্টেবল ভার্সন ব্যবহার করুন।
1.9.0-alpha01
২২ অক্টোবর, ২০২৫
1.9.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন ১.৮.০
১.৮.১
২১ মে, ২০২৬
ভার্সন ১.৮.১-এ নিম্নলিখিত কমিট রয়েছে।
- প্রভাব:
- সারফেসলেস কনটেক্সট থেকে ট্রানজিশন করার সময়
GL_DRAW_BUFFERএবংGL_READ_BUFFERস্পষ্টভাবে সেট করুন।
- সারফেসলেস কনটেক্সট থেকে ট্রানজিশন করার সময়
ভার্সন ১.৮.০
৩০ জুলাই, ২০২৫
ভার্সন 1.8.0-এ এইসব কমিট আছে।
- কমন লাইব্রেরি:
ForwardingSimpleBasePlayer-এ প্লেয়ার পরিবর্তন করার জন্য সহায়তা যোগ করুন।
- ExoPlayer:
ExoPlayerইন্টারফেসে শাফেল মোডের জন্য গেটার যোগ করুন (#২৫২২)।- একাধিক থ্রেড থেকে
DefaultAudioSinkঅ্যাক্সেস করা হলে আরও স্পষ্টভাবে একটি ব্যতিক্রম থ্রো করুন। প্লেয়ারের বাইরেRendererCapabilities.getFormatSupport-এ কল করার কারণে এটি হলে, ExoPlayer-এর প্লেব্যাক থ্রেডের মতো একই থ্রেডে এই মেথড কল করতে ভুলবেন না অথবা প্লেব্যাকের জন্য ব্যবহৃত ইনস্ট্যান্সের থেকে আলাদা ইনস্ট্যান্স ব্যবহার করুন (#১১৯১)। - টিভিতে নন-স্টিরিও অডিও ফর্ম্যাট
DefaultTrackSelector-এর দ্বারা কাজ করে না হিসেবে চিহ্নিত হতে পারে, এই সমস্যার সমাধান করা হয়েছে। - MediaCodec-এর
DECODE_ONLYফ্ল্যাগ (যা স্ক্রাবিং মোডে ডিফল্ট হিসেবে চালু থাকে) ব্যবহার করার সময় শেষ ফ্রেমটি সঠিকভাবে রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন। ContextথেকেExoPlayer.Builder-এ পাস করা ভার্চুয়াল ডিভাইস আইডি ব্যবহার করার জন্য সহায়তা যোগ করুন।- স্ক্রাবিং মোডে ডিফল্ট হিসেবে ডায়নামিক শিডিউলিং চালু করুন।
- কোনও আইটেমের শেষ পর্যন্ত সিক করার সময় সোর্স অপ্রয়োজনীয়ভাবে রিলোড করা এড়িয়ে চলুন।
- স্ক্রাবিং মোডে ডিফল্ট হিসেবে
MediaCodec.BUFFER_FLAG_DECODE_ONLYব্যবহার করুন। PreloadMediaSourceযখনExoPlayerদ্বারা প্লেব্যাক থ্রেডের সাথে চালানো হয়, তখনIllegalStateExceptionথ্রো করুন, যা প্রিলোড থ্রেডের থেকে আলাদা (#২৪৯৫)।- ডিফল্ট প্রয়োগের সাথে
ShuffleMode-এcloneAndMoveযোগ করুন (#২২২৬)। Renderer.getMinDurationToProgressUs-এর ডিফল্ট অ্যাকশন পরিবর্তন করে আরও বড় ভ্যালু রিটার্ন করুন, যদিrender-এ কল করার প্রয়োজন না হয়।- পজ করা অবস্থায় শেষ পর্যন্ত সিক করার সময় ইন্টার্নাল শিডিউলিংয়ের কারণে শেষ ফ্রেম দেরিতে দেখানোর সমস্যা সমাধান করা হয়েছে। আপাতত, ত্রুটি সমাধান তখনই কাজ করবে যদি
ExoPlayer.Builder.experimentalSetDynamicSchedulingEnabledচালু করা থাকে। ExoPlayer.setScrubbingModeEnabled(boolean)পদ্ধতি যোগ করুন। এটি প্লেয়ারকে ঘন ঘন খোঁজার জন্য অপ্টিমাইজ করে (যেমন, ব্যবহারকারী স্ক্রাবার বার এদিক ওদিক টেনে নিয়ে গেলে)। স্ক্রাবিং মোডের আচরণExoPlayer-এsetScrubbingModeParameters(..)এবংExoPlayer.Builder-এর মাধ্যমে কাস্টমাইজ করা যেতে পারে।- স্ক্রাবিং মোডে ফ্র্যাকশনাল সিক টলারেন্স কাস্টমাইজ করার অনুমতি দিন।
- স্ক্রাবিং মোডে কোডেক অপারেটিং রেট বাড়ান।
AdsMediaSource-এর কন্টেন্টে প্রস্তুতি সংক্রান্ত সমস্যা কখনও রিপোর্ট না করার সমস্যা সমাধান করা হয়েছে (#2337)।MergingMediaSource-এ মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেমন সাবটাইটেল সাইডলোড করার সময় (#২৩৩৮)।- নির্দিষ্ট মিডিয়া আইটেমের জন্য CMCD লগিং বন্ধ করতে
CmcdConfiguration.Factory-কেnullরিটার্ন করার অনুমতি দিন (#২৩৮৬)। - ডিফল্ট ইমেজ বাফার সাইজ ১২৮kB (টেক্সট ট্র্যাক থেকে কপি-পেস্ট করার সময় ভুল হয়েছে) থেকে বাড়িয়ে ২৬MB করা হয়েছে, যা ৫০MP Ultra HDR ইমেজের (#২৪১৭) জন্য যথেষ্ট।
PreCacheHelperযোগ করুন যা অ্যাপকে নির্দিষ্ট শুরুর অবস্থান এবং সময়কাল সহ একটি মিডিয়া প্রি-ক্যাশে করার অনুমতি দেয়।DefaultPreloadManager-এ নির্দিষ্ট পজিশন থেকে প্রিলোড করার সুবিধা যোগ করুন।
- ট্রান্সফর্মার:
CodecDbLiteযোগ করুন যা ভিডিও এনকোডিং সেটিংসের চিপসেট নির্দিষ্ট অপ্টিমাইজেশন চালু করে।- CodecDB Lite সেটিংস অপ্টিমাইজেশন চালু করতে
DefaultEncoderFactory-এsetEnableCodecDbLiteফ্ল্যাগ যোগ করুন। ডিফল্ট হিসেবে, এই ফ্ল্যাগ false-এ সেট করা থাকে। - প্রাথমিক গ্যাপ (
addGap()-এর মাধ্যমে যোগ করা হয়েছে) সাইলেন্ট অডিও দিয়ে পূরণ করতে এখনEditedMediaItemSequence.Builder-এexperimentalSetForceAudioTrack(true)স্পষ্টভাবে সেট করতে হবে। ক্রমের মাঝখানে ফাঁক থাকলে, এই ফ্ল্যাগ প্রয়োজন নেই। Muxerইন্টারফেসmedia3-transformerথেকেmedia3-muxer-এ সরান।- ছবি হিসেবে মিডিয়া আইটেম ইমপোর্ট করতে
MediaItem.Builder().setImageDuration(long)সেটিং বাধ্যতামূলক করুন। - যোগ করুন
Transformer.Builder().experimentalSetMp4EditListTrimEnabled(boolean)যার মধ্যে ট্রিম করার সময় MP4 এডিট তালিকা অন্তর্ভুক্ত থাকে যাতে প্লেয়ারকে নির্দেশ দেওয়া যায় যে ট্রিম শুরুর পয়েন্টের আগে কী ফ্রেমের মধ্যে স্যাম্পেল উপেক্ষা করতে এবং ট্রিম শুরুর পয়েন্ট। - Kotlin ও Jetpack Compose ব্যবহার করার জন্য Composition Demo অ্যাপ আপডেট করুন এবং
সিকোয়েন্সকে 2x2 বা PiP লেআউটে সাজানোর জন্য কাস্টম
VideoCompositorSettingsযোগ করুন।
- এক্সট্র্যাক্টর:
- ফ্র্যাগমেন্টেড MP4 ফাইল থেকে মেটাডেটা পার্স করুন (#২০৮৪)।
- JPEG: মোশন ফটোতে কাজ করে যেগুলির শুরুতে Exif সেগমেন্ট নেই (#২৫৫২)।
- একাধিক
sidxঅ্যাটম সহ ফ্র্যাগমেন্টেড MP4-এ খোঁজার জন্য সহায়তা যোগ করুন।FragmentedMp4Extractor-এFLAG_MERGE_FRAGMENTED_SIDXফ্ল্যাগ ব্যবহার করে এই আচরণ চালু করা যেতে পারে (#9373)। - FLAC ফাইলে খালি সিক টেবিল (শুধুমাত্র প্লেসহোল্ডার সিক পয়েন্ট সহ) উপেক্ষা করুন এবং ফাইলের সময়সীমা জানা থাকলে বাইনারি সার্চ সিকিংয়ে ফিরে যান (#২৩২৭)।
- অচেনা SEI টাইপ সম্পূর্ণভাবে এড়িয়ে যেতে H.265 SEI ইউনিটের পার্সিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৪৫৬)।
WAVE_FORMAT_EXTENSIBLEধরনের ফাইল পার্স করার সময় অডিও ফর্ম্যাটের জন্য হেডার এক্সটেনশনের SubFormat ডেটা ব্যবহার করতেWavExtractorআপডেট করুন।- MP4: র PCM অডিও ট্র্যাক (64-বিট ফ্লোটিং পয়েন্ট PCM কাজ করে না)
সংজ্ঞায়িত করে
ipcmএবংfpcmবক্সের জন্য সহায়তা যোগ করুন। - MP4:
tkhdট্রান্সফর্মেশন ম্যাট্রিক্সের রোটেশন অংশ ম্যানেজ করুন যা ভিডিও রোটেট ও রিফ্লেক্ট করে। এটি নিশ্চিত করে যে iPhone-এর ফ্রন্ট ফেসিং ক্যামেরা দিয়ে তোলা রিফ্লেক্টেড ভিডিও সঠিকভাবে উপরের দিকে ডিসপ্লে করে, কিন্তু y-অ্যাক্সিসে ভুলভাবে রিফ্লেক্ট করে (#২০১২)। - MP3:
FLAG_ENABLE_CONSTANT_BITRATE_SEEKING(_ALWAYS)-এর কারণে কনস্ট্যান্ট বিটরেট সিকিংয়ে ফিরে যাওয়ার সময়, আনসিকেবেল Xing, VBRI এবং একই ধরনের ভেরিয়েবল বিটরেট মেটাডেটা থেকে সময়সীমা ও ডেটার সাইজ ব্যবহার করুন (#২১৯৪)।
- অডিও:
- মিডিয়া শেষ হওয়ার ঠিক আগে অডিও প্লেব্যাক শুরু হলে
AnalyticsListener.onAudioPositionAdvancingকল না হওয়ার সমস্যা সমাধান করুন। ChannelMappingAudioProcessorএবংTrimmingAudioProcessor-এ সব লিনিয়ার PCM স্যাম্পেল ফর্ম্যাটের জন্য সহায়তা যোগ করুন।CompositionPlayer-এ অডিও গ্যাপের জন্য সহায়তা যোগ করুন।BaseAudioProcessor#reset()থেকেBaseAudioProcessor#flush()-এ করা জাল কল সরান।- DefaultAudioMixer-এ কনস্ট্যান্ট পাওয়ার আপমিক্সিং/ডাউনমিক্সিংয়ের অনুমতি দিন।
ChannelMappingAudioProcessor,TrimmingAudioProcessorএবংToFloatPcmAudioProcessorসর্বজনীন করুন (#2339)।AudioTrackPositionTracker-এAudioTrack#getUnderrunCount()ব্যবহার করুন যাতে সেরা-প্রচেষ্টা অনুমানের পরিবর্তেDefaultAudioSink-এ আন্ডাররান শনাক্ত করা যায়।- অডিও আউটপুট ডিভাইস থেকে অপ্রত্যাশিত পজিশন ড্রিফ্টের জন্য অডিও টাইমস্ট্যাম্প স্মুদিং উন্নত করুন।
- ব্লুটুথ ডিভাইসের সাথে কানেক্ট করার সময় পজ থেকে আবার চালু করার পরে প্রথম ১০ সেকেন্ডের জন্য A/V সিঙ্ক ভেঙে যাওয়ার সমস্যা সমাধান করুন।
AnalyticsListener.onAudioPositionAdvancing-এ অডিও অ্যাডভান্সিং শুরু হওয়ার সময় রিপোর্ট না করে প্রথম পরিমাপের সময় রিপোর্ট করার সমস্যা সমাধান করা হয়েছে।- কিছু ডিভাইসে স্টেরিও অডিওতে ফলব্যাক করার পরে মাল্টিচ্যানেল অডিওতে রিকভারি ঠিক করা হয়েছে (#২২৫৮)।
- মিডিয়া শেষ হওয়ার ঠিক আগে অডিও প্লেব্যাক শুরু হলে
- ভিডিও:
- "lenovo" এবং "motorola" ডিভাইসে ডিটাচ করা সারফেস ওয়ার্কঅ্যারাউন্ড এক্সটেন্ড করুন (#২০৫৯)।
- অডিও স্যাম্পেল ঠিক অনুরোধ করা পজিশনে শুরু না হলে, স্টার্টআপে স্মুথ ভিডিও ফ্রেম রিলিজ উন্নত করুন।
- "realme" ডিভাইসে ডিটাচ করা সারফেস ওয়ার্কঅ্যারাউন্ড এক্সটেন্ড করুন (#২০৫৯)।
- ডিকোড-অনলি ইনপুট বাফার কিউতে রাখার সময়
MediaCodec.BUFFER_FLAG_DECODE_ONLYফ্ল্যাগ অন্তর্ভুক্ত করতে এক্সপেরিমেন্টালExoPlayerAPI যোগ করুন। এই ফ্ল্যাগ ডিকোডারকে ডিকোড-অনলি বাফার এড়িয়ে যাওয়ার সিগন্যাল দেবে যার ফলে আরও দ্রুত খোঁজা যাবে।DefaultRenderersFactory.experimentalSetEnableMediaCodecBufferDecodeOnlyFlag-এর মাধ্যমে এটি চালু করুন। * সফ্টওয়্যার ভিডিও কোডেকগুলির জন্য কোডেক পারফরম্যান্স চেক উন্নত করুন। এর ফলে আরও কিছু ট্র্যাকEXCEEDS_CAPABILITIESহিসেবে চিহ্নিত হতে পারে। - কিছু ডিভাইসে VP9 Widevine প্লেব্যাক সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৪০৮)।
- টেক্সট:
- MP4 ফাইলে VobSub ট্র্যাকের জন্য সহায়তা যোগ করা (#২৫১০)।
- সাবটাইটেল সেগমেন্ট প্রথমে লোড না হয়ে পরে লোড হলে এবং তারপরে একাধিক খালি সাবটাইটেল সেগমেন্ট থাকলে, প্লেব্যাক স্টল সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২৫১৭)।
- সাবটাইটেল চালু করার সময় প্রোগ্রেস-ইন কিউ দেখানোর জন্য SSA ও SubRip সংক্রান্ত সমস্যার সমাধান করা (#২৩০৯)।
- সাবটাইটেল সংক্রান্ত সমস্যা সহ স্ট্রিম থেকে খালি সাবটাইটেল ট্র্যাক সহ লাইভ স্ট্রিমে পরিবর্তন করার সময় প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে (#২৩২৮)।
- B-ফ্রেম (#২৩৭২) সহ H.262 স্ট্রিম চালানোর সময় CEA-608 সাবটাইটেল অস্পষ্ট দেখানোর সমস্যা সমাধান করা হয়েছে।
- Matroska ফাইলে
CodecId = S_TEXT/SSAসহ SSA সাবটাইটেলের জন্য সহায়তা যোগ করুন। আগেMatroskaExtractorশুধুমাত্রCodecId = S_TEXT/ASS-এ কাজ করত যা SubStation Alpha সাবটাইটেলের 'উন্নত' (v4+) ভ্যারিয়েন্টকে বোঝায় (তবে ExoPlayer-এর পার্সিং লজিক দুটি ভ্যারিয়েন্টের ক্ষেত্রেই একই) (#২৩৮৪)। - SubStation Alpha (SSA) সাবটাইটেল ফাইলে
layerপ্রপার্টির জন্য সহায়তা যোগ করুন যা স্ক্রিনে একই সময়ে একাধিক কিউ দেখানো হলে সেগুলির z-অর্ডার নির্ধারণ করতে ব্যবহার করা হয় (#২১২৪)।
- মেটাডেটা:
- মিডিয়ার সময়সীমা এবং
Timeline-কেMetadataRetriever-এ ফিরিয়ে আনার জন্য সহায়তা যোগ করা হয়েছে এবং এটিকে ইনস্ট্যান্স-ভিত্তিক,AutoCloseableAPI-তে মাইগ্রেট করা হয়েছে।MediaItem-এর জন্য ইনস্ট্যান্স তৈরি করতে নতুনBuilderব্যবহার করুন, তারপর মেটাডেটার জন্যListenableFutureপেতেretrieveTrackGroups(),retrieveTimeline()ওretrieveDurationUs()কল করুন। আগের স্ট্যাটিক পদ্ধতি এখন অবচিত করা হয়েছে (#২৪৬২)।
- মিডিয়ার সময়সীমা এবং
- ছবি:
BitmapFactoryImageDecoder-এ ডিসপ্লে সাইজে ডিকোড করা বিটম্যাপ সীমিত করুন, যাতে খুব বড় (যেমন, ৫০ মেগাপিক্সেল) ছবি দেখানোর চেষ্টা করার সময়PlayerViewথেকেCanvas: trying to draw too large bitmap.-এর সাথে অ্যাপ ক্র্যাশ হওয়া এড়ানো যায়।DefaultRenderersFactory.getImageDecoderFactory()-এর সিগনেচার পরিবর্তন করেContextপ্যারামিটার ব্যবহার করুন।CompositionPlayer-এ ব্যবহৃত সর্বাধিক বিটম্যাপ আউটপুট সাইজকেTransformer-এ আগে থেকে ব্যবহৃত সাইজের সাথে অ্যালাইন করুন (অর্থাৎ,ExoPlayer-এর মতোCompositionPlayerবিটম্যাপ ডিকোড করার সময় ডিসপ্লে সাইজ বিবেচনা করে না)।
- DRM:
OfflineLicenseHelper.newWidevineInstance-এর নতুন ওভারলোড যোগ করুন যাMediaItem.DrmConfigurationগ্রহণ করে যাতে HTTP অনুরোধ হেডার সঠিকভাবে প্রয়োগ করা যায় (#2169)।
- প্রভাব:
Presentation.createForShortSide(int)যোগ করুন যাPresentationতৈরি করে যা নিশ্চিত করে যে সবচেয়ে ছোট দিকটি সবসময় প্রদত্ত ভ্যালুর সাথে মেলে, ইনপুট ওরিয়েন্টেশন যাই হোক না কেন।
- Muxers:
- ফ্র্যাগমেন্টেড MP4-এ অডিও স্যাম্পেলের জন্য সঠিক স্যাম্পেল ফ্ল্যাগ সেট না হওয়ার সমস্যাটি সমাধান করুন।
writeSampleData()API এখনMediaCodec.BufferInfo-এর পরিবর্তে muxer নির্দিষ্টBufferInfoক্লাস ব্যবহার করে।Muxer.Factory#supportsWritingNegativeTimestampsInEditListযোগ করুন যা ডিফল্ট হিসেবে মিথ্যা।
- IMA এক্সটেনশন:
- একটি বিজ্ঞাপনে লোড সংক্রান্ত সমস্যার কারণে অন্য একটি বিজ্ঞাপন গ্রুপ ভুলবশত বাতিল হয়ে যাওয়ার সমস্যার সমাধান করা হয়েছে।
- VOD উইন্ডো শেষ হওয়ার পরে বিজ্ঞাপন গ্রুপ প্লেব্যাক বন্ধ করে দেওয়ার সমস্যা সমাধান করা হয়েছে।
উইন্ডোর পরে শুরুর সময় সহ বিজ্ঞাপন গ্রুপগুলি আর
MediaPeriodQueue-এ সারিবদ্ধ করা হয় না (#২২১৫)।
- সেশন:
- থার্ড-পার্টি নন-প্রিভিলেজড Media3 কন্ট্রোলার থেকে কানেকশন উপেক্ষা করা হয় এমন সমস্যার সমাধান করুন।
- কোনও লিগ্যাসি
MediaBrowserServiceCompat-এ কাস্টম কমান্ড পাঠানোর সময় উপলভ্য কমান্ডের জন্য চেক সরিয়ে দিন। এটি লিগ্যাসি অ্যাপের সাথে কানেক্ট করা লিগ্যাসি কন্ট্রোলার/ব্রাউজারের আচরণের সাথে সামঞ্জস্যপূর্ণ। - একটি সমস্যার সমাধান করা হয়েছে যার ফলে প্লেয়ারের প্রথম প্লেব্যাক সংক্রান্ত সমস্যাকে ভুলবশত একটি স্থায়ী কাস্টম ব্যতিক্রম হিসেবে বিবেচনা করা হয়। এটি অ্যাপ্লিকেশনকে রিকভার করতে দেয় না।
- সেশন দ্বারা ম্যানেজ করা হয় না এমন কিছু কন্ট্রোলার পরিবর্তনের কারণে
IllegalStateExceptionsহতে পারে, এই সমস্যার সমাধান করুন। - সেশন দ্বারা ম্যানেজ করা হয় না এমন কন্ট্রোলার অ্যাকশন, কন্ট্রোলারকে ভুল অবস্থায় রেখে দিতে পারে, এই সমস্যার সমাধান করুন।
- StrictMode-এর অসুরক্ষিত লঞ্চ সংক্রান্ত নীতি লঙ্ঘন সংক্রান্ত সতর্কতার সমাধান করুন (#২৩৩০)।
- মূল থ্রেড থেকে
setSessionExtrasকল করার সময় যে সমস্যা হচ্ছিল তা সমাধান করা হয়েছে। মূল থ্রেড ছাড়া অন্য অ্যাপ্লিকেশন থ্রেড থেকে প্লেয়ার চালানোর সময়IllegalStateExceptionহচ্ছিল (#2265)। - মিডিয়া আইটেম প্রস্তুত বা প্লে না করেই প্লেয়ার সেট-আপ করা হলে অটোমেটিক বিজ্ঞপ্তি দেখাবেন না
(#২৪২৩https://github.com/androidx/media/issues/2423)। এই আচরণ
MediaSessionService.setShowNotificationForIdlePlayer-এর মাধ্যমে কনফিগার করা যায়। - সব বা বেছে নেওয়া কন্ট্রোলারের জন্য কাস্টম
PlaybackExceptionযোগ করুন। MediaController-এ লাইভ স্ট্রিম খোঁজার সময়IllegalArgumentException-এর কারণে হওয়া সমস্যার সমাধান করুন।- লাইভ স্ট্রিমের জন্য, প্লেব্যাক পজিশন প্রকাশ করা বন্ধ করুন এবং প্ল্যাটফর্ম মিডিয়া কন্ট্রোলারের জন্য বর্তমান আইটেমে খোঁজার ক্ষমতা, যাতে Android Auto UI-তে পজিশন আর্টিফ্যাক্ট এড়ানো যায় (এবং অন্যান্য কন্ট্রোলার প্ল্যাটফর্ম মিডিয়া সেশন থেকে এই তথ্য ব্যবহার করে) (#১৭৫৮)।
- একটি সমস্যা সমাধান করুন যেখানে একটি
MediaBrowser-এরgetLibraryRoot-এ নাল পাস করা একটি লিগ্যাসিMediaBrowserServiceCompat-এর সাথে কানেক্ট করা একটিNullPointerExceptionতৈরি করেছে। - কাস্টম অ্যাকশন, সার্চ ফলাফল বা getItem অনুরোধ পাঠানোর সময়
ClassNotFoundException-এর সাথে লিগ্যাসি সেশন অ্যাপ ক্র্যাশ করার সমস্যা সমাধান করা হয়েছে। - প্ল্যাটফর্ম সেশনের
MediaMetadata-এMediaItem.LocalConfiguration.uriশেয়ার করার সময় হওয়া সমস্যার সমাধান করুন। কন্ট্রোলারকে মিডিয়ার জন্য আবার অনুরোধ করার অনুমতি দিতে, ইচ্ছাকৃতভাবে URI শেয়ার করতে, পরিবর্তেMediaItem.RequestMetadata.mediaUriসেট করুন।
- UI:
LazyColumn-এর মতো আবার ব্যবহার করা যায় এমন কম্পোনেন্টের মধ্যেPlayerSurfaceসঠিকভাবে কাজ না করার সমস্যা সমাধান করা হয়েছে (#২৪৯৩)।- Compose-এর একটি সমস্যার সমাধান করা হয়েছে যার ফলে প্রাথমিক বোতামের স্ট্যাটাস সেট করা এবং স্ট্যাটাসে পরিবর্তন (যেমন, আইকনের আকার বা চালু করা) লক্ষ্য করার মধ্যে একটি ব্যবধান তৈরি হয়েছিল। পর্যবেক্ষণ সময়সীমার বাইরে প্লেয়ারে করা যেকোনও পরিবর্তন এখন তুলে নেওয়া হয়েছে (#২৩১৩)।
SeekBackButtonStateএবংSeekForwardButtonState-এর জন্যmedia3-ui-composeমডিউলে স্টেট হোল্ডার এবং কম্পোজেবল যোগ করুন।PlayerControlView-এ ExoPlayer-এর স্ক্রাবিং মোডের জন্য সহায়তা যোগ করুন। চালু করা হলে, ব্যবহারকারী স্ক্রাবার বার টেনে নিয়ে যাওয়া শুরু করলে এটি প্লেয়ারকে স্ক্রাবিং মোডে নিয়ে যায়, প্রতিটি মুভমেন্টের জন্যplayer.seekToকল ইস্যু করে এবং স্ক্রিন থেকে টাচ তুলে নেওয়া হলে স্ক্রাবিং মোড থেকে বেরিয়ে আসে। এই ইন্টিগ্রেশন XML-এtime_bar_scrubbing_enabled = trueঅথবা Java/Kotlin থেকেsetTimeBarScrubbingEnabled(boolean)পদ্ধতির মাধ্যমে চালু করা যেতে পারে।PlayerSurface-কে নালেবেলPlayerআর্গুমেন্ট গ্রহণ করার জন্য সেট করুন।
- ডাউনলোড:
- প্রোগ্রেসিভ স্ট্রিমের জন্য আংশিক ডাউনলোড করার সুবিধা যোগ করুন। অ্যাপ
DownloadHelper-এর সাহায্যে প্রোগ্রেসিভ স্ট্রিম তৈরি করতে পারে এবং হেল্পারের কাছেDownloadRequest-এর অনুরোধ করতে পারে। এই অনুরোধে সময়-ভিত্তিক মিডিয়া শুরু ও শেষ হওয়ার পজিশন উল্লেখ করা থাকে, যা ডাউনলোডের মধ্যে কভার করা উচিত। ফেরত আসাDownloadRequest-এ সমাধান করা বাইট রেঞ্জ থাকে, যার সাহায্যে একটিProgressiveDownloaderতৈরি করা যেতে পারে এবং সেই অনুযায়ী কন্টেন্ট ডাউনলোড করা যেতে পারে। DownloadHelper.Factoryযোগ করুন যার সাথে স্ট্যাটিকDownloadHelper.forMediaItem()পদ্ধতি পরিবর্তন করা হয়েছে।SegmentDownloaderটি প্রয়োগের জন্যFactoryযোগ করুন।- অ্যাডাপ্টিভ স্ট্রিমের জন্য আংশিক ডাউনলোড সংক্রান্ত সুবিধা যোগ করুন। অ্যাপ
DownloadHelper-এর সাহায্যে অ্যাডাপ্টিভ স্ট্রিম তৈরি করতে পারে এবং হেল্পারের কাছেDownloadRequest-এর জন্য অনুরোধ করতে পারে। এই অনুরোধে সময়-ভিত্তিক মিডিয়া শুরু ও শেষ হওয়ার পজিশন উল্লেখ করা থাকে যা ডাউনলোডের মধ্যে কভার করা হয়। ফেরত আসাDownloadRequestসমাধান করা সময়সীমা বহন করে, যার সাহায্যে একটি নির্দিষ্টSegmentDownloaderতৈরি করা যেতে পারে এবং সেই অনুযায়ী কন্টেন্ট ডাউনলোড করা যেতে পারে।
- প্রোগ্রেসিভ স্ট্রিমের জন্য আংশিক ডাউনলোড করার সুবিধা যোগ করুন। অ্যাপ
- Cronet এক্সটেনশন:
- অটোমেটিক কুকি ম্যানেজমেন্ট যোগ করুন (#5975)।
- HLS এক্সটেনশন:
- বাফারে কোনও চাঙ্ক উপলভ্য না থাকলে
বাফারের মধ্যে
HlsSampleStreamWrapperখোঁজার চেষ্টা করার সময় যে সমস্যা হয় তা সমাধান করুন #২৫৯৮। - কম-লেটেন্সি পার্ট লোড করার পরে ট্র্যাক বেছে নেওয়ার পরিবর্তন এবং প্রিলোড হিন্ট প্লেব্যাক আটকে যাওয়া বা ফ্রিজ হয়ে যাওয়ার কারণ হতে পারে, এইসব সমস্যা সমাধান করুন (#২২৯৯)।
- সার্ভার
CAN-BLOCK-RELOAD=YES-কে সম্মান না করলে, টার্গেট করা সময়ের অর্ধেক সময় অপেক্ষা করে অতিরিক্ত রিলোড করা আটকান (#২৩১৭)। - মিড-রোলের আগে ইন্টারস্টিশিয়াল স্ট্রিম শুরু করার সময় প্লেব্যাক বন্ধ হয়ে যাওয়া এবং ভুল বিজ্ঞাপনের জন্য অ্যাসেট তালিকার রেজোলিউশন চেষ্টা করার সমস্যা সমাধান করা হয়েছে (#২৫৫৮)।
- কোট করা স্ট্রিং অ্যাট্রিবিউট ভ্যালুতে
\f(ফর্ম ফিড) গ্রহণ করার জন্য প্লেলিস্ট পার্সিং ঠিক করুন (#২৪২০)। - একই আইডি দিয়ে ইন্টারস্টিশিয়াল আপডেট করার সুবিধা (#২৪২৭)।
- প্লেলিস্ট লোড করার সময় হওয়া সমস্যা কখনও কখনও লাইভ স্ট্রিম লোড করার জন্য সেগমেন্ট শেষ হয়ে যাওয়ার পরে আর দেখা যায় না, এই সমস্যার সমাধান করা হয়েছে (#২৪০১https://github.com/androidx/media/issues/2401)।
- NAME ট্যাগ অনুযায়ী গ্রুপ সাবটাইটেল রেন্ডিশন, অডিও রেন্ডিশন যেভাবে আগে থেকেই গ্রুপ করা আছে তার মতো (#১৬৬৬)।
- X-ASSET-LIST এবং
HlsInterstitialsAdsLoaderসহ লাইভ স্ট্রিম সাপোর্ট করে।
- বাফারে কোনও চাঙ্ক উপলভ্য না থাকলে
বাফারের মধ্যে
- DASH এক্সটেনশন:
- ট্রিক-প্লে অ্যাডাপ্টেশন সেট তার মূল অ্যাডাপ্টেশন সেটের সাথে মার্জ হয়ে গিয়ে ভুল
TrackGroup(#২১৪৮) তৈরি হওয়ার সমস্যা সমাধান করা হয়েছে। - DASH পিরিয়ডের সময়সীমা কমানোর ফলে ব্যতিক্রমী পরিস্থিতি তৈরি হওয়ার সমস্যা সমাধান করা হয়েছে। রেন্ডারিং পাইপলাইন নতুন সময়সীমার বাইরে থাকা স্যাম্পেল আগেই পড়ে নিলে এই সমস্যা হয় (#২৪৪০)।
- CMCD কোয়েরি প্যারামিটার ব্যবহার করার সময় রিডাইরেক্ট অনুসরণ না করার সমস্যা সমাধান করা হয়েছে (#২৪৭৫)।
- ট্রিক-প্লে অ্যাডাপ্টেশন সেট তার মূল অ্যাডাপ্টেশন সেটের সাথে মার্জ হয়ে গিয়ে ভুল
- RTSP এক্সটেনশন:
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- অডিও ডিকোডার এক্সটেনশনের জন্য
DefaultTrackSelector.setAllowInvalidateSelectionsOnRendererCapabilitiesChangeকাজ না করার সমস্যা সমাধান করা হয়েছে (#2258)।
- অডিও ডিকোডার এক্সটেনশনের জন্য
- কাস্ট এক্সটেনশন:
- টেস্ট ইউটিলিটি:
- নির্দিষ্ট পজিশনে না পৌঁছানো পর্যন্ত প্লেয়ারকে এগিয়ে নিয়ে যেতে
TestPlayerRunHelper-এadvance(player).untilPositionAtLeastএবংuntilMediaItemIndexযোগ করুন। বেশিরভাগ ক্ষেত্রে, এই পদ্ধতিগুলি আগে থেকে থাকাuntilPositionএবংuntilStartOfMediaItemপদ্ধতির চেয়ে আরও বেশি নির্ভরযোগ্য। - অন্যান্য টেস্টে আবার ব্যবহার করার জন্য
FakeDownloader-কেtest-utils-robolectricমডিউলে সরান। transformer.TestUtil.addAudioDecoders(String...),transformer.TestUtil.addAudioEncoders(String...)এবংtransformer.TestUtil.addAudioEncoders(ShadowMediaCodec.CodecConfig, String...)সরানো হয়েছে। পরিবর্তে শ্যাডো এনকোডার ও ডিকোডার কনফিগার করতেShadowMediaCodecConfigব্যবহার করুন।ShadowMediaCodecConfig-এর মাধ্যমে রিপোর্ট করা কোডেক নামে "exotest" প্রিফিক্স "media3" দিয়ে পরিবর্তন করা হয়েছে।
- নির্দিষ্ট পজিশনে না পৌঁছানো পর্যন্ত প্লেয়ারকে এগিয়ে নিয়ে যেতে
- বাতিল করা চিহ্ন সরান:
- বাতিল করা
SegmentDownloaderকনস্ট্রাক্টরSegmentDownloader(MediaItem, Parser<M>, CacheDataSource.Factory, Executor)এবং এর সাবক্লাসে সংশ্লিষ্ট কনস্ট্রাক্টরDashDownloader,HlsDownloaderএবংSsDownloaderসরানো হয়েছে। - বন্ধ হয়ে যাওয়া
Player.hasNext(),Player.hasNextWindow()সরানো হয়েছে। পরিবর্তেPlayer.hasNextMediaItem()ব্যবহার করুন। - পুরনো হয়ে যাওয়া
Player.next()সরানো হয়েছে। পরিবর্তেPlayer.seekToNextMediaItem()ব্যবহার করুন। - পুরনো হয়ে যাওয়া
Player.seekToPreviousWindow()সরানো হয়েছে। পরিবর্তেPlayer.seekToPreviousMediaItem()ব্যবহার করুন। - পুরনো হয়ে যাওয়া
Player.seekToNextWindow()সরানো হয়েছে। পরিবর্তেPlayer.seekToNextMediaItem()ব্যবহার করুন। exoplayerমডিউলে বন্ধ হয়ে যাওয়াBaseAudioProcessorসরানো হয়েছে।commonমডিউলের অধীনেBaseAudioProcessorব্যবহার করুন।- বন্ধ হয়ে যাওয়া
MediaCodecVideoRendererকনস্ট্রাক্টরMediaCodecVideoRenderer(Context, MediaCodecAdapter.Factor, MediaCodecSelector, long, boolean, @Nullable Handler, @Nullable VideoRendererEventListener, int, float, @Nullable VideoSinkProvider)সরান।
- বাতিল করা
ভার্সন 1.8.0-rc02
২৪ জুলাই, ২০২৫
1.8.0 স্টেবল ভার্সন ব্যবহার করুন।
Version 1.8.0-rc01
১৬ জুলাই, ২০২৫
1.8.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.8.0-beta01
২ জুলাই, ২০২৫
1.8.0 স্টেবল ভার্সন ব্যবহার করুন।
Version 1.8.0-alpha01
১৯ মে, ২০২৫
1.8.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.7.0
ভার্সন ১.৭.১
১৬ মে, ২০২৫
This release has the same code as 1.6.1 and is being released to ensure it appears as a 'newer' release than 1.7.0, which was an alpha release accidentally tagged as stable (see below).
ভার্সন ১.৭.০
১৬ মে, ২০২৫
এই রিলিজটি 1.7.0-alpha01 হওয়া উচিত ছিল, কিন্তু ভুলবশত maven.google.com-এ
1.7.0 (অর্থাৎ, স্টেবল) হিসেবে ট্যাগ করা হয়েছে। এটি ব্যবহার করবেন না। 1.6.1-এ থাকুন
অথবা 1.7.1-এ আপগ্রেড করুন (যার কোড 1.6.1-এর মতোই)।
ভার্সন 1.6.0
১.৬.১
১৪ এপ্রিল, ২০২৫
androidx.media3:media3-*:1.6.1 রিলিজ করা হয়েছে। ভার্সন 1.6.1-এ এইসব
কমিট আছে।
- কমন লাইব্রেরি:
- নতুন
pitchভ্যালু সহPlaybackParametersসহজে কপি করার জন্যPlaybackParameters.withPitch(float)পদ্ধতি যোগ করুন (#২২৫৭)।
- নতুন
- ExoPlayer:
- পরবর্তী মিডিয়া আইটেম শুরু করার সময় রিকভার করা যায় এমন রেন্ডারার সমস্যার কারণে মিডিয়া আইটেম ট্রানজিশন না হওয়ার সমস্যার সমাধান করা হয়েছে (#2229)।
ProgressiveMediaPeriod-এরIllegalStateException-কেPreloadMediaSource-এর মতো করে দেখানোর সমস্যা সমাধান করুন,getBufferedDurationUs()-কে কল করার চেষ্টা করুন, এটি প্রস্তুত হওয়ার আগে (#2315)।- DASH, HLS ও SmoothStreaming-এর (#২২৫৩) জন্য ম্যানিফেস্ট অনুরোধে
CmcdDataপাঠানোর সমস্যা সমাধান করা হয়েছে। - বিজ্ঞাপন গ্রুপ সরিয়ে দেওয়ার পরে
AdPlaybackState.withAdDurationsUs(long[][])ব্যবহার করা যাবে কিনা তা নিশ্চিত করুন। ব্যবহারকারীকে এখনও সরিয়ে দেওয়া বিজ্ঞাপন গ্রুপের জন্য সময়সীমার অ্যারে পাস করতে হবে যা খালি বা শূন্য হতে পারে (#২২৬৭)।
- এক্সট্র্যাক্টর:
- MP4:
tkhdবক্স থেকেalternate_groupপার্স করুন এবং প্রতিটি ট্র্যাকেরFormat.metadata-এMp4AlternateGroupDataএন্ট্রি হিসেবে এটি দেখান (#২২৪২)।
- MP4:
- অডিও:
- অফলোড সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে ছোট কন্টেন্টের প্লেলিস্ট চালানোর সময় পজিশন আটকে যেতে পারে (#১৯২০)।
- সেশন:
- প্ল্যাটফর্ম
MediaSessionকলব্যাকের জন্য অ্যাগ্রিগেশন টাইমআউট ৫০০ থেকে কমিয়ে ১০০ মিলিসেকেন্ড করুন এবং অ্যাপকে এই ভ্যালু কনফিগার করার অনুমতি দিতে একটি এক্সপেরিমেন্টাল সেটার যোগ করুন। - ব্যবহারকারী বিজ্ঞপ্তি বাতিল করার পরেও সেটি আবার দেখা যাওয়ার সমস্যা সমাধান করা (#২৩০২)।
- র্যাপ করা প্লেয়ার আসলে খালি থাকলে, সেশন সিঙ্গল-আইটেম টাইমলাইন ফিরিয়ে দেওয়ার সমস্যা সমাধান করুন। এটি তখন ঘটে যখন র্যাপ করা প্লেয়ারে
COMMAND_GET_TIMELINEউপলভ্য থাকে না, কিন্তুCOMMAND_GET_CURRENT_MEDIA_ITEMউপলভ্য থাকে এবং র্যাপ করা প্লেয়ার খালি থাকে (#২৩২০)। - একটি সমস্যার সমাধান করা হয়েছে যেখানে
MediaSessionService.setMediaNotificationProviderকল করা পরিষেবার সাথে অন্যান্য ইন্টার্যাকশনের পরেsetForegroundServiceTimeoutMs(#2305) নীরবে উপেক্ষা করা হয়।
- প্ল্যাটফর্ম
- UI:
ExoPlayer.setVideoEffectsএবংCompositionPlayer-এর সাথে কাজ করার জন্যPlayerSurfaceচালু করুন।PlayerSurface-কে নতুনPlayer-এর সাথে রিকম্পোজ করা যাচ্ছে না, এই সমস্যার সমাধান করুন।
- HLS এক্সটেনশন:
- HLS মিডিয়ার জন্য
CmcdData-এ চাঙ্ক ডিউরেশন সেট না হওয়ার সমস্যা সমাধান করা হয়েছে, যার ফলে এনক্রিপ্ট করা মিডিয়া সেগমেন্ট প্রসেস করার সময় অ্যাসারশন ফেল করে (#2312)।
- HLS মিডিয়ার জন্য
- RTSP এক্সটেনশন:
- TCP ব্যবহার করার জন্য RTSP সেশন কনফিগার করার উপায় হিসেবে RTSPT স্কিম সহ URI-এর জন্য সহায়তা যোগ করুন (#১৪৮৪)।
- কাস্ট এক্সটেনশন:
- প্লেলিস্ট মেটাডেটার জন্য সহায়তা যোগ করুন (#২২৩৫)।
1.6.0
২৬ মার্চ, ২০২৫
androidx.media3:media3-*:1.6.0 রিলিজ করা হয়েছে। ভার্সন 1.6.0-এ এইসব
কমিট আছে।
- কমন লাইব্রেরি:
androidx.media-এ সমতুল্য ক্লাস পরিবর্তন করতেAudioManagerCompatএবংAudioFocusRequestCompatযোগ করুন।- Kotlin-কে 1.9.20 থেকে 2.0.20-এ আপগ্রেড করুন এবং Compose Compiler Gradle প্লাগ-ইন ব্যবহার করুন। KotlinX Coroutines লাইব্রেরি 1.8.1 থেকে 1.9.0-এ আপগ্রেড করুন।
Format.toBundle(boolean excludeMetadata)পদ্ধতি সরিয়ে দিন, পরিবর্তেFormat.toBundle()ব্যবহার করুন।SimpleBasePlayer-এ বাগ ঠিক করুন যেখানেsetPlaylist-এর পরেState-এ নতুনcurrentMediaItemIndexসেট করা হলেnullMediaMetadata-এর সাথে মেটাডেটা আবার মূল্যায়ন করে না (#১৯৪০)।- অন্যান্য ক্লাসে আপডেট ম্যানেজ করা আরও সহজ করতে
SimpleBasePlayer.Stateঅ্যাক্সেস সুরক্ষিত থেকে সর্বজনীন করুন (#2128)।
- ExoPlayer:
MediaExtractorCompatযোগ করুন, এটি একটি নতুন ক্লাস যা প্ল্যাটফর্মMediaExtractor-এর সমতুল্য ফিচার প্রদান করে।MediaCodecVideoRendererব্যবহার করে প্লেব্যাকের জন্য এক্সপেরিমেন্টাল 'ExoPlayer' প্রি-ওয়ার্মিং সাপোর্ট যোগ করুন।ExoPlayer-এ সেকেন্ডারিMediaCodecVideoRendererপ্রদান করতে আপনিexperimentalSetEnableMediaCodecVideoRendererPrewarming-এর মাধ্যমেDefaultRenderersFactoryকনফিগার করতে পারবেন। চালু করা থাকলে, মিডিয়া আইটেম ট্রানজিশন লেটেন্সি কমাতে প্লেব্যাক চলাকালীনExoPlayerপরপর মিডিয়া আইটেমের ভিডিও প্রি-প্রসেস করে।DefaultLoadControl-এbufferForPlaybackMsএবংbufferForPlaybackAfterRebufferMs-এর ডিফল্ট ভ্যালু কমিয়ে যথাক্রমে ১০০০ এবং ২০০০ মিলি সেকেন্ড করুন।DeviceInfoএবং ডিভাইসের ভলিউম অ্যাসিঙ্ক্রোনাসভাবে ইনিশিয়ালাইজ করুন (setDeviceVolumeControlEnabledব্যবহার করে চালু করা থাকলে)।ExoPlayer.Builder.build()-এর পরে এই ভ্যালুগুলি তাত্ক্ষণিকভাবে উপলভ্য হয় না এবংPlayer.ListeneronDeviceInfoChangedএবংonDeviceVolumeChanged-এর মাধ্যমে পরিবর্তনগুলি জানায়।- প্লেয়ার তৈরি করার পরে প্রাথমিক অডিও সেশন আইডি আর অবিলম্বে উপলভ্য হয় না। প্রয়োজন হলে,
প্রাথমিক আপডেট শুনতে আপনি
AnalyticsListener.onAudioSessionIdChangedব্যবহার করতে পারবেন। - ভিডিও ট্র্যাক বেছে নেওয়ার সময় ভাষা বিবেচনা করুন। ডিফল্ট হিসেবে, এমন একটি 'প্রধান' ভিডিও ট্র্যাক বেছে নিন যা বেছে নেওয়া অডিও ট্র্যাকের ভাষার সাথে মেলে, যদি উপলভ্য থাকে। ভিডিওর ভাষার জন্য নির্দিষ্ট পছন্দ
TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)-এর মাধ্যমে প্রকাশ করা যেতে পারে। DefaultTrackSelector.selectVideoTrack()পদ্ধতিতেselectedAudioLanguageপ্যারামিটার যোগ করুন।MediaSourceEventListener.onLoadStarted-এretryCountপ্যারামিটার এবং সংশ্লিষ্টMediaSourceEventListener.EventDispatcherপদ্ধতি যোগ করুন।- মাল্টি-পিরিয়ড DASH স্ট্রিমে প্লেলিস্ট আইটেম বা পিরিয়ডের সময়সীমা আসল কন্টেন্টের সাথে না মিললে আইটেমের শেষে ফ্রেম ফ্রিজ হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#১৬৯৮)।
BasePreloadManager.Listener-কে টপ-লেভেলPreloadManagerListener-এ সরান।- প্রি-ওয়ার্মিংয়ের জন্য সেকেন্ডারি রেন্ডারার প্রদান করতে
RenderersFactory.createSecondaryRendererপ্রয়োগ করা যেতে পারে। প্রি-ওয়ার্মিং প্লেব্যাকের সময় মিডিয়া আইটেম দ্রুত ট্রানজিশন করতে দেয়। - DASH, HLS ও SmoothStreaming-এর মতো অ্যাডাপ্টিভ স্ট্রিমিং ফর্ম্যাটে
ম্যানিফেস্ট অনুরোধের জন্য
CmcdDataপাঠানো চালু করুন (#১৯৫১)। MediaCodecRenderer.onReadyToInitializeCodec-এ ইনিশিয়ালাইজ করা হবে এমন কোডেকেরMediaCodecInfoপ্রদান করুন (#১৯৬৩)।- বিজ্ঞাপন গ্রুপ যোগ করে
AdPlaybackStates-এর সংখ্যা বাড়াতেAdsMediaSourceপরিবর্তন করুন। ভুল পরিবর্তন শনাক্ত করা হয়েছে এবং একটি ব্যতিক্রম থ্রো করা হয়েছে। - মিড-রোল বিজ্ঞাপনের পরে কন্টেন্ট মিডিয়াতে ট্রানজিশন করার সময় অতিরিক্ত ডিকোড-অনলি ফ্রেমগুলি দ্রুত পরপর প্রদর্শিত হতে পারে এমন সমস্যা সমাধান করুন।
DefaultRenderersFactory-কে দুটিMetadataRendererইনস্ট্যান্স যোগ করতে বলুন যাতে অ্যাপ ডিফল্ট হিসেবে দুটি আলাদা মেটাডেটা স্কিম পেতে পারে।- প্লেব্যাক পজ করা থাকলে, চাঙ্কের চলমান লোড বাতিল করা উচিত কিনা তা পুনরায় মূল্যায়ন করুন (#১৭৮৫)।
ClippingMediaSource-এ বিকল্প যোগ করুন যাতে সিক করা যায় না এমন মিডিয়াতে ক্লিপিংয়ের অনুমতি দেওয়া যায়।- প্রি-ওয়ার্মিংয়ের মাধ্যমে খোঁজার সময় পরবর্তী মিডিয়া আইটেম ট্রানজিশন ব্লক হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে।
ExoPlayer.isLoading()-এরSTATE_IDLEবাSTATE_ENDED-এ ট্রানজিশন হয়ে গেলেওtrue-এ থেকে যাওয়ার বাগটি ঠিক করা হয়েছে (#2133)।LoadControl.Parameter-এlastRebufferRealtimeMsযোগ করুন (#২১১৩)।
- ট্রান্সফর্মার:
- বিকল্প ব্যাকওয়ার্ড কম্প্যাটিবল ফর্ম্যাটে ট্রান্সমিউক্সিংয়ের জন্য সহায়তা যোগ করুন।
- Dolby Vision (প্রোফাইল ৮) ফর্ম্যাট ট্রান্সকোড ও ট্রান্সমিক্স করার জন্য সহায়তা যোগ করুন।
Formatব্যবহার করতেVideoFrameProcessor.registerInputStreamএবংVideoFrameProcessor.Listener.onInputStreamRegistered-এর প্যারামিটার আপডেট করুন।DefaultEncoderFactoryব্যবহার করার সময় HDR স্ট্যাটিক মেটাডেটা তৈরি করুন।MediaMetricsManagerব্যবহার করে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সহায়তা চালু করুন। ট্রান্সফর্মার প্ল্যাটফর্মে এডিটিং ইভেন্ট এবং পারফর্ম্যান্স ডেটা ফরওয়ার্ড করে, যা ডিভাইসে সিস্টেম পারফর্ম্যান্স এবং ডিবাগিং তথ্য প্রদান করতে সাহায্য করে। এছাড়াও, ডিভাইসের ব্যবহারকারী ব্যবহার ও ডায়াগনস্টিক ডেটা শেয়ার করার বিকল্প চালু করলে, Google এই ডেটা সংগ্রহ করতে পারে।Transformer.Builder.setUsePlatformDiagnostics(false)-এর সাথে Transformer-এর জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে কন্ট্রিবিউট করা থেকে অ্যাপ অপ্ট-আউট করতে পারে।InAppMuxer-কেInAppMp4MuxerওInAppFragmentedMp4Muxer-এ ভাগ করুন। আপনিInAppMp4Muxerব্যবহার করে ফ্র্যাগমেন্টেড নয় এমন MP4 ফাইল তৈরি করেন, যেখানেInAppFragmentedMp4Muxerব্যবহার করে ফ্র্যাগমেন্টেড MP4 ফাইল তৈরি করা হয়।Muxerইন্টারফেসmedia3-muxerথেকেmedia3-transformer-এ সরান।MediaProjectionAssetLoaderযোগ করুন, যা স্ক্রিন রেকর্ডিংয়ের জন্যMediaProjectionথেকে মিডিয়া প্রদান করে এবং ট্রান্সফর্মার ডেমো অ্যাপে স্ক্রিন রেকর্ডিংয়ের জন্য সহায়তা যোগ করুন।Codecইন্টারফেসে#getInputFormat()যোগ করুন।- সম্ভব হলে
DefaultVideoFrameProcessorএবংDefaultVideoCompositor-এ কলারের উপরGlObjectsProviderরিলিজ করার দায়িত্ব শিফ্ট করুন।
- এক্সট্র্যাক্টর:
- AVI: কনস্ট্যান্ট বিটরেট কম্প্রেসড অডিও সহ ফাইলের হ্যান্ডলিং ঠিক করুন যেখানে স্ট্রিম হেডারে চাঙ্কের সংখ্যার পরিবর্তে বাইটের সংখ্যা স্টোর করা হয়।
- ১ বা ২ বাইট (৪-এর পরিবর্তে) দৈর্ঘ্যের NAL ইউনিট ম্যানেজ করার সমস্যা সমাধান করা হয়েছে।
- MP4 এডিট লিস্টে
ArrayIndexOutOfBoundsExceptionঠিক করুন যখন এডিট লিস্ট সিঙ্ক না হওয়া ফ্রেম থেকে শুরু হয় এবং তার আগে কোনও সিঙ্ক ফ্রেম থাকে না (#২০৬২)। - কিছু ডিভাইসে TS স্ট্রিম আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে (#২০৬৯)।
- FLAC: ৩২-বিট FLAC ফাইলের জন্য সহায়তা যোগ করুন। আগে এগুলি
IllegalStateException: Playback stuck buffering and not loading(#2197)-এর সাথে চালানো যেত না।
- অডিও:
- প্লেব্যাক আবার চালু হলে
onAudioPositionAdvancingকল করার জন্য ঠিক করুন (আগে প্লেব্যাক পজ করা হলে এটি কল করা হত)। SpeedChangingAudioProcessorডিফল্ট প্যারামিটার দিয়ে কনফিগার করা থাকলেSonicAudioProcessorবাইপাস করবেন না।Sonic#getOutputSize()-এ আন্ডারফ্লো সংক্রান্ত সমস্যার সমাধান করুন যার ফলেDefaultAudioSinkস্টল হতে পারে।MediaCodecAudioRenderer.getDurationToProgressUs()এবংDecoderAudioRenderer.getDurationToProgressUs()ঠিক করুন যাতে সঠিকভাবে খোঁজা যায় প্রদত্ত সময়সীমা রিসেট করুন।androidx.media3.common.audio.SonicAudioProcessor-কে ফাইনাল করুন।ChannelMappingAudioProcessorএবংTrimmingAudioProcessor-এ ফ্লোট PCM-এর জন্য সহায়তা যোগ করুন।
- প্লেব্যাক আবার চালু হলে
- ভিডিও:
MediaCodecVideoRenderer.shouldUsePlaceholderSurface-কে সুরক্ষিত হিসেবে পরিবর্তন করুন যাতে অ্যাপ্লিকেশনগুলি ওভাররাইড করে প্লেসহোল্ডার সারফেসের ব্যবহার ব্লক করতে পারে (#১৯০৫)।- স্পিড আপ সিকিংয়ের জন্য পরীক্ষামূলক
ExoPlayerAV1 স্যাম্পেল ডিপেনডেন্সি পার্সিং যোগ করুন। নতুনDefaultRenderersFactory.experimentalSetParseAv1SampleDependenciesAPI-এর মাধ্যমে এটি চালু করুন। - নির্ভরশীল নয় এমন
MediaCodecVideoRendererডিকোডার ইনপুট বাফার ড্রপ করতে পরীক্ষামূলকExoPlayerAPI যোগ করুন।DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs-এর মাধ্যমে এটি চালু করুন। * সারফেস ছাড়া প্লেয়ার অবিলম্বে রেডি হয়ে যাওয়া এবং পেন্ডিং ফ্রেম ডিকোড করার সময় খুব স্লো হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#১৯৭৩)। - স্ক্রিন ফ্লিকারিং এড়াতে ডিটাচ করা সারফেস মোড থেকে Xiaomi এবং OPPO ডিভাইস বাদ দিন (#২০৫৯)।
- টেক্সট:
- VobSub সাবটাইটেলের জন্য সহায়তা যোগ করা হয়েছে (#৮২৬০)।
MediaItem.Builder.setSubtitleConfigurations-এর সাথে কনফিগার করা সব সাবটাইটেল ফাইল আগ্রহের সাথে লোড করা বন্ধ করুন এবং পরিবর্তে ট্র্যাক বেছে নেওয়ার মাধ্যমে বেছে নেওয়া হলে শুধুমাত্র একটি লোড করুন (#১৭২১)।- TTML:
style(#২৯৫৩) ব্যবহার করেtts:originএবংtts:extent-এর রেফারেন্স দেওয়ার জন্য সহায়তা যোগ করুন। - WebVTT এবং SubRip টাইমস্ট্যাম্প ঠিক ৩টি দশমিক স্থানে সীমাবদ্ধ করুন। আগে আমরা ভুল করে দশমিকের পরে যেকোনও সংখ্যক সংখ্যা পার্স করতাম, কিন্তু সবসময় ধরে নিতাম যে ভ্যালুটি মিলিসেকেন্ডে আছে, যার ফলে ভুল টাইমস্ট্যাম্প (#১৯৯৭) তৈরি হত।
- প্লেলিস্টে CEA-608 বা CEA-708 ক্যাপশন সহ ক্লিপ করা আইটেম থাকলে, প্লেব্যাক হ্যাং হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- SSA ফাইলে শূন্য সময়সীমা (শুরু ও শেষের সময় একই) সহ কিউ থাকলে
IllegalStateExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২০৫২)। - সাবটাইটেল পার্সিং সংক্রান্ত সমস্যা দমন (এবং লগ) করুন যখন সাবটাইটেল অডিও এবং ভিডিওর মতো একই কন্টেনারে মাক্স করা হয় (#২০৫২)।
- CR লাইন এন্ডিং (#২১৬৭) ব্যবহার করে WebVTT ফাইলে মাল্টি-বাইট UTF-৮ ক্যারেক্টার ম্যানেজ করার সমস্যা সমাধান করা হয়েছে।
- DRM:
- API < 27 ডিভাইসে ClearKey কন্টেন্ট চালানোর সময়
MediaCodec$CryptoException: Operation not supported in this configurationসমস্যার সমাধান করা হয়েছে (#1732)।
- API < 27 ডিভাইসে ClearKey কন্টেন্ট চালানোর সময়
- প্রভাব:
OverlaySettings-এর কার্যকারিতাStaticOverlaySettings-এ সরানো হয়েছে। ডায়নামিক ওভারলে সেটিংসের অনুমতি দিতেOverlaySettings-এর সাবক্লাস তৈরি করা যেতে পারে।
- Muxers:
- খুব দীর্ঘ সম্পূর্ণ কোয়ালিফায়েড নাম এড়াতে
Muxerইন্টারফেস থেকেMuxerExceptionসরানো হয়েছে। Mp4Muxer.BuilderএবংFragmentedMp4Muxer.Builder, দুটিতেইsetSampleCopyEnabled()পদ্ধতির নাম পরিবর্তন করেsetSampleCopyingEnabled()করা হয়েছে।Mp4Muxer.addTrack()এবংFragmentedMp4Muxer.addTrack()এখনTrackToken-এর পরিবর্তেintট্র্যাক আইডি রিটার্ন করে।Mp4MuxerএবংFragmentedMp4MuxerআরMuxerইন্টারফেস প্রয়োগ করে না।- ডিফল্ট হিসেবে
Mp4Muxerস্যাম্পেল ব্যাচিং ও কপি করা বন্ধ করুন। FragmentedMp4Muxer-এ একটি সমস্যার সমাধান করুন যা শুধুমাত্র অডিও ট্র্যাক লেখার সময় অনেক ফ্র্যাগমেন্ট তৈরি করে।
- খুব দীর্ঘ সম্পূর্ণ কোয়ালিফায়েড নাম এড়াতে
- সেশন:
- প্লেব্যাক পজ, বন্ধ বা ব্যর্থ হলে অতিরিক্ত ১০ মিনিটের জন্য ফোরগ্রাউন্ড পরিষেবার স্ট্যাটাস
রাখুন। এর ফলে, ব্যবহারকারীরা বিভিন্ন ডিভাইসে ফোরগ্রাউন্ড সার্ভিস রেসট্রিকশনের ঝুঁকি না নিয়েই এই টাইমআউটের মধ্যে প্লেব্যাক আবার শুরু করতে পারবেন। মনে রাখবেন যে
onTaskRemovedওভাররাইড করার সময়stopSelf()-এর আগে ফোরগ্রাউন্ড সার্ভিস বন্ধ করতে শুধুplayer.pause()কল করা আর ব্যবহার করা যাবে না, পরিবর্তেMediaSessionService.pauseAllPlayersAndStopSelf()ব্যবহার করুন। - প্লেব্যাক বন্ধ হয়ে গেলে বা কোনও সমস্যা হলে বিজ্ঞপ্তি দেখানো চালিয়ে যান। প্লেলিস্ট খালি করা হলে বা প্লেয়ার রিলিজ করা হলে তবেই বিজ্ঞপ্তিটি সরানো হয়।
- Android প্ল্যাটফর্ম MediaSession অ্যাকশন ACTION_PLAY এবং ACTION_PAUSE-এর হ্যান্ডলিং উন্নত করুন যাতে উপলভ্য কমান্ড অনুযায়ী শুধুমাত্র একটি সেট করা যায় এবং শুধুমাত্র একটি সেট করা থাকলেও তা গ্রহণ করা হয়।
Context-কেMediaButtonReceiver.shouldStartForegroundService-এর প্যারামিটার হিসেবে যোগ করুন (#১৮৮৭)।- পুরনো সেশনে কানেক্ট করা
MediaController-এPlayerমেথড কল করার সময় বাকি থাকা আপডেট থেকে পরিবর্তন ড্রপ হয়ে যাওয়ার সমস্যা সমাধান করুন। MediaSession.setSessionActivity(PendingIntent)-কে নাল গ্রহণ করতে দিন (#2109)।- প্লেলিস্ট মুছে দেওয়ার পরেও পুরনো বিজ্ঞপ্তি দেখা যাওয়ার সমস্যা সমাধান করা হয়েছে (#২২১১)।
- প্লেব্যাক পজ, বন্ধ বা ব্যর্থ হলে অতিরিক্ত ১০ মিনিটের জন্য ফোরগ্রাউন্ড পরিষেবার স্ট্যাটাস
রাখুন। এর ফলে, ব্যবহারকারীরা বিভিন্ন ডিভাইসে ফোরগ্রাউন্ড সার্ভিস রেসট্রিকশনের ঝুঁকি না নিয়েই এই টাইমআউটের মধ্যে প্লেব্যাক আবার শুরু করতে পারবেন। মনে রাখবেন যে
- UI:
media3-ui-composeমডিউলে স্টেট হোল্ডার ও কম্পোজেবল যোগ করুনPlayerSurface,PresentationState,PlayPauseButtonState,NextButtonState,PreviousButtonState,RepeatButtonState,ShuffleButtonStateএবংPlaybackSpeedState-এর জন্য।
- ডাউনলোড:
CacheWriter-এ থাকা বাগ ঠিক করুন যা ডেটা সোর্সকে খোলা রাখে এবং ক্যাশে এরিয়াকে লক করে রাখে যদি ডেটা সোর্সIOExceptionছাড়া অন্য কোনওExceptionথ্রো করে (#9760)।
- HLS এক্সটেনশন:
HlsInterstitialsAdsLoader-এর প্রথম ভার্সন যোগ করুন। বিজ্ঞাপন লোডার, HLS মিডিয়া প্লেলিস্টের HLS ইন্টারস্টিশিয়াল পড়ে এবং সেগুলিকেAdPlaybackState-এ ম্যাপ করে যাAdsMediaSource-এ পাস করা হয়। এই প্রাথমিক ভার্সনে শুধুX-ASSET-URIঅ্যাট্রিবিউট সহ HLS VOD স্ট্রিম কাজ করে।HlsInterstitialsAdsLoader.AdsMediaSourceFactoryযোগ করুন। অ্যাপ এটি ব্যবহার করেAdsMediaSourceইনস্ট্যান্স তৈরি করতে পারে যাHlsInterstitialsAdsLoaderসুবিধাজনক ও নিরাপদ উপায়ে ব্যবহার করে।- Dolby Vision ফর্ম্যাট শনাক্ত করতে HLS প্লেলিস্ট থেকে
SUPPLEMENTAL-CODECSট্যাগ পার্স করুন (#১৭৮৫)। - HLS স্ট্রিমে পজিশন সিঙ্ক করার জন্য সিক করার শর্ত শিথিল করা হয়েছে (#২২০৯)।
- DASH এক্সটেনশন:
- DASH-এর জন্য AC-4 লেভেল-৪ ফর্ম্যাট সাপোর্ট যোগ করুন (#১৮৯৮)।
- মাল্টি-পিরিয়ড লাইভ স্ট্রিমে বিজ্ঞাপন যোগ করার জন্য আপডেট ইন্টারভ্যাল গণনা করার সময় হওয়া সমস্যার সমাধান করা (#১৬৯৮)।
- Dolby Vision ফর্ম্যাট শনাক্ত করতে
DASH ম্যানিফেস্ট থেকে
scte214:supplementalCodecsঅ্যাট্রিবিউট পার্স করুন (#১৭৮৫)। - লাইভ স্ট্রিমে পিরিয়ড ট্রানজিশন ম্যানেজ করার সুবিধা উন্নত করা হয়েছে যেখানে পিরিয়ডে ঘোষিত পিরিয়ড সময়সীমার বাইরে মিডিয়া স্যাম্পেল থাকে (#১৬৯৮)।
adaptation-set-switchingদিয়ে চিহ্নিত করা অ্যাডাপ্টেশন সেট কিন্তু আলাদা ভাষা বা রোল ফ্ল্যাগ একসাথে মার্জ করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#২২২২)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1 ইত্যাদি):
- MPEG-H ডিকোডার মডিউল যোগ করুন যা MPEG-H অডিও ডিকোড করতে বিল্ট-ইন MPEG-H ডিকোডার ব্যবহার করে (#১৮২৬)।
- MIDI এক্সটেনশন:
MidiRenderer-এ কাস্টমAudioSinkএবংAudioRendererEventListenerইনস্ট্যান্স প্লাম্ব করুন।
- কাস্ট এক্সটেনশন:
- Google Play পরিষেবা ইনস্টল করা আছে কিন্তু বন্ধ করা আছে এমন ডিভাইসে API 34+ টার্গেট করা অ্যাপে
FLAG_MUTABLEক্র্যাশ হওয়া ঠিক করতেplay-services-cast-frameworkডিপেন্ডেন্সি 21.5.0-এ বাম্প করুন (#2178)।
- Google Play পরিষেবা ইনস্টল করা আছে কিন্তু বন্ধ করা আছে এমন ডিভাইসে API 34+ টার্গেট করা অ্যাপে
- ডেমো অ্যাপ:
- অতিরিক্ত বোতামের সাহায্যে
demo-compose-এর ক্ষমতা বাড়ান এবং স্কেলিং ও শাটার সাপোর্টের মাধ্যমেPlayerSurfaceইন্টিগ্রেশন উন্নত করুন।
- অতিরিক্ত বোতামের সাহায্যে
- বাতিল করা চিহ্ন সরান:
- অবচিত করা
AudioMixer.create()পদ্ধতি সরিয়ে দিন৷ পরিবর্তেDefaultAudioMixer.Factory().create()ব্যবহার করুন। - নিম্নলিখিত বাতিল করা
Transformer.Builderপদ্ধতিগুলি সরান:setTransformationRequest(), এর পরিবর্তেsetAudioMimeType(),setVideoMimeType()এবংsetHdrMode()ব্যবহার করুন।setAudioProcessors(),EditedMediaItem.Builder.setEffects()-এ অডিও প্রসেসর সেট করুন এবং এর পরিবর্তে এটিTransformer.start()-এ পাস করুন।setVideoEffects(),EditedMediaItem.Builder.setEffects()-এ ভিডিও এফেক্ট সেট করুন এবং পরিবর্তে এটিTransformer.start()-এ পাস করুন।setRemoveAudio(),EditedMediaItem.Builder.setRemoveAudio()ব্যবহার করুন যাতেEditedMediaItemথেকে অডিও সরিয়েTransformer.start()-এ পাস করা যায়।setRemoveVideo(),EditedMediaItemথেকে ভিডিও সরাতেEditedMediaItem.Builder.setRemoveVideo()ব্যবহার করুন, যাTransformer.start()-এ পাস করা হয়েছে।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-এর অবচিত ভার্সন সরিয়ে দিন। পরিবর্তে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ব্যবহার করুন।ExoPlayer.VideoComponent,ExoPlayer.AudioComponent,ExoPlayer.TextComponentএবংExoPlayer.DeviceComponentসরানো হয়েছে।androidx.media3.exoplayer.audio.SonicAudioProcessorসরানো হয়েছে।- নিম্নলিখিত বাতিল করা
DownloadHelperপদ্ধতি সরিয়ে দেওয়া হয়েছে:- কনস্ট্রাক্টর
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-rc02
১৯ মার্চ, ২০২৫
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
1.6.0-rc01
১২ মার্চ, ২০২৫
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
1.6.0-beta01
২৬ ফেব্রুয়ারি, ২০২৫
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
Version 1.6.0-alpha03
৬ ফেব্রুয়ারি, ২০২৫
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.6.0-alpha02
৩০ জানুয়ারি, ২০২৫
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
Version 1.6.0-alpha01
২০ ডিসেম্বর, ২০২৪
1.6.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন ১.৫
ভার্সন ১.৫.১
১৯ ডিসেম্বর, ২০২৪
androidx.media3:media3-*:1.5.1 রিলিজ করা হয়েছে। ভার্সন ১.৫.১-এ এইসব
কমিট আছে।
- ExoPlayer:
- এই প্ল্যাটফর্ম API-এর সাথে কোডেক টাইমআউট সংক্রান্ত সমস্যার রিপোর্ট এড়াতে MediaCodec-এ অ্যাসিঙ্ক্রোনাস ডিক্রিপশনের ব্যবহার বন্ধ করুন (#১৬৪১)।
- এক্সট্র্যাক্টর:
- MP3:
VBRIফ্রেমের সূচিপত্র কোনও ফাইলের সব MP3 ডেটা কভার না করলে, প্লেব্যাক আগে বন্ধ করবেন না (#১৯০৪)।
- MP3:
- ভিডিও:
onOutputFormatChangedপ্রসেস করার সময়MediaCodecAdapter-এর দেওয়া পিক্সেল অ্যাস্পেক্ট রেশিও ভ্যালু ব্যবহার করার সুবিধা ফিরিয়ে আনা হয়েছে (#১৩৭১)।
- টেক্সট:
ReplacingCuesResolver.discardCuesBeforeTimeUs-এ সেই সমস্যার সমাধান করুন যেখানেtimeUs-এ অ্যাক্টিভ কিউ (আগে শুরু হয়েছে কিন্তু এখনও শেষ হয়নি) ভুলভাবে বাতিল করা হয়েছে (#১৯৩৯)।
- মেটাডেটা:
- Vorbis কমেন্ট থেকে ডিস্ক/ট্র্যাকের নম্বর এবং জনরা এক্সট্র্যাক্ট করে
MediaMetadata(#1958)-এ যোগ করুন।
- Vorbis কমেন্ট থেকে ডিস্ক/ট্র্যাকের নম্বর এবং জনরা এক্সট্র্যাক্ট করে
ভার্সন ১.৫.০
২৭ নভেম্বর, ২০২৪
androidx.media3:media3-*:1.5.0 রিলিজ করা হয়েছে। ভার্সন 1.5.0-এ এইসব
কমিট আছে।
- কমন লাইব্রেরি:
ForwardingSimpleBasePlayerযোগ করুন যা সম্পূর্ণ সামঞ্জস্যতা এবং শ্রোতা হ্যান্ডলিং নিশ্চিত করার সাথে সাথে ছোটখাটো অ্যাডজাস্টমেন্ট সহ অন্য প্লেয়ারে ফরওয়ার্ড করার অনুমতি দেয় (#1183)।getPlaylist()পদ্ধতি ব্যবহার করেSimpleBasePlayer.State.playlistপরিবর্তন করুন।- প্লেলিস্ট স্ট্রাকচার তৈরি করার পরিবর্তে
সরাসরি
Timelineএবং বর্তমানTracksওMetadataনির্দিষ্ট করতেSimpleBasePlayer.State.Builder.setPlaylist()-এর জন্য ওভাররাইড যোগ করুন। minSdkবাড়িয়ে 21 (Android Lollipop) করুন। এটি অন্যান্য সব AndroidX লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ।androidx.media3:media3-common-ktxআর্টিফ্যাক্ট যোগ করুন যা কমন লাইব্রেরির উপরে তৈরি Kotlin-নির্দিষ্ট কার্যকারিতা প্রদান করেmedia3-common-ktxলাইব্রেরিতেPlayer.Eventsশোনার জন্য একটি কোরুটিন স্পিন করতেPlayer.listenসাসপেন্ডিং এক্সটেনশন ফাংশন যোগ করুন।- রানটাইম ক্লাস যাচাইকরণ
ব্যর্থতা এড়ানোর জন্য ডিজাইন করা ম্যানুয়ালি আউট-অফ-লাইন ইনার ক্লাস থেকে
@DoNotInlineঅ্যানোটেশন সরান। R8-এর সাম্প্রতিক ভার্সন এখন রানটাইম ব্যর্থতা এড়াতে এই ধরনের কল অটোমেটিক আউট-অফ-লাইন করে (তাই ম্যানুয়াল আউট-অফ-লাইনিংয়ের আর প্রয়োজন নেই)। লাইব্রেরির সব Gradle ব্যবহারকারীকে অবশ্যই Android Gradle প্লাগ-ইনের এমন একটি ভার্সন ব্যবহার করতে হবে যা R8-এর এমন একটি ভার্সন ব্যবহার করে যা এটি করে,compileSdk = 35-এরকারণে। নন-গ্রেডেল বিল্ড সিস্টেম সহ লাইব্রেরির ব্যবহারকারীদের নিশ্চিত করতে হবে যে তাদের R8-সমতুল্য সঙ্কুচিত/অস্পষ্ট করার ধাপটি রানটাইম ক্লাস যাচাইকরণ ব্যর্থতা এড়াতে একই রকম অটোমেটিক আউট-অফ-লাইনিং প্রসেস করে। এই পরিবর্তন অন্যান্য AndroidX লাইব্রেরিতে আগেই করা হয়েছে।
- ExoPlayer:
- এখন প্রতিটি মিডিয়া আইটেমের জন্য
MediaCodecRenderer.onProcessedStreamChange()-কে কল করা যাবে। আগে প্রথমটির জন্য এটি কল করা হয়নি। এটি চালু করতেMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()ব্যবহার করুন। - সমস্যা হলে অ্যাকশন নেওয়ার জন্য
PreloadMediaSource.PreloadControlইমপ্লিমেন্টেশনকে অনুমতি দিতেPreloadMediaSource.PreloadControl.onPreloadErrorযোগ করুন। - অ্যাপে প্রিলোড ইভেন্ট প্রচার করতে
BasePreloadManager.Listenerযোগ করুন। - SNTP ক্লায়েন্ট টাইমআউট পরিবর্তন করার এবং টাইমআউট (#১৫৪০) হলে বিকল্প অ্যাড্রেস আবার চেষ্টা করার অনুমতি দিন।
MediaCodecAdapter.Configuration.flagsসরিয়ে দিন কারণ ফিল্ডটি সবসময় শূন্য ছিল।- Wear OS API 35+ (যেখানে ডিভাইস এই ফিচারের জন্য বিজ্ঞাপন দেখায়) ভার্সনে প্লেব্যাকের জন্য ব্যবহারকারীকে বিল্ট-ইন স্পিকার বেছে নেওয়ার অনুমতি দিন।
- অডিও ফোকাস হ্যান্ডলিং চালু না হওয়া পর্যন্ত
Context.getSystemService(Context.AUDIO_SERVICE)-এ ব্লকিং কল স্থগিত করুন। This ensures the blocking call isn't done if audio focus handling is not enabled (#১৬১৬). - লোড করা না গেলে বাফার করা সময়সীমা নির্বিশেষে প্লেব্যাক করার অনুমতি দিন (#1571)।
AnalyticsListener.onRendererReadyChanged()যোগ করুন যাতে ব্যক্তিগত রেন্ডারার প্লেব্যাক রেডি করার অনুমতি দিলে সিগন্যাল পাওয়া যায়।MediaCodecঅ্যাসিঙ্ক্রোনাস মোডে (API 31+ ভার্সনে ডিফল্ট আচরণ) অপারেট করার সময়MediaCodec.CryptoExceptionকখনও কখনও "অপ্রত্যাশিত রানটাইম সমস্যা" হিসেবে রিপোর্ট করা হয়, এই সমস্যার সমাধান করুন।bufferedPositionUs-এর পরিবর্তেbufferedDurationUsপাস কিনুন, সাথেPreloadMediaSource.PreloadControl.onContinueLoadingRequested()। এছাড়াও,DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS-কেDefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS-এ পরিবর্তন করে, তারপর অ্যাপকে ডিফল্ট শুরুর পজিশন থেকে নির্দিষ্ট সময়সীমা দেখায় এমন একটি ভ্যালু পাস করতে হবে যার জন্য সংশ্লিষ্ট মিডিয়া সোর্সকে পজিশনের পরিবর্তে এই IntDef-এর সাথে প্রিলোড করতে হবে।ForwardingRendererইমপ্লিমেন্টেশন যোগ করুন যা সব মেথড কল অন্য রেন্ডারারে ফরওয়ার্ড করে (১৭০৩)।- প্লেলিস্টের পরবর্তী আইটেমের জন্য প্লেলিস্ট প্রিলোড করার সুবিধা যোগ করুন। অ্যাপ
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)-এ কল করে প্রিলোডিং চালু করতে পারে। ডিফল্ট হিসেবে প্রিলোড করার সুবিধা বন্ধ করা থাকে। চালু করা থাকলে এবং প্লেব্যাকে বাধা না দিতে,DefaultLoadControlপ্রিলোডিং সীমাবদ্ধ করে যাতে প্লেব্যাক লোড না হলে তবেই শুরু ও চালিয়ে যাওয়া যায়। অ্যাপ সেই অনুযায়ীLoadControl.shouldContinuePreloading()প্রয়োগ করে এই আচরণ পরিবর্তন করতে পারে (যেমনDefaultLoadControl-এ এই পদ্ধতি ওভাররাইড করার সময়)।LoadControl-এর ডিফল্ট প্রয়োগ, কোনও অ্যাপLoadControl-এর কাস্টম প্রয়োগ ব্যবহার করলে, প্রিলোডিং বন্ধ করে দেয়। - সাবক্লাস লিসনারের ইভেন্ট ইনভোক করার অনুমতি দিতে
MediaSourceEventListener.EventDispatcher.dispatchEvent()পদ্ধতি যোগ করুন (১৭৩৬)। DefaultPreloadManager.Builderযোগ করুন যা ধারাবাহিকভাবে শেয়ার করা কনফিগারেশন সহDefaultPreloadManagerএবংExoPlayerইনস্ট্যান্স তৈরি করে।LoadControl.onTracksSelected()থেকেRenderer[]প্যারামিটার সরিয়ে দিন কারণDefaultLoadControlপ্রয়োগের মাধ্যমেExoTrackSelection[]থেকে স্ট্রিমের ধরন উদ্ধার করা যেতে পারে।DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])বন্ধ করা হয়েছে এবং ওভাররাইড করা আটকাতে পদ্ধতিকে চূড়ান্ত হিসেবে চিহ্নিত করা হয়েছে। পরিবর্তে নতুনDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])ব্যবহার করা উচিত।MergingMediaSource-এ অপ্রধান সোর্স থেকেMediaSourceEventListenerটি ইভেন্ট সম্পর্কে রিপোর্ট করো। এর ফলে সাইডলোড করা সাবটাইটেলের (MediaItem.LocalConfiguration.subtitleConfigurations-এর মাধ্যমে যোগ করা) ক্ষেত্রে লোড শুরু/সমস্যা/বাতিল/সম্পূর্ণ হওয়ার ইভেন্ট রিপোর্ট করা হবে, যাAnalyticsListenerথেকে নির্গত ডুপ্লিকেট লোড ইভেন্ট হিসেবে দেখা যেতে পারে।- সাবটাইটেল ও মেটাডেটা সংক্রান্ত সমস্যার কারণে প্লেব্যাক সম্পূর্ণ বন্ধ হয়ে যাওয়া আটকান।
পরিবর্তে, সমস্যাযুক্ত ট্র্যাকটি বন্ধ করা হয় এবং বাকি ট্র্যাকগুলির প্লেব্যাক
চালিয়ে যাওয়া হয়
(#১৭২২)।
- নতুন সাবটাইটেল ম্যানেজ করার সময় (এক্সট্র্যাক্ট করার সময়), সংশ্লিষ্ট পার্স (যেমন,
ভুল সাবটাইটেল ডেটা) এবং লোড সংক্রান্ত সমস্যা (যেমন, HTTP 404)
onLoadErrorকলব্যাকের মাধ্যমে দেখানো হয়। - পুরনো সাবটাইটেল হ্যান্ডলিংয়ের (রেন্ডারিংয়ের সময়) ক্ষেত্রে, শুধু লোড সংক্রান্ত সমস্যা
onLoadErrorকলব্যাকের মাধ্যমে দেখানো হয়, যেখানে পার্স সংক্রান্ত সমস্যা নীরবে উপেক্ষা করা হয় (এটি আগে থেকেই আছে)।
- নতুন সাবটাইটেল ম্যানেজ করার সময় (এক্সট্র্যাক্ট করার সময়), সংশ্লিষ্ট পার্স (যেমন,
ভুল সাবটাইটেল ডেটা) এবং লোড সংক্রান্ত সমস্যা (যেমন, HTTP 404)
- মাল্টি-পিরিয়ড DASH স্ট্রিমে প্লেলিস্ট আইটেম বা পিরিয়ডের সময়সীমা আসল কন্টেন্টের সাথে না মিললে আইটেমের শেষে ফ্রেম ফ্রিজ হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#১৬৯৮)।
SntpClient-এ একটি সেটার যোগ করুন যাতে শেষ আপডেটের পর থেকে অতিবাহিত হওয়া সর্বোচ্চ সময় সেট করা যায়, যার পরে ক্লায়েন্ট আবার শুরু করা হয় (#1794)।
- এখন প্রতিটি মিডিয়া আইটেমের জন্য
- ট্রান্সফর্মার:
SurfaceAssetLoaderযোগ করুন, যাSurface-এর মাধ্যমে Transformer-এ ভিডিও ডেটা কিউতে যোগ করার সুবিধা দেয়।ImageAssetLoaderAssetLoader.onError-এর মাধ্যমে কাজ করে না এমন ইনপুট সম্পর্কে রিপোর্ট করেIllegalStateExceptionদেখানোর পরিবর্তে।- ছবি এক্সপোর্ট করার জন্য
MediaItem.Builder.setImageDurationMsব্যবহার করে ছবির সময়সীমা সেট করা বাধ্যতামূলক করুন। - অডিও EditedMediaItems-এর সিকোয়েন্সে গ্যাপের জন্য এক্সপোর্ট সাপোর্ট যোগ করুন।
- ট্র্যাক বেছে নেওয়া:
DefaultTrackSelector: অন্যান্য ফ্যাক্টর সমান হলে চ্যানেল-ভিত্তিক অডিওর চেয়ে অবজেক্ট-ভিত্তিক অডিওকে বেশি গুরুত্ব দিন।
- এক্সট্র্যাক্টর:
Mp4ExtractorএবংFragmentedMp4Extractor-কে H264 স্যাম্পেল শনাক্ত করার অনুমতি দিন যা পরবর্তী স্যাম্পেল দ্বারা রেফারেন্স হিসেবে ব্যবহার করা হয় না।AmrExtractor-এ ইন্ডেক্স-ভিত্তিক খোঁজার সুবিধা চালু করার বিকল্প যোগ করুন।- বৈধ ফ্রেমের মধ্যে ১২৮kB-এর বেশি সাইজের MP3 ফাইলকে ট্রাঙ্কেট করা হিসেবে বিবেচনা করুন
(ভুল হিসেবে নয়)। এর অর্থ হল, শেষে নন-MP3 ডেটা সহ ফাইল,
MP3 বাইটের দৈর্ঘ্য নির্দেশ করার জন্য অন্য কোনও মেটাডেটা ছাড়াই, এখন
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}(#১৫৬৩) সহ ব্যর্থ হওয়ার পরিবর্তে MP3 ডেটার শেষে প্লেব্যাক বন্ধ করুন। - MP4 ফাইলে এডিট লিস্ট প্রসেস করার সময় নন-কীফ্রেম মিডিয়া শুরুর পজিশনের জন্য প্রিরোল স্যাম্পেল হ্যান্ডলিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#১৬৫৯)।
Mp4ExtractorওFragmentedMp4Extractor-এmdhdবক্স থেকে মিডিয়ার সময়সীমা ব্যবহার করে ফ্রেম রেট গণনা উন্নত করা হয়েছে (#১৫৩১)।- MP4 এডিট লিস্টে
media_time-এর ভুল স্কেলিং ঠিক করা হয়েছে। মুভি টাইমস্কেল ব্যবহার করেsegment_durationআগে থেকেই সঠিকভাবে স্কেল করা থাকলেও,media_timeএখন ট্র্যাক টাইমস্কেল ব্যবহার করে সঠিকভাবে স্কেল করা হয়েছে, যেমনটি MP4 ফর্ম্যাট স্ট্যান্ডার্ড (#1792) দ্বারা নির্দিষ্ট করা হয়েছে। - এডিট লিস্ট (#১৭৯৭) সহ MP4-এর জন্য
endIndicesগণনায় আউট-অফ-অর্ডার ফ্রেম ম্যানেজ করুন। -1ভ্যালু (#১৮১৯) ম্যানেজ করতে MP4 ফাইলেরmdhdবক্সে মিডিয়া ডিউরেশন পার্সিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে।- H.263 ভিডিওর জন্য MP4 ফাইলে
h263বক্স শনাক্ত করার জন্য সহায়তা যোগ করুন (#১৮২১)। - AC-4 লেভেল-৪ ISO বেস মিডিয়া ফাইল ফর্ম্যাট সাপোর্ট যোগ করা হয়েছে (#১২৬৫)।
- DataSource:
- API লেভেল ৩৪-এর পরিবর্তে ভার্সন S
এক্সটেনশন ৭ থেকে শুরু করে ব্যবহার করার অনুমতি দিতে
HttpEngineDataSourceআপডেট করুন (#১২৬২)। DataSourceContractTest:DataSource.getUri()যে সমাধান করা URI (ডকুমেন্ট করা অনুযায়ী) ফেরত দেয় তা নিশ্চিত করুন। যেখানে এটি অনুরোধ করা URI-এর থেকে আলাদা, সেখানে টেস্টগুলি নতুনDataSourceContractTest.TestResource.Builder.setResolvedUri()পদ্ধতি ব্যবহার করে এটি নির্দেশ করতে পারে।DataSourceContractTest:open()-এ কল করার চেষ্টা ব্যর্থ হওয়ার পরে ('খুঁজে পাওয়া যায়নি' রিসোর্সের কারণে) এবং পরবর্তীclose()কল করার আগেDataSource.getUri()এবংgetResponseHeaders()তাদের 'খোলা' ভ্যালু ফিরিয়ে দেয় বলে দাবি করুন।DataSourceContractTest.getNotFoundResources()ওভাররাইড করলে টেস্ট সাব-ক্লাস একাধিক 'খুঁজে পাওয়া যায়নি' রিসোর্স প্রদান করতে পারে এবং প্রত্যাশিত যেকোনও হেডারও প্রদান করতে পারে। এটি HTTP 404 (হেডার সহ) এবং "সার্ভার খুঁজে পাওয়া যায়নি" (হেডার ছাড়া) এর মধ্যে পার্থক্য করতে সাহায্য করে।
- API লেভেল ৩৪-এর পরিবর্তে ভার্সন S
এক্সটেনশন ৭ থেকে শুরু করে ব্যবহার করার অনুমতি দিতে
- অডিও:
- মিডিয়াতে CTA-2075 লাউডনেস মেটাডেটা থাকলে, কোডেকে তা অটোমেটিক কনফিগার করুন।
- সিক করার সময় ভলিউম যেন মসৃণভাবে কমে যায় তা নিশ্চিত করুন।
- সিক করার সময় পপ সাউন্ডের সমস্যা সমাধান করুন।
- Sonic-এর টাইম-স্ট্রেচিং/পিচ-শিফ্টিং অ্যালগরিদমের জন্য ট্রাঙ্কেশন সংক্রান্ত সমস্যার অ্যাকুমুলেশন ঠিক করুন।
SpeedChangingAudioProcessor-এ বাগ সংক্রান্ত সমস্যার সমাধান করুন যার কারণে আউটপুট ফ্রেম ড্রপ হয়।
- ভিডিও:
MediaCodecVideoRendererএমন স্যাম্পেল ডিকোড করা এড়িয়ে যায় যেগুলি রেন্ডার করা হয়নি বা অন্য স্যাম্পেল দ্বারা রেফারেন্স হিসেবে ব্যবহার করা হয়নি।- API 35 ও তার পরবর্তী ভার্সনে,
MediaCodecAdapterএখনnullSurfaceconfigure-এ পেতে পারে এবং নতুন পদ্ধতিdetachOutputSurface-এ কল করতে পারে যাতে কোডেক এটি (MediaCodecInfo.detachedSurfaceSupported) সাপোর্ট করলে আগে সেট করাSurfaceসরানো যায়। onOutputFormatChangedপ্রসেস করার সময়MediaCodecAdapter-এর দেওয়া পিক্সেল অ্যাস্পেক্ট রেশিওর ভ্যালু ব্যবহার করুন (#১৩৭১)।- Galaxy Tab S7 FE-তে ডিভাইস সংক্রান্ত সমস্যার জন্য ওয়ার্কঅ্যারাউন্ড যোগ করুন যার ফলে 60fps নিরাপদ H264 স্ট্রিম কাজ করে না বলে চিহ্নিত করা হয় (#১৬১৯)।
- শেষ স্যাম্পেলের পরে এন্ড-অফ-স্ট্রিম সিগন্যাল না ফিরিয়ে আটকে যাওয়া কোডেকগুলির জন্য ওয়ার্কঅ্যারাউন্ড যোগ করুন।
- টেক্সট:
- একটি কাস্টম
VoiceSpanযোগ করুন এবং WebVTT ভয়েস স্প্যান-এর জন্য এটি পপুলেট করুন (#1632)। - HLS-এ WebVTT-তে খুব বড় সাবটাইটেল টাইমস্ট্যাম্প (যা মাইক্রোসেকেন্ড হিসেবে
দেখানো হলে এবং
90,000MPEG টাইমবেস দিয়ে গুণ করা হলে ৬৪-বিটlong-এর সীমা অতিক্রম করে) দেখানো হচ্ছে কিনা তা নিশ্চিত করুন (#১৭৬৩)। - Dolby Vision কন্টেন্টে CEA-608 সাবটাইটেল কাজ করে (#১৮২০)।
- CEA-608 সাবটাইটেল চালু করা থাকলে, DASH মাল্টি-পিরিয়ড স্ট্রিমে প্লেব্যাক হ্যাং হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#১৮৬৩)।
- একটি কাস্টম
- মেটাডেটা:
- icy বা vnd.dvb.ait কন্টেন্ট আছে এমন ট্র্যাকে
C.TRACK_TYPE_METADATAধরন অ্যাসাইন করুন।
- icy বা vnd.dvb.ait কন্টেন্ট আছে এমন ট্র্যাকে
- ছবি:
- Glide বা Coil-এর মতো এক্সটার্নাল ইমেজ লোডিং লাইব্রেরির সাথে
সহজ ইন্টিগ্রেশনের জন্য
ExternallyLoadedImageDecoderযোগ করুন।
- Glide বা Coil-এর মতো এক্সটার্নাল ইমেজ লোডিং লাইব্রেরির সাথে
সহজ ইন্টিগ্রেশনের জন্য
- DataSource:
FileDescriptorDataSourceযোগ করুন, একটি নতুনDataSourceযাFileDescriptorথেকে পড়তে ব্যবহার করা যেতে পারে (#3757)।
- প্রভাব:
- ছোট
SurfaceTextureস্কেলিংয়ের জন্যDefaultVideoFrameProcessorওয়ার্কঅ্যারাউন্ড যোগ করুন।SurfaceTexture-এ ছোট স্কেলিং অন্তর্ভুক্ত থাকতে পারে যা ক্রপ করা বাফারের প্রান্তের চারপাশে ১-টেক্সেল বর্ডার কেটে দেয়। এটি এখন এমনভাবে ম্যানেজ করা হয় যাতে আউটপুট প্রত্যাশার কাছাকাছি হয়। DefaultVideoFrameProcessor.queueInputBitmap()-এর স্পিড বাড়ান। এর ফলে,Transformer-এর মাধ্যমে ছবিকে ভিডিওতে এক্সপোর্ট করার প্রসেস আরও দ্রুত হয়।
- ছোট
- IMA এক্সটেনশন:
- প্লেলিস্ট মুছে দেওয়ার সময়
ImaServerSideAdInsertionMediaSource-এArrayIndexOutOfBoundsExceptionহতে পারে, এই সমস্যার সমাধান করা হয়েছে। - সার্ভার-সাইডে প্রি-রোল ছাড়া ইনসার্ট করা DAI স্ট্রিম, শেষ মিড-রোল
পার হয়ে যাওয়ার পরে চালালে
ArrayIndexOutOfBoundsExceptionহতে পারে, এই সমস্যার সমাধান করা হয়েছে (#১৭৪১)।
- প্লেলিস্ট মুছে দেওয়ার সময়
- সেশন:
- এই পদ্ধতি ওভাররাইড করে প্লেব্যাক আবার শুরু করার জন্য আসা প্লে কমান্ড
অ্যাপকে দমন করার অনুমতি দিতে
MediaButtonReceiver.shouldStartForegroundService(Intent)যোগ করুন। ডিফল্ট হিসেবে, পরিষেবাটি সবসময় চালু থাকে এবং সিস্টেম ক্র্যাশ না করলে প্লেব্যাক বন্ধ করা যায় নাForegroundServiceDidNotStartInTimeException(#1528) দিয়ে। MediaBrowserথেকে পাঠানো কাস্টম কমান্ড, লিগ্যাসি পরিষেবার সাথে কানেক্ট করার সময়,MediaBrowserServiceCompatভ্যারিয়েন্টের পদ্ধতির পরিবর্তেMediaSessionCompat.Callback-এ ডিসপ্যাচ হওয়ার সমস্যার সমাধান করা হয়েছে। এর ফলেMediaBrowser, লিগ্যাসি পরিষেবার মাধ্যমে ফেরত পাঠানো প্রকৃত রিটার্ন ভ্যালু রিসিভ করতে পারেনি (#1474)।- মিডিয়া বোতাম ইনটেন্টের (#১৭৩০) জন্য ব্রডকাস্ট রিসিভার সেট করার সময় নির্দিষ্ট কিছু প্রস্তুতকারকের ডিভাইসের মাধ্যমে থ্রো করা
IllegalArgumentExceptionম্যানেজ করুন। - মিডিয়া আইটেমের জন্য কমান্ড বোতাম যোগ করুন। এটি Media3 API যোগ করে যা
MediaBrowserCompatসহ লিগ্যাসি লাইব্রেরির সাথেCustom browse actionsহিসেবে পরিচিত ছিল। মনে রাখবেন, Media3-এর সাথে মিডিয়া আইটেমের জন্য কমান্ড বোতামMediaBrowserএবংMediaController, দুটির জন্যই উপলভ্য। আরও দেখুন কাস্টম ব্রাউজ অ্যাকশন প্রয়োগ করুন। * Media3 কন্ট্রোলার কখনও কখনওplay()-এর অনুরোধ করার পরে সেশন অ্যাপকে ফোরগ্রাউন্ড সার্ভিস চালু করতে না দেওয়ার সমস্যা সমাধান করা হয়েছে। CommandButton.Builder.setIconUri-কে শুধু কন্টেন্ট Uri গ্রহণ করার জন্য সীমাবদ্ধ করুন।- পুরনো
MediaBrowserCompat-এর সাথে কানেক্ট করার সময়, Media3 ব্রাউজারের কানেকশন সংক্রান্ত ইঙ্গিত প্রাথমিকMediaBrowserCompat-এ পাস করুন।onGetRoot()-এ প্রথম কলের সাথে রুট হিন্ট হিসেবে পাস করা কানেকশন হিন্ট পরিষেবাটি পেতে পারে। - ব্রাউজার
parentid-এ সাবস্ক্রাইব করার পরে, পুরনো ব্রাউজার পরিষেবার সাথে কানেক্ট করাMediaBrowser, পরিষেবার পাঠানো কোনও ত্রুটি পায়নি, এই সমস্যার সমাধান করুন। - ইন্টারঅপারেবিলিটি আচরণ উন্নত করুন, যাতে একটি Media3 ব্রাউজার যা
একটি লিগ্যাসি
MediaBrowserService-এর সাথে কানেক্ট করা আছে সেটি একটিparentId-এর চাইল্ডকে দুবার অনুরোধ না করে যখন একটি পেরেন্টকে সাবস্ক্রাইব করে।
- এই পদ্ধতি ওভাররাইড করে প্লেব্যাক আবার শুরু করার জন্য আসা প্লে কমান্ড
অ্যাপকে দমন করার অনুমতি দিতে
- UI:
- XML-ভিত্তিক শেয়ার করা ট্রানজিশনে সমস্যার কারণে
PlayerView-in-Compose-AndroidViewওয়ার্কঅ্যারাউন্ডে স্ট্রেচ/ক্রপ করা ভিডিও চালু করুন।PlayerViewব্যবহার করা অ্যাপেরAndroidViewভিতরেPlayerView.setEnableComposeSurfaceSyncWorkaround-এ কল করতে হবে যাতে অপ্ট-ইন করা যায় (#১২৩৭, #১৫৯৪)। - চাহিদা অনুযায়ী ফুলস্ক্রিন বোতামের আইকন আপডেট করার অনুমতি দিতে
PlayerView-এsetFullscreenButtonStateযোগ করুন, অর্থাৎ আউট-অফ-ব্যান্ড এবং ক্লিক ইন্টার্যাকশনে প্রতিক্রিয়াশীল নয় (#১৫৯০, #১৮৪)। - অ্যাপ-নির্ধারিত টেক্সট ট্র্যাক বেছে নেওয়ার পছন্দ থাকলে, টেক্সট বেছে নেওয়ার ক্ষেত্রে "কোনওটিই নয়" বিকল্প কাজ না করার সমস্যার সমাধান করুন।
- XML-ভিত্তিক শেয়ার করা ট্রানজিশনে সমস্যার কারণে
- DASH এক্সটেনশন:
- সেগমেন্টের মাঝখানে শুরু হওয়া পিরিয়ডের জন্য সহায়তা যোগ করুন (#১৪৪০)।
- স্মুথ স্ট্রিমিং এক্সটেনশন:
- টেক্সট ট্র্যাক সহ SmoothStreaming স্ট্রিম চালানোর সময়
Bad magic number for Bundleসমস্যার সমাধান করা হয়েছে (#১৭৭৯)।
- টেক্সট ট্র্যাক সহ SmoothStreaming স্ট্রিম চালানোর সময়
- RTSP এক্সটেনশন:
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, ইত্যাদি):
- IAMF ডিকোডার মডিউল যোগ করুন, যা অডিও সিন্থেসাইজ করার জন্য libiamf নেটিভ লাইব্রেরি ব্যবহার করে IAMF ট্র্যাক সহ MP4 ফাইল প্লেব্যাকের জন্য সহায়তা প্রদান করে।
- প্লেব্যাক স্টেরিও লেআউটের পাশাপাশি ৫.১ স্পেশিয়ালাইজেশন সহ চালু করা হয়েছে, এর সাথে ঐচ্ছিক হেড ট্র্যাকিং চালু করা হয়েছে, তবে বাইনিউরাল প্লেব্যাক সাপোর্ট বর্তমানে উপলভ্য নেই।
- Android 15-এ ডিকোডার এক্সটেনশনের জন্য ১৬ কেবি পৃষ্ঠা সংক্রান্ত সহায়তা যোগ করা হয়েছে (#১৬৮৫)।
- IAMF ডিকোডার মডিউল যোগ করুন, যা অডিও সিন্থেসাইজ করার জন্য libiamf নেটিভ লাইব্রেরি ব্যবহার করে IAMF ট্র্যাক সহ MP4 ফাইল প্লেব্যাকের জন্য সহায়তা প্রদান করে।
- Cast এক্সটেনশন:
- CastSession ডিসকানেক্ট হওয়ার পরে টাইমলাইন ক্লিন করা বন্ধ করুন, যা ডিসকানেক্ট হওয়ার পরে প্রেরক অ্যাপকে লোকালি প্লেব্যাক আবার চালু করতে দেয়।
Contextপ্রদান করা হলে CastPlayer-এরDeviceInfoপপুলেট করুন। এটিMediaSession-কেRoutingSession-এর সাথে লিঙ্ক করার সুবিধা দেয়, যা আউটপুট সুইচার ইন্টিগ্রেট করার জন্য প্রয়োজন (#১০৫৬)।
- টেস্ট ইউটিলিটি:
DataSourceContractTest-এ এখন যাচাই করার জন্য টেস্ট অন্তর্ভুক্ত করা হয়েছে:- ইনপুট স্ট্রিম
read positionআপডেট করা হয়েছে। - আউটপুট বাফার
offsetসঠিকভাবে প্রয়োগ করা হয়েছে।
- ইনপুট স্ট্রিম
- ডেমো অ্যাপ
- ডেমো শর্ট-ফর্ম অ্যাপে মেমরি লিক সংক্রান্ত সমস্যার সমাধান করুন (#১৮৩৯)।
- বাতিল করা চিহ্ন সরান:
Player.hasPrevious,Player.hasPreviousWindow()-এর মতো বন্ধ হয়ে যাওয়া ফিচার সরিয়ে দিন। এর পরিবর্তেPlayer.hasPreviousMediaItem()ব্যবহার করুন।- অবচিত
Player.previous()পদ্ধতি সরান। পরিবর্তেPlayer.seekToPreviousMediaItem()ব্যবহার করুন। - অবচিত করা
DrmSessionEventListener.onDrmSessionAcquiredপদ্ধতি সরিয়ে দিন৷ - বন্ধ হয়ে যাওয়া
DefaultEncoderFactoryকনস্ট্রাক্টর সরান। পরিবর্তেDefaultEncoderFactory.Builderব্যবহার করুন।
ভার্সন 1.5.0-rc02
১৯ নভেম্বর, ২০২৪
1.5.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.5.0-rc01
১৩ নভেম্বর, ২০২৪
1.5.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.5.0-beta01
৩০ অক্টোবর, ২০২৪
1.5.0 স্টেবল ভার্সন ব্যবহার করুন।
Version 1.5.0-alpha01
১০ সেপ্টেম্বর, ২০২৪
1.5.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.4.0
ভার্সন ১.৪.১
২৭ আগস্ট, ২০২৪
androidx.media3:media3-*:1.4.1 রিলিজ করা হয়েছে। ভার্সন 1.4.1-এ এইসব
কমিট আছে।
- ExoPlayer:
- এক্সট্র্যাক্টর:
- MP3:
Infoফ্রেমের দৈর্ঘ্য ফিল্ডের উপর ভিত্তি করে ট্রেলিং নন-MP3 ডেটা সঠিকভাবে উপেক্ষা করেSearched too many bytesসমস্যার সমাধান করুন (#১৪৮০)।
- MP3:
- টেক্সট:
- TTML: শতাংশ
tts:fontSizeভ্যালু ম্যানেজ করার বিষয়টি ঠিক করুন যাতে নিশ্চিত করা যায় যে সেগুলি শতাংশtts:fontSizeভ্যালু সহ পেরেন্ট নোড থেকে সঠিকভাবে ইনহেরিট করা হয়েছে। LegacySubtitleUtil-এIndexOutOfBoundsExceptionঠিক করুন, কারণ অনুরোধ করা আউটপুট শুরুর সময়Subtitle-এ চূড়ান্ত ইভেন্টের সময়ের থেকে বেশি বা সমান হওয়ার কেস ভুলভাবে ম্যানেজ করা হয়েছে (#১৫১৬)।
- TTML: শতাংশ
- DRM:
- L1 Widevine কন্টেন্ট চালানোর সময় API 31+ ডিভাইসে
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLEসংক্রান্ত সমস্যার সমাধান করুন। ফ্রেমওয়ার্কেরMediaDrm.requiresSecureDecoderপদ্ধতি (#১৬০৩) অসম্পূর্ণভাবে প্রয়োগ করার কারণে এই সমস্যা হয়েছে।
- L1 Widevine কন্টেন্ট চালানোর সময় API 31+ ডিভাইসে
- প্রভাব:
GlObjectsProvider-এrelease()পদ্ধতি যোগ করুন।
- সেশন:
KEYCODE_HEADSETHOOK-এ ডবল ট্যাপ করার অ্যাকশনকে 'পরের আইটেমে যান' অ্যাকশনে পরিবর্তন করুন, যেমন ডকুমেন্ট করা হয়েছে (#১৪৯৩)।MediaButtonReceiver-এ 'প্লে' কমান্ড হিসেবেKEYCODE_HEADSETHOOKহ্যান্ডেল করুন যখন এটি এড়িয়ে যাওয়ার সিদ্ধান্ত নেবেন যাতেForegroundServiceDidNotStartInTimeException(#১৫৮১) এড়ানো যায়।
- RTSP এক্সটেনশন:
- SDP পার্সিংয়ে ভুল মিডিয়া বিবরণ এড়িয়ে যান (#১০৮৭)।
ভার্সন 1.4.0
২৫ জুলাই, ২০২৪
androidx.media3:media3-*:1.4.0 রিলিজ করা হয়েছে। ভার্সন 1.4.0-এ এইসব
কমিট আছে।
- কমন লাইব্রেরি:
- সম্ভাব্য নো-অপ সিক কল উপেক্ষা করার পরিবর্তে সুরক্ষিত
BasePlayer.seekTo()এবংSimpleBasePlayer.handleSeek()পদ্ধতিতে ফরওয়ার্ড করুন। আপনি কাস্টম প্লেয়ারে এই পদ্ধতিগুলি প্রয়োগ করলে, আপনাকেmediaItemIndex == C.INDEX_UNSET-এর মাধ্যমে এই অতিরিক্ত কলগুলি ম্যানেজ করতে হতে পারে। - উন্নত Java 8 ডিসুগারিংয়ের উপর কম্পাইল ডিপেন্ডেন্সি সরান (#1312)।
MediaItem.Builder.setImageDurationMs()-এ পাস করা সময়সীমা ছবি নয় এমনMediaItem-এর জন্য উপেক্ষা করা হয়েছে কিনা তা নিশ্চিত করুন (ডকুমেন্ট করা অনুযায়ী)।Formatইনস্ট্যান্স সম্পর্কে অ্যাপের প্রদান করা কাস্টম তথ্য স্টোর করতেFormat.customDataযোগ করুন।
- সম্ভাব্য নো-অপ সিক কল উপেক্ষা করার পরিবর্তে সুরক্ষিত
- ExoPlayer:
BasePreloadManagerযোগ করুন যাrankingDataদ্বারা নির্ধারিত অগ্রাধিকারের ভিত্তিতে একাধিক সোর্সের জন্য প্রিলোডিং সমন্বয় করে। এই ক্লাস এক্সটেন্ড করে কাস্টমাইজ করা সম্ভব।DefaultPreloadManagerযোগ করুন যা মেমরিতে সোর্সের মিডিয়া স্যাম্পেল প্রিলোড করতেPreloadMediaSourceব্যবহার করে এবং একটি পূর্ণসংখ্যাrankingDataব্যবহার করে যা UI-তে কোনও আইটেমের ইন্ডেক্স দেখায়।LoadControl-এর বেশিরভাগ পদ্ধতিতেPlayerIdযোগ করুন যাতেLoadControlইমপ্লিমেন্টেশন একাধিক প্লেয়ারকে সাপোর্ট করে।Buffer.isDecodeOnly()এবংC.BUFFER_FLAG_DECODE_ONLYসরিয়ে দিন। এই ফ্ল্যাগ সেট করার কোনও প্রয়োজন নেই কারণ রেন্ডারার ও ডিকোডার টাইমস্ট্যাম্পের ভিত্তিতে বাফার এড়িয়ে যাওয়ার সিদ্ধান্ত নেবে। কাস্টমRendererপ্রয়োগের ক্ষেত্রে বাফার টাইম অন্ততBaseRenderer.getLastResetPositionUs()কিনা তা চেক করে দেখতে হবে, যাতে স্যাম্পেল দেখানো হবে কিনা তা নির্ধারণ করা যায়। প্রয়োজন হলে কাস্টমSimpleDecoderইমপ্লিমেন্টেশনisAtLeastOutputStartTimeUs()চেক করতে পারে অথবা অন্যান্য বাফারকেDecoderOutputBuffer.shouldBeSkippedদিয়ে চিহ্নিত করে সেগুলি এড়িয়ে যেতে পারে।TargetPreloadStatusControl.getTargetPreloadStatus(T)-এর মাধ্যমে একটি নাল ভ্যালু ফিরিয়ে দেওয়ার অনুমতি দিন যাতেMediaSource-কে প্রদত্তrankingData-এর সাথে প্রিলোড না করার নির্দেশ দেওয়া যায়।BasePreloadManager-এremove(MediaSource)যোগ করুন।- প্রিলোড ম্যানেজার ইনস্ট্যান্স রেখে, হোল্ড করা সব সোর্স রিলিজ করতে
reset()-কেBasePreloadManager-এ যোগ করুন। PriorityTaskManager-এ ব্যবহৃত প্রায়োরিটি ভ্যালু এবং API 35 থেকে MediaCodec-এর গুরুত্ব সংজ্ঞায়িত করতেExoPlayer.setPriority()(এবংBuilder.setPriority()) যোগ করুন।- শেষবার রিবাফার করার সময় আপডেট করার সময় হওয়া সমস্যার সমাধান করা হয়েছে যার ফলে
CMCD-তে ভুল
bs(বাফার স্টারভেশন) কী দেখাচ্ছিল (#১১২৪)। - সোর্সটি শেষ পর্যন্ত লোড হয়েছে তা বোঝাতে
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)যোগ করুন। এটিDefaultPreloadManagerএবং কাস্টমPreloadMediaSource.PreloadControlইমপ্লিমেন্টেশনকে পরবর্তী সোর্স প্রিলোড করতে বা অন্যান্য অ্যাকশন নিতে দেয়। - আইটেমের শেষে সাইলেন্স স্কিপ করার ফলে প্লেব্যাক ব্যতিক্রম ট্রিগার হওয়ার সমস্যা সমাধান করা হয়েছে।
- প্রিলোডিংয়ের সময়সীমা বাতিল করতে
PreloadMediaSource-এclearযোগ করুন। - নতুন ত্রুটি কোড
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMEDযোগ করুন যা ব্যবহার করা হয় যখন কোডেক রিসোর্স আরও বেশি অগ্রাধিকারের টাস্কের জন্য রিক্লেম করা হয়। - প্রাথমিক কন্টেন্ট মিডিয়া প্রস্তুতি সম্পূর্ণ হওয়ার আগে
AdsMediaSource-কে প্রিরোল বিজ্ঞাপন লোড করতে দিন (#১৩৫৮)। - ম্যানিফেস্ট থেকে আসল সময়সীমা সরিয়ে দেওয়ার পরে মাল্টি-পিরিয়ড DASH লাইভ স্ট্রিম আবার প্রস্তুত করার সময় প্লেব্যাক
STATE_ENDED-এ চলে যাওয়ার সমস্যা সমাধান করুন। PreloadMediaSource.PreloadControl-এonTimelineRefreshed()-এর নাম পরিবর্তন করেonSourcePrepared()এবংonPrepared()-এর নাম পরিবর্তন করেonTracksSelected()করুন। এছাড়াও, সেই অনুযায়ীDefaultPreloadManager.Stage-এ IntDefs-এর নাম পরিবর্তন করুন।- CPU ওয়েক-সাইকেলের সাথে কাজ আরও ভালোভাবে অ্যালাইন করতে এবং রেন্ডারার প্রগ্রেস করতে না পারা পর্যন্ত ওয়েক আপে দেরি করতে ডায়নামিক শিডিউলিংয়ের জন্য এক্সপেরিমেন্টাল সহায়তা যোগ করুন।
আপনার ExoPlayer ইনস্ট্যান্স সেট-আপ করার সময়
experimentalSetDynamicSchedulingEnabled()ব্যবহার করে আপনি এটি চালু করতে পারবেন। Renderer.getDurationToProgressUs()যোগ করুন।Rendererএই পদ্ধতি প্রয়োগ করতে পারে যাতে ExoPlayer-এ সেই সময়কাল ফিরিয়ে দেওয়া যায় যে সময়কাল পর্যন্ত প্লেব্যাক অবশ্যই এগিয়ে যেতে হবে যাতে রেন্ডারার প্রগ্রেস করতে পারে।ExoPlayer-এর সাথেexperimentalSetDynamicSchedulingEnabled()সেট করা থাকলে,ExoPlayerএই পদ্ধতিকে কল করবে যখন এটি কাজের টাস্ক শিডিউল করার সময় গণনা করবে।MediaCodecRenderer-এর ব্যবহারের জন্য ইনপুট ও আউটপুট বাফার উপলভ্য হলে, সতর্ক করার জন্যMediaCodecAdapter#OnBufferAvailableListenerযোগ করুন। এইসব কলব্যাক পাওয়ার সময়MediaCodecRenderer,ExoPlayer-কে সিগন্যাল পাঠাবে এবংExoPlayerযদিexperimentalSetDynamicSchedulingEnabled()-এর সাথে সেট করা থাকে, তাহলেExoPlayerতার ওয়ার্ক লুপ শিডিউল করবে যাতে রেন্ডারার প্রগ্রেস করতে পারে।- স্বতন্ত্র প্যারামিটারের পরিবর্তে
LoadControlপদ্ধতির জন্য ডেটা ক্লাস ব্যবহার করুন। Exoplayer.release()-কে কল করা হয়েছে কিনা তা চেক করতেExoPlayer.isReleased()যোগ করুন।ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()যোগ করুন যাতে সর্বাধিক পজিশন কনফিগার করা যায় যার জন্যseekToPrevious()আগের আইটেমে (#1425) যায়।- অডিও ফোকাস সংক্রান্ত কিছু অসঙ্গতি ঠিক করা হয়েছে, যেমন প্লেয়ার পজ করা থাকলে সম্পূর্ণ বা ক্ষণস্থায়ী ফোকাস লস রিপোর্ট না করা (#1436)।
- প্রাথমিক প্রস্তুতিমূলক ধাপের পরে এক্সট্র্যাক্টর অতিরিক্ত ট্র্যাক রিপোর্ট করার কারণে
সম্ভাব্য
IndexOutOfBoundsExceptionসংক্রান্ত সমস্যার সমাধান করা (#১৪৭৬)। ExoPlayer.setVideoEffect()-এEffectsরেন্ডারার অফসেট সরিয়ে টাইমস্ট্যাম্প পাবে (#১০৯৮)।- অন্য প্লেলিস্ট আইটেম পড়ার সময় প্লেয়ারে হওয়া সম্ভাব্য
IllegalArgumentExceptionসমস্যার সমাধান করা হয়েছে (#১৪৮৩)।
- ট্রান্সফর্মার:
ExportResult-এaudioConversionProcessএবংvideoConversionProcessযোগ করুন, যা আউটপুট ফাইলে সংশ্লিষ্ট ট্র্যাক কীভাবে তৈরি করা হয়েছে তা নির্দেশ করে।- ট্রিম অপ্টিমাইজেশন H.264 লেভেল চেক শিথিল করুন।
- একটি সিকোয়েন্সে SDR ও HDR ইনপুট মিডিয়ার মধ্যে পরিবর্তন করার জন্য সহায়তা যোগ করুন।
- কম্পোজিশন-লেভেল অডিও এফেক্টের জন্য সহায়তা যোগ করুন।
- Ultra HDR ছবিকে HDR ভিডিওতে ট্রান্সকোড করার জন্য সহায়তা যোগ করুন।
- রিসেট ও আবার ব্যবহার করার পরে
DefaultAudioMixerসঠিক পরিমাণ বাইট আউটপুট না করার সমস্যা সমাধান করুন। - ডিকোডার বাগের সমাধান করা হয়েছে যেখানে PCM ইনপুট ম্যানেজ করার সময় অডিও চ্যানেলের সংখ্যা স্টেরিওতে সীমাবদ্ধ ছিল।
ExoPlayerAssetLoader-এ ট্র্যাক বেছে নেওয়ার সময়, অডিও চ্যানেল গণনার সীমাবদ্ধতা উপেক্ষা করুন কারণ সেগুলি শুধুমাত্র প্লেব্যাকের ক্ষেত্রে প্রযোজ্য।androidx.media3.transformer.Muxerইন্টারফেসের পরিবর্তেandroidx.media3.muxer.Muxerব্যবহার করুন এবংandroidx.media3.transformer.Muxerসরিয়ে দিন।- কন্টেন্ট URI স্কিম থেকে HEIC ছবি লোড করার সমস্যা সমাধান করা। (#১৩৭৩)।
- AV সিঙ্ক উন্নত করতে
AudioGraphInput-এ অডিও ট্র্যাকের সময়সীমা অ্যাডজাস্ট করুন। ExportResult.processedInputsফিল্ড সরান। আপনি যদি কোডেক বিবরণের জন্য এই ফিল্ড ব্যবহার করেন, তাহলে পরিবর্তেDefaultDecoderFactory.listenerব্যবহার করুন। কোডেক ব্যতিক্রমের ক্ষেত্রে, কোডেক সংক্রান্ত বিবরণExportException.codecInfo-এ উপলভ্য হবে।
- এক্সট্র্যাক্টর:
- MPEG-TS: স্যাম্পেল সারিতে স্ট্রিমের শেষ অ্যাক্সেস ইউনিট পাস করে শেষ ফ্রেম রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করে পরিবর্তনটি রোল ফরওয়ার্ড করুন (#৭৯০৯)। শুধুমাত্র I-ফ্রেম HLS স্ট্রিম(#১১৫০) এবং H.262 HLS স্ট্রিম(#১১২৬)-এ যেসব সমস্যা দেখা দিয়েছে, সেগুলি সমাধান করার জন্য ফিক্স অন্তর্ভুক্ত করা হয়েছে।
- MP3: অন্তর্নিহিত স্ট্রিম (যেমন ফাইলের সাইজ বা HTTP
Content-Lengthহেডার) দ্বারা রিপোর্ট করা সাইজের চেয়েInfoফ্রেম থেকে ডেটার সাইজকে অগ্রাধিকার দিন। এটি কনস্ট্যান্ট বিটরেট সিকিং গণনা থেকে প্লে করা যায় না এমন ট্রেলার ডেটা (যেমন, অ্যালবাম আর্টওয়ার্ক) বাদ দিতে সাহায্য করে, যার ফলে সিকিং আরও নির্ভুল হয় (#১৩৭৬)। - MP3: কনস্ট্যান্ট বিটরেট খোঁজার জন্য গড় বিটরেট গণনা করতে,
Infoফ্রেমের (যদি থাকে) পরে ফ্রেমের বিটরেট থেকে এক্সট্রাপোলেট করার পরিবর্তে,Infoফ্রেমে ফ্রেমের সংখ্যা এবং অন্যান্য ডেটা ব্যবহার করুন, যা কৃত্রিমভাবে ছোট হতে পারে, যেমনPCUTফ্রেম (#১৩৭৬)। - AVI কন্টেনারে পিসিএম অডিও ফর্ম্যাট এক্সট্র্যাকশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
- অডিও:
- পাসথ্রু প্লেব্যাকের জন্য DTS:X প্রোফাইল ২ এনকোডিং অ্যাট্রিবিউট সংক্রান্ত সমস্যার সমাধান করা (#১২৯৯)।
- অফলোড করা প্লেব্যাকের জন্য,
AudioTrack.stop()কল করার আগেDefaultAudioSink-এ স্ট্রিম সম্পূর্ণ হওয়ার জন্য ট্র্যাকিং ফিল্ড রিসেট করুন যাতেAudioTrack.StreamEventCallback#onPresentationEndedসঠিকভাবে শনাক্ত করতে পারে যে কখন সব বাকি থাকা ডেটা চালানো হয়েছে। SilenceSkippingAudioProcessor-এ থাকা সমস্যার সমাধান করুন যেখানে বিভিন্ন অডিও ফর্ম্যাটের (যেমন, স্টিরিও থেকে মোনো) মধ্যে ট্রানজিশন প্রসেসরকে একটি ব্যতিক্রম (#১৩৫২) থ্রো করতে বাধ্য করতে পারে।MediaCodecAudioRenderer.getDurationToProgressUs()প্রয়োগ করুন যাতে ExoPlayer ডায়নামিকভাবে এর প্রধান কাজের লুপ শিডিউল করতে পারে যখন MediaCodecAudioRenderer প্রগ্রেস করতে পারে।
- ভিডিও:
- প্লেব্যাক চলাকালীন সারফেস পরিবর্তন করার সময়
Listener.onRenderedFirstFrame()খুব তাড়াতাড়ি চলে আসার সমস্যা সমাধান করুন। - প্রয়োজন হলে, Dolby Vision-এর জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন যাতে মানানসই AV1 ডিকোডার ব্যবহার করা যায় (#১৩৮৯)।
- ভিডিও রেন্ডারার মিড-প্লেব্যাক চালু করার কারণে হতে পারে এমন কোডেক ব্যতিক্রম ঠিক করুন।
- প্লেব্যাক চলাকালীন সারফেস পরিবর্তন করার সময়
- টেক্সট:
- সিক পজিশনের আগে শুরু হওয়া সাবটাইটেল স্কিপ হয়ে যাওয়ার সমস্যার সমাধান করা হয়েছে। এই সমস্যাটি শুধুমাত্র Media3 1.4.0-alpha01-এ দেখা গেছে।
- ডিফল্ট সাবটাইটেল পার্সিং আচরণ পরিবর্তন করুন যাতে এটি রেন্ডারিংয়ের পরিবর্তে
এক্সট্র্যাকশনের সময় ঘটে (এক্সট্র্যাকশন এবং রেন্ডারিংয়ের মধ্যে পার্থক্যের জন্য
ExoPlayer-এর আর্কিটেকচার
ডায়াগ্রাম
দেখুন)।
- উভয়
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)এবংTextRenderer.experimentalSetLegacyDecodingEnabled(true)কল করে এই পরিবর্তন ওভাররাইড করা যেতে পারে।ExoPlayerইনস্ট্যান্সে এইসব কম্পোনেন্ট কীভাবে প্লাম্ব করতে হয় তা জানতে কাস্টমাইজেশন সংক্রান্ত ডকুমেন্ট দেখুন। এইসব পদ্ধতি (এবং সাবটাইটেল ডিকোডিংয়ের পুরনো ভার্সনের জন্য সব সহায়তা) ভবিষ্যতে রিলিজের সময় সরিয়ে দেওয়া হবে। - কাস্টম
SubtitleDecoderইমপ্লিমেন্টেশন সহ অ্যাপগুলিকে পরিবর্তেSubtitleParserইমপ্লিমেন্ট করার জন্য আপডেট করতে হবে (এবংSubtitleDecoderFactory-এর পরিবর্তেSubtitleParser.Factory)।
- উভয়
- PGS: রান-লেংথ ডিকোডিং ঠিক করুন যাতে
0-কে আক্ষরিক রঙের মানের পরিবর্তে রঙের সূচক হিসেবে সমাধান করা যায় (#১৩৬৭)। - CEA-708:
rowLockভ্যালু উপেক্ষা করুন। CEA-708-E S-2023 স্পেসিফিকেশন অনুযায়ী, স্ট্রিমে যে ভ্যালুই থাকুক না কেন,rowLockএবংcolumnLockদুটিকেই সত্য বলে ধরে নিতে হবে (columnLockসাপোর্ট বাস্তবায়িত হয়নি, তাই এটিকে সবসময় মিথ্যা বলে ধরে নেওয়া হয়)।- এটি প্রথমে
1.3.0-alpha01রিলিজ নোটে অন্তর্ভুক্ত করা হয়েছিল, কিন্তু1.3.0-rc01রিলিজের আগে ভুলবশত পরিবর্তনটি আগের অবস্থায় ফিরিয়ে আনা হয়েছে। এটি এখন ঠিক করা হয়েছে, তাই পরিবর্তনটি আবার দেখা যাচ্ছে।
- এটি প্রথমে
- CEA-708: ExoPlayer-এর 'সেট পেন লোকেশন' কমান্ডের সহজ হ্যান্ডলিংয়ের মাধ্যমে ডুপ্লিকেট নতুন লাইন যোগ করা এড়িয়ে চলুন (#১৩১৫)।
- WebVTT সাবটাইটেল স্যাম্পেলে কোনও কিউ না থাকলে, যেমন DASH স্ট্রিমের অংশ হিসেবে,
LegacySubtitleUtilথেকেIllegalArgumentExceptionসংক্রান্ত সমস্যার সমাধান করুন (#১৫১৬)।
- মেটাডেটা:
- ID3 সর্ট ট্যাগে MP4-এর ম্যাপিং ঠিক করুন। আগে 'অ্যালবাম সর্ট'
(
soal), 'আর্টিস্ট সর্ট' (soar) এবং 'অ্যালবাম আর্টিস্ট সর্ট' (soaa) MP4 ট্যাগ ভুল করেTSO2,TSOAএবংTSOPID3 ট্যাগের সাথে ম্যাপ করা হয়েছিল (#১৩০২)। - ভ্যালু এক বাইটের বেশি হলে MP4 (/iTunes) নিউমেরিক
gnre(জনরা) এবংtmpo(টেম্পো) ট্যাগ রিডিং সংক্রান্ত সমস্যার সমাধান করুন। - ID3
TCONফ্রেমMediaMetadata.genre-এ প্রোপাগেট করুন (#1305).
- ID3 সর্ট ট্যাগে MP4-এর ম্যাপিং ঠিক করুন। আগে 'অ্যালবাম সর্ট'
(
- ছবি:
- বর্গাকার নয় এমন DASH থাম্বনেল গ্রিডের জন্য সহায়তা যোগ করুন (#1300)।
- API 34+-এর জন্য AVIF-এর জন্য সহায়তা যোগ করুন।
- আগে সেট করা
ImageOutputমুছে ফেলতে,ExoPlayer.setImageOutput()-এর জন্য প্যারামিটার হিসেবেnull-কে অনুমতি দিন।
- DataSource:
android.resource://package/idর রিসোর্স URI-এর জন্য সহায়তা প্রয়োগ করুন যেখানেpackageবর্তমান অ্যাপ্লিকেশনের প্যাকেজ থেকে আলাদা। এটি আগে থেকে কাজ করার জন্য ডকুমেন্ট করা হয়নি, তবে এটি অন্য প্যাকেজে নাম দিয়ে অ্যাক্সেস করার চেয়ে রিসোর্স অ্যাক্সেস করার আরও কার্যকর উপায়।DataSpecকনস্ট্রাক্টরেurlনন-নাল কিনা তা চেক করুন। এই প্যারামিটারটি আগে থেকেই নন-নাল হিসেবে অ্যানোটেট করা আছে।open()-এর সময়ByteArrayDataSource-কে বাইট অ্যারেতে URI সমাধান করার অনুমতি দিন, কনস্ট্রাকশনে হার্ড-কোড করার পরিবর্তে (#১৪০৫)।
- DRM:
DefaultDrmSessionManagerProvider(#১২৭১)-এLoadErrorHandlingPolicyসেট করার অনুমতি দিন।
- প্রভাব:
SpeedChangeEffect-এ একইEditedMediaItemবাComposition-এর মধ্যে একাধিক স্পিড পরিবর্তন করার সুবিধা।- আল্ট্রা HDR বিটম্যাপ ইনপুট থেকে HLG এবং PQ আউটপুটের জন্য সহায়তা।
- EGL_GL_COLORSPACE_BT2020_HLG_EXT-এর জন্য সহায়তা যোগ করুন, যা ExoPlayer.setVideoEffect এবং Transformer-এর ডিবাগ SurfaceView-তে HLG সারফেস আউটপুট উন্নত করে।
setOverlayFrameAnchor()-এ প্রয়োগ করা x ও y ভ্যালু ফ্লিপ করে ডকুমেন্টেশনের সাথে সামঞ্জস্যপূর্ণ করতে ওভারলে ম্যাট্রিক্স ইমপ্লিমেন্টেশন আপডেট করুন।OverlaySettings.Builder.setOverlayFrameAnchor()ব্যবহার করলে,-1দিয়ে গুণ করে x ও y-এর মান উল্টে দিন।TimestampWrapper-এর সাথেExoPlayer#setVideoEffects(#821) ব্যবহার করলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে।- ডিফল্ট SDR কালার ওয়ার্কিং স্পেস লিনিয়ার কালার থেকে ইলেকট্রিক্যাল BT 709 SDR ভিডিওতে পরিবর্তন করুন। এছাড়াও, আসল কালারস্পেস বজায় রাখার জন্য তৃতীয় বিকল্প প্রদান করুন।
- EditedMediaItemSequences-এর অনির্দিষ্ট z-অর্ডার সংজ্ঞায়িত করার অনুমতি দিন (#১০৫৫)।
- HDR কন্টেন্টের বিভিন্ন অংশে (HLG রেঞ্জ ব্যবহার করে) একই ধরনের লুমিন্যান্স রেঞ্জ বজায় রাখুন।
- HDR কন্টেন্টে আলট্রা HDR (বিটম্যাপ) ওভারলে করার জন্য সহায়তা যোগ করুন।
- API 26-এর আগে
SeparableConvolutionএফেক্ট ব্যবহার করার অনুমতি দিন। - ব্যবহার করা হয়নি এমন
OverlaySettings.useHdrসরান কারণ ওভারলে ও ফ্রেমের ডায়নামিক রেঞ্জ অবশ্যই মিলতে হবে। TextOverlay-এর জন্য HDR সাপোর্ট যোগ করুন।OverlaySettings.Builder.setHdrLuminanceMultiplier()-এর মাধ্যমে টেক্সট ওভারলের লুমিন্যান্স অ্যাডজাস্ট করা যেতে পারে।
- IMA এক্সটেনশন:
- অ্যাপে DAI বিজ্ঞাপন স্ট্রিম চালানোর জন্য প্রয়োজনীয় API-কে স্টেবল ভার্সনে প্রোমোট করুন।
ImaServerSideAdInsertionMediaSource.AdLoader-এreplaceAdTagParameters(Map <String, String>)যোগ করুন যা রানটাইমে বিজ্ঞাপন ট্যাগ প্যারামিটার পরিবর্তন করার অনুমতি দেয়।- বিজ্ঞাপন প্লেব্যাক করার সময় প্লেয়ারে কোনও সমস্যা হলে
VideoAdPlayer.VideoAdPlayerCallback.onError()কল না হওয়ার সমস্যা সমাধান করা হয়েছে (#১৩৩৪)। data://বিজ্ঞাপন ট্যাগ URI ব্যবহার করার সময়NullPointerExceptionসংক্রান্ত সমস্যা সমাধান করতে IMA SDK ভার্সন 3.33.0-এ আপডেট করুন (#700)।
- সেশন:
CommandButton.enabled-এর ডিফল্ট মান পরিবর্তন করেtrueকরুন এবং নিশ্চিত করুন যে কন্ট্রোলারের জন্য মান ফলস থাকতে পারে, এমনকি সংশ্লিষ্ট কমান্ড উপলভ্য থাকলেও।CommandButton-এর জন্য আইকন কনস্ট্যান্ট যোগ করুন যা কাস্টম আইকন রিসোর্সের পরিবর্তে ব্যবহার করা উচিত।MediaSessionService.isPlaybackOngoing()যোগ করুন যাতে অ্যাপ কোয়েরি করতে পারে যেonTaskRemoved()-এ পরিষেবা বন্ধ করতে হবে কিনা (#১২১৯)।MediaSessionService.pauseAllPlayersAndStopSelf()যোগ করুন যা সুবিধাজনকভাবে সব সেশনের প্লেব্যাক পজ করতে এবংMediaSessionService-এর লাইফসাইকেল শেষ করতেstopSelf()কল করতে দেয়।- প্লেব্যাক চালু থাকলে ফোরগ্রাউন্ডে পরিষেবা চালু রাখতে
অথবা অন্যথায় পরিষেবা বন্ধ করতে
একটি নিরাপদ ডিফল্ট ইমপ্লিমেন্টেশন প্রদান করতে
MediaSessionService.onTaskRemoved(Intent)ওভাররাইড করুন। - প্ল্যাটফর্ম সেশন মেটাডেটাতে সময়সীমা সেট না করে লাইভ স্ট্রিমের জন্য মিডিয়া বিজ্ঞপ্তিতে সিকবার লুকান (#১২৫৬)।
MediaMetadataথেকেMediaDescriptionCompat-এ কনভার্সন অ্যালাইন করুন, যাতে media1-এর মতো মেটাডেটা প্রপার্টি বেছে নেওয়ার সময় একই পছন্দের ক্রম এবং লজিক ব্যবহার করা যায়।MediaSession.sendError()যোগ করুন যা Media3 কন্ট্রোলারে মারাত্মক নয় এমন সমস্যা পাঠাতে দেয়। বিজ্ঞপ্তি কন্ট্রোলার (দেখুনMediaSession.getMediaNotificationControllerInfo()) ব্যবহার করার সময়, প্ল্যাটফর্ম সেশনেরPlaybackState-কে প্রদত্ত সমস্যার তথ্য (#543) সহ সমস্যা সংক্রান্ত স্ট্যাটাসে আপডেট করতে কাস্টম সমস্যা ব্যবহার করা হয়।- নির্দিষ্ট কন্ট্রোলার থেকে প্লেয়ার ইন্টার্যাকশনের সিরিজ শেষ হলে
সেশনকে জানানোর জন্য
MediaSession.Callback.onPlayerInteractionFinished()যোগ করুন। SessionErrorযোগ করুন এবংSessionResultওLibraryResult-এ এটি ব্যবহার করুন সমস্যার কোডের পরিবর্তে সমস্যা সম্পর্কে আরও তথ্য প্রদান করতে এবং সম্ভব হলে কীভাবে সমস্যার সমাধান করা যায়।- Media3 কন্ট্রোলার টেস্ট অ্যাপের জন্য কোড প্রকাশ করুন যা মিডিয়া সেশন প্রকাশ করা অ্যাপের সাথে ইন্টার্যাকশন টেস্ট করতে ব্যবহার করা যেতে পারে।
- media3-এর
MediaSession[Builder].setSessionExtras()-এ পাস করা অতিরিক্ত ডেটা media1 কন্ট্রোলারেরPlaybackStateCompat.getExtras()-এ প্রোপাগেট করুন। - প্ল্যাটফর্ম সেশনে এবং সেশন থেকে মারাত্মক এবং মারাত্মক নয় এমন ত্রুটি ম্যাপ করুন।
PlaybackStateCompat-এর মারাত্মক সমস্যা সংক্রান্ত স্ট্যাটাসের সাথেPlaybackExceptionম্যাপ করা হয়েছে।MediaSession.sendError(ControllerInfo, SessionError)সহ মিডিয়া বিজ্ঞপ্তি কন্ট্রোলারে পাঠানোSessionErrorPlaybackStateCompat-এ মারাত্মক নয় এমন সমস্যার সাথে ম্যাপ করা হয়েছে, যার অর্থ হল সমস্যার কোড ও মেসেজ সেট করা হয়েছে কিন্তু প্ল্যাটফর্ম সেশনের স্ট্যাটাসSTATE_ERROR-এর থেকে আলাদা থাকে। - গ্লোবাল সেশন অ্যাক্টিভিটি ওভাররাইড করতে, প্রতিটি কন্ট্রোলারের জন্য সেশন অ্যাক্টিভিটি সেট করার অনুমতি দিন। কানেকশন করার সময়
AcceptedResultBuilder.setSessionActivivty(PendingIntent)-এর সাথেConnectionResultতৈরি করে কন্ট্রোলারের জন্য সেশন অ্যাক্টিভিটি নির্ধারণ করা যেতে পারে। কানেক্ট করা হয়ে গেলে, সেশন অ্যাক্টিভিটিMediaSession.setSessionActivity(ControllerInfo, PendingIntent)-এর সাথে আপডেট করা যাবে। MediaLibrarySession.Callback-এ কলের ক্ষেত্রে সমস্যার রেপ্লিকেশন উন্নত করুন। সমস্যার রেপ্লিকেশন এখনMediaLibrarySession.Builder.setLibraryErrorReplicationMode()ব্যবহার করে কনফিগার করা যেতে পারে। এটি সমস্যার ধরন বেছে নিতে বা সমস্যার রেপ্লিকেশন থেকে অপ্ট-আউট করতে সাহায্য করে, যা ডিফল্ট হিসেবে চালু থাকে।
- UI:
PlayerView-এ ছবি দেখানোর সুবিধা যোগ করুন যখন এটি একটিExoPlayer(#1144)-এর সাথে কানেক্ট করা থাকে।- গ্লোবাল ওভাররাইডের পরিবর্তে,
প্রতি
PlayerViewইনস্ট্যান্সের জন্য বিভিন্ন ড্রয়েবলকে অনুমতি দিতে, xml অ্যাট্রিবিউটের মাধ্যমেPlayerControlView-এ বিভিন্ন আইকনের কাস্টমাইজেশন যোগ করুন (#১২০০)। - API 34-এ কম্পোজ
AndroidView-এর মধ্যেSurfaceViewব্যবহার করার সময় স্ট্রেচ/ক্রপ করা ভিডিওর কারণ হিসেবে প্ল্যাটফর্মের বাগ সংক্রান্ত সমস্যার সমাধান করা (#1237)।
- ডাউনলোড:
- নিশ্চিত করুন যে
DownloadHelperরিলিজ না হওয়াRendererইনস্ট্যান্স লিক করে না, যার ফলে শেষ পর্যন্ত অ্যাপ ক্র্যাশ করতে পারেIllegalStateException: Too many receivers, total of 1000, registered for pid(#১২২৪)।
- নিশ্চিত করুন যে
- Cronet এক্সটেনশন:
CronetDataSource-এSocketTimeoutExceptionসংক্রান্ত সমস্যার সমাধান করুন। Cronet-এর কিছু ভার্সনে, কলব্যাকের মাধ্যমে দেওয়া অনুরোধ সবসময় এক হয় না। এর ফলে কলব্যাক সম্পূর্ণ হয় না এবং অনুরোধের সময়সীমা শেষ হয়ে যায় (https://issuetracker.google.com/328442628)।
- HLS এক্সটেনশন:
- অসম্পূর্ণতার জন্য অপেক্ষা করা বাকি থাকা EMSG স্যাম্পেল ভুল অফসেট সহ
HlsSampleStreamWrapper-এ ডেলিগেট করার ফলেIndexOutOfBoundsExceptionবাIllegalArgumentException(#1002) হওয়ার সমস্যা সমাধান করা হয়েছে। - LL-HLS স্ট্রিমের জন্য প্রাইমারি নয় এমন প্লেলিস্ট বারবার রিলোড হওয়ার সমস্যার সমাধান করা হয়েছে (#১২৪০)।
- ইনিশিয়ালাইজেশন সেগমেন্ট সহ HLS-এর জন্য CMCD চালু করার সময় হওয়া বাগ সংক্রান্ত সমস্যার সমাধান করা হয়েছে,
যার ফলে
Source ErrorএবংIllegalArgumentExceptionহয়েছে। - লাইভ প্লেব্যাক চলাকালীন প্রাইমারি নয় এমন প্লেলিস্ট রিফ্রেশ না হওয়ার সমস্যা সমাধান করা হয়েছে (#১২৪০)।
- HLS লাইভ স্ট্রিমের জন্য CMCD চালু করার ফলে হওয়া সমস্যার সমাধান করা হয়েছে
ArrayIndexOutOfBoundsException(#১৩৯৫)।
- অসম্পূর্ণতার জন্য অপেক্ষা করা বাকি থাকা EMSG স্যাম্পেল ভুল অফসেট সহ
- DASH এক্সটেনশন:
- Cast এক্সটেনশন:
- Media3 মিডিয়া আইটেমে
MediaQueueItem-এর অ্যালবাম টাইটেলকে আর্টিস্টে কনভার্ট করে দেওয়া বাগটি ফিক্স করা হয়েছে (#১২৫৫)।
- Media3 মিডিয়া আইটেমে
- টেস্ট ইউটিলিটি:
FakeRenderer-এonInit()এবংonRelease()প্রয়োগ করুন।TestPlayerRunHelper.runUntil()/playUntil()পদ্ধতি পরিবর্তন করুন যাতে নন-ফেটাল এরর (যেমন,AnalyticsListener.onVideoCodecError()-এ রিপোর্ট করা এরর) হলে ব্যর্থ হয়। এই আচরণ বন্ধ করতে নতুনTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()পদ্ধতি চেইন ব্যবহার করুন।
- ডেমো অ্যাপ:
- শর্ট ফর্ম ডেমো অ্যাপে
DefaultPreloadManagerব্যবহার করুন। - কমান্ড লাইন থেকে
Intentআর্গুমেন্ট সহ রিপিট মোড সেট করার অনুমতি দিন (#১২৬৬)। - ডিভাইসে কাজ করলে,
HttpDataSourceহিসেবেHttpEngineDataSourceব্যবহার করুন।
- শর্ট ফর্ম ডেমো অ্যাপে
- বাতিল করা চিহ্ন সরান:
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.FormatSupportIntDef এবং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)পদ্ধতি ব্যবহার করা উচিত।
Version 1.4.0-rc01
১০ জুলাই, ২০২৪
1.4.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.4.0-beta01
২৬ জুন, ২০২৪
1.4.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.4.0-alpha02
৭ জুন, ২০২৪
1.4.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.4.0-alpha01
১৭ এপ্রিল, ২০২৪
1.4.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন ১.৩.০
ভার্সন 1.3.1
১১ এপ্রিল, ২০২৪
androidx.media3:media3-*:1.3.1 রিলিজ করা হয়েছে। ভার্সন 1.3.1-এ এইসব
কমিট আছে।
- কমন লাইব্রেরি:
- লোকালাইজ করা বা অন্যান্য বিকল্প লেবেলের অনুমতি দিতে
Format.labelsযোগ করুন।
- লোকালাইজ করা বা অন্যান্য বিকল্প লেবেলের অনুমতি দিতে
- ExoPlayer:
PreloadMediaPeriodআবার প্রিলোড করা হলে, স্ট্রিম ধরে রাখতে না পারার সমস্যা সমাধান করা হয়েছে।- ট্র্যাক আবার বেছে নেওয়ার সময়, প্লেয়িং পিরিয়ডে সঠিক সংশ্লিষ্ট
TrackSelectionResultপ্রয়োগ করুন। - মিডিয়া আইটেমের মধ্যে ট্রানজিশন করার সময় প্লেয়িং পিরিয়ড অ্যাডভান্স করার পরেই আগে থেকে চালু করা রেন্ডারার শুরু করুন (#১০১৭)।
DefaultVideoFrameProcessor.Factory.Builder.build()-এর জন্য প্রোগার্ড-keepclasseswithmembersনিয়মে মিসিং রিটার্ন টাইপ যোগ করুন (#১১৮৭)।
- ট্রান্সফর্মার:
- API 30-এর আগে
MediaMuxerনেগেটিভ প্রেজেন্টেশন টাইমস্ট্যাম্প সাপোর্ট না করার কারণে ব্যতিক্রমের জন্য সমাধান যোগ করুন।
- API 30-এর আগে
- ট্র্যাক বেছে নেওয়া:
DefaultTrackSelector: কম বা সেট না করা ফ্রেম রেটের তুলনায় 'যুক্তিযুক্ত' ফ্রেম রেট (>=১০fps) সহ ভিডিও ট্র্যাককে অগ্রাধিকার দিন। এটি নিশ্চিত করে যে প্লেয়ার মোশন ফটো থেকে এক্সট্র্যাক্ট করা MP4-এ 'আসল' ভিডিও ট্র্যাক বেছে নেয় যেটিতে দুটি HEVC ট্র্যাক থাকতে পারে, যার মধ্যে একটির রেজোলিউশন বেশি কিন্তু ফ্রেমের সংখ্যা খুব কম (#১০৫১)।
- এক্সট্র্যাক্টর:
- WAV ফাইল থেকে অদ্ভুত সাইজের চাঙ্ক পড়ার সময় প্যাডিং এড়ানো না যাওয়ার সমস্যা সমাধান করা হয়েছে (#1117)।
- MP3: মেটাডেটা ফ্রেম থেকে
Format.averageBitrateপপুলেট করুন, যেমনXINGএবংVBRI। - MPEG-TS: স্যাম্পেল সারিতে স্ট্রিমের শেষ অ্যাক্সেস ইউনিট পাস করার মাধ্যমে শেষ ফ্রেম রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করার উদ্দেশ্যে করা পরিবর্তন ফিরিয়ে আনা (#৭৯০৯)। এই পরিবর্তনের ফলে শুধুমাত্র I-ফ্রেম HLS স্ট্রিম (#১১৫০) এবং H.২৬২ HLS স্ট্রিম (#১১২৬) সংক্রান্ত নতুন সমস্যা দেখা দিয়েছে।
- অডিও:
- অডিও ট্র্যাক অফলোড মোডে শুরু হতে না পারলে, অফলোড বন্ধ করে রেন্ডারার রিকভারির অনুমতি দিন।
- ভিডিও:
- Galaxy Tab S7 FE, Chromecast with Google TV এবং Lenovo M10 FHD Plus-এ ডিভাইস সংক্রান্ত সমস্যার জন্য সমাধান যোগ করুন, যার ফলে 60fps H265 স্ট্রিম কাজ করে না বলে চিহ্নিত করা হয়
- এমন সমাধান যোগ করুন যা নিশ্চিত করে যে টানেলিং করার সময় প্রথম ফ্রেমটি সর্বদা রেন্ডার করা হয়, এমনকি ডিভাইসটি API (#1169) দ্বারা প্রয়োজনীয় হিসাবে এটি অটোমেটিক না করলেও। (#৯৬৬)।
- HDR কালার তথ্য হ্যান্ডেল করার সময় কোডেক ঠিকমতো কাজ না করা এবং SDR ভিডিও ট্র্যাকের জন্য অ্যাডাপ্টিভ ফর্ম্যাট সুইচ করতে না পারার সমস্যা সমাধান করা হয়েছে (#১১৫৮)।
- টেক্সট:
- WebVTT: সরাসরি পরপর কিউ থেকে
WebvttParser.parse-এর অতিরিক্তCuesWithTimingইনস্ট্যান্স তৈরি হওয়া আটকায় (#১১৭৭)।
- WebVTT: সরাসরি পরপর কিউ থেকে
- DRM:
NoSuchMethodError-এর জন্য বিকল্প সমাধান যাResourceBusyExceptionবাNotProvisionedException-এর পরিবর্তেMediaDrmফ্রেমওয়ার্কের মাধ্যমে থ্রো করা যেতে পারে, কিছু Android 14 ডিভাইসে (#1145)।
- প্রভাব:
- কালার স্পেস কনভার্ট করার মাধ্যমে উন্নত PQ থেকে SDR টোন-ম্যাপিং।
- সেশন:
- UI:
Localeযদি কোনও ডিসপ্লে নাম শনাক্ত করতে না পারে, তাহলে অডিও ট্র্যাকের ভাষার নাম অন্তর্ভুক্ত করার জন্য ফলব্যাক (#988)।
- DASH এক্সটেনশন:
- ম্যানিফেস্ট থেকে
Format.labels-এ সবLabelএলিমেন্ট পপুলেট করুন (#১০৫৪)।
- ম্যানিফেস্ট থেকে
- RTSP এক্সটেনশন:
- SDP পার্সিংয়ে খালি সেশন তথ্যের ভ্যালু (i-ট্যাগ) এড়িয়ে যান (#১০৮৭)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, MIDI ইত্যাদি):
- ডিফল্ট হিসেবে লোকাল ডিপেন্ডেন্সি হিসেবে MIDI এক্সটেনশন বন্ধ করুন কারণ এটির জন্য অতিরিক্ত Maven রিপোজিটরি কনফিগার করতে হয়। যেসব ব্যবহারকারীর স্থানীয় ডিপেন্ডেন্সি থেকে এই মডিউল প্রয়োজন তারা এটি আবার চালু করতে পারবেন।
ভার্সন ১.৩.০
৬ মার্চ, ২০২৪
androidx.media3:media3-*:1.3.0 রিলিজ করা হয়েছে। ভার্সন 1.3.0-এ এইসব
কমিট রয়েছে।
- কমন লাইব্রেরি:
android.resource://package/[type/]nameর রিসোর্স URI-এর জন্য সহায়তা প্রয়োগ করুন যেখানেpackageবর্তমান অ্যাপ্লিকেশনের প্যাকেজ থেকে আলাদা। এটি কাজ করার জন্য সবসময় ডকুমেন্ট করা হয়েছে, কিন্তু এখন পর্যন্ত সঠিকভাবে প্রয়োগ করা হয়নি।- অ্যাপ কোড দ্বারা সেট করা বা মিডিয়া থেকে পড়া MIME প্রকারগুলিকে সম্পূর্ণরূপে ছোট হাতের অক্ষরে স্বাভাবিক করুন।
AdPlaybackState-এ একটিমাত্রUri-এর পরিবর্তে সম্পূর্ণMediaItem-এর মাধ্যমে বিজ্ঞাপন নির্ধারণ করুন।minSdkবাড়িয়ে ১৯ (Android KitKat) করুন। এটি অন্যান্য সব AndroidX লাইব্রেরির সাথে সামঞ্জস্যপূর্ণ এবং আমাদের AndroidX ডিপেন্ডেন্সির লেটেস্ট ভার্সনে আপগ্রেড করার জন্য এটি প্রয়োজন।MediaMetadata.Builder.populate(MediaMetadata)-এartworkUriএবংartworkDataদুটির মধ্যে অন্তত একটি নন-নাল হলে, দুটিই পপুলেট করুন (#964)।
- ExoPlayer:
PreloadMediaSourceএবংPreloadMediaPeriodযোগ করুন যা অ্যাপকে প্লেব্যাকের আগে একটি নির্দিষ্ট শুরুর অবস্থানে কন্টেন্ট মিডিয়া সোর্স প্রিলোড করার অনুমতি দেয়।PreloadMediaSourceTimelineরিসিভ করার জন্য কন্টেন্ট মিডিয়া সোর্স রেডি করে, প্রদত্ত শুরুর পজিশনে পিরিয়ড রেডি ও ক্যাশে করে, ট্র্যাক বেছে নেয় এবং পিরিয়ডের জন্য মিডিয়া ডেটা লোড করে। অ্যাপPreloadMediaSource.PreloadControlপ্রয়োগ করে প্রিলোড প্রোগ্রেস কন্ট্রোল করে এবং প্লেব্যাকের জন্য প্লেয়ারে প্রিলোড করা সোর্স সেট করে।ExoPlayer.setImageOutputযোগ করুন যা অ্যাপকেImageRenderer.ImageOutputসেট করার অনুমতি দেয়।DefaultRenderersFactoryএখন ডিফল্ট হিসেবে প্লেয়ারকেImageRendererপ্রদান করে যার সাথে নালImageOutputএবংImageDecoder.Factory.DEFAULTথাকে।- সাইলেন্স এড়িয়ে গেলে
Player.Listener.onPositionDiscontinuityইভেন্ট এমিট করুন (#765)। - এক্সট্র্যাক্ট করার সময় সাবটাইটেল পার্স করার জন্য এক্সপেরিমেন্টাল সহায়তা যোগ করুন। আপনি
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()ব্যবহার করে এটি চালু করতে পারবেন। PreloadMediaSource-এর মাধ্যমে অ্যাডাপ্টিভ মিডিয়া সোর্সকে সহায়তা করুন।HttpEngineDataSource,HttpDataSourceপ্রয়োগ করুন, HttpEngine API ব্যবহার করে।CompositeSequenceableLoaderসাবক্লাসিং প্রতিরোধ করুন। এই কম্পোনেন্টটি আগে এক্সটেনসিবল করা হয়েছিল কিন্তু লাইব্রেরির মধ্যে কখনও সাবক্লাস করা হয়নি। ডেকোরেটর প্যাটার্ন ব্যবহার করে একটি ইনস্ট্যান্স র্যাপ করে এবং কাস্টমCompositeSequenceableLoaderFactoryপ্রয়োগ করে কাস্টমাইজেশন করা যেতে পারে।- একই সময় বারবার উল্লেখ করার ফলে এই আইটেম থেকে মেটাডেটা মুছে যাওয়ার সমস্যা সমাধান করুন (#১০০৭)।
BundledChunkExtractor.FactoryএবংDefaultHlsExtractorFactory-এexperimentalSetSubtitleParserFactoryমেথডের নাম পরিবর্তন করেsetSubtitleParserFactoryকরুন এবংnullপাস করার অনুমতি দেবেন না। পার্সিংয়ের আচরণ নিয়ন্ত্রণ করতে নতুনexperimentalParseSubtitlesDuringExtraction(boolean)পদ্ধতি ব্যবহার করুন।- এক্সট্র্যাক্ট করার সময় ব্যবহৃত
SubtitleParser.Factoryকাস্টমাইজ করার জন্য সহায়তা যোগ করুন।MediaSource.Factory.setSubtitleParserFactory()-এর মাধ্যমে এটি করা যেতে পারে। MergingMediaSourceথেকে জেনারেট করা সবFormat.idফিল্ডে সোর্স প্রিফিক্স যোগ করুন। এটি কোন সোর্স থেকেFormat(#৮৮৩) তৈরি হয়েছে তা শনাক্ত করতে সাহায্য করে।- কাস্টম কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) কী-এর নাম যাচাই করার জন্য ব্যবহৃত রেজেক্স সংশোধন করুন। এটি শুধুমাত্র হাইফেন চেক করার জন্য পরিবর্তন করুন (#১০২৮)।
- CMCD কোয়েরি প্যারামিটার ডবল-এনকোড করা বন্ধ করুন (#১০৭৫)।
- ট্রান্সফর্মার:
- H.265/HEVC SEF স্লো মোশন ভিডিও ফ্ল্যাট করার জন্য সহায়তা যোগ করুন।
- ট্রান্সমিক্সিংয়ের স্পিড বাড়ান, বিশেষ করে 'ভিডিও সরান' এডিটের জন্য।
- আউটপুট ফাইল যাতে ভিডিও ফ্রেম থেকে শুরু হয় তা নিশ্চিত করতে API যোগ করুন। এটি ট্রিম করার অপারেশনের আউটপুটকে প্লেয়ার ইমপ্লিমেন্টেশনের সাথে আরও মানানসই করে তুলতে পারে যা প্রথম ভিডিও ফ্রেমটি তার প্রেজেন্টেশন টাইমস্ট্যাম্প (#৮২৯) পর্যন্ত দেখায় না।
- সিঙ্গেল অ্যাসেট MP4 ট্রিম অপারেশন অপ্টিমাইজ করার জন্য সহায়তা যোগ করুন।
- আউটপুট ফাইলে ভিডিও ফ্রেমের প্রথম টাইমস্ট্যাম্প আছে কিনা তা নিশ্চিত করতে সহায়তা যোগ করুন। iOS ভিত্তিক প্লেয়ারে (#829) কালো ফ্রেম দিয়ে শুরু হওয়া আউটপুট ফাইল সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
- ট্র্যাক বেছে নেওয়া:
- ইমেজ ট্র্যাক বেছে নেওয়ার সুবিধা চালু করতে
DefaultTrackSelector.selectImageTrackযোগ করুন। - ইমেজ ট্র্যাক ও ভিডিও ট্র্যাক, দুটিই উপলভ্য থাকলে, ইমেজ ট্র্যাক বেছে নেওয়া হবে কিনা তা নির্ধারণ করতে
TrackSelectionParameters.isPrioritizeImageOverVideoEnabledযোগ করুন। ডিফল্ট ভ্যালু হলfalseযার অর্থ হল ভিডিও ট্র্যাক বেছে নেওয়াকে অগ্রাধিকার দেওয়া হয়।
- ইমেজ ট্র্যাক বেছে নেওয়ার সুবিধা চালু করতে
- এক্সট্র্যাক্টর:
ColorInfo.colorSpace,ColorInfo.colorTransferএবংColorInfo.colorRangeভ্যালু (#৬৯২) ফিরিয়ে আনতে MP4 এক্সট্র্যাক্টরে অতিরিক্ত AV1C পার্সিং যোগ করুন।- MP3:
Infoহেডার সহ ফাইলের জন্য কনস্ট্যান্ট বিটরেট (CBR) ব্যবহার করুন (Xingহেডারের CBR সমতুল্য)। আগে আমরাInfoহেডার থেকে সিক টেবিল ব্যবহার করতাম, কিন্তু এর ফলে আমরা যদি এটি উপেক্ষা করি এবং ফাইলটি CBR বলে ধরে নিই, তার চেয়ে কম সুনির্দিষ্ট সিকিং হয়। - MPEG2-TS: DTS, DTS-LBR এবং DTS:X Profile2 সাপোর্ট যোগ করুন (#275)।
- TS ডেসক্রিপ্টর থেকে অডিওর ধরন এক্সট্র্যাক্ট করে রোল ফ্ল্যাগে ম্যাপ করা, যাতে ব্যবহারকারীরা আরও ভালভাবে জেনে অডিও ট্র্যাক বেছে নিতে পারেন (#973)।
- অডিও:
- ভিডিও:
MediaCodecVideoRendererকনস্ট্রাক্টর পরিবর্তন করুন যা একটিVideoFrameProcessor.Factoryআর্গুমেন্ট নেয় এবং এটিকে এমন একটি কনস্ট্রাক্টর দিয়ে প্রতিস্থাপন করুন যা একটিVideoSinkProviderআর্গুমেন্ট নেয়। যেসব অ্যাপ কাস্টমVideoFrameProcessor.Factoryইনজেক্ট করতে চায়, সেগুলিCompositingVideoSinkProviderইনস্ট্যান্টিয়েট করতে পারে, যা কাস্টমVideoFrameProcessor.Factoryব্যবহার করে এবংMediaCodecVideoRenderer-এ ভিডিও সিঙ্ক প্রোভাইডার পাস করে।
- টেক্সট:
DefaultExtractorsFactory.setTextTrackTranscodingEnabled(#836) ব্যবহার করার সময়Tried to marshall a Parcel that contained Binder objectsসমস্যা সমাধান করতে বিটম্যাপ কিউয়ের সিরিয়ালাইজেশন ঠিক করুন।- CEA-708:
rowLockভ্যালু উপেক্ষা করুন। CEA-708-E S-2023 স্পেসিফিকেশন অনুযায়ী, স্ট্রিমে যে ভ্যালুই থাকুক না কেন,rowLockএবংcolumnLockদুটিকেই সত্য বলে ধরে নিতে হবে (columnLockসাপোর্ট বাস্তবায়িত হয়নি, তাই এটিকে সবসময় মিথ্যা বলে ধরে নেওয়া হয়)।
- ছবি:
- DASH থাম্বনেলের জন্য সহায়তা যোগ করুন। গ্রিড ছবি ক্রপ করা হয় এবং
ImageOutput-কে তাদের প্রেজেন্টেশন টাইমের কাছাকাছি আলাদা থাম্বনেল প্রদান করা হয়।
- DASH থাম্বনেলের জন্য সহায়তা যোগ করুন। গ্রিড ছবি ক্রপ করা হয় এবং
- DRM:
- ডিফল্ট হিসেবে, DRM কন্টেন্টে 'ক্লিয়ার লিড' আনএনক্রিপ্টেড স্যাম্পেল অবিলম্বে চালান,
এমনকি পরবর্তী এনক্রিপ্টেড স্যাম্পেলের জন্য কী এখনও প্রস্তুত না থাকলেও। এর ফলে প্লেব্যাক পজিশন এনক্রিপ্ট করা স্যাম্পেলে পৌঁছানোর পরেও যদি'কী' রেডি না থাকে,
তাহলে প্লেব্যাক মাঝপথে থেমে যেতে পারে (তবে আগে এই পয়েন্টে
প্লেব্যাক শুরুই হতো না)। এই আচরণ
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKeyবাDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys-এর মাধ্যমে বন্ধ করা যেতে পারে।- IMA এক্সটেনশন:
- উপযুক্ত ফাইল এক্সটেনশন ছাড়া DASH এবং HLS বিজ্ঞাপন চালানো না যাওয়ার সমস্যার সমাধান করা হয়েছে।
- ডিফল্ট হিসেবে, DRM কন্টেন্টে 'ক্লিয়ার লিড' আনএনক্রিপ্টেড স্যাম্পেল অবিলম্বে চালান,
এমনকি পরবর্তী এনক্রিপ্টেড স্যাম্পেলের জন্য কী এখনও প্রস্তুত না থাকলেও। এর ফলে প্লেব্যাক পজিশন এনক্রিপ্ট করা স্যাম্পেলে পৌঁছানোর পরেও যদি'কী' রেডি না থাকে,
তাহলে প্লেব্যাক মাঝপথে থেমে যেতে পারে (তবে আগে এই পয়েন্টে
প্লেব্যাক শুরুই হতো না)। এই আচরণ
- সেশন:
- TV অ্যাপের জন্য ডবল-ক্লিক শনাক্তকরণ বন্ধ করুন (#962)।
- মিডিয়া কন্ট্রোলার ও সেশনের মধ্যে শুধু নন-নাল এক্সট্রা সহ
MediaItem.RequestMetadataট্রান্সমিট না হওয়ার সমস্যা সমাধান করুন। MediaLibrarySession.Builder-এ কনস্ট্রাক্টর যোগ করুন যাMediaLibraryService-এর পরিবর্তে শুধুমাত্রContextনেয়।
- HLS এক্সটেনশন:
HlsMediaPeriod-এর দৃশ্যমানতা কমিয়ে প্যাকেজ-প্রাইভেট করুন। এই ধরনের HLS প্যাকেজের বাইরে থেকে সরাসরি নির্ভর করা উচিত নয়।- আরও দক্ষতার সাথে সেগমেন্টের শুরুতে সিক করার সমস্যা সমাধান করা হয়েছে (#১০৩১)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, MIDI ইত্যাদি):
- MIDI ডিকোডার: SysEx ইভেন্ট মেসেজ উপেক্ষা করুন (#৭১০)।
- টেস্ট ইউটিলিটি:
TestPlayerRunHelper.playUntilPosition-এ প্লেব্যাক পজ করবেন না। টেস্টটি প্লেব্যাককে প্লেয়িং অবস্থায় রাখে, কিন্তু টেস্টটি অ্যাসারশন এবং আরও অ্যাকশন যোগ করতে না পারা পর্যন্ত প্রোগ্রেস সাসপেন্ড করে।
- ডেমো অ্যাপ:
- শর্ট-ফর্ম কন্টেন্ট ব্যবহারের কেস সহ
PreloadMediaSource-এর ব্যবহার ডেমো করতে একটি শর্টফর্ম ডেমো মডিউল যোগ করুন।
- শর্ট-ফর্ম কন্টেন্ট ব্যবহারের কেস সহ
Version 1.3.0-rc01
২২ ফেব্রুয়ারি, ২০২৪
1.3.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.3.0-beta01
৭ ফেব্রুয়ারি, ২০২৪
1.3.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.3.0-alpha01
১৫ জানুয়ারি, ২০২৪
1.3.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন ১.২.০
ভার্সন ১.২.১
৯ জানুয়ারি, ২০২৪
- ExoPlayer:
LiveConfiguration.min/maxOffsetরেঞ্জের বাইরে ম্যানুয়ালি খোঁজার সময় অফসেটকেmin/maxOffset-এ অ্যাডজাস্ট করার সমস্যা সমাধান করা হয়েছে।- ৩, ৫, ৬, ৭ ও ৮টি চ্যানেলের জন্য OPUS ও VORBIS চ্যানেল লেআউট ভুল হওয়ার সমস্যা সমাধান করা হয়েছে (#৮৩৯৬)।
- লাইভ স্ট্রিমে জিরোতে সিক করার পরে ট্র্যাক বেছে নেওয়ার ফলে স্ট্রিমটি ভুলভাবে ডিফল্ট পজিশনে শুরু হওয়ার সমস্যা সমাধান করা হয়েছে (#৯৩৪৭)।
CmcdData.Factory-এর নতুন ইনস্ট্যান্স চাঙ্ক সোর্স থেকেbufferedDurationUs-এর জন্য নেগেটিভ ভ্যালু পাচ্ছিল, যার ফলেIllegalArgumentException(#888) হচ্ছিল, এই সমস্যার সমাধান করুন।
- ট্রান্সফর্মার:
- এমন একটি সমস্যার সমাধান করুন যেখানে এনকোডার কনফিগারেশনের সময় অপারেটিং রেট বেশি সেট করার কারণে সমস্যা তৈরি করে।
- এক্সট্র্যাক্টর:
- JPEG মোশন ফটোতে সেকেন্ডারি (যা চালানো যায় না) HEVC ট্র্যাককে
ROLE_FLAG_ALTERNATEহিসেবে চিহ্নিত করুন যাতে হাই রেজোলিউশনের কারণে প্লেব্যাকের জন্য সেগুলি অটোমেটিক বেছে নেওয়া না হয়। - TS H264 স্ট্রিমের জন্য ভুল কীফ্রেম শনাক্তকরণ সংক্রান্ত সমস্যার সমাধান করা (#864)।
- ৪৭৭২১ সেকেন্ডের বেশি দীর্ঘ TS স্ট্রিমের আনুমানিক সময়সীমা ঠিক করুন (#৮৫৫)।
- JPEG মোশন ফটোতে সেকেন্ডারি (যা চালানো যায় না) HEVC ট্র্যাককে
- অডিও:
- একাধিকবার কল করা হলে
SilenceSkippingAudioProcessor-এর জন্য EOS হ্যান্ডেল করার সমস্যা সমাধান করা হয়েছে (#৭১২)।
- একাধিকবার কল করা হলে
- ভিডিও:
- Galaxy Tab S7 FE, Chromecast with Google TV এবং Lenovo M10 FHD Plus-এ ডিভাইস সংক্রান্ত সমস্যার জন্য সমাধান যোগ করুন, যার ফলে ৬০fps AVC স্ট্রিমকে 'কাজ করে না' হিসেবে চিহ্নিত করা হয় (#৬৯৩)।
- মেটাডেটা:
- Vorbis কমেন্ট থেকে বড় হাতের কী সহ
MediaMetadataপপুলেট হওয়ার সমস্যা সমাধান করা হয়েছে (#876)। - খুব বড় ID3 ফ্রেম পার্স করার সময়
OutOfMemoryErrorক্যাচ করুন, অর্থাৎ প্লেব্যাক সম্পূর্ণভাবে ব্যর্থ হওয়ার পরিবর্তে ট্যাগ তথ্য ছাড়াই প্লেব্যাক চালিয়ে যাওয়া যেতে পারে।
- Vorbis কমেন্ট থেকে বড় হাতের কী সহ
- DRM:
- API 33+ (আগে ওয়ার্কঅ্যারাউন্ড শুধু API 33-এর ক্ষেত্রে
প্রযোজ্য ছিল) (#৮৩৭) URL-এর জন্য নকল ClearKey
https://default.urlলাইসেন্সের ওয়ার্কঅ্যারাউন্ড বাড়ানো হয়েছে। - প্লেয়ারের সাথে কোনও সারফেস অ্যাটাচ না করে এনক্রিপ্ট করা থেকে
স্পষ্ট কন্টেন্টে পরিবর্তন করার সময়
ERROR_DRM_SESSION_NOT_OPENEDসংক্রান্ত সমস্যার সমাধান করুন। ক্লিয়ার কন্টেন্ট চালানোর জন্য সুরক্ষিত ডিকোডার ভুলভাবে ব্যবহার করার কারণে এই সমস্যা হয়েছে।
- API 33+ (আগে ওয়ার্কঅ্যারাউন্ড শুধু API 33-এর ক্ষেত্রে
প্রযোজ্য ছিল) (#৮৩৭) URL-এর জন্য নকল ClearKey
- সেশন:
- কাস্টম কী ও ভ্যালু
MediaMetadataCompatথেকেMediaMetadata.extrasএবংMediaMetadata.extrasথেকেMediaMetadataCompat-এ রাখুন (#৭৫৬, #৮০২)। - পুরনো কন্ট্রোলারের জন্য ব্রডকাস্টিং
notifyChildrenChangedসংক্রান্ত সমস্যার সমাধান করা (#644)। - বিজ্ঞপ্তির বন্ধ থাকা
setWhenটাইমারের জন্য নেগেটিভ সময় সেট করার ফলে কিছু ডিভাইসে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে (#903)। - প্রথম বিজ্ঞপ্তি আপডেট করার অনুরোধ করা হলে,
মিডিয়া বিজ্ঞপ্তি কন্ট্রোলার কানেক্ট করার প্রসেস সম্পূর্ণ না করলে,
IllegalStateExceptionসংক্রান্ত সমস্যার সমাধান করুন (#৯১৭)।
- কাস্টম কী ও ভ্যালু
- UI:
- DASH এক্সটেনশন:
- DASH ম্যানিফেস্টে Dolby-র জন্য চ্যানেল সংখ্যা ৫ হিসেবে "f800" পার্স করুন (#৬৮৮)।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, MIDI ইত্যাদি):
- Cast এক্সটেনশন:
- কাস্ট ডিভাইসে মিডিয়া লোড করতে না পারলে, অ্যাপ যাতে ক্র্যাশ না করে তার জন্য
Timeline-এর স্যানিটাইজ ক্রিয়েশন (#৭০৮)।
- কাস্ট ডিভাইসে মিডিয়া লোড করতে না পারলে, অ্যাপ যাতে ক্র্যাশ না করে তার জন্য
ভার্সন ১.২.০
১৫ নভেম্বর, ২০২৩
- কমন লাইব্রেরি:
Log.Loggerইন্টারফেসের পদ্ধতিতে@Nullable Throwableপ্যারামিটার যোগ করুন। এইসব পদ্ধতিতেmessageপ্যারামিটারেLog.{d,i,w,e}()পদ্ধতিতে পাস করাThrowableসম্পর্কে আর কোনও তথ্য থাকে না, তাই প্রয়োজন হলে (সম্ভবতLogger.appendThrowableString(String, Throwable)ব্যবহার করে) এই তথ্য ম্যানুয়ালি যোগ করতে হবে।- Kotlin-এর কম্প্যাটিবিলিটি সংক্রান্ত সমস্যা সমাধান করুন যেখানে নালেবেল জেনেরিক টাইপ প্যারামিটার
এবং নালেবেল অ্যারে এলিমেন্ট টাইপ নালেবেল হিসেবে শনাক্ত করা হয় না। উদাহরণ
হল
TrackSelectorResultএবংSimpleDecoderমেথড প্যারামিটার (#৬৭৯২)। Util.shouldShowPlayButton-এ ডিফল্ট UI এবং বিজ্ঞপ্তি দেখানোর আচরণ পরিবর্তন করুন যাতে প্লেব্যাক সাময়িকভাবে বন্ধ থাকার সময় (যেমন, ক্ষণস্থায়ী অডিও ফোকাস হারানোর কারণে) একটি "প্লে" বোতাম দেখানো যায়।PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)বাMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)(#১১২১৩) ব্যবহার করে লিগ্যাসি আচরণ বজায় রাখা যেতে পারে।- https://issuetracker.google.com/251172715
সমস্যার সমাধান করতে
androidx.annotation:annotation-experimentalথেকে1.3.1-এ আপগ্রেড করুন। ExoPlayer.setAudioAttributes-কেPlayerইন্টারফেসে সরান।
- ExoPlayer:
- ডিকোড-অনলি স্যাম্পেল সঠিকভাবে শনাক্ত না করার কারণে AC4 স্ট্রিমে খোঁজা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#11000)।
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput-এর মাধ্যমে এই ফিচার চালু করা হলে, অনুপযুক্ত অডিও আউটপুট ডিভাইসে (যেমন, Wear OS ডিভাইসে বিল্ট-ইন স্পিকার) প্লেব্যাক বন্ধ করার সুবিধা যোগ করুন। উপযুক্ত অডিও আউটপুট উপলভ্য না থাকলে প্লেব্যাক করার চেষ্টা করা হলে অথবা প্লেব্যাক চলাকালীন সব উপযুক্ত আউটপুট ডিসকানেক্ট হয়ে গেলে, প্লেব্যাক বন্ধ করার কারণ হিসেবেPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUTআপডেট করা হবে। একটি উপযুক্ত আউটপুট কানেক্ট করা হলে, সাপ্রেশনের কারণটি সরিয়ে দেওয়া হবে।Player.replaceMediaItem(s)-এর মাধ্যমে তৈরি করার পরেMediaItemআপডেট গ্রহণ করতেMediaSource.canUpdateMediaItemএবংMediaSource.updateMediaItemযোগ করুন।Player.replaceMediaItem(s)-এর মাধ্যমে লাইব্রেরি দ্বারা প্রদান করা সবMediaSourceক্লাসের জন্যMediaItemআপডেট করার অনুমতি দিন (#৩৩, #৯৯৭৮)।MimeTypes.TEXT_EXOPLAYER_CUES-এর নাম পরিবর্তন করেMimeTypes.APPLICATION_MEDIA3_CUESকরুন।PngExtractorযোগ করুন যা একটি স্যাম্পেল হিসেবেTrackOutput-এ সম্পূর্ণ PNG ফাইল পাঠায় ও পড়ে।SequenceableLoaderইন্টারফেসেSequenceableLoader.continueLoading(long)পদ্ধতি উন্নত করেSequenceableLoader.continueLoading(LoadingInfo loadingInfo)করুন।LoadingInfo-এ অতিরিক্ত প্যারামিটার আছে, যার মধ্যেplaybackSpeedএবংlastRebufferRealtimeMsআগে থেকে থাকাplaybackPositionUs-এর সাথে যোগ করা হয়েছে।ChunkSourceইন্টারফেসেChunkSource.getNextChunk(long, long, List, ChunkHolder)পদ্ধতি উন্নত করেChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)করুন।- কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিংয়ে অতিরিক্ত ফিল্ড যোগ করুন: বাফার
স্টারভেশন (
bs), ডেডলাইন (dl), প্লেব্যাক রেট (pr) এবং স্টার্টআপ (su) (#8699). ColorInfo-এ লুমা ও ক্রোমা বিটডেপথ যোগ করুন (#৪৯১)।- কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিংয়ে অতিরিক্ত ফিল্ড যোগ করুন: পরবর্তী
অবজেক্ট অনুরোধ (
nor) এবং পরবর্তী রেঞ্জ অনুরোধ (nrr) (#৮৬৯৯)। - কোয়েরি প্যারামিটার (#৫৫৩) ব্যবহার করে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) ডেটা ট্রান্সমিট করার জন্য ফাংশনালিটি যোগ করুন।
ExperimentalBandwidthMeter-এConcurrentModificationExceptionসংক্রান্ত সমস্যার সমাধান করুন (#612).CompositeMediaSource.getMediaTimeForChildMediaTime-এMediaPeriodIdপ্যারামিটার যোগ করুন।ConcatenatingMediaSource2-এClippingMediaSource(এবং পিরিয়ড/উইন্ডো টাইম অফসেট সহ অন্যান্য সোর্স) সাপোর্ট করে (#১১২২৬)।BaseRenderer.onStreamChanged()পরিবর্তন করুন যাতেMediaPeriodIdআর্গুমেন্টও পাওয়া যায়।
- ট্রান্সফর্মার:
- ছবি ইনপুটের জন্য EXIF রোটেশন ডেটা পার্স করুন।
TransformationRequest.HdrModeঅ্যানোটেশনের ধরন এবং এর সাথে যুক্ত কনস্ট্যান্ট সরিয়ে দিন। পরিবর্তেComposition.HdrModeএবং এর সাথে সম্পর্কিত কনস্ট্যান্ট ব্যবহার করুন।- ঘূর্ণন সংক্রান্ত সমস্যার সমাধান করতে
OverlaySettingsসরল করুন। SampleConsumer.queueInputBitmap-এরframeRateওdurationUsপ্যারামিটার পরিবর্তন করেTimestampIteratorকরা হয়েছে।
- ট্র্যাক বেছে নেওয়া:
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptivenessযোগ করুন যাতে স্পষ্টভাবে নন-সিমলেস অ্যাডাপ্টেশন অনুমোদন বা বাতিল করা যায়। ডিফল্টtrue-এর বর্তমান আচরণে থাকে।
- এক্সট্র্যাক্টর:
- MPEG-TS: স্যাম্পেল সারিতে স্ট্রিমের শেষ অ্যাক্সেস ইউনিট পাস করার মাধ্যমে শেষ ফ্রেমটি রেন্ডার করা হয়েছে কিনা তা নিশ্চিত করুন (#৭৯০৯)।
rotationDegreesনির্ধারণ করার সময় টাইপো ঠিক করুন।projectionPosePitchথেকেprojectionPoseRoll-এ পরিবর্তন করা হয়েছে (#461)।Extractorইনস্ট্যান্স সরাসরিinstanceof-এর মাধ্যমে পরীক্ষা করা যাবে, এই অনুমান সরিয়ে দিন। আপনি যদিExtractor-এর ইমপ্লিমেন্টেশন সংক্রান্ত বিবরণের রানটাইম অ্যাক্সেস চান, তাহলে আপনাকে প্রথমেExtractor.getUnderlyingInstance-এ কল করতে হবে।BmpExtractorযোগ করুন।WebpExtractorযোগ করুন।HeifExtractorযোগ করুন।Mp4Extractor-এ QuickTime ক্লাসিক সাপোর্ট যোগ করুন।
- অডিও:
- MP4 ও Matroska-তে ২৪/৩২-বিট বিগ-এন্ডিয়ান PCM-এর জন্য সহায়তা যোগ করুন এবং
MP4-এ
lpcm-এর জন্য PCM এনকোডিং পার্স করুন। - MP4-এ Vorbis অডিও এক্সট্র্যাক্ট করার জন্য সহায়তা যোগ করুন।
AudioSink.getFormatOffloadSupport(Format)যোগ করুন যাDefaultAudioOffloadSupportProvider-এর মাধ্যমে সিঙ্ক ফর্ম্যাটের জন্য অফলোড সাপোর্টের লেভেল ফিরিয়ে আনে। এটি নতুনAudioOffloadSupportফিরিয়ে দেয় যাতেisFormatSupported,isGaplessSupportedএবংisSpeedChangeSupportedথাকে।AudioSink.setOffloadMode()যোগ করুন যার মাধ্যমে অডিও সিঙ্কে অফলোড কনফিগারেশন কনফিগার করা হয়। ডিফল্ট হলAudioSink.OFFLOAD_MODE_DISABLED।TrackSelectionParameters-এsetAudioOffloadPreference-এর মাধ্যমে অফলোড চালু করা যেতে পারে। সেট করা পছন্দ চালু করতে হলে, ডিভাইসটি ফর্ম্যাটের জন্য অফলোড সমর্থন করে এবং ট্র্যাক নির্বাচন একটি একক অডিও ট্র্যাক, তাহলে অডিও অফলোড চালু করা হবে।audioOffloadModePreferenceযদিAUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED-এ সেট করা থাকে, তাহলেDefaultTrackSelectorশুধুমাত্র একটি অডিও ট্র্যাক বেছে নেবে এবং শুধুমাত্র সেই ট্র্যাকের ফর্ম্যাট অফলোডে কাজ করলে তবেই এটি হবে। অফলোডে কোনও অডিও ট্র্যাক কাজ না করলে, কোনও ট্র্যাক বেছে নেওয়া হবে না।- ট্র্যাক ট্রানজিশনের পরে প্লেব্যাক পজিশন সংক্রান্ত সমস্যার কারণে API লেভেল 33-এর আগের ভার্সনে অফলোডের জন্য গ্যাপলেস সাপোর্ট বন্ধ করা হচ্ছে।
DefaultRenderersFactory.buildAudioSinkমেথড সিগনেচার থেকেenableOffloadপ্যারামিটার সরান।DefaultAudioSink.Builder.setOffloadModeপদ্ধতি সরান।- intdef ভ্যালু সরান
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED। - অফলোড প্লেব্যাকের সময় Opus গ্যাপলেস মেটাডেটার জন্য সহায়তা যোগ করুন।
- প্রথমবার লেখার সময় ব্যর্থ হলে অফলোড বন্ধ করে রেন্ডারার রিকভারির অনুমতি দিন (#৬২৭)।
- শুধুমাত্র-অডিও অফলোড করা প্লেব্যাকের জন্য ডিফল্ট হিসেবে অফলোড শিডিউলিং চালু করুন।
ExoPlayer.experimentalSetOffloadSchedulingEnabledএবংAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChangedমুছুন।onExperimentalSleepingForOffloadChanged-এর নাম পরিবর্তন করেonSleepingForOffloadChangedএবংonExperimentalOffloadedPlayback-এর নাম পরিবর্তন করেonOffloadedPlaybackকরা হয়েছে।- অডিও অফলোড মোড সম্পর্কিত
TrackSelectionParametersইন্টারফেস ও সংজ্ঞা একটি ইনারAudioOffloadPreferencesক্লাসে সরান। onAudioTrackInitializedএবংonAudioTrackReleasedকলব্যাকAnalyticsListener,AudioRendererEventListenerএবংAudioSink.Listener-এ যোগ করুন।- DTS Express অডিও বাফার আন্ডারফ্লো সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#650)।
- E-AC3-JOC-এর জন্য ক্ষমতা চেক করার সময়
IllegalArgumentException(#677) থ্রো করার সমস্যা সমাধান করা হয়েছে।
- MP4 ও Matroska-তে ২৪/৩২-বিট বিগ-এন্ডিয়ান PCM-এর জন্য সহায়তা যোগ করুন এবং
MP4-এ
- ভিডিও:
MediaCodecVideoRenderer-কে কাস্টমVideoFrameProcessor.Factoryব্যবহার করার অনুমতি দিন।- অডিও স্ট্রিম নেগেটিভ টাইমস্ট্যাম্প দিয়ে শুরু হলে প্রথম ফ্রেম রেন্ডার না হওয়ার সমস্যার সমাধান করা হয়েছে (#২৯১)।
- টেক্সট:
ExoplayerCuesDecoderসরান।sampleMimeType = application/x-media3-cuesসহ টেক্সট ট্র্যাক এখন সরাসরিTextRenderer-এর মাধ্যমে ম্যানেজ করা হয়, এর জন্যSubtitleDecoderইনস্ট্যান্সের প্রয়োজন হয় না।
- মেটাডেটা:
- "শুধুমাত্র ডিকোড" স্যাম্পেলের জন্য
MetadataDecoder.decodeআর কল করা হবে না কারণ ইমপ্লিমেন্টেশনকে যেকোনও উপায়ে নাল রিটার্ন করতে হবে।
- "শুধুমাত্র ডিকোড" স্যাম্পেলের জন্য
- প্রভাব:
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)টাইমস্ট্যাম্প অনুযায়ী বিটম্যাপ ইনপুট কিউতে যোগ করুন।VideoFrameProcessor.registerInputStream()-কে নন-ব্লকিং হিসেবে পরিবর্তন করুন। অ্যাপে অবশ্যইVideoFrameProcessor.Listener#onInputStreamRegistered()প্রয়োগ করতে হবে।VideoFrameProcessor.queueInputBitmap-এরframeRateওdurationUsপ্যারামিটার পরিবর্তন করেTimestampIteratorকরা হয়েছে।
- IMA এক্সটেনশন:
- প্লেলিস্টের প্রথম আইটেম নয় এমন মাল্টি-পিরিয়ড DASH লাইভ স্ট্রিম ব্যতিক্রম দেখাতে পারে, এই সমস্যার সমাধান করা হয়েছে (#৫৭১)।
AdsLoader.destroy()কল করার আগে StreamManager রিলিজ করুন- IMA SDK ভার্সন 3.31.0-এ আপডেট করা হয়েছে।
- সেশন:
- বিজ্ঞপ্তি ফোরগ্রাউন্ড সার্ভিস আচরণ
DefaultMediaNotificationProvider-এFOREGROUND_SERVICE_IMMEDIATE-এ সেট করুন (#১৬৭)। - Samsung ডিভাইসে বন্ধ হয়ে যাওয়া API-এর সাথে সমস্যা এড়াতে শুধুমাত্র
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()API 31-এর উপরের ভার্সন ব্যবহার করুন (#১৬৭)। - উপলভ্য কমান্ড সেট করতে প্রক্সি হিসেবে মিডিয়া বিজ্ঞপ্তি কন্ট্রোলার ব্যবহার করুন এবং বিজ্ঞপ্তি ও প্ল্যাটফর্ম সেশন পপুলেট করতে কাস্টম লেআউট ব্যবহার করুন।
- মিডিয়া বোতাম ইভেন্ট কনভার্ট করুন যা
MediaSessionService.onStartCommand()-এর মাধ্যমে Media3-এর মধ্যে রিসিভ করা হয়, প্ল্যাটফর্ম সেশনে সেগুলি রাউট করার পরিবর্তে এবং Media3-তে ফিরে যান। এর ফলে, কলার কন্ট্রোলার সবসময় মিডিয়া বিজ্ঞপ্তি কন্ট্রোলার হয় এবং অ্যাপগুলি কাজ করে এমন সব API লেভেলে একই উপায়ে বিজ্ঞপ্তি থেকে আসা কল সহজেই শনাক্ত করতে পারে। MediaSessionCompat-এর সাথে কানেক্ট করা থাকলেMediaController.getCurrentPosition()কাজ না করার সমস্যার সমাধান করুন।- সুবিধার জন্য
MediaLibrarySession.getSubscribedControllers(mediaId)যোগ করুন। - কন্ট্রোলার যে অভিভাবক আইডিতে সাবস্ক্রাইব করে, সেটির উপলভ্যতা নিশ্চিত করতে
MediaLibrarySession.Callback.onSubscribe()ওভাররাইড করুন। সাবস্ক্রিপশন সফল হলে, সেটি গ্রহণ করা হয় এবং ব্রাউজারকে জানানোর জন্য অবিলম্বেnotifyChildrenChanged()-কে কল করা হয় (#৫৬১)। - Automotive OS-এর জন্য সেশন ডেমো মডিউল যোগ করুন এবং Android Auto-এর জন্য সেশন ডেমো চালু করুন।
- মিডিয়া বিজ্ঞপ্তি কন্ট্রোলারের জন্য
COMMAND_GET_TIMELINEউপলভ্য না থাকলে, ফ্রেমওয়ার্ক সেশনের সারি সেট করবেন না। Android Auto ফ্রেমওয়ার্ক সেশন থেকে রিড করা ক্লায়েন্ট কন্ট্রোলার হিসেবে কাজ করার ফলে, Android Auto-র UI-তেqueueবোতামটি দেখানো হয় না (#৩৩৯)। SimpleBitmapLoader-এর পরিবর্তে ডিফল্ট হিসেবেDataSourceBitmapLoaderব্যবহার করুন (#২৭১, #৩২৭)।MediaSession.Callback.onMediaButtonEvent(Intent)যোগ করুন যা অ্যাপকে ডিফল্ট মিডিয়া বোতাম ইভেন্ট হ্যান্ডলিং ওভাররাইড করার অনুমতি দেয়।
- বিজ্ঞপ্তি ফোরগ্রাউন্ড সার্ভিস আচরণ
- UI:
- Wear OS ডিভাইসের জন্য
Player.Listenerইমপ্লিমেন্টেশন যোগ করুন যাPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT-এর কারণে প্লেব্যাক সাপ্রেশন ম্যানেজ করে। এটি করার জন্য সিস্টেম ডায়ালগ লঞ্চ করে যাতে ব্যবহারকারী উপযুক্ত অডিও আউটপুট (যেমন, ব্লুটুথ হেডফোন) কানেক্ট করতে পারেন। কনফিগার করা যায় এমন টাইমআউটের (ডিফল্ট হল ৫ মিনিট) মধ্যে উপযুক্ত ডিভাইস কানেক্ট করা হলে, শ্রোতা অটোমেটিক প্লেব্যাক আবার চালু করবে।
- Wear OS ডিভাইসের জন্য
- ডাউনলোড:
- Android 14-এর সাথে মানানসই হওয়ার জন্য
DownloadService-এর জন্য "ডেটা সিঙ্ক" ফোরগ্রাউন্ড পরিষেবার ধরন ঘোষণা করুন। এই পরিষেবা ব্যবহার করার সময়, অ্যাপকে ম্যানিফেস্টেdataSync-কেforegroundServiceTypeহিসেবে যোগ করতে হবে এবংFOREGROUND_SERVICE_DATA_SYNCঅনুমতি যোগ করতে হবে (#১১২৩৯)।
- Android 14-এর সাথে মানানসই হওয়ার জন্য
- HLS এক্সটেনশন:
- শেষবার লোড সম্পূর্ণ হওয়ার সময়ের পরিবর্তে শেষবার লোড শুরু হওয়ার সময় থেকে হিসেব করা বিরতি সহ HLS লাইভ প্লেলিস্ট রিফ্রেশ করুন (#৬৬৩)।
- DASH এক্সটেনশন:
- সেগমেন্ট টেমপ্লেট URL-এ একই DASH শনাক্তকারী একাধিকবার ব্যবহার করার অনুমতি দিন।
- এক্সট্র্যাক্ট করার সময় সাবটাইটেল পার্স করার জন্য এক্সপেরিমেন্টাল সহায়তা যোগ করুন। এতে
ওভারল্যাপ করা সাবটাইটেল মার্জ করার জন্য আরও ভালো সহায়তা রয়েছে, যার মধ্যে
সাবটাইটেল সেগমেন্টের মধ্যে ট্রানজিশন করার সময় ফ্লিকারিং সংক্রান্ত সমস্যার সমাধান করাও অন্তর্ভুক্ত। আপনি
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()(#২৮৮) ব্যবহার করে এটি চালু করতে পারবেন।
- RTSP এক্সটেনশন:
- TCP-তে ফিরে যাওয়ার সময়
IndexOutOfBoundsException-এর কারণ হতে পারে এমন রেস কন্ডিশন বা কিছু পরিস্থিতিতে প্লেব্যাক হ্যাং হয়ে যাওয়ার সমস্যার সমাধান করুন। - RTSP সেট-আপে স্টেট চেক করুন যখন
RtspMediaPeriod(#577)-এর লোডিং স্টেট রিটার্ন করা হচ্ছে। - বিকল্পের উত্তর সংক্রান্ত পাবলিক হেডারে কাস্টম Rtsp অনুরোধের পদ্ধতি উপেক্ষা করুন (#৬১৩)।
- কিপ-অ্যালাইভ RTSP অপশন সংক্রান্ত অনুরোধ পাঠানোর সময়সীমার মধ্যে RTSP সেট-আপ রেসপন্স টাইম-আউট ভ্যালু ব্যবহার করুন (#৬৬২)।
- TCP-তে ফিরে যাওয়ার সময়
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, MIDI ইত্যাদি):
- MIDI ডিকোডার মডিউল রিলিজ করুন, যা অডিও সিন্থেসাইজ করার জন্য Jsyn লাইব্রেরি ব্যবহার করে স্ট্যান্ডার্ড MIDI ফাইলের প্লেব্যাকের জন্য সহায়তা প্রদান করে।
- যেসব আউটপুট বাফার দেখানোর প্রয়োজন নেই, সেগুলি সরাসরি চিহ্নিত করতে
DecoderOutputBuffer.shouldBeSkippedযোগ করুন।C.BUFFER_FLAG_DECODE_ONLY-এর পরিবর্তে এটি ব্যবহার করা হয় যা শীঘ্রই বন্ধ হতে চলেছে। - শুরুর সময়ের আগে ডিকোডারকে শুধুমাত্র ডিকোড স্যাম্পেল ড্রপ করার অনুমতি দিতে
Decoder.setOutputStartTimeUsএবংSimpleDecoder.isAtLeastOutputStartTimeUsযোগ করুন।Buffer.isDecodeOnly-এর পরিবর্তে এটি ব্যবহার করা উচিত যা বন্ধ হয়ে যাবে। - Maven রিপোজিটরিতে MIDI ডিকোডার আর্টিফ্যাক্ট প্রকাশ করার সময় হওয়া সমস্যার সমাধান করা হয়েছে। আর্টিফ্যাক্টের
নাম পরিবর্তন করে
media3-exoplayer-midi(#৭৩৪) করা হয়েছে।
- Leanback এক্সটেনশন:
- সারফেস বন্ধ করার ফলে লিনব্যাক কোডে (#617)
ArithmeticExceptionহতে পারে, এই সমস্যার সমাধান করা হয়েছে।
- সারফেস বন্ধ করার ফলে লিনব্যাক কোডে (#617)
- টেস্ট ইউটিলিটি:
- Espresso UI টেস্ট ও Compose UI টেস্টের সাথে
TestExoPlayerBuilderওFakeClock-কে মানানসই করে তুলুন। Espresso বা Compose ভিউ ইন্টার্যাকশনের সময় প্লেব্যাক অনির্ধারিতভাবে এগিয়ে যাওয়ার সমস্যা এটি সমাধান করে।
- Espresso UI টেস্ট ও Compose UI টেস্টের সাথে
- বাতিল করা চিহ্ন সরান:
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)এবংTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)সরান। পরিবর্তেComposition.Builder.setHdrMode(int)ব্যবহার করুন এবংComposition-কেTransformer.start(Composition, String)-এ পাস করুন।- বন্ধ হয়ে যাওয়া
DownloadNotificationHelper.buildProgressNotificationপদ্ধতি সরিয়ে দিন, এর পরিবর্তে বন্ধ হয়ে যায়নি এমন পদ্ধতি ব্যবহার করুন যাnotMetRequirementsপ্যারামিটার নেয়।
ভার্সন 1.2.0-rc01
১ নভেম্বর ২০২৩
১.২.০ স্টেবল ভার্সন ব্যবহার করুন।
Version 1.2.0-beta01
১৯ অক্টোবর, ২০২৩
১.২.০ স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.2.0-alpha02
২৯ সেপ্টেম্বর, ২০২৩
১.২.০ স্টেবল ভার্সন ব্যবহার করুন।
Version 1.2.0-alpha01
১৭ আগস্ট, ২০২৩
১.২.০ স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.1.0
ভার্সন ১.১.১
১৬ আগস্ট, ২০২৩
- কমন লাইব্রেরি:
- সব মডিউল থেকে ভুলবশত যোগ করা
multidexডিপেন্ডেন্সি সরান (#৪৯৯)।
- সব মডিউল থেকে ভুলবশত যোগ করা
- ExoPlayer:
PlaybackStatsListener-এ সেই সমস্যার সমাধান করা হয়েছে যেখানে প্লেলিস্ট মুছে দেওয়ার পরে ভুলPlaybackStatsতৈরি হয়।- কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিংয়ে অতিরিক্ত ফিল্ড যোগ করুন: স্ট্রিমিং ফর্ম্যাট (sf), স্ট্রিমের ধরন (st), ভার্সন (v), টপ বিটরেট (tb), অবজেক্টের সময়সীমা (d), পরিমাপ করা থ্রুপুট (mtp) এবং অবজেক্টের ধরন (ot) (#৮৬৯৯)।
- অডিও:
- খুব ছোট ফাইল চালানোর সময়
Player.getState()কখনওSTATE_ENDED-এ ট্রানজিশন না করার সমস্যা সমাধান করা হয়েছে (#538)।
- খুব ছোট ফাইল চালানোর সময়
- অডিও অফলোড:
- RFC 7845 অনুযায়ী অফলোড করা Opus প্লেব্যাকের জন্য বিটস্ট্রিমে Ogg ID হেডার এবং কমেন্ট হেডার পৃষ্ঠা প্রিপেন্ড করুন।
- ভিডিও:
- H.265/HEVC: SPS স্বল্প ও দীর্ঘমেয়াদী রেফারেন্স ছবির তথ্য পার্স করার সমস্যা সমাধান করা হয়েছে।
- টেক্সট:
- CEA-608: শুধুমাত্র দৃশ্যমান টেক্সট বিবেচনা করার জন্য কিউ ট্রাঙ্কেশন লজিক পরিবর্তন করুন। আগে কিউয়ের দৈর্ঘ্য ৩২টি অক্ষরে সীমিত করার সময় ইন্ডেন্ট ও ট্যাব অফসেট অন্তর্ভুক্ত করা হত (যা স্পেসিফিকেশন অনুযায়ী টেকনিক্যালি সঠিক ছিল) (#11019)।
- IMA এক্সটেনশন:
- IMA SDK ভার্সন 3.30.3-এ আপডেট করা হয়েছে।
- সেশন:
- কন্ট্রোলারের স্ট্যাটাসে কাস্টম লেআউট যোগ করুন এবং এটি অ্যাক্সেস করার জন্য গেটার প্রদান করুন। কাস্টম লেআউট পরিবর্তন হলে,
MediaController.Listener.onCustomLayoutChangedকল করা হয়। যেসব অ্যাপ বিভিন্ন Media3 কন্ট্রোলারে আলাদা আলাদা কাস্টম লেআউট পাঠাতে চায়, তারাMediaSession.Callback.onConnect-এAcceptedResultBuilderব্যবহার করে এটি করতে পারে, যাতে কানেকশন সম্পূর্ণ হওয়ার পরে কন্ট্রোলারের কাছে কাস্টম লেআউট উপলভ্য থাকে। MediaLibraryServiceLegacyStub-এর থেকেResult-এ পাঠানো মেসেজে সমস্যা হলে,Result-এ এই মেসেজ কাজ করে না, যার ফলেUnsupportedOperationException(#৭৮) তৈরি হয়।PlayerWrapperযেভাবেVolumeProviderCompatতৈরি করে তা ঠিক করুন উভয় লিগ্যাসি কমান্ড (COMMAND_ADJUST_DEVICE_VOLUMEএবংCOMMAND_SET_DEVICE_VOLUME) এবং নতুন কমান্ড (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGSএবংCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS) (#554) ব্যবহার করেvolumeControlTypeনির্ধারণ করার মাধ্যমে।
- কন্ট্রোলারের স্ট্যাটাসে কাস্টম লেআউট যোগ করুন এবং এটি অ্যাক্সেস করার জন্য গেটার প্রদান করুন। কাস্টম লেআউট পরিবর্তন হলে,
ভার্সন 1.1.0
৫ জুলাই, ২০২৩
- কমন লাইব্রেরি:
- Add suppression reason for unsuitable audio route and play when ready change reason for suppressed too long. (#১৫)।
- প্লেয়ারে কমান্ড যোগ করুন:
COMMAND_GET_METADATACOMMAND_SET_PLAYLIST_METADATACOMMAND_SET_DEVICE_VOLUME_WITH_FLAGSCOMMAND_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-কে ডিভাইসের ভলিউম কন্ট্রোল করার অনুমতি দিন, তবে শুধুমাত্র
স্পষ্টভাবে অপ্ট-ইন করা থাকলে।
ExoPlayer.Builder.setDeviceVolumeControlEnabledব্যবহার করে এগুলি অ্যাক্সেস করুন:getDeviceVolume()isDeviceMuted()setDeviceVolume(int)ওsetDeviceVolume(int, int)increaseDeviceVolume(int)ওincreaseDeviceVolume(int, int)decreaseDeviceVolume(int)ওdecreaseDeviceVolume(int, int)
FilteringMediaSourceযোগ করুন যাMediaSourceথেকে উপলভ্য ট্র্যাকের ধরন ফিল্টার করার অনুমতি দেয়।- DASH, HLS এবং SmoothStreaming-এর মতো অ্যাডাপ্টিভ স্ট্রিমিং ফর্ম্যাটের আউটগোয়িং অনুরোধে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) অন্তর্ভুক্ত করার জন্য সহায়তা যোগ করুন। নিম্নলিখিত ফিল্ড,
br,bl,cid,rtp, এবংsid, অন্তর্ভুক্ত করা হয়েছে (#8699)। API স্ট্রাকচার ও API পদ্ধতি:- CMCD লগিং ডিফল্ট হিসেবে বন্ধ করা থাকে, এটি চালু করতে
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)ব্যবহার করুন। - ডিফল্ট হিসেবে সব কী চালু করা আছে, কোন কোন কী লগ করা হয়েছে তা ফিল্টার করতে
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)ওভাররাইড করুন। - কাস্টম কী লগিং চালু করতে
CmcdConfiguration.RequestConfig.getCustomData()ওভাররাইড করুন।
- CMCD লগিং ডিফল্ট হিসেবে বন্ধ করা থাকে, এটি চালু করতে
- কাস্টম
*.exolist.jsonফাইলের মাধ্যমে ডেমো অ্যাপ শুরু করা আরও সহজ করতে মূল ডেমোর ম্যানিফেস্টে অতিরিক্ত অ্যাকশন যোগ করুন (#৪৩৯)। - ভিডিও প্লেব্যাকের সময়
Effectব্যবহার করার জন্যExoPlayer.setVideoEffects()যোগ করুন। sourceId-কেint-এর পরিবর্তে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এবংisBlacklisted-এর নাম পরিবর্তন করেisTrackExcludedকরুন।- খালি প্লেলিস্টে কল করার সময়
ExoPlayer.setMediaItem(s)এবংaddMediaItem(s)-এর মধ্যে অসামঞ্জস্যপূর্ণ আচরণ ঠিক করুন।
- ExoPlayer-কে ডিভাইসের ভলিউম কন্ট্রোল করার অনুমতি দিন, তবে শুধুমাত্র
স্পষ্টভাবে অপ্ট-ইন করা থাকলে।
- ট্রান্সফর্মার:
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)সরান। পরিবর্তেExoPlayerAssetLoader.Factory(MediaSource.Factory)এবংTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)ব্যবহার করুন।Transformer.startTransformation(MediaItem, ParcelFileDescriptor)সরান।- একটি সমস্যার সমাধান করা হয়েছে যেখানে ইনপুট ফ্রেম প্রসেস করা বাকি থাকার সময় ভিডিও স্ট্রিমের শেষ হওয়ার সিগন্যাল দেওয়া হলে ট্রান্সফর্মেশন আটকে যেতে পারে (যার ফলে মাক্সার টাইমআউট হয়)।
- সহায়তা বাড়াতে,
findDecoder/EncoderForFormatইউটিলিটি ব্যবহার করার পরিবর্তেMediaCodecList-এর মাধ্যমে কোয়েরি কোডেক। DefaultEncoderFactory-এ B-ফ্রেম কনফিগারেশন সরিয়ে দিন কারণ এটি কিছু ডিভাইসে কাজ করে না।
- ট্র্যাক বেছে নেওয়া:
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChangeযোগ করুন, যা ডিফল্ট হিসেবে বন্ধ করা থাকে। চালু করা হলে, রেন্ডারার ক্ষমতা পরিবর্তন করা হলে,DefaultTrackSelectorএকটি নতুন ট্র্যাক সিলেকশন ট্রিগার করবে।
- এক্সট্র্যাক্টর:
- অডিও:
- টানেলিং চালু থাকলে এবং
AudioProcessorsঅ্যাক্টিভ থাকলে কিছু প্লেব্যাক কাজ না করার সমস্যা সমাধান করা হয়েছে, যেমন গ্যাপলেস ট্রিমিংয়ের জন্য (#১০৮৪৭)। - সরাসরি প্লেব্যাকের (অফলোড) ক্ষেত্রে Ogg প্যাকেটে Opus ফ্রেম এনক্যাপসুলেট করুন।
- অফলোড শিডিউলিংয়ের মাধ্যমে স্লিপ মোডে বর্তমান পজিশন এক্সট্রাপোলেট করুন।
- প্লেয়ারের লাইফসাইকেলের শেষে রিসোর্স রিলিজ করার জন্য
Renderer.release()এবংAudioSink.release()যোগ করুন। DefaultAudioSink-এ অডিওর ক্ষমতা সংক্রান্ত পরিবর্তন শুনুন।DefaultAudioSink-এর কনস্ট্রাক্টরে প্রয়োজনীয় প্যারামিটারcontextযোগ করুন, যার মাধ্যমেDefaultAudioSink,AudioCapabilitiesReceiver-এর লিসেনার হিসেবে রেজিস্টার করবে এবং ক্ষমতা পরিবর্তন সম্পর্কে জানানো হলে এরaudioCapabilitiesপ্রপার্টি আপডেট করবে।- নতুন ইভেন্টের মাধ্যমে অডিওর ক্ষমতা সংক্রান্ত পরিবর্তন প্রচার করুন
AudioSink.Listenerইন্টারফেসেonAudioCapabilitiesChangedএবং নতুন ইন্টারফেসRendererCapabilities.ListenerযাonRendererCapabilitiesChangedইভেন্ট ট্রিগার করে। - অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য
ChannelMixingAudioProcessorযোগ করুন। - অডিওর ক্ষমতা পরিবর্তন হওয়ার পরে বাইপাস মোড
সম্ভব হলে, অডিও ডিকোডার বাতিল করতে
DecoderDiscardReasons-এ নতুন int ভ্যালুDISCARD_REASON_AUDIO_BYPASS_POSSIBLEযোগ করুন। - DTS Express ও DTS:X-এর জন্য সরাসরি প্লেব্যাক সাপোর্ট যোগ করুন (#৩৩৫)।
- টানেলিং চালু থাকলে এবং
- ভিডিও:
- রেন্ডারার বন্ধ করা থাকলে,
MediaCodecVideoRenderer-কেVideoSize-এর প্রস্থ ও উচ্চতা ০ হিসেবে রিপোর্ট করতে বলুন।Player.getVideoSize()পরিবর্তন হলে সেই অনুযায়ীPlayer.Listener.onVideoSizeChangedকল করা হয়। এই পরিবর্তনের ফলে, ExoPlayer-এর ভিডিওর সাইজMediaCodecVideoRenderer-এর সাথে প্রস্থ ও উচ্চতা ০ হবে যখনPlayer.getCurrentTracksভিডিও সাপোর্ট করে না অথবা সাপোর্ট করা ভিডিও ট্র্যাকের সাইজ এখনও নির্ধারণ করা হয়নি।
- রেন্ডারার বন্ধ করা থাকলে,
- DRM:
DefaultDrmSession-এ শুধুমাত্র ইন্টার্নাল বেশ কয়েকটি পদ্ধতির দৃশ্যমানতা কমান যেগুলি DRM প্যাকেজের বাইরে থেকে কল করা হবে বলে আশা করা হয় না:void onMediaDrmEvent(int)void provision()void onProvisionCompleted()onProvisionError(Exception, boolean)
- Muxer:
- একটি নতুন মাক্সার লাইব্রেরি যোগ করুন যা MP4 কন্টেনার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।
- IMA এক্সটেনশন:
- DAI-এর জন্য মাল্টি-পিরিয়ড লাইভ DASH স্ট্রিম চালু করুন। #10912-এ বর্তমানে লাইভ স্ট্রিমে সিক করার সুবিধা নেই।
- লাইভ স্ট্রিমে নতুন বিজ্ঞাপন গ্রুপ যোগ করার সময় হওয়া সমস্যার সমাধান করুন, কারণ পরপর টাইমলাইনে কন্টেন্টের হিসেব করা পজিশন সামান্য আলাদা হয়।
- সেশন:
- বর্তমানে
Playerপদ্ধতি কল করছে এমন কন্ট্রোলার সম্পর্কে তথ্য পেতে সহায়ক পদ্ধতিMediaSession.getControllerForCurrentRequestযোগ করুন। androidx.media3.session.MediaButtonReceiverযোগ করুন যাতে অ্যাপগুলি মিডিয়া বোতাম ইভেন্টের মাধ্যমে পাঠানো প্লেব্যাক রিজাম্পশন প্রয়োগ করতে পারে, যেমন ব্লুটুথ হেডসেট (#১৬৭)।MediaSession.Callback.onAddMediaItems-এ ডিফল্ট ইমপ্লিমেন্টেশন যোগ করুন যাতে অনুরোধ করাMediaItems-কেPlayer-এ পাস করা যায়, যদি তাদেরLocalConfiguration(যেমন, URI) থাকে (#২৮২)।- Android 12 এবং তার আগের ভার্সনের জন্য ডিফল্ট হিসেবে কম্প্যাক্ট মিডিয়া বিজ্ঞপ্তি ভিউতে "আগেরটিতে যান" এবং "পরেরটিতে যান" কমান্ড বোতাম যোগ করুন (#৪১০)।
MediaSession.Callback.onAddMediaItems-এ ডিফল্ট ইমপ্লিমেন্টেশন যোগ করুন যাতে অনুরোধ করাMediaItems-কেPlayer-এ পাস করা যায়, যদি তাদেরLocalConfiguration(যেমন, URI) থাকে (#২৮২)।- Android 12 এবং তার আগের ভার্সনের জন্য ডিফল্ট হিসেবে কম্প্যাক্ট মিডিয়া বিজ্ঞপ্তি ভিউতে "আগেরটিতে যান" এবং "পরেরটিতে যান" কমান্ড বোতাম যোগ করুন (#৪১০)।
- বর্তমানে
- UI:
- প্লে/পজ বোতাম সহ কাস্টম UI এলিমেন্ট লিখতে
Util পদ্ধতি
shouldShowPlayButtonএবংhandlePlayPauseButtonActionযোগ করুন।
- প্লে/পজ বোতাম সহ কাস্টম UI এলিমেন্ট লিখতে
Util পদ্ধতি
- RTSP এক্সটেনশন:
- DASH এক্সটেনশন:
- মাল্টি পিরিয়ড DASH স্ট্রিমের জন্য
MediaLoadData.startTimeMsএবংMediaLoadData.endTimeMsথেকে মিডিয়া টাইম অফসেট সরিয়ে দিন। - মাল্টি-পিরিয়ড লাইভ ড্যাশ মিডিয়া সোর্স আবার প্রস্তুত করার সময়
IndexOutOfBoundsException(#১০৮৩৮) তৈরি হওয়ার সমস্যা সমাধান করা হয়েছে।
- মাল্টি পিরিয়ড DASH স্ট্রিমের জন্য
- HLS এক্সটেনশন:
TimestampAdjusterইনিশিয়ালাইজ করার জন্য অপেক্ষা করতে, লোডিং থ্রেডের জন্য টাইমআউট সেট করতেHlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)যোগ করুন। টাইমআউটের আগে ইনিশিয়ালাইজেশন সম্পূর্ণ না হলে, প্লেব্যাক যাতে অনির্দিষ্টকালের জন্য বন্ধ না হয়ে যায়, তার জন্যPlaybackExceptionথ্রো করা হয়। ডিফল্ট হিসেবে টাইমআউট শূন্যতে সেট করা থাকে (#323)।
- টেস্ট ইউটিলিটি:
DataSourceContractTest-এ URI স্কিমের কেস ইনসেনসিটিভিটি চেক করুন।
- বাতিল করা চিহ্ন সরান:
DefaultAudioSinkকনস্ট্রাক্টর সরিয়ে দিন, পরিবর্তেDefaultAudioSink.Builderব্যবহার করুন।HlsMasterPlaylistসরিয়ে, পরিবর্তেHlsMultivariantPlaylistব্যবহার করুন।Player.stop(boolean)সরান। পরিবর্তেPlayer.stop()এবংPlayer.clearMediaItems()(যদিresettrueহয়) ব্যবহার করুন।- দুটি বন্ধ হয়ে যাওয়া
SimpleCacheকনস্ট্রাক্টর সরিয়ে দিন, আরও ভালো পারফর্ম্যান্সের জন্য এর পরিবর্তে বন্ধ হয়ে যায়নি এমন কনস্ট্রাক্টর ব্যবহার করুন যাDatabaseProviderনেয়। DefaultBandwidthMeterকনস্ট্রাক্টর সরিয়ে দিন, পরিবর্তেDefaultBandwidthMeter.Builderব্যবহার করুন।DefaultDrmSessionManagerকনস্ট্রাক্টর সরিয়ে দিন, পরিবর্তেDefaultDrmSessionManager.Builderব্যবহার করুন।- দুটি বাতিল করা
HttpDataSource.InvalidResponseCodeExceptionকনস্ট্রাক্টর সরান, বাতিল করা হয়নি এমন কনস্ট্রাক্টর ব্যবহার করুন যা অতিরিক্ত ফিল্ড(cause,responseBody) গ্রহণ করে যাতে সমস্যা লগিং উন্নত করা যায়। DownloadHelper.forProgressive,DownloadHelper.forHls,DownloadHelper.forDashওDownloadHelper.forSmoothStreamingসরিয়ে দিন, পরিবর্তেDownloadHelper.forMediaItemব্যবহার করুন।- বন্ধ হয়ে যাওয়া
DownloadServiceকনস্ট্রাক্টর সরিয়ে দিন, বন্ধ না হওয়া কনস্ট্রাক্টর ব্যবহার করুন যেটিতেchannelDescriptionResourceIdপ্যারামিটার দেওয়ার বিকল্প রয়েছে। - Charsets-এর জন্য বাতিল করা স্ট্রিং কনস্ট্যান্ট (
ASCII_NAME,UTF8_NAME,ISO88591_NAME,UTF16_NAMEএবংUTF16LE_NAME) সরিয়ে দিন, এর পরিবর্তেkotlin.textপ্যাকেজ থেকে Kotlin Charsets,java.nio.charset.StandardCharsetsঅথবাcom.google.common.base.Charsetsব্যবহার করুন। - বন্ধ হয়ে যাওয়া
WorkManagerSchedulerকনস্ট্রাক্টর সরিয়ে দিন, এর পরিবর্তে বন্ধ না হওয়া কনস্ট্রাক্টর ব্যবহার করুন যাতেContextপ্যারামিটার দেওয়ার বিকল্প অন্তর্ভুক্ত থাকে। createVideoSampleFormat,createAudioSampleFormat,createContainerFormatএবংcreateSampleFormat-এর মতো বাতিল করা পদ্ধতিগুলি সরিয়ে দিন, যেগুলিFormatক্লাস ইনস্ট্যান্টিয়েট করার জন্য ব্যবহার করা হয়েছিল। পরিবর্তেFormat-এর ইনস্ট্যান্স তৈরি করতেFormat.Builderব্যবহার করুন।copyWithMaxInputSize,copyWithSubsampleOffsetUs,copyWithLabel,copyWithManifestFormatInfo,copyWithGaplessInfo,copyWithFrameRate,copyWithDrmInitData,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
২১ জুন, ২০২৩
1.1.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.1.0-beta01
৭ জুন, ২০২৩
1.1.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.1.0-alpha01
১০ মে, ২০২৩
1.1.0 স্টেবল ভার্সন ব্যবহার করুন।
ভার্সন 1.0.0
ভার্সন 1.0.2
১৮ মে, ২০২৩
androidx.media3:media3-*:1.0.2 রিলিজ করা হয়েছে। ভার্সন 1.0.2-এ এইসব
কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.7 রিলিজ-এর সাথে সম্পর্কিত।
1.0.1 রিলিজ হওয়ার পর থেকে এই রিলিজে নিম্নলিখিত পরিবর্তনগুলি করা হয়েছে:
- কোর লাইব্রেরি:
Buffer.isLastSample()যোগ করুন যা নির্দেশ করে যেBuffer-এ ফ্ল্যাগC.BUFFER_FLAG_LAST_SAMPLEআছে কিনা।- 'স্ট্রিমের শেষ' স্যাম্পেল না পড়েই ফ্রেম সহ শেষ স্যাম্পেল ডিকিউ করা হলে, শেষ ফ্রেম রেন্ডার না হওয়ার সমস্যা সমাধান করুন। (#11079)।
- এক্সট্র্যাক্টর:
- RTSP এবং MP4 এক্সট্র্যাক্টর দ্বারা আগে থেকে ব্যবহার করা পার্সিং লজিক আবার ব্যবহার করে MPEG-TS ফাইলে H.265 SPS-এর পার্সিং ঠিক করুন (#৩০৩)।
- টেক্সট:
- SSA: UTF-16 ফাইল বাইট অর্ডার মার্ক দিয়ে শুরু হলে সেটির জন্য সহায়তা যোগ করুন (#৩১৯)।
- সেশন:
MediaController-এর উপলভ্য কমান্ড আপডেট না হওয়ার সমস্যা সমাধান করা হয়েছে। এটি তখন হয় যখন এমন একটি লিগ্যাসিMediaSessionCompat-এর সাথে কানেক্ট করা হয় যা নিজের অ্যাকশন আপডেট করে।- API 30-এ
params.isRecent == true-এর সাথে সিস্টেম UI থেকেCallback.onGetLibraryRoot-এ কলের জন্যMediaLibraryService-কে নাল রিটার্ন করা থেকে আটকানো সমস্যার সমাধান করুন (#355)। MediaSessionServiceবাMediaLibraryService-এর মেমরি লিক সংক্রান্ত সমস্যার সমাধান করুন (#৩৪৬)।MediaSession-এTimelineও পজিশন আপডেট একসাথে করার সময়MediaController-এIllegalStateExceptionদেখানোর সমস্যার সমাধান করা হয়েছে।
ভার্সন ১.০.১
১৮ এপ্রিল, ২০২৩
androidx.media3:media3-*:1.0.1 রিলিজ করা হয়েছে। ভার্সন 1.0.1-এ এইসব
কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.6 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
- ডিফল্ট পজিশনে খোঁজার সময় টার্গেট লাইভ স্ট্রিম ওভাররাইড রিসেট করুন (#11051)।
- মিডিয়াতে খালি স্যাম্পেল স্ট্রিম থাকলে প্লেব্যাক আটকে যাওয়ার সমস্যা সমাধান করা হয়েছে।
- সেশন:
- পুরনো
MediaSessionCompat-এর মাধ্যমে একাধিক একই ধরনের কিউ আইটেম প্রকাশ করার ফলেMediaController-এ ব্যতিক্রম হওয়ার সমস্যা সমাধান করা হয়েছে (#২৯০)। MediaSession.broadcastCustomCommand-এর মিসিং ফরওয়ার্ডিং লেগ্যাসিMediaControllerCompat.Callback.onSessionEvent-এ যোগ করুন (#২৯৩)।MediaSession.setPlayerকল করার সময় উপলভ্য কমান্ড আপডেট না হওয়ার সমস্যার সমাধান করা।MediaControllerথেকে পাঠানোTrackSelectionOverrideইনস্ট্যান্সFormat.metadata-এর সাথে কোনও গ্রুপকে রেফার করলে, সেগুলি উপেক্ষা করা হয়, এই সমস্যার সমাধান করুন (#২৯৬)।- পুরনো
MediaSessionCompat-এর মাধ্যমে মেটাডেটা অ্যাক্সেস করার জন্যPlayer.COMMAND_GET_CURRENT_MEDIA_ITEM-কে উপলভ্য হতে হবে, এই সমস্যা সমাধান করুন। - ব্যাকগ্রাউন্ড থ্রেডে
MediaSessionইনস্ট্যান্সের কারণেMediaSessionService-এ ব্যবহার করার সময় ক্র্যাশ হওয়ার সমস্যার সমাধান করা হয়েছে (#318)। - অ্যাপের উদ্দেশ্য না থাকা সত্ত্বেও লাইব্রেরির মাধ্যমে মিডিয়া বোতাম রিসিভার ঘোষণা করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (#৩১৪)।
- পুরনো
- DASH:
- খালি সেগমেন্ট টাইমলাইন ম্যানেজ করার সমস্যা সমাধান করা হয়েছে (#11014)।
- RTSP:
- UDP-এর সাথে RTSP সেট-আপ RTSP ত্রুটি 461 UnsupportedTransport (#11069) সহ ব্যর্থ হলে TCP-এর সাথে আবার চেষ্টা করুন।
ভার্সন 1.0.0
২২ মার্চ, ২০২৩
androidx.media3:media3-*:1.0.0 রিলিজ করা হয়েছে। ভার্সন 1.0.0-এ এইসব
কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.5 রিলিজ-এর সাথে সম্পর্কিত।
1.0.0-rc02-এর পর থেকে কোনও পরিবর্তন করা হয়নি।
ভার্সন 1.0.0-rc02
২ মার্চ, ২০২৩
androidx.media3:media3-*:1.0.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-rc02-এ
এইসব কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.4 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
- ডাউনলোড:
SegmentDownloaderএবং সাবক্লাসে মার্জ করার জন্য দুটি সেগমেন্টের শুরুর সময়ের মধ্যে সর্বাধিক পার্থক্য কনফিগারযোগ্য করুন (#২৪৮)।
- অডিও:
- ভিডিও:
- HEVC HDR10 ফর্ম্যাটকে
HEVCProfileMain10-এর পরিবর্তেHEVCProfileMain10HDR10-এ ম্যাপ করুন। - Chromecast with Google TV এবং Lenovo M10 FHD Plus-এ ডিভাইস সংক্রান্ত সমস্যার জন্য বিকল্প সমাধান যোগ করা হয়েছে, যার ফলে 60fps AVC স্ট্রিমকে 'কাজ করে না' হিসেবে চিহ্নিত করা হয় (#১০৮৯৮)।
- স্ক্রিন রিফ্রেশ রেটের থেকে অনেক বেশি ফ্রেম রেট সহ মিডিয়া চালানোর সময় ফ্রেম রিলিজ পারফর্ম্যান্স সংক্রান্ত সমস্যার সমাধান করুন।
- HEVC HDR10 ফর্ম্যাটকে
- কাস্ট:
- মিডিয়া আইটেমের মধ্যে ট্রানজিশন করার সময় ট্রানজিয়েন্ট
STATE_IDLEসংক্রান্ত সমস্যার সমাধান করা (#২৪৫)।
- মিডিয়া আইটেমের মধ্যে ট্রানজিশন করার সময় ট্রানজিয়েন্ট
- RTSP:
- ভুল RTSP পার্স করার সময় IllegalArgumentException থ্রো করা হয়েছে উত্তরের মেসেজ বর্ণনা করুন (#10971)।
- সেশন:
- বিজ্ঞপ্তি প্লে/পজ বোতাম প্লেয়ারের স্ট্যাটাসের সাথে আপডেট না হওয়ার সমস্যা সমাধান করা হয়েছে (#১৯২)।
- IMA এক্সটেনশন:
- একটি সমস্যার সমাধান করা হয়েছে যার ফলে কোনও বিজ্ঞাপন ছাড়াই DAI স্ট্রিম শুরু করা যাচ্ছিল না
কারণ প্রথম (এবং বিজ্ঞাপন ছাড়া স্ট্রিমের ক্ষেত্রে একমাত্র)
LOADEDইভেন্ট পাওয়া যাচ্ছিল না।
- একটি সমস্যার সমাধান করা হয়েছে যার ফলে কোনও বিজ্ঞাপন ছাড়াই DAI স্ট্রিম শুরু করা যাচ্ছিল না
কারণ প্রথম (এবং বিজ্ঞাপন ছাড়া স্ট্রিমের ক্ষেত্রে একমাত্র)
ভার্সন 1.0.0-rc01
১৬ ফেব্রুয়ারি, ২০২৩
androidx.media3:media3-*:1.0.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-rc01-এ
এইসব কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.3 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
- রেন্ডারারের ডিকোডার অর্ডারিং লজিক টুইক করুন যাতে
MediaCodecSelector-এর পছন্দ বজায় থাকে, এমনকি ডিকোডার যদি রিপোর্ট করে যে এটি মিডিয়া পারফর্ম্যান্সের সাথে চালাতে পারবে না। যেমন, ডিফল্ট সিলেক্টরের সাথে, শুধুমাত্র ফাংশনাল সাপোর্ট সহ হার্ডওয়্যার ডিকোডারকে, ফর্ম্যাটকে সম্পূর্ণভাবে সাপোর্ট করে এমন সফ্টওয়্যার ডিকোডারের চেয়ে বেশি প্রাধান্য দেওয়া হবে (#10604)। ExoPlayer.Builder.setPlaybackLooperযোগ করুন যা নতুন ExoPlayer ইনস্ট্যান্সের জন্য আগে থেকে থাকা প্লেব্যাক থ্রেড সেট করে।- ডাউনলোড ম্যানেজার হেল্পারদের মুছে ফেলার অনুমতি দিন (#১০৭৭৬)।
BasePlayer.seekTo-এ প্যারামিটার যোগ করুন যাতে খোঁজার জন্য ব্যবহৃত কমান্ডও নির্দেশ করা যায়।- API 21+-এ ড্রয়েবল লোড করার সময় থিম ব্যবহার করুন (#২২০)।
ConcatenatingMediaSource2যোগ করুন যা একাধিক মিডিয়া আইটেমকে একটি উইন্ডোতে একত্রিত করার অনুমতি দেয় (#২৪৭)।
- রেন্ডারারের ডিকোডার অর্ডারিং লজিক টুইক করুন যাতে
- এক্সট্র্যাক্টর:
- trak অ্যাটম পার্স করার সময় স্যাম্পেল টেবিলে (stbl) প্রয়োজনীয় স্যাম্পেল বিবরণ (stsd) না থাকলে,
NullPointerException-এর পরিবর্তেParserExceptionথ্রো করুন। - fMP4-এ সরাসরি সিঙ্ক ফ্রেমে খোঁজার সময় স্যাম্পেল সঠিকভাবে এড়িয়ে যাওয়া (#১০৯৪১)।
- trak অ্যাটম পার্স করার সময় স্যাম্পেল টেবিলে (stbl) প্রয়োজনীয় স্যাম্পেল বিবরণ (stsd) না থাকলে,
- অডিও:
- ডাইরেক্ট প্লেব্যাকে (পাসথ্রু)
AudioTrack-এর জন্য ন্যূনতম বাফার সাইজ গণনা করতে কম্প্রেস করা অডিও ফর্ম্যাট বিটরেট ব্যবহার করুন।
- ডাইরেক্ট প্লেব্যাকে (পাসথ্রু)
- টেক্সট:
- সাবটাইটেল ফাইলে কোনও কিউ না থাকলে,
TextRenderer-এর মাধ্যমেSubtitle.getEventTime-এ ভুল (নেগেটিভ) ইনডেক্স পাস করার সমস্যা সমাধান করুন। - SubRip: UTF-16 ফাইল বাইট অর্ডার মার্ক দিয়ে শুরু হলে, সেটির জন্য সহায়তা যোগ করুন।
- সাবটাইটেল ফাইলে কোনও কিউ না থাকলে,
- মেটাডেটা:
- ID3 ফ্রেম থেকে একাধিক নাল-সেপারেটেড ভ্যালু পার্স করুন, যেমনটি ID3 v2.4-এর মাধ্যমে অনুমোদিত।
- মেটাডেটার মাধ্যমে বর্ণনা করা কন্টেন্ট বা ফোল্ডারের ধরন
বোঝাতে
MediaMetadata.mediaTypeযোগ করুন। MediaMetadata.folderType-এর পরিবর্তেMediaMetadata.isBrowsableযোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরন বন্ধ করে দেওয়া হবে।
- DASH:
- টাইল গণনা সহ ইমেজ অ্যাডাপ্টেশন সেটের জন্য সম্পূর্ণ পার্সিং যোগ করুন (#3752)।
- UI:
- দৃশ্যমানতা পরিবর্তন রেজিস্টার করা লিসনারের কাছে পাস করা হয়েছে কিনা তা নিশ্চিত করতে
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)ডেপ্রিকেট করা সংক্রান্ত সমস্যার সমাধান করুন (#২২৯)। - ডানদিক-থেকে-বাঁদিকে (RTL) লেআউট ব্যবহার করার সময়
PlayerView-এ সেন্টার প্লেয়ার কন্ট্রোলের ক্রম ঠিক করুন (#২২৭)।
- দৃশ্যমানতা পরিবর্তন রেজিস্টার করা লিসনারের কাছে পাস করা হয়েছে কিনা তা নিশ্চিত করতে
- সেশন:
- কাস্টম প্লেয়ারের জন্য
Playerইন্টারফেস প্রয়োগ করতে অ্যাবস্ট্র্যাক্টSimpleBasePlayerযোগ করুন। - প্ল্যাটফর্ম সেশন টোকেনকে Media3-তে কনভার্ট করার জন্য হেল্পার পদ্ধতি যোগ করুন
SessionToken(#১৭১)। - প্ল্যাটফর্ম মিডিয়া সেশনের আপডেট ট্রিগার করতে
onMediaMetadataChangedব্যবহার করুন (#২১৯)। DefaultMediaNotificationProvider-এরgetMediaButtons()-এর আর্গুমেন্ট হিসেবে মিডিয়া সেশন যোগ করুন এবং স্বচ্ছতার জন্য অপরিবর্তনীয় তালিকা ব্যবহার করুন (#২১৬)।- প্লেয়ারে সেট করার আগে সেশন অনুযায়ী
MediaItemতালিকা, শুরুর ইন্ডেক্স ও পজিশন পরিবর্তন/সেট করার উপায় প্রদান করতেonSetMediaItemsকলব্যাক লিসেনার যোগ করুন (#১৫৬)। - ব্লুটুথ নয় এমন মিডিয়া বোতাম ইভেন্টের জন্য ডবল ট্যাপ শনাক্তকরণ এড়িয়ে চলুন (#২৩৩)।
- সন্দেহজনক লিগ্যাসি সেশন স্টেট থাকলে
QueueTimelineআরও শক্তিশালী করুন (#২৪১)।
- কাস্টম প্লেয়ারের জন্য
- মেটাডেটা:
- ID3 ফ্রেম থেকে একাধিক নাল-সেপারেটেড ভ্যালু পার্স করুন, যেমনটি ID3 v2.4-এর মাধ্যমে অনুমোদিত।
- মেটাডেটার মাধ্যমে বর্ণনা করা কন্টেন্ট বা ফোল্ডারের ধরন
বোঝাতে
MediaMetadata.mediaTypeযোগ করুন। MediaMetadata.folderType-এর পরিবর্তেMediaMetadata.isBrowsableযোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরন বন্ধ করে দেওয়া হবে।
- কাস্ট এক্সটেনশন:
- Cast SDK ভার্সন 21.2.0-এ আপডেট করা হয়েছে।
- IMA এক্সটেনশন:
- থ্রেডিং সংক্রান্ত সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে
ImaServerSideAdInsertionMediaSource-এর প্লেয়ার লিসেনার সরিয়ে দিন। - টিভি ডিভাইসে এড়িয়ে যাওয়ার বোতামে ফোকাস করার অনুরোধ করতে
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder-এfocusSkipButtonWhenAvailableপ্রপার্টি যোগ করুন এবং ডিফল্ট হিসেবে এটি সত্য হিসেবে সেট করুন। - স্কিপ বোতামে ফোকাস করার জন্য প্রোগ্রাম্যাটিক্যালি অনুরোধ করতে
ImaServerSideAdInsertionMediaSource.AdsLoader-এ একটি পদ্ধতিfocusSkipButton()যোগ করুন। - IMA SDK ভার্সন 3.29.0-এ আপডেট করুন।
- থ্রেডিং সংক্রান্ত সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে
- ডেমো অ্যাপ:
- রানটাইমে ডাউনলোড বিজ্ঞপ্তি দেখানোর জন্য বিজ্ঞপ্তির অনুমতি চাওয়া (#১০৮৮৪)।
ভার্সন 1.0.0-beta03
২২ নভেম্বর, ২০২২
androidx.media3:media3-*:1.0.0-beta03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta03-এ
এইসব কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.2 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
- বর্তমানে বেছে নেওয়া ট্র্যাকের জন্য টানেলিং চালু করা আছে কিনা তা চেক করতে
ExoPlayer.isTunnelingEnabledযোগ করুন (#2518)। - একটি
MediaSource-কে র্যাপ করার প্রসেস সহজ করতেWrappingMediaSourceযোগ করুন (#7279)। - উপলভ্য মেমরি পর্যাপ্ত না থাকার কারণে প্লেব্যাক আটকে যাওয়ার আগে ব্যাক বাফার বাতিল করুন।
- অফলোড চালু করা থাকলে, ট্রেসিং "doSomeWork" ব্লক বন্ধ করুন।
PlaybackStatsListener-এ দ্রুত খোঁজার মাধ্যমে সেশন ট্র্যাকিং সংক্রান্ত সমস্যার সমাধান করুন (#১৮০)।seekToNextবাseekToPrevious-এ কল করার সময় সিঙ্গেল-আইটেম প্লেলিস্টেonMediaItemTransitionকলব্যাক মিসিং পাঠানো (#১০৬৬৭)।Player.getSurfaceSizeযোগ করুন যা ভিডিও রেন্ডার করা সারফেসের সাইজ রিটার্ন করে।- প্লেয়ার রিলিজ করার সময় লিসনার সরিয়ে দেওয়ার ফলে
IllegalStateException(#10758) হতে পারে, এই সমস্যার সমাধান করুন।
- বর্তমানে বেছে নেওয়া ট্র্যাকের জন্য টানেলিং চালু করা আছে কিনা তা চেক করতে
- বিল্ড:
- কম্পাইলেশন সংক্রান্ত সমস্যা এড়াতে ন্যূনতম
compileSdkVersionএনফোর্স করুন (#১০৬৮৪)। - অন্য গ্রেডেল বিল্ডে অন্তর্ভুক্ত থাকলে, ব্লক প্রকাশ করা এড়িয়ে চলুন।
- কম্পাইলেশন সংক্রান্ত সমস্যা এড়াতে ন্যূনতম
- ট্র্যাক বেছে নেওয়া:
- ডিসপ্লেতে Dolby Vision কাজ না করলে, অন্য ট্র্যাক বেছে নিন। (#8944)।
- ডাউনলোড:
- একই
PriorityTaskManager-এর মাধ্যমে একই সাথে ডাউনলোড ও প্লেব্যাক করার কারণেProgressiveDownloader-এ সম্ভাব্য ইনফিনিট লুপের সমস্যা সমাধান করুন (#10570)। - ডাউনলোড সংক্রান্ত বিজ্ঞপ্তি যাতে সাথে সাথে দেখা যায় তা নিশ্চিত করুন (#১৮৩)।
- অতিরিক্ত থ্রেড তৈরি করা এড়াতে সমান্তরাল ডাউনলোড অপসারণের সীমা ১-এ সীমাবদ্ধ করুন (#১০৪৫৮)।
- একই
- ভিডিও:
- ডিসপ্লেতে Dolby Vision কাজ না করলে, Dolby Vision-এর জন্য বিকল্প ডিকোডার ব্যবহার করে দেখুন। (#৯৭৯৪)।
- অডিও:
- একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory সমস্যা এড়াতে
AudioTrackইনস্ট্যান্স রিলিজ করার জন্যSingleThreadExecutorব্যবহার করুন (#10057)। - AudioTrack অফলোড স্ট্যাটাসের জন্য
AudioOffloadListener.onExperimentalOffloadedPlaybackযোগ করে। (#১৩৪)। AudioTrackBufferSizeProvider-কে পাবলিক ইন্টারফেস হিসেবে সেট করুন।- পছন্দের অডিও আউটপুট ডিভাইস (#১৩৫) সেট করতে
ExoPlayer.setPreferredAudioDeviceযোগ করুন। androidx.media3.exoplayer.audio.AudioProcessor-এর নাম পরিবর্তন করেandroidx.media3.common.audio.AudioProcessorকরুন।- সব Android ভার্সনে ৮-চ্যানেল ও ১২-চ্যানেল অডিওকে যথাক্রমে ৭.১ ও ৭.১.৪ চ্যানেল মাস্কে ম্যাপ করুন (#১০৭০১)।
- একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory সমস্যা এড়াতে
- মেটাডেটা:
MetadataRendererএখন মেটাডেটা উপলভ্য হওয়ার সাথে সাথেই সেটি রেন্ডার করার জন্য কনফিগার করা যাবে। রেন্ডারার মেটাডেটা আগে আউটপুট করবে নাকি প্লেয়ার পজিশনের সাথে সিঙ্ক করে আউটপুট করবে তা নির্দিষ্ট করতেMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)-এর সাথে একটি ইনস্ট্যান্স তৈরি করুন।
- DRM:
- Android 13 ClearKey ইমপ্লিমেন্টেশনে একটি বাগ নিয়ে কাজ করুন যা খালি নয় কিন্তু ভুল লাইসেন্স URL ফিরিয়ে দেয়।
- প্লেলিস্টে DRM স্কিমের মধ্যে (যেমন, Widevine থেকে ClearKey)
পরিবর্তন করার সময়
setMediaDrmSession failed: session not openedসমস্যার সমাধান করা।
- টেক্সট:
- CEA-608: ফিল্ড ২-এ সার্ভিস সুইচ কমান্ড সঠিকভাবে ম্যানেজ করা হয়েছে কিনা তা নিশ্চিত করুন (#১০৬৬৬)।
- DASH:
- ম্যানিফেস্ট থেকে
EventStream.presentationTimeOffsetপার্স করুন (#১০৪৬০)।
- ম্যানিফেস্ট থেকে
- UI:
- প্লেয়ারের বর্তমান ওভাররাইড প্রিসেট হিসেবে ব্যবহার করুন
TrackSelectionDialogBuilder(#১০৪২৯)।
- প্লেয়ারের বর্তমান ওভাররাইড প্রিসেট হিসেবে ব্যবহার করুন
- সেশন:
- কিছু কমান্ডের জন্য অ্যাসিঙ্ক্রোনাস রেজোলিউশন প্রয়োজন হলেও, কমান্ডগুলি সর্বদা সঠিক ক্রমে কার্যকর করা হয়েছে কিনা তা নিশ্চিত করুন (#৮৫)।
DefaultMediaNotificationProviderইনস্ট্যান্স তৈরি করতেDefaultMediaNotificationProvider.Builderযোগ করুন। বিল্ডার, বিজ্ঞপ্তি আইডি, বিজ্ঞপ্তি চ্যানেল আইডি এবং বিজ্ঞপ্তি চ্যানেল নাম কনফিগার করতে পারে যা পরিষেবা প্রদানকারী ব্যবহার করে। এছাড়াও, বিজ্ঞপ্তির ছোট আইকন সেট করতেDefaultMediaNotificationProvider.setSmallIcon(int)পদ্ধতি যোগ করুন। (#১০৪)।MediaController.release()-এর আগে পাঠানো কমান্ড যাতে ড্রপ না হয় তা নিশ্চিত করুন (#৯৯)।SimpleBitmapLoader,file://URI থেকে বিটম্যাপ লোড করতে পারে (#১০৮)।- নির্দিষ্ট সময়সীমার মধ্যে (#122) বিজ্ঞাপনের উপর
MediaController-কে সিক করা থেকে আটকায় এমন অ্যাসারশন ঠিক করুন। - প্লেব্যাক শেষ হলে, ফোরগ্রাউন্ড থেকে
MediaSessionServiceবন্ধ হয়ে যায় এবং শেষবার চালানো মিডিয়া আইটেমের প্লেব্যাক রিস্টার্ট করার জন্য একটি বিজ্ঞপ্তি দেখানো হয় (#১১২)। - পজ করার জন্য পেন্ডিং ইনটেন্ট সহ ফোরগ্রাউন্ড সার্ভিস শুরু করবেন না (#১৬৭)।
- API 26 ও API 27-এ
DefaultNotificationProvider-এর তৈরি করা বিজ্ঞপ্তির সাথে যুক্ত 'ব্যাজ' ম্যানুয়ালি লুকান (API 28+-এ ব্যাজ অটোমেটিক লুকানো হয়) (#১৩১)। - পুরনো MediaSession থেকে Media3 MediaController-এ দ্বিতীয় বাইন্ডার কানেকশন IllegalStateExceptions (#৪৯) ঘটায়, এই সমস্যার সমাধান করা হয়েছে।
- RTSP:
- IMA:
- বিজ্ঞাপন লোড করার সময় IMA SDK আটকে গেলে সেই পরিস্থিতি সামাল দেওয়ার জন্য বিজ্ঞাপনের তথ্য লোড করার টাইমআউট যোগ করুন (#১০৫১০)।
- কন্টেন্টের শেষ পর্যন্ত দেখার সময় মিড-রোল বিজ্ঞাপন এড়িয়ে যাওয়া আটকান (#১০৬৮৫)।
- সার্ভার-সাইড ইনসার্ট করা বিজ্ঞাপন সহ লাইভ স্ট্রিমের জন্য উইন্ডোর সময়সীমা সঠিকভাবে গণনা করুন, যেমন IMA DAI (#১০৭৬৪)।
- FFmpeg এক্সটেনশন:
- NDK 23.1.7779620 এবং তার পরবর্তী ভার্সনের সাথে FFmpeg লাইব্রেরি লিঙ্ক করার জন্য নতুন প্রয়োজনীয় ফ্ল্যাগ যোগ করুন (#9933)।
- AV1 এক্সটেনশন:
- লেটেস্ট Android Studio রিলিজের সাথে অসামঞ্জস্যতা এড়াতে CMake ভার্সন আপডেট করুন (#9933)।
- কাস্ট এক্সটেনশন:
MediaController-এর মাধ্যমে প্লেব্যাক নিয়ন্ত্রণ করার সময়CastPlayerশনাক্ত করতেgetDeviceInfo()প্রয়োগ করুন (#১৪২)।
- ট্রান্সফর্মার:
- আউটপুট স্যাম্পেল তৈরি করার প্রসেস খুব ধীরগতির হলে তা শনাক্ত করতে মিক্সার ওয়াচডগ টাইমার যোগ করুন।
- বাতিল করা চিহ্ন সরান:
Transformer.Builder.setOutputMimeType(String)সরান। এই ফিচারটি সরিয়ে দেওয়া হয়েছে। ডিফল্ট মাক্সার ব্যবহার করা হলে MIME-এর ধরন সবসময় MP4 হবে।
ভার্সন 1.0.0-beta02
২১ জুলাই, ২০২২
androidx.media3:media3-*:1.0.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta02-এ
এইসব কমিট রয়েছে।
এই রিলিজ ExoPlayer 2.18.1 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
ShuffleOrder-এর পরিবর্তেExoPlayer.setShuffleOrderব্যবহার করলেreason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED-এর সাথেPlayer.Listener#onTimelineChanged-এ কল করা যাবে কিনা তা নিশ্চিত করুন (#9889)।- প্রোগ্রেসিভ মিডিয়ার জন্য, বাফার করা পজিশনে শুধু বেছে নেওয়া ট্র্যাক অন্তর্ভুক্ত করুন (#১০৩৬১)।
- সব ExoPlayer লগ আউটপুটের জন্য কাস্টম লগারকে অনুমতি দিন (#৯৭৫২)।
DefaultMediaSourceFactory-এsetDataSourceFactory-এর প্রয়োগ সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যা কিছু ক্ষেত্রে কাজ করছিল না (#116)।
- এক্সট্র্যাক্টর:
- DASH:
- ম্যানিফেস্ট থেকে ClearKey লাইসেন্স URL পার্স করুন (#১০২৪৬)।
- UI:
- প্লেব্যাক কন্ট্রোল মেনুতে বর্তমানে অ্যাক্টিভ স্পিড বিকল্পটি টকব্যাক ঘোষণা করছে কিনা তা নিশ্চিত করুন (#১০২৯৮)।
- RTSP:
- VP8 ফ্র্যাগমেন্টেড প্যাকেট হ্যান্ডলিং যোগ করুন (#১১০)।
- Leanback এক্সটেনশন:
LeanbackAdapter-এplayWhenReadyপরিবর্তন শুনুন (১০৪২০)।
- কাস্ট:
ভার্সন 1.0.0-beta01
১৬ জুন, ২০২২
androidx.media3:media3-*:1.0.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-beta01-এ
এইসব কমিট রয়েছে।
এটি ExoPlayer 2.18.0 রিলিজ-এর সাথে সম্পর্কিত।
- কোর লাইব্রেরি:
MediaMetricsManager-এর মাধ্যমে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সহায়তা চালু করুন। ExoPlayer প্ল্যাটফর্মে প্লেব্যাক ইভেন্ট এবং পারফর্ম্যান্স ডেটা ফরওয়ার্ড করবে, যা ডিভাইসে সিস্টেম পারফর্ম্যান্স এবং ডিবাগিং তথ্য প্রদান করতে সাহায্য করে। এছাড়াও, ডিভাইসের ব্যবহারকারী ব্যবহার ও ডায়াগনস্টিক ডেটা শেয়ার করার বিকল্প চালু করলে, Google এই ডেটা সংগ্রহ করতে পারে।ExoPlayer.Builder.setUsePlatformDiagnostics(false)-এর মাধ্যমে ExoPlayer-এর জন্য প্ল্যাটফর্ম ডায়াগনস্টিক্সে কন্ট্রিবিউট করা থেকে অ্যাপ অপ্ট-আউট করতে পারে।MergingMediaSourceব্যবহার করার সময় ট্র্যাক খুব ঘন ঘন রিসেট হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে, যেমন সাবটাইটেল সাইড-লোড করার সময় এবং প্লেব্যাক চলাকালীন বেছে নেওয়া সাবটাইটেল পরিবর্তন করার সময় (#১০২৪৮)।- API 29 ও 30-এ 5G-NSA নেটওয়ার্কের ধরন শনাক্ত করা বন্ধ করুন। এইসব প্লেব্যাক 4G নেটওয়ার্ক ব্যবহার করবে।
null-কেMediaSource.Factory.setDrmSessionManagerProviderএবংMediaSource.Factory.setLoadErrorHandlingPolicy-এ পাস করার অনুমতি দেবেন না। প্রয়োজন হলে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করা হয়েছে। এর মধ্যেPlayer.Listener.onTracksChangedমেথডের নাম 'আন-ডেপ্রিকেট' করা অন্তর্ভুক্ত, তবে আলাদা প্যারামিটার টাইপ সহ।DefaultTrackSelector.buildUponParametersএবংDefaultTrackSelector.Parameters.buildUponপরিবর্তন করেDefaultTrackSelector.Parameters.Builderফিরিয়ে আনুন, বন্ধ হয়ে যাওয়াDefaultTrackSelector.ParametersBuilder-এর পরিবর্তে।DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilitiesযোগ করুন যা ডিফল্ট হিসেবে চালু করা থাকে। চালু করা থাকলে,DefaultTrackSelectorএমন অডিও ট্র্যাক পছন্দ করবে যার চ্যানেল সংখ্যা ডিভাইসের আউটপুট ক্ষমতার বেশি নয়। হ্যান্ডহেল্ড ডিভাইসে,DefaultTrackSelectorমাল্টিচ্যানেল অডিও ফর্ম্যাটের পরিবর্তে স্টেরিও/মোনো ফর্ম্যাটকে অগ্রাধিকার দেবে, যদি না মাল্টিচ্যানেল ফর্ম্যাট স্পেশিয়ালাইজড (Android 12L+) করা যায় অথবা Dolby সারাউন্ড সাউন্ড ফর্ম্যাট হয়। এছাড়াও, অডিও স্পেশিয়ালাইজেশন কাজ করে এমন ডিভাইসে,DefaultTrackSelectorস্পেশিয়ালাইজার প্রপার্টি-তে পরিবর্তন মনিটর করবে এবং এর ভিত্তিতে নতুন ট্র্যাক বেছে নেবে।televisionUI মোড সহ ডিভাইসগুলি এই সীমাবদ্ধতা থেকে বাদ দেওয়া হয়েছে এবং সর্বোচ্চ চ্যানেল সংখ্যা সহ ফর্ম্যাটটি পছন্দ করা হবে। এই ফিচার চালু করতে,DefaultTrackSelectorইনস্ট্যান্স অবশ্যইContextদিয়ে তৈরি করতে হবে।
- ভিডিও:
DummySurface-এর নাম পরিবর্তন করেPlaceholderSurfaceকরুন।MediaCodecVideoRenderer.getCodecMaxInputSize-এ AV1 সাপোর্ট যোগ করুন।
- অডিও:
- LG AC3 অডিও ডিকোডার বিজ্ঞাপন নন-স্ট্যান্ডার্ড MIME-এর প্রকার ব্যবহার করুন।
AudioAttributes.getAudioAttributesV21()-এর রিটার্ন টাইপandroid.media.AudioAttributesথেকে নতুনAudioAttributesV21র্যাপার ক্লাসে পরিবর্তন করুন, যাতে API < 21-এ ART যাচাইকরণ ধীরগতির না হয়।- ফর্ম্যাট অডিও চ্যানেল কাউন্ট সেট না করা থাকলে, অডিও পাসথ্রুয়ের জন্য প্ল্যাটফর্ম (API 29+) কোয়েরি করুন অথবা অডিও এনকোডিং চ্যানেল কাউন্ট অনুমান করুন, যা HLS চাঙ্কলেস প্রিপারেশনের (10204) সাথে ঘটে।
- ডিকোডার ১২ চ্যানেল পিসিএম অডিও আউটপুট করলে
AudioTrackচ্যানেল মাস্কের সাথেAudioFormat.CHANNEL_OUT_7POINT1POINT4কনফিগার করুন (#১০৩২২.
- DRM
- ফর্ম্যাট পরিবর্তন করার ঠিক পরেই সিক করার সময় DRM সেশন সবসময় সঠিকভাবে আপডেট করা হয়েছে কিনা তা নিশ্চিত করুন (10274)।
- টেক্সট:
List<Cue>-এর পরিবর্তেCueGroupরিটার্ন করতেPlayer.getCurrentCues()পরিবর্তন করুন।- SSA:
BorderStyle == 3(যেমনOutlineColourকিউয়ের ব্যাকগ্রাউন্ড সেট করে) হলেOutlineColourস্টাইল সেটিং সাপোর্ট করে (#৮৪৩৫)। - CEA-708: একাধিক পরিষেবা ব্লকে ডেটা পার্স করুন এবং বর্তমানে বেছে নেওয়া পরিষেবা নম্বরের সাথে সম্পর্কিত নয় এমন ব্লক উপেক্ষা করুন।
RawCcExtractorসরিয়ে দিন, যা শুধুমাত্র Google-এর ইন্টার্নাল সাবটাইটেল ফর্ম্যাট ম্যানেজ করার জন্য ব্যবহার করা হয়েছিল।
- এক্সট্র্যাক্টর:
- UI:
useController=false-এর ক্ষেত্রেPlayerView-এ সেট করাOnClickListener-এ ইভেন্ট ডেলিভারি সংক্রান্ত সমস্যার সমাধান করুন (#9605)। এছাড়াও, সব ভিউ কনফিগারেশনের জন্যOnLongClickListener-এ ইভেন্ট ডেলিভারি সংক্রান্ত সমস্যার সমাধান করুন।ACTION_UP-এর আগেPlayerView-এর বাউন্ডারি থেকে বেরিয়ে যাওয়া টাচ ইভেন্টের সিকোয়েন্সকে ভুল করে ক্লিক হিসেবে বিবেচনা করার সমস্যার সমাধান করা হয়েছে (#৯৮৬১)।PlayerViewঅ্যাক্সেসিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে ট্যাপ করলে কন্ট্রোল লুকানোর পরিবর্তে প্লেব্যাক টগল হতে পারে (#৮৬২৭)।ExoPlayer-এর পরিবর্তেPlayerইন্টারফেসের সাথে কাজ করার জন্যTrackSelectionViewএবংTrackSelectionDialogBuilderআবার লেখো। এটি ভিউকে অন্যান্যPlayerইমপ্লিমেন্টেশনের সাথে ব্যবহার করার অনুমতি দেয় এবং UI মডিউল থেকে ExoPlayer মডিউলের নির্ভরতা সরিয়ে দেয়। এটি একটি ব্রেকিং পরিবর্তন।PlayerViewট্র্যাক সিলেক্টরে ফোর্সড টেক্সট ট্র্যাক দেখাবেন না এবং "কোনওটিই নয়" বিকল্প বেছে নেওয়া হলে উপযুক্ত ফোর্সড টেক্সট ট্র্যাক বেছে নিন (#৯৪৩২)।
- DASH:
- DTS
AudioChannelConfigurationএলিমেন্ট থেকে চ্যানেল সংখ্যা পার্স করুন। এটি DTS স্ট্রিমের জন্য অডিও পাসথ্রু আবার চালু করে (#১০১৫৯)। DashMediaSource.Factory.setCompositeSequenceableLoaderFactory-এnullপাস করার অনুমতি দেবেন না। প্রয়োজন হলেDefaultCompositeSequenceableLoaderFactory-এর ইনস্ট্যান্স স্পষ্টভাবে পাস করা যেতে পারে।
- DTS
- HLS:
- প্লেলিস্টের CODECS অ্যাট্রিবিউটে অডিও কোডেক না থাকলে চাঙ্কফুল প্রস্তুতিতে ফিরে যান (#১০০৬৫)।
null-কেHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory,HlsMediaSource.Factory.setPlaylistParserFactoryএবংHlsMediaSource.Factory.setPlaylistTrackerFactory-এ পাস করার অনুমতি দেবেন না। প্রয়োজন হলেDefaultCompositeSequenceableLoaderFactory,DefaultHlsPlaylistParserFactory-এর ইনস্ট্যান্স অথবাDefaultHlsPlaylistTracker.FACTORY-এর রেফারেন্স স্পষ্টভাবে পাস করা যেতে পারে।
- স্মুথ স্ট্রিমিং:
SsMediaSource.Factory.setCompositeSequenceableLoaderFactory-এnullপাস করার অনুমতি দেবেন না। প্রয়োজন হলেDefaultCompositeSequenceableLoaderFactory-এর ইনস্ট্যান্স স্পষ্টভাবে পাস করা যেতে পারে।
- RTSP:
- H263-এর জন্য RTP রিডার যোগ করুন (#63)।
- MPEG4-এর জন্য RTP রিডার যোগ করুন (#৩৫)।
- HEVC-এর জন্য RTP রিডার যোগ করুন (#৩৬)।
- AMR-এর জন্য RTP রিডার যোগ করুন। বর্তমানে শুধুমাত্র মনো-চ্যানেল, নন-ইন্টারলিভড AMR স্ট্রিম কাজ করে। কম্পাউন্ড AMR RTP পেলোড কাজ করে না। (#46)
- VP8-এর জন্য RTP রিডার যোগ করুন (#৪৭)।
- WAV-এর জন্য RTP রিডার যোগ করুন (#56)।
- RTSP বেসিক অথরাইজেশন হেডার সংক্রান্ত সমস্যার সমাধান করুন। (#9544)।
- ExoPlayer-এর প্রয়োজন নেই বলে বাধ্যতামূলক SDP ফিল্ড চেক করা বন্ধ করুন (#10049)।
- RTSP টাইমিং পার্স করার সময় চেক করা ব্যতিক্রম থ্রো করুন (#১০১৬৫)।
- VP9-এর জন্য RTP রিডার যোগ করুন (#47)।
- OPUS-এর জন্য RTP রিডার যোগ করুন (#53)।
- ডেটা সোর্স:
DummyDataSource-এর নাম পরিবর্তন করেPlaceholderDataSourceকরুন।- OkHttp ইন্টারাপ্ট হ্যান্ডলিংয়ের বিকল্প সমাধান।
- সেশন:
- অ্যাসিঙ্ক্রোনাস রেজোলিউশনের অনুরোধের অনুমতি দিতে
MediaSession.MediaItemFiller-এর পরিবর্তেMediaSession.Callback.onAddMediaItemsব্যবহার করুন। MediaControllerকোনও লিগ্যাসি মিডিয়া সেশনের সাথে কানেক্ট করলে,setMediaItems(s)পদ্ধতি কাজ করে।MediaController.setMediaUriএবংMediaSession.Callback.onSetMediaUriসরান।MediaController.setMediaItemএবংMediaSession.Callback.onAddMediaItemsব্যবহার করে একই কার্যকারিতা পাওয়া যেতে পারে।onSetMediaUri-এর পরিবর্তেMediaSession.Callback.onAddMediaItems-এ মিডিয়া চালাতে পুরনোMediaControllerকল ফরওয়ার্ড করুন।- বিজ্ঞপ্তি কাস্টমাইজ করার সুবিধা দিতে
MediaNotification.ProviderএবংDefaultMediaNotificationProviderযোগ করুন। - আর্টওয়ার্কের ছবি ডাউনলোড করার জন্য
BitmapLoaderএবংSimpleBitmapLoaderযোগ করুন। - লিগ্যাসি সেশনের সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি প্রদান করতে
MediaSession.setCustomLayout()যোগ করুন। - পুরনো সেশনের সাথে ফিচার সমতা প্রদান করতে
MediaSession.setSessionExtras()যোগ করুন। MediaSession.MediaSessionCallback-এর নাম পরিবর্তন করেMediaSession.Callback,MediaLibrarySession.MediaLibrarySessionCallback-এর নাম পরিবর্তন করেMediaLibrarySession.CallbackএবংMediaSession.Builder.setSessionCallback-এর নাম পরিবর্তন করেsetCallbackকরুন।MediaControllerImplLegacy-এ NPE সংক্রান্ত সমস্যার সমাধান করুন (#৫৯)।- টাইমলাইনে সেশন পজিশন সংক্রান্ত তথ্য আপডেট করুন পরিবর্তন(#51)।
- কন্ট্রোলার রিলিজ করার পরে
MediaControllerImplBase-এ NPE ঠিক করুন (#74)।
- অ্যাসিঙ্ক্রোনাস রেজোলিউশনের অনুরোধের অনুমতি দিতে
- বিজ্ঞাপন প্লেব্যাক / IMA:
- মিডিয়া রেটিং কাউন্সিলের (MRC) সাজেশন অনুযায়ী, বিজ্ঞাপন পোলিং রেট প্রতি ১০০ মিলি সেকেন্ড থেকে কমিয়ে প্রতি ২০০ মিলি সেকেন্ড করুন।
- FFmpeg এক্সটেনশন:
- CMake ভার্সন
3.21.0+-এ আপডেট করুন যাতে CMake বাগের কারণে AndroidStudio-র gradle সিঙ্ক ব্যর্থ না হয় (#৯৯৩৩)।
- CMake ভার্সন
- বাতিল করা চিহ্ন সরান:
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)সরান। পরিবর্তেPlayer.Listener.onTracksChanged(Tracks)ব্যবহার করুন।Player.getCurrentTrackGroupsএবংPlayer.getCurrentTrackSelectionsসরান। পরিবর্তেPlayer.getCurrentTracksব্যবহার করুন। এছাড়াও, আপনিExoPlayer.getCurrentTrackGroupsএবংExoPlayer.getCurrentTrackSelectionsব্যবহার করা চালিয়ে যেতে পারবেন, যদিও এইসব পদ্ধতি বন্ধ করা হয়েছে।DownloadHelperDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORTএবংDEFAULT_TRACK_SELECTOR_PARAMETERSধ্রুবক সরান। সম্ভব হলেgetDefaultTrackSelectorParameters(Context)ব্যবহার করুন, অন্যথায়DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXTব্যবহার করুন।DefaultTrackSelector(ExoTrackSelection.Factory)কনস্ট্রাক্টর সরান। পরিবর্তেDefaultTrackSelector(Context, ExoTrackSelection.Factory)ব্যবহার করুন।Transformer.Builder.setContextসরান। এর পরিবর্তেContext-কেTransformer.Builderকনস্ট্রাক্টরে পাস করতে হবে।
ভার্সন 1.0.0-alpha03
১৪ মার্চ, ২০২২
androidx.media3:media3-*:1.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha03-এ
এইসব কমিট
রয়েছে।
এটি ExoPlayer 2.17.1 রিলিজ-এর সাথে সম্পর্কিত।
- অডিও:
- HLS-এ Dolby Atmos (E-AC3-JOC)-এর জন্য অডিও ক্ষমতা চেক করার সময় হওয়া সমস্যার সমাধান করা হয়েছে।
- এক্সট্র্যাক্টর:
- FMP4: v0 এবং v1 emsg অ্যাটম (#৯৯৯৬) উভয়ই আছে এমন স্ট্রিমের জন্য emsg স্যাম্পেল মেটাডেটা ভুল ক্রমে আউটপুট হতে পারে এমন সমস্যার সমাধান করুন।
- টেক্সট:
SingleSampleMediaSource.Factory.setTrackIdএবংMediaItem.SubtitleConfiguration.Builder.setId-এর ইন্টার্যাকশন সংক্রান্ত সমস্যার সমাধান করুন যাতেSubtitleConfigurationফিল্ডকে অগ্রাধিকার দেওয়া যায় এবং এটি সেট করা না থাকলেFactoryভ্যালুতে ফিরে যাওয়া যায় (#10016)।
- বিজ্ঞাপন প্লেব্যাক:
- লাইভ HLS SSAI স্ট্রিমে বিজ্ঞাপন চলাকালীন অডিও আন্ডাররান সংক্রান্ত সমস্যার সমাধান করুন।
ভার্সন 1.0.0-alpha02
২ মার্চ, ২০২২
androidx.media3:media3-*:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ
এইসব কমিট
রয়েছে।
এটি ExoPlayer 2.17.0 রিলিজ-এর সাথে সম্পর্কিত।
- Core Library:
- সুরক্ষিত পদ্ধতি
DefaultRenderersFactory.getCodecAdapterFactory()যোগ করুন যাতেDefaultRenderersFactory-এর সাবক্লাস যাbuildVideoRenderers()বাbuildAudioRenderers()ওভাররাইড করে, কোডেক অ্যাডাপ্টার ফ্যাক্টরি অ্যাক্সেস করতে পারে এবং এটি তাদের তৈরি করাMediaCodecRendererইনস্ট্যান্সে পাঠাতে পারে। - ICY হেডার ফিল্ড
nameএবংgenreযথাক্রমেMediaMetadata.stationএবংMediaMetadata.genre-এ প্রোপাগেট করুন যাতে সেগুলিPlayer.Listener.onMediaMetadataChanged()-এর মাধ্যমে অ্যাপে পৌঁছায় (#৯৬৭৭)। DefaultHttpDataSource#getResponseHeadersথেকে ফাঁকা কী সরান।MediaCodecইনস্ট্যান্স তৈরি করা না গেলে, স্লিপ মোডে গিয়ে আবার চেষ্টা করুন। এটি কিছু ডিভাইসে সারফেসকে সুরক্ষিত কোডেক থেকে অন্য কোডেকে পরিবর্তন করার সময় যে সমস্যা হয় তার সমাধান করে (#৮৬৯৬)।- ব্যবহারকারীদের
MediaCodecথেকে মেট্রিক ডেটা পাওয়ার অনুমতি দিতেMediaCodecAdapter.getMetrics()যোগ করুন। (#9766)। - Maven ডিপেন্ডেন্সি রেজোলিউশন সংক্রান্ত সমস্যার সমাধান করুন (#৮৩৫৩)।
- লাইভ স্ট্রিমের জন্য অটোমেটিক স্পিড অ্যাডজাস্টমেন্ট বন্ধ করুন, যেটিতে লো-লেটেন্সি ফিচার নেই এবং ব্যবহারকারী স্পিড সেট করার অনুরোধ করেননি (#9329)।
DecoderCounters#inputBufferCount-এর নাম পরিবর্তন করেqueuedInputBufferCountকরুন।SimpleExoPlayer.renderersব্যক্তিগত করুন।ExoPlayer.getRenderer-এর মাধ্যমে রেন্ডারার অ্যাক্সেস করা যাবে।Player.EventFlags-এর ভ্যালুর সাথে ম্যাচ করার জন্য কিছুAnalyticsListener.EventFlagsকনস্ট্যান্ট ভ্যালু আপডেট করা হয়েছে।AnalyticsCollector-কে ইন্টারফেস ও ডিফল্ট ইমপ্লিমেন্টেশনে ভাগ করুন যাতে কোনও অ্যাপের প্রয়োজন না হলে R8-এর মাধ্যমে এটি স্ট্রিপ করা যায়।
- সুরক্ষিত পদ্ধতি
- ট্র্যাক বেছে নেওয়া:
- ট্র্যাক বেছে নেওয়ার সময় পছন্দের ভিডিও রোল ফ্ল্যাগ সংক্রান্ত সহায়তা (#৯৪০২)।
- অ্যাডাপ্টেশনের জন্য একাধিক ভিডিও ট্র্যাক বেছে নেওয়ার সময়, পছন্দের MIME-এর প্রকার ও রোল ফ্ল্যাগ বিবেচনা করার জন্য ভিডিও ট্র্যাক বেছে নেওয়ার লজিক আপডেট করুন (#9519)।
- ভিডিও ও অডিও ট্র্যাক বেছে নেওয়ার লজিক আপডেট করা হয়েছে যাতে অ্যাডাপ্টিভ সিলেকশনের জন্য শুধু সেইসব ফর্ম্যাট বেছে নেওয়া হয় যেগুলির ডিকোডার ও হার্ডওয়্যার সাপোর্ট একই লেভেলের (#9565)।
- প্রাইমারি, হার্ডওয়্যার-অ্যাক্সিলারেটেড ডিকোডার দ্বারা একাধিক কোডেক সমর্থিত হলে আরও দক্ষ কোডেক পছন্দ করার জন্য ভিডিও ট্র্যাক নির্বাচন লজিক আপডেট করুন (#4835).
- টেকনিক্যাল ট্র্যাক বেছে নেওয়ার সীমাবদ্ধতার (যেমন, পছন্দের MIME-এর প্রকার বা সর্বাধিক চ্যানেল সংখ্যা) পরিবর্তে অডিও কন্টেন্ট সংক্রান্ত পছন্দ (যেমন, "ডিফল্ট" অডিও ট্র্যাক বা সিস্টেমের স্থানীয় ভাষার সাথে ম্যাচ করে এমন ট্র্যাক) বেছে নিন।
- ট্র্যাক বেছে নেওয়ার সমস্যা সমাধান করা হয়েছে যেখানে একটি ট্র্যাক গ্রুপ ওভাররাইড করলে একই ধরনের অন্য ট্র্যাক গ্রুপ বন্ধ হয়ে যেত না (#৯৬৭৫)।
- ট্র্যাক বেছে নেওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে খালি নয় এবং খালি ট্র্যাক ওভাররাইডের মিশ্রণ সঠিকভাবে প্রয়োগ করা হয় না (#৯৬৪৯)।
TrackGroupArray-এ ডুপ্লিকেটTrackGroupনিষিদ্ধ করুন।TrackGroupকনস্ট্রাক্টরেidসেট করেTrackGroup-কে সবসময় আলাদা করে চেনা যায়। এটি অ্যাক্টিভ ট্র্যাক ওভাররাইড সহ অ্যাপ ব্যাকগ্রাউন্ডে পাঠানোর পরে প্লেব্যাক আবার শুরু করার সময় ক্র্যাশ হওয়ার সমস্যা সমাধান করে (#9718)।AdaptiveTrackSelection-এ লজিক সংশোধন করুন যাতে প্লেব্যাক লাইভ এজের খুব কাছাকাছি থাকলেও পর্যাপ্ত নেটওয়ার্ক ব্যান্ডউইথের অধীনে কোয়ালিটি বাড়ানোর অনুমতি দেওয়া যায় (#৯৭৮৪)।
- ভিডিও:
- প্রয়োজন হলে, Dolby Vision-এর জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন যাতে মানানসই H264/H265 ডিকোডার ব্যবহার করা যায়।
- অডিও:
- প্রয়োজন হলে, মানানসই E-AC3 ডিকোডার ব্যবহার করার জন্য Dolby Atmos (E-AC3-JOC)-এর ডিকোডার ফলব্যাক লজিক ঠিক করুন।
AudioCapabilitiesAPI পরিবর্তন করুন যাতেnull-এর পরিবর্তে স্পষ্টভাবেAudioCapabilities.DEFAULT_AUDIO_CAPABILITIESপাস করতে হয়।AudioTrackBufferSizeProvider-কেDefaultAudioSink-এ ইনজেক্ট করার মাধ্যমেAudioTrackবাফার সাইজ গণনা কাস্টমাইজ করার অনুমতি দিন। (#8891).- অনুরোধ করা বাফার সাইজ > ১ এমবি হলে,
AudioTrackতৈরি করার জন্য আবার চেষ্টা করুন। (#9712)।
- এক্সট্র্যাক্টর:
- টেক্সট:
- একটি
MediaItem.SubtitleConfiguration.idফিল্ড যোগ করুন যা কনফিগারেশন থেকে তৈরি সাবটাইটেল ট্র্যাকেরFormat.idফিল্ডে প্রচার করা হয় (#9673)। - Matroska কন্টেনারে WebVTT সাবটাইটেলের জন্য প্রাথমিক সহায়তা যোগ করা হয়েছে (#9886)।
Cea708Decoder-কে কোনও পরিষেবা ব্লকের ঘোষিত সাইজের চেয়ে বেশি ডেটা পড়া থেকে আটকায়।
- একটি
- DRM:
DrmSessionManager.(pre)acquireSessionথেকেplaybackLooperসরান। কোনও অ্যাপ কাস্টমMediaSource-এDrmSessionManagerব্যবহার করলে,playbackLooper-এর পরিবর্তেDrmSessionManager.setPlayerপাস করতে হবে।
- বিজ্ঞাপন প্লেব্যাক / IMA:
- IMA ডায়নামিক বিজ্ঞাপন ইনসার্শন (DAI)-এর জন্য সহায়তা যোগ করুন (#8213).
AdPlaybackState-এ একটি পদ্ধতি যোগ করুন যাতে বিজ্ঞাপন গ্রুপ রিসেট করার অনুমতি দেওয়া যায় এবং এটি আবার চালানো যায় (#৯৬১৫)।- বিজ্ঞাপন প্লেব্যাকের সময় প্লেব্যাক স্পিড ১.০-এ সেট করুন (#9018)।
- বিজ্ঞাপন গ্রুপ লোড না হওয়ার কারণে অবিলম্বে প্লেব্যাক রিসেট হয়ে যাওয়ার সমস্যা সমাধান করা হয়েছে (#9929)।
- UI:
- DASH:
Representation-এ পার্স করা প্রয়োজনীয় ও সাপ্লিমেন্টাল প্রপার্টি যোগ করুন (#9579)।forced-subtitleট্র্যাক রোলের জন্য সহায়তা (#9727)।mainট্র্যাকের ভূমিকাC.SELECTION_FLAG_DEFAULTহিসেবে ব্যাখ্যা করা বন্ধ করুন।- DVB নেমস্পেস (#৯৮৫৬) ঘোষণা করে না এমন ম্যানিফেস্টের জন্য বেস URL এক্সক্লুশন লজিক ঠিক করুন।
- রিলেটিভ
MPD.LocationURL-এর জন্য সহায়তা (#9939).
- HLS:
- শুধুমাত্র অডিও HLS স্ট্রিমের জন্য
Format.labelসঠিকভাবে পপুলেট করুন (#9608)। - শুরু করার সময় উন্নত করতে ডিফল্ট হিসেবে চাঙ্কলেস প্রস্তুতি ব্যবহার করুন। আপনার
রেন্ডিশনে যদি মাক্সড ক্লোজড-ক্যাপশন ট্র্যাক থাকে যা মাস্টার প্লেলিস্টে
ঘোষণা করা হয়নি, তাহলে প্লেব্যাকের জন্য উপলভ্য করতে আপনাকে সেগুলি মাস্টার প্লেলিস্টে যোগ করতে হবে অথবা
HlsMediaSource.Factory.setAllowChunklessPreparation(false)-এর মাধ্যমে চাঙ্কলেস প্রস্তুতি বন্ধ করতে হবে। - HLS-এ কী-ফ্রেম অ্যাকুরেট সিকিংয়ের সুবিধা (#২৮৮২)।
- শুধুমাত্র অডিও HLS স্ট্রিমের জন্য
- RTSP:
- ট্রান্সফর্মার:
- প্রয়োজনীয় ন্যূনতম API ভার্সন বাড়িয়ে ২১ করুন।
- ট্রান্সফর্মেশনের সময় হওয়া সমস্যা বর্ণনা করতে এখন
TransformationExceptionব্যবহার করা হয়। - ট্রান্সফর্মেশনের বিকল্প নির্দিষ্ট করতে
TransformationRequestযোগ করুন। - একাধিক শ্রোতাকে রেজিস্টার করার অনুমতি দিন।
- কোডেক আউটপুট আংশিকভাবে পড়া হলে ট্রান্সফরমার আটকে যাওয়ার সমস্যা সমাধান করুন।
- muxer রিলিজ করার সময়
Transformer.getProgress-এ সম্ভাব্য NPE সংক্রান্ত সমস্যার সমাধান করুন। - ট্রান্সফর্মেশন প্রয়োগ করার জন্য একটি ডেমো অ্যাপ যোগ করুন।
- MediaSession এক্সটেনশন:
- ডিফল্ট হিসেবে,
MediaSessionConnectorএখন বন্ধ করার সময় প্লেলিস্ট মুছে দেয়। যেসব অ্যাপ প্লেলিস্ট রেখে দিতে চায়, তারা কানেক্টরেsetClearMediaItemsOnStop(false)কল করতে পারে।
- ডিফল্ট হিসেবে,
- কাস্ট এক্সটেনশন:
- FFmpeg এক্সটেনশন:
build_ffmpeg.sh-কে GNU-এর পরিবর্তে LLVM-এর বিন ইউটিলিটির উপর নির্ভর করতে বাধ্য করুন (#9933)।
- Android 12-এর সাথে মানানসই:
- Cast এক্সটেনশন আপগ্রেড করুন যাতে এটি
com.google.android.gms:play-services-cast-framework:20.1.0-এর উপর নির্ভর করে।play-services-cast-framework-এর আগের ভার্সনগুলি Android 12-কে টার্গেট করা অ্যাপের সাথে মানানসই নয় এবংPendingIntentতৈরি করার সময়IllegalArgumentException-এর সাথে ক্র্যাশ করবে (#9528)।
- Cast এক্সটেনশন আপগ্রেড করুন যাতে এটি
- বাতিল করা চিহ্ন সরান:
Player.EventListenerসরান। পরিবর্তেPlayer.Listenerব্যবহার করুন।MediaSourceFactory#setDrmSessionManager,MediaSourceFactory#setDrmHttpDataSourceFactoryএবংMediaSourceFactory#setDrmUserAgentসরান। পরিবর্তেMediaSourceFactory#setDrmSessionManagerProviderব্যবহার করুন।MediaSourceFactory#setStreamKeysসরান। পরিবর্তেMediaItem.Builder#setStreamKeysব্যবহার করুন।MediaSourceFactory#createMediaSource(Uri)সরান। পরিবর্তেMediaSourceFactory#createMediaSource(MediaItem)ব্যবহার করুন।DashMediaSource,HlsMediaSourceওSsMediaSourceথেকেsetTagসরান। এর পরিবর্তেMediaItem.Builder#setTagব্যবহার করুন।DashMediaSource#setLivePresentationDelayMs(long, boolean)সরান। ম্যানিফেস্ট ওভাররাইড করতেMediaItem.Builder#setLiveConfigurationএবংMediaItem.LiveConfiguration.Builder#setTargetOffsetMsব্যবহার করুন অথবা ফলব্যাক ভ্যালু প্রদান করতেDashMediaSource#setFallbackTargetLiveOffsetMsব্যবহার করুন।(Simple)ExoPlayer.setThrowsWhenUsingWrongThreadসরান। থ্রেড এনফোর্সমেন্ট থেকে বেরিয়ে আসা আর সম্ভব নয়।ActionFileএবংActionFileUpgradeUtilসরিয়ে দিন।DefaultDownloadIndex-এ পুরনো অ্যাকশন ফাইল মার্জ করতেActionFileUpgradeUtilব্যবহার করার আগে ExoPlayer 2.16.1 বা তার আগের ভার্সন ব্যবহার করুন।ProgressiveMediaSource#setExtractorsFactoryসরান। পরিবর্তেProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)কনস্ট্রাক্টর ব্যবহার করুন।ProgressiveMediaSource.Factory#setTagএবং, এবংProgressiveMediaSource.Factory#setCustomCacheKeyসরিয়ে দিন। পরিবর্তেMediaItem.Builder#setTagএবংMediaItem.Builder#setCustomCacheKeyব্যবহার করুন।DefaultRenderersFactory(Context, @ExtensionRendererMode int)এবংDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)কনস্ট্রাক্টর সরান। পরিবর্তেDefaultRenderersFactory(Context)কনস্ট্রাক্টর,DefaultRenderersFactory#setExtensionRendererModeএবংDefaultRenderersFactory#setAllowedVideoJoiningTimeMsব্যবহার করুন।- সব পাবলিক
CronetDataSourceকনস্ট্রাক্টর সরিয়ে দিন। পরিবর্তেCronetDataSource.Factoryব্যবহার করুন।
- নিম্নলিখিত
IntDefsপরিবর্তন করে শুধু@Target(TYPE_USE)করুন। এর ফলে Kotlin-এ ব্যবহারের কম্পাইলেশন ভেঙে যেতে পারে, যা টাইপ (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
২৭ অক্টোবর, ২০২১
androidx.media3:media3-*:1.0.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha01-এ
এইসব কমিট
রয়েছে।
নতুন বৈশিষ্ট্য
ExoPlayer সহ মিডিয়া সাপোর্ট লাইব্রেরির নতুন হোম হল Media3। প্রথম আলফাতে মিডিয়া ব্যবহারের কেস প্রয়োগ করার জন্য লাইব্রেরির প্রাথমিক, ফাংশনাল প্রয়োগ অন্তর্ভুক্ত, যার মধ্যে রয়েছে:
- ExoPlayer, Android-এর জন্য অ্যাপ্লিকেশন-লেভেল মিডিয়া প্লেয়ার যা কাস্টমাইজ ও এক্সটেন্ড করা সহজ।
- মিডিয়া সেশন কার্যকারিতা, প্লেব্যাক এক্সপোজ ও কন্ট্রোল করার জন্য। এই
নতুন সেশন মডিউল ExoPlayer-এর মতো একই
Playerইন্টারফেস ব্যবহার করে। - মিডিয়া প্লেব্যাক ইউজার ইন্টারফেস তৈরি করার জন্য UI কম্পোনেন্ট।
- ExoPlayer-এর সাথে ব্যবহার করার জন্য অন্যান্য লাইব্রেরিতে মডিউল র্যাপিং কার্যকারিতা, যেমন, IMA SDK-এর মাধ্যমে বিজ্ঞাপন যোগ করা।
আরও তথ্যের জন্য, Media3 GitHub প্রোজেক্ট দেখুন।
ExoPlayer আগে আলাদা ExoPlayer GitHub
প্রোজেক্টে হোস্ট করা হয়েছিল। Media3-তে এর প্যাকেজের নাম হল
androidx.media3.exoplayer। অ্যাপগুলিকে Media3-তে মাইগ্রেট করার জন্য সময় দিতে আমরা কিছু সময়ের জন্য ExoPlayer GitHub প্রোজেক্ট বজায় রাখা এবং রিলিজ করা চালিয়ে যাওয়ার পরিকল্পনা করেছি।
ExoPlayer-এর সব মডিউলের জন্য Media3-তে বিকল্প আছে, তবে পুরনো
media2 এবং mediasession এক্সটেনশনের জন্য নেই, যেগুলি নতুন
media3-session মডিউল দ্বারা প্রতিস্থাপিত হয়। এটি প্লেয়ার ও মিডিয়া সেশনের মধ্যে সরাসরি ইন্টিগ্রেশন প্রদান করে,
যার জন্য কোনও অ্যাডাপ্টার/কানেক্টর ক্লাস ব্যবহার করতে হয় না।