মিডিয়া3
সর্বশেষ আপডেট | স্থিতিশীল রিলিজ | প্রার্থী মুক্তি | বিটা রিলিজ | আলফা রিলিজ |
---|---|---|---|---|
20 ডিসেম্বর, 2024 | 1.5.1 | - | 1.6.0-beta01 | 1.6.0-আলফা01 |
নির্ভরতা ঘোষণা করা
Media3 এর উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle
ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:
dependencies {
def media3_version = "1.4.1"
// For media playback using ExoPlayer
implementation "androidx.media3:media3-exoplayer:$media3_version"
// For DASH playback support with ExoPlayer
implementation "androidx.media3:media3-exoplayer-dash:$media3_version"
// For HLS playback support with ExoPlayer
implementation "androidx.media3:media3-exoplayer-hls:$media3_version"
// For SmoothStreaming playback support with ExoPlayer
implementation "androidx.media3:media3-exoplayer-smoothstreaming:$media3_version"
// For RTSP playback support with ExoPlayer
implementation "androidx.media3:media3-exoplayer-rtsp:$media3_version"
// For MIDI playback support with ExoPlayer (see additional dependency requirements in
// https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
implementation "androidx.media3:media3-exoplayer-midi:$media3_version"
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
implementation "androidx.media3:media3-exoplayer-ima:$media3_version"
// For loading data using the Cronet network stack
implementation "androidx.media3:media3-datasource-cronet:$media3_version"
// For loading data using the OkHttp network stack
implementation "androidx.media3:media3-datasource-okhttp:$media3_version"
// For loading data using librtmp
implementation "androidx.media3:media3-datasource-rtmp:$media3_version"
// For building media playback UIs
implementation "androidx.media3:media3-ui:$media3_version"
// For building media playback UIs for Android TV using the Jetpack Leanback library
implementation "androidx.media3:media3-ui-leanback:$media3_version"
// For exposing and controlling media sessions
implementation "androidx.media3:media3-session:$media3_version"
// For extracting data from media containers
implementation "androidx.media3:media3-extractor:$media3_version"
// For integrating with Cast
implementation "androidx.media3:media3-cast:$media3_version"
// For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
implementation "androidx.media3:media3-exoplayer-workmanager:$media3_version"
// For transforming media files
implementation "androidx.media3:media3-transformer:$media3_version"
// For applying effects on video frames
implementation "androidx.media3:media3-effect:$media3_version"
// For muxing media files
implementation "androidx.media3:media3-muxer:$media3_version"
// Utilities for testing media components (including ExoPlayer components)
implementation "androidx.media3:media3-test-utils:$media3_version"
// Utilities for testing media components (including ExoPlayer components) via Robolectric
implementation "androidx.media3:media3-test-utils-robolectric:$media3_version"
// Common functionality for reading and writing media containers
implementation "androidx.media3:media3-container:$media3_version"
// Common functionality for media database components
implementation "androidx.media3:media3-database:$media3_version"
// Common functionality for media decoders
implementation "androidx.media3:media3-decoder:$media3_version"
// Common functionality for loading data
implementation "androidx.media3:media3-datasource:$media3_version"
// Common functionality used across multiple media libraries
implementation "androidx.media3:media3-common:$media3_version"
// Common Kotlin-specific functionality
implementation "androidx.media3:media3-common-ktx:$media3_version"
}
dependencies {
val media3_version = "1.4.1"
// For media playback using ExoPlayer
implementation("androidx.media3:media3-exoplayer:$media3_version")
// For DASH playback support with ExoPlayer
implementation("androidx.media3:media3-exoplayer-dash:$media3_version")
// For HLS playback support with ExoPlayer
implementation("androidx.media3:media3-exoplayer-hls:$media3_version")
// For SmoothStreaming playback support with ExoPlayer
implementation("androidx.media3:media3-exoplayer-smoothstreaming:$media3_version")
// For RTSP playback support with ExoPlayer
implementation("androidx.media3:media3-exoplayer-rtsp:$media3_version")
// For MIDI playback support with ExoPlayer (see additional dependency requirements in
// https://github.com/androidx/media/blob/release/libraries/decoder_midi/README.md)
implementation("androidx.media3:media3-exoplayer-midi:$media3_version")
// For ad insertion using the Interactive Media Ads SDK with ExoPlayer
implementation("androidx.media3:media3-exoplayer-ima:$media3_version")
// For loading data using the Cronet network stack
implementation("androidx.media3:media3-datasource-cronet:$media3_version")
// For loading data using the OkHttp network stack
implementation("androidx.media3:media3-datasource-okhttp:$media3_version")
// For loading data using librtmp
implementation("androidx.media3:media3-datasource-rtmp:$media3_version")
// For building media playback UIs
implementation("androidx.media3:media3-ui:$media3_version")
// For building media playback UIs for Android TV using the Jetpack Leanback library
implementation("androidx.media3:media3-ui-leanback:$media3_version")
// For exposing and controlling media sessions
implementation("androidx.media3:media3-session:$media3_version")
// For extracting data from media containers
implementation("androidx.media3:media3-extractor:$media3_version")
// For integrating with Cast
implementation("androidx.media3:media3-cast:$media3_version")
// For scheduling background operations using Jetpack Work's WorkManager with ExoPlayer
implementation("androidx.media3:media3-exoplayer-workmanager:$media3_version")
// For transforming media files
implementation("androidx.media3:media3-transformer:$media3_version")
// For applying effects on video frames
implementation("androidx.media3:media3-effect:$media3_version")
// For muxing media files
implementation("androidx.media3:media3-muxer:$media3_version")
// Utilities for testing media components (including ExoPlayer components)
implementation("androidx.media3:media3-test-utils:$media3_version")
// Utilities for testing media components (including ExoPlayer components) via Robolectric
implementation("androidx.media3:media3-test-utils-robolectric:$media3_version")
// Common functionality for reading and writing media containers
implementation("androidx.media3:media3-container:$media3_version")
// Common functionality for media database components
implementation("androidx.media3:media3-database:$media3_version")
// Common functionality for media decoders
implementation("androidx.media3:media3-decoder:$media3_version")
// Common functionality for loading data
implementation("androidx.media3:media3-datasource:$media3_version")
// Common functionality used across multiple media libraries
implementation("androidx.media3:media3-common:$media3_version")
// Common Kotlin-specific functionality
implementation("androidx.media3:media3-common-ktx:$media3_version")
}
নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যুক্ত করুন দেখুন।
প্রতিক্রিয়া
আপনার প্রতিক্রিয়া জেটপ্যাককে আরও ভাল করতে সাহায্য করে। আপনি প্রশ্ন, পরিচিত সমস্যা এবং বৈশিষ্ট্য অনুরোধের উত্তর খুঁজতে এবং নতুন সমস্যা ফাইল করতে Media3 সমস্যা ট্র্যাকার ব্যবহার করতে পারেন।
সংস্করণ 1.6.0
1.6.0-beta01
ফেব্রুয়ারী 26, 2025
androidx.media3:media3-*:1.6.0-beta01
প্রকাশিত হয়েছে। সংস্করণ 1.6.0-beta01-এ এই কমিট রয়েছে।
- সাধারণ গ্রন্থাগার:
- Kotlin 1.9.20 থেকে 2.0.20 এ আপগ্রেড করুন এবং Compose Compiler Gradle প্লাগইন ব্যবহার করুন। KotlinX Coroutines লাইব্রেরি 1.8.1 থেকে 1.9.0 এ আপগ্রেড করুন।
- এক্সো প্লেয়ার:
- প্লেয়ার তৈরি করার পর প্রাথমিক অডিও সেশন আইডি আর পাওয়া যায় না। প্রয়োজনে প্রাথমিক আপডেট শুনতে আপনি
AnalyticsListener.onAudioSessionIdChanged
ব্যবহার করতে পারেন।
- প্লেয়ার তৈরি করার পর প্রাথমিক অডিও সেশন আইডি আর পাওয়া যায় না। প্রয়োজনে প্রাথমিক আপডেট শুনতে আপনি
- ট্রান্সফরমার:
-
MediaProjectionAssetLoader
যোগ করুন, যা স্ক্রীন রেকর্ডিংয়ের জন্য একটিMediaProjection
থেকে মিডিয়া সরবরাহ করে এবং ট্রান্সফরমার ডেমো অ্যাপে স্ক্রিন রেকর্ডিংয়ের জন্য সমর্থন যোগ করুন। -
Codec
ইন্টারফেসে#getInputFormat()
যোগ করুন। - সম্ভব হলে
DefaultVideoFrameProcessor
এবংDefaultVideoCompositor
কলারের উপরGlObjectsProvider
রিলিজ করার দায়িত্বটি সরিয়ে নিন।
-
- ভিডিও:
- দেরী
MediaCodecVideoRenderer
ডিকোডার ইনপুট বাফার ড্রপ করতে পরীক্ষামূলকExoPlayer
API যোগ করুন যা নির্ভর করে না।DefaultRenderersFactory.experimentalSetLateThresholdToDropDecoderInputUs
দিয়ে এটি সক্ষম করুন।
- দেরী
- অধিবেশন:
- প্লেব্যাক বিরতি, বন্ধ বা ব্যর্থ হলে অতিরিক্ত 10 মিনিটের জন্য ফোরগ্রাউন্ড পরিষেবা অবস্থা রাখুন। এটি ব্যবহারকারীদের বিভিন্ন ডিভাইসে ফোরগ্রাউন্ড পরিষেবা বিধিনিষেধ ঝুঁকি ছাড়াই এই সময়সীমার মধ্যে প্লেব্যাক পুনরায় শুরু করতে দেয়৷ উল্লেখ্য যে,
player.pause()
কল করার সময়stopSelf()
এর আগে ফোরগ্রাউন্ড পরিষেবা বন্ধ করতে ব্যবহার করা যাবে না যখনonTaskRemoved
ওভাররাইড করার সময়, পরিবর্তেMediaSessionService.pauseAllPlayersAndStopSelf()
ব্যবহার করুন। - প্লেব্যাক একটি ত্রুটি বা বন্ধ অবস্থায় প্রবেশ করলে বিজ্ঞপ্তি দৃশ্যমান রাখুন। প্লেলিস্ট সাফ হলে বা প্লেয়ার রিলিজ হলেই বিজ্ঞপ্তিটি সরানো হয়।
- অ্যান্ড্রয়েড প্ল্যাটফর্ম মিডিয়া সেশন অ্যাকশনগুলির পরিচালনার উন্নতি করুন ACTION_PLAY এবং ACTION_PAUSE উপলব্ধ কমান্ড অনুসারে শুধুমাত্র একটি সেট করতে এবং যদি তাদের মধ্যে শুধুমাত্র একটি সেট করা থাকে তবে গ্রহণ করুন৷
- প্লেব্যাক বিরতি, বন্ধ বা ব্যর্থ হলে অতিরিক্ত 10 মিনিটের জন্য ফোরগ্রাউন্ড পরিষেবা অবস্থা রাখুন। এটি ব্যবহারকারীদের বিভিন্ন ডিভাইসে ফোরগ্রাউন্ড পরিষেবা বিধিনিষেধ ঝুঁকি ছাড়াই এই সময়সীমার মধ্যে প্লেব্যাক পুনরায় শুরু করতে দেয়৷ উল্লেখ্য যে,
- অপ্রচলিত চিহ্নগুলি সরান:
- নিম্নোক্ত অপ্রচলিত
DownloadHelper
পদ্ধতিগুলি সরানো হয়েছে:- Constructor
DownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilities[])
, এর পরিবর্তেDownloadHelper(MediaItem, @Nullable MediaSource, TrackSelectionParameters, RendererCapabilitiesList)
ব্যবহার করুন। -
getRendererCapabilities(RenderersFactory)
, সমতুল্য আচরণ একটিRenderersFactory
এর সাথে একটিDefaultRendererCapabilitiesList
তৈরি করে এবংDefaultRendererCapabilitiesList.getRendererCapabilities()
কল করে অর্জন করা যেতে পারে।
- Constructor
- সরানো হয়েছে
PlayerNotificationManager.setMediaSessionToken(MediaSessionCompat)
পদ্ধতি।PlayerNotificationManager.setMediaSessionToken(MediaSession.Token)
ব্যবহার করুন এবং পরিবর্তে(MediaSession.Token) compatToken.getToken()
পাস করুন।
- নিম্নোক্ত অপ্রচলিত
সংস্করণ 1.6.0-alpha03
ফেব্রুয়ারি 06, 2025
androidx.media3:media3-*:1.6.0-alpha03
প্রকাশিত হয়েছে। 1.6.0-alpha03 সংস্করণে এই কমিট রয়েছে।
- এক্সো প্লেয়ার:
- অপ্রত্যাশিত মিডিয়াতে ক্লিপিংয়ের অনুমতি দিতে
ClippingMediaSource
বিকল্প যোগ করুন। - বাগ ঠিক করুন যেখানে প্রি-ওয়ার্মিং এর মাধ্যমে মিডিয়া আইটেম ট্রানজিশনের পরে ব্লক করতে পারে।
- অপ্রত্যাশিত মিডিয়াতে ক্লিপিংয়ের অনুমতি দিতে
- অডিও:
-
androidx.media3.common.audio.SonicAudioProcessor
চূড়ান্ত করুন।
-
- ভিডিও:
-
MediaCodecVideoRenderer.shouldUsePlaceholderSurface
সুরক্ষিত তে পরিবর্তন করুন যাতে অ্যাপ্লিকেশনগুলি প্লেসহোল্ডার সারফেসের ব্যবহার ব্লক করতে ওভাররাইড করতে পারে ( #1905 )। - অনুসন্ধানের গতি বাড়ানোর জন্য পরীক্ষামূলক
ExoPlayer
AV1 নমুনা নির্ভরতা পার্সিং যোগ করুন। নতুনDefaultRenderersFactory.experimentalSetParseAv1SampleDependencies
API দিয়ে এটি সক্ষম করুন৷
-
- Muxers:
- ডিফল্টরূপে
Mp4Muxer
নমুনা ব্যাচিং এবং অনুলিপি অক্ষম করুন।
- ডিফল্টরূপে
- অপ্রচলিত চিহ্নগুলি সরান:
-
androidx.media3.exoplayer.audio.SonicAudioProcessor
সরানো হয়েছে।
-
সংস্করণ 1.6.0-alpha02
30 জানুয়ারী, 2025
androidx.media3:media3-*:1.6.0-alpha02
প্রকাশিত হয়েছে। সংস্করণ 1.6.0-alpha02-এ এই কমিট রয়েছে।
- সাধারণ গ্রন্থাগার:
-
SimpleBasePlayer
এ বাগ ফিক্স করুন যেখানেnull
MediaMetadata
সহsetPlaylist
পরেState
একটি নতুনcurrentMediaItemIndex
সেট করা মেটাডেটা ( #1940 ) পুনঃমূল্যায়ন করে না।
-
- এক্সো প্লেয়ার:
-
MediaCodecVideoRenderer
ব্যবহার করে প্লেব্যাকের জন্য পরীক্ষামূলক 'ExoPlayer' প্রি-ওয়ার্মিং সমর্থন যোগ করুন।ExoPlayer
এ একটি সেকেন্ডারিMediaCodecVideoRenderer
প্রদান করতেexperimentalSetEnableMediaCodecVideoRendererPrewarming
এর মাধ্যমে আপনিDefaultRenderersFactory
কনফিগার করতে পারেন। সক্রিয় থাকলে, মিডিয়া আইটেম ট্রানজিশন লেটেন্সি কমাতে প্লেব্যাকের সময়ExoPlayer
ধারাবাহিক মিডিয়া আইটেমগুলির ভিডিও পূর্ব-প্রক্রিয়া করে। - একটি মিড-রোল বিজ্ঞাপনের পরে বিষয়বস্তু মিডিয়াতে রূপান্তর করার সময় অতিরিক্ত ডিকোড-শুধু ফ্রেমগুলি দ্রুত ধারাবাহিকভাবে প্রদর্শিত হতে পারে এমন সমস্যাটি সমাধান করুন৷
-
DefaultRenderersFactory
ফ্যাক্টরিতে দুটিMetadataRenderer
দৃষ্টান্ত যুক্ত করুন অ্যাপগুলিকে ডিফল্টরূপে মেটাডেটার দুটি ভিন্ন স্কিম পেতে সক্ষম করতে। -
DeviceInfo
এবং ডিভাইসের ভলিউম অ্যাসিঙ্ক্রোনাসভাবে শুরু করুন (যদিsetDeviceVolumeControlEnabled
ব্যবহার করে সক্ষম করা থাকে)।ExoPlayer.Builder.build()
, এবংPlayer.Listener
onDeviceInfoChanged
এবংonDeviceVolumeChanged
এর মাধ্যমে পরিবর্তনগুলিকে অবহিত করার পরে এই মানগুলি অবিলম্বে উপলব্ধ হয় না৷ - প্লেব্যাক বিরাম দেওয়া হলে একটি খণ্ডের চলমান লোড বাতিল করা উচিত কিনা তা পুনরায় মূল্যায়ন করুন ( #1785 )।
-
- ট্রান্সফরমার:
-
MediaMetricsManager
ব্যবহার করে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সমর্থন সক্ষম করুন৷ ট্রান্সফরমার প্ল্যাটফর্মে ইভেন্ট এবং কর্মক্ষমতা ডেটা সম্পাদনা করে, যা ডিভাইসে সিস্টেমের কার্যকারিতা এবং ডিবাগিং তথ্য প্রদান করতে সহায়তা করে। ডিভাইসের ব্যবহারকারীর দ্বারা ব্যবহার এবং ডায়াগনস্টিক ডেটা ভাগ করা সক্ষম হলে এই ডেটা Google দ্বারা সংগ্রহ করা যেতে পারে৷ অ্যাপগুলিTransformer.Builder.setUsePlatformDiagnostics(false)
দিয়ে ট্রান্সফরমারের জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে অবদান রাখা থেকে অপ্ট-আউট করতে পারে। -
InAppMuxer
InAppMp4Muxer
এবংInAppFragmentedMp4Muxer
এ বিভক্ত করুন। আপনি একটি নন-ফ্র্যাগমেন্টেড MP4 ফাইল তৈরি করতেInAppMp4Muxer
ব্যবহার করেন, যেখানেInAppFragmentedMp4Muxer
একটি খণ্ডিত MP4 ফাইল তৈরির জন্য। -
Muxer
ইন্টারফেসmedia3-muxer
থেকেmedia3-transformer
সরান। - ট্রান্সকোডিং এবং ট্রান্সমক্সিং ডলবি ভিশন (প্রোফাইল 8) ফর্ম্যাটের জন্য সমর্থন যোগ করুন।
-
- নিষ্কাশনকারী:
- 1 বা 2 বাইটে (4 এর পরিবর্তে) দৈর্ঘ্যের সাথে NAL ইউনিটগুলির হ্যান্ডলিং ঠিক করুন।
- MP4 সম্পাদনা তালিকায়
ArrayIndexOutOfBoundsException
ঠিক করুন যখন সম্পাদনা তালিকা একটি নন-সিঙ্ক ফ্রেমে শুরু হয় যেখানে কোনো পূর্ববর্তী সিঙ্ক ফ্রেম নেই ( #2062 )।
- অডিও:
- যখন
SpeedChangingAudioProcessor
ডিফল্ট প্যারামিটারের সাথে কনফিগার করা থাকে তখনSonicAudioProcessor
বাইপাস করবেন না। -
Sonic#getOutputSize()
এ আন্ডারফ্লো ঠিক করুন যাDefaultAudioSink
স্টল করতে পারে। -
MediaCodecAudioRenderer.getDurationToProgressUs()
এবংDecoderAudioRenderer.getDurationToProgressUs()
ঠিক করুন যাতে প্রদত্ত সময়কাল সঠিকভাবে রিসেট করা যায়।
- যখন
- পাঠ্য:
- TTML: রেফারেন্সের জন্য সমর্থন যোগ করুন
tts:origin
এবংtts:extent
ব্যবহার করেstyle
( #2953 )। - WebVTT এবং SubRip টাইমস্ট্যাম্প ঠিক 3 দশমিক স্থানে সীমাবদ্ধ করুন। পূর্বে আমরা ভুলভাবে যে কোনো দশমিক স্থান পার্স করেছি কিন্তু সর্বদা মানটি মিলিসেকেন্ডে অনুমান করেছিলাম, যার ফলে ভুল টাইমস্ট্যাম্প ( #1997 ) হয়।
- VobSub সাবটাইটেল ( #8260 ) এর জন্য সমর্থন যোগ করুন।
- একটি প্লেলিস্টে CEA-608 বা CEA-708 ক্যাপশন সহ ক্লিপ করা আইটেম থাকলে প্লেব্যাক ঝুলানো ঠিক করুন।
-
IllegalStateException
ঠিক করুন যখন একটি SSA ফাইলে শূন্য সময়কাল সহ একটি কিউ থাকে (শুরু এবং শেষের সময় সমান) ( #2052 )। - সাবটাইটেল পার্সিং ত্রুটিগুলি দমন করুন (এবং লগ) যখন সাবটাইটেলগুলি অডিও এবং ভিডিও ( #2052 ) হিসাবে একই পাত্রে মিক্স করা হয়।
- TTML: রেফারেন্সের জন্য সমর্থন যোগ করুন
- Muxers:
-
Mp4Muxer.Builder
এবংFragmentedMp4Muxer.Builder
উভয় ক্ষেত্রে সেটSampleCopyingEnabled(setSampleCopyingEnabled()
জন্যsetSampleCopyEnabled()
পদ্ধতির নাম পরিবর্তন করা হয়েছে। -
Mp4Muxer.addTrack()
এবংFragmentedMp4Muxer.addTrack()
এখন একটিTrackToken
এর পরিবর্তে একটিint
ট্র্যাক আইডি ফেরত দেয়। -
Mp4Muxer
এবংFragmentedMp4Muxer
আরMuxer
ইন্টারফেস প্রয়োগ করে না।
-
- অধিবেশন:
- একটি লিগ্যাসি সেশনের সাথে সংযুক্ত
MediaController
Player
পদ্ধতিতে কল করার সময় একটি মুলতুবি আপডেট থেকে পরিবর্তনগুলি বাদ দেওয়া হয়েছে এমন বাগটি ঠিক করুন৷
- একটি লিগ্যাসি সেশনের সাথে সংযুক্ত
- UI:
-
media3-ui-compose
PresentationState
স্টেট হোল্ডার ক্লাস এবং সংশ্লিষ্টrememberPresentationState
Composable যোগ করুন।
-
- HLS এক্সটেনশন:
- ডলবি ভিশন ফরম্যাট ( #1785 ) সনাক্ত করতে HLS প্লেলিস্ট থেকে
SUPPLEMENTAL-CODECS
ট্যাগ পার্স করুন।
- ডলবি ভিশন ফরম্যাট ( #1785 ) সনাক্ত করতে HLS প্লেলিস্ট থেকে
- ড্যাশ এক্সটেনশন:
- মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলিতে বিজ্ঞাপন সন্নিবেশের জন্য আপডেটের ব্যবধান গণনা করার সময় সমস্যাটি সমাধান করুন ( #1698 )।
- ডলবি ভিশন ফরম্যাট ( #1785 ) সনাক্ত করতে DASH ম্যানিফেস্ট থেকে
scte214:supplementalCodecs
অ্যাট্রিবিউট পার্স করুন। - লাইভ স্ট্রিমগুলিতে পিরিয়ড ট্রানজিশন পরিচালনার উন্নতি করুন যেখানে পিরিয়ডে ঘোষিত সময়কালের ( #1698 ) বাইরে মিডিয়া নমুনা রয়েছে।
- ডেমো অ্যাপ:
-
PlayerSurface
Composable এর আকৃতির অনুপাত নিয়ন্ত্রণ করতেPresentationState
ব্যবহার করুন। এটি ContentScale প্রকারের উপর নির্ভর করে এবং প্রথম ফ্রেম রেন্ডার হওয়ার আগে এটিকে শাটার-ওভারলে দিয়ে ঢেকে দেয়।
-
- অপ্রচলিত চিহ্নগুলি সরান:
-
ExoPlayer.VideoComponent
,ExoPlayer.AudioComponent
,ExoPlayer.TextComponent
এবংExoPlayer.DeviceComponent
Component সরানো হয়েছে৷
-
সংস্করণ 1.6.0-alpha01
20 ডিসেম্বর, 2024
androidx.media3:media3-*:1.6.0-alpha01
প্রকাশিত হয়েছে। সংস্করণ 1.6.0-alpha01-এ এই কমিট রয়েছে।
- সাধারণ গ্রন্থাগার:
-
Format.toBundle(boolean excludeMetadata)
পদ্ধতি সরান, পরিবর্তেFormat.toBundle()
ব্যবহার করুন। -
androidx.media
এ সমতুল্য ক্লাস প্রতিস্থাপন করতেAudioManagerCompat
এবংAudioFocusRequestCompat
যোগ করুন।
-
- এক্সো প্লেয়ার:
- একটি ভিডিও ট্র্যাক নির্বাচন করার সময় ভাষা বিবেচনা করুন. ডিফল্টরূপে, একটি 'প্রধান' ভিডিও ট্র্যাক নির্বাচন করুন যা নির্বাচিত অডিও ট্র্যাকের ভাষার সাথে মেলে, যদি উপলব্ধ থাকে। স্পষ্ট ভিডিও ভাষার পছন্দগুলি
TrackSelectionParameters.Builder.setPreferredVideoLanguage(s)
দিয়ে প্রকাশ করা যেতে পারে। -
DefaultTrackSelector.selectVideoTrack()
পদ্ধতিতেselectedAudioLanguage
প্যারামিটার যোগ করুন। -
MediaSourceEventListener.onLoadStarted
এবং সংশ্লিষ্টMediaSourceEventListener.EventDispatcher
পদ্ধতিতেretryCount
প্যারামিটার যোগ করুন। - বাগ ফিক্স করুন যেখানে প্লেলিস্ট আইটেম বা পিরিয়ড মাল্টি-পিরিয়ড ড্যাশ স্ট্রীম এর সময়কালের সাথে যা প্রকৃত বিষয়বস্তুর সাথে মেলে না আইটেমের শেষে ফ্রেম ফ্রিজ হতে পারে ( #1698 )।
-
DefaultLoadControl
এbufferForPlaybackMs
এবংbufferForPlaybackAfterRebufferMs
এর ডিফল্ট মান যথাক্রমে 1000 এবং 2000 ms-এ হ্রাস করুন। -
MediaExtractorCompat
যোগ করুন, একটি নতুন ক্লাস যা প্ল্যাটফর্মMediaExtractor
এর সমতুল্য বৈশিষ্ট্য প্রদান করে। -
BasePreloadManager.Listener
একটি টপ-লেভেলPreloadManagerListener
সরান। -
RenderersFactory.createSecondaryRenderer
প্রি-ওয়ার্মিং এর জন্য সেকেন্ডারি রেন্ডারার প্রদানের জন্য প্রয়োগ করা যেতে পারে। প্রি-ওয়ার্মিং প্লেব্যাকের সময় দ্রুত মিডিয়া আইটেম স্থানান্তর সক্ষম করে। - অ্যাডাপ্টিভ স্ট্রিমিং ফরম্যাট DASH, HLS এবং স্মুথস্ট্রিমিং ( #1951 ) এ ম্যানিফেস্ট অনুরোধের জন্য
CmcdData
পাঠানো সক্ষম করুন। - কোডেকটির
MediaCodecInfo
প্রদান করুন যাMediaCodecRenderer.onReadyToInitializeCodec
( #1963 ) এ আরম্ভ করা হবে। -
AdPlaybackStates
বিজ্ঞাপন গোষ্ঠীগুলি যুক্ত করার মাধ্যমে বাড়তে দেওয়ার জন্যAdsMediaSource
পরিবর্তন করুন। অবৈধ পরিবর্তন সনাক্ত করা হয় এবং একটি ব্যতিক্রম নিক্ষেপ করা হয়.
- একটি ভিডিও ট্র্যাক নির্বাচন করার সময় ভাষা বিবেচনা করুন. ডিফল্টরূপে, একটি 'প্রধান' ভিডিও ট্র্যাক নির্বাচন করুন যা নির্বাচিত অডিও ট্র্যাকের ভাষার সাথে মেলে, যদি উপলব্ধ থাকে। স্পষ্ট ভিডিও ভাষার পছন্দগুলি
- ট্রান্সফরমার:
-
Format
ব্যবহার করতেVideoFrameProcessor.registerInputStream
এবংVideoFrameProcessor.Listener.onInputStreamRegistered
এর প্যারামিটার আপডেট করুন। - বিকল্প ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ ফরম্যাটে ট্রান্সমক্সিংয়ের জন্য সমর্থন যোগ করুন।
-
DefaultEncoderFactory
ব্যবহার করার সময় HDR স্ট্যাটিক মেটাডেটা তৈরি করুন।
-
- নিষ্কাশনকারী:
- AVI: ধ্রুবক বিটরেট কম্প্রেসড অডিও সহ ফাইলগুলির পরিচালনা ঠিক করুন যেখানে স্ট্রিম হেডার খণ্ডের সংখ্যার পরিবর্তে বাইটের সংখ্যা সংরক্ষণ করে৷
- অডিও:
- প্লেব্যাক পুনরায় শুরু হলে কল করার জন্য
onAudioPositionAdvancing
ঠিক করুন (আগে প্লেব্যাক পজ করা হলে এটি বলা হত)।
- প্লেব্যাক পুনরায় শুরু হলে কল করার জন্য
- ভিডিও:
-
MediaCodecVideoRenderer
ঠিক করুন যাতে কোনোSurface
ছাড়াই, রেন্ডারার শুধুমাত্র-প্রথম দিকের ফ্রেমগুলি এড়িয়ে যায় যদিVideoFrameReleaseControl.getFrameReleaseAction
FRAME_RELEASE_TRY_AGAIN_LATER
না হয়।
-
- পাঠ্য:
-
MediaItem.Builder.setSubtitleConfigurations
সাথে কনফিগার করা সমস্ত সাবটাইটেল ফাইল সাগ্রহে লোড করা বন্ধ করুন, এবং পরিবর্তে শুধুমাত্র একটি লোড করুন যদি এটি ট্র্যাক নির্বাচন ( #1721 ) দ্বারা নির্বাচিত হয়।
-
- প্রভাব:
-
StaticOverlaySettings
এOverlaySettings
এর কার্যকারিতা সরানো হয়েছে। গতিশীল ওভারলে সেটিংসের অনুমতি দিতেOverlaySettings
সাবক্লাস করা যেতে পারে।
-
- Muxers:
- একটি খুব দীর্ঘ সম্পূর্ণ যোগ্য নাম এড়াতে
MuxerException
Muxer
ইন্টারফেসের বাইরে সরানো হয়েছে।
- একটি খুব দীর্ঘ সম্পূর্ণ যোগ্য নাম এড়াতে
- অধিবেশন:
- 'MediaButtonReceiver.shouldStartForegroundService` ( #1887 ) এ একটি প্যারামিটার হিসেবে 'প্রসঙ্গ' যোগ করুন।
- UI:
-
media3-ui-compose
মডিউলেPlayerSurface
Composable যোগ করুন। - যোগ করুন
PlayPauseButtonState
,NextButtonState
,PreviousButtonState
,RepeatButtonState
,ShuffleButtonState
ক্লাস এবং সংশ্লিষ্টrememberPlayPauseButtonState
PlayPauseButtonState ,rememberNextButtonState
,rememberPreviousButtonState
,rememberRepeatButtonState
,rememberShuffleButtonState
media3-ui-compose
মডিউলে কম্পোজেবল।
-
- HLS এক্সটেনশন:
-
HlsInterstitialsAdsLoader
এর প্রথম সংস্করণ যোগ করুন। বিজ্ঞাপন লোডার একটি HLS মিডিয়া প্লেলিস্টের HLS ইন্টারস্টিশিয়াল পড়ে এবং সেগুলিকেAdPlaybackState
এ ম্যাপ করে যাAdsMediaSource
এ পাঠানো হয়। এই প্রাথমিক সংস্করণটি শুধুমাত্রX-ASSET-URI
বৈশিষ্ট্য সহ HLS VOD স্ট্রিমগুলিকে সমর্থন করে৷ -
HlsInterstitialsAdsLoader.AdsMediaSourceFactory
যোগ করুন। অ্যাপ্লিকেশানগুলি এটি ব্যবহার করেAdsMediaSource
দৃষ্টান্ত তৈরি করতে পারে যা একটি সুবিধাজনক এবং নিরাপদ উপায়েHlsInterstitialsAdsLoader
ব্যবহার করে৷
-
- ড্যাশ এক্সটেনশন:
- DASH ( #1898 ) এর জন্য AC-4 লেভেল-4 ফর্ম্যাট সমর্থন যোগ করুন।
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, ইত্যাদি):
- MPEG-H ডিকোডার মডিউল যোগ করুন যা MPEG-H অডিও ডিকোড করতে স্থানীয় MPEG-H ডিকোডার মডিউল ব্যবহার করে ( #1826 )।
- ডেমো অ্যাপ:
-
PlayPauseButtonState
,NextButton
,PreviousButton
,RepeatButtonState
ব্যবহার করেdemo-compose
MinimalControls
(PlayPauseButton
,NextButtonState
,PreviousButtonState
) এবংExtraControls
(RepeatButton
,ShuffleButton
) কম্পোজযোগ্য UI উপাদান যোগ করুনShuffleButtonState
।
-
- অপ্রচলিত চিহ্নগুলি সরান:
- অপ্রচলিত
AudioMixer.create()
পদ্ধতি সরান। পরিবর্তেDefaultAudioMixer.Factory().create()
ব্যবহার করুন। - নিম্নোক্ত অপ্রচলিত
Transformer.Builder
পদ্ধতিগুলি সরান:-
setTransformationRequest()
, এর পরিবর্তেsetAudioMimeType()
,setVideoMimeType()
, এবংsetHdrMode()
ব্যবহার করুন। -
setAudioProcessors()
, একটিEditedMediaItem.Builder.setEffects()
এ অডিও প্রসেসর সেট করুন এবং পরিবর্তেTransformer.start()
এ পাস করুন। -
setVideoEffects()
, একটিEditedMediaItem.Builder.setEffects()
এ ভিডিও ইফেক্ট সেট করুন এবং পরিবর্তেTransformer.start()
এ পাস করুন। -
setRemoveAudio()
, পরিবর্তেTransformer.start()
এ পাস করাEditedMediaItem
থেকে অডিও সরাতেEditedMediaItem.Builder.setRemoveAudio()
ব্যবহার করুন। -
setRemoveVideo()
, পরিবর্তেTransformer.start()
এ পাস করাEditedMediaItem
থেকে ভিডিওটি সরাতেEditedMediaItem.Builder.setRemoveVideo()
ব্যবহার করুন। -
setFlattenForSlowMotion()
, পরিবর্তেTransformer.start()
এ পাস করাEditedMediaItem
সমতল করতেEditedMediaItem.Builder.setFlattenForSlowMotion()
ব্যবহার করুন। -
setListener()
, পরিবর্তেaddListener()
,removeListener()
বাremoveAllListeners()
ব্যবহার করুন।
-
- নিম্নোক্ত অপ্রচলিত
Transformer.Listener
পদ্ধতিগুলি সরান:-
onTransformationCompleted(MediaItem)
, পরিবর্তেonCompleted(Composition, ExportResult)
ব্যবহার করুন। -
onTransformationCompleted(MediaItem, TransformationResult)
, পরিবর্তেonCompleted(Composition, ExportResult)
ব্যবহার করুন। -
onTransformationError(MediaItem, Exception)
, পরিবর্তেonError(Composition, ExportResult, ExportException)
ব্যবহার করুন। -
onTransformationError(MediaItem, TransformationException)
, পরিবর্তেonError(Composition, ExportResult, ExportException)
ব্যবহার করুন। -
onTransformationError(MediaItem, TransformationResult, TransformationException)
, পরিবর্তেonError(Composition, ExportResult, ExportException)
ব্যবহার করুন। -
onFallbackApplied(MediaItem, TransformationRequest, TransformationRequest)
, পরিবর্তেonFallbackApplied(Composition, TransformationRequest, TransformationRequest)
ব্যবহার করুন।
-
- অপসারিত
TransformationResult
ক্লাস সরান। পরিবর্তেExportResult
ব্যবহার করুন। - অপসারিত
TransformationException
ক্লাস সরান। পরিবর্তেExportException
ব্যবহার করুন। - অপসারিত
Transformer.PROGRESS_STATE_NO_TRANSFORMATION
।PROGRESS_STATE_NO_TRANSFORMATION। পরিবর্তেTransformer.PROGRESS_STATE_NOT_STARTED
ব্যবহার করুন। - অপসারিত
Transformer.setListener()
সরান। পরিবর্তেTransformer.addListener()
,Transformer.removeListener()
বাTransformer.removeAllListeners()
ব্যবহার করুন। - অপসারিত
Transformer.startTransformation()
সরান। পরিবর্তেTransformer.start(MediaItem, String)
ব্যবহার করুন। - অপসারিত
SingleFrameGlShaderProgram
সরান। পরিবর্তেBaseGlShaderProgram
ব্যবহার করুন। -
Transformer.flattenForSlowMotion
সরান। পরিবর্তেEditedMediaItem.flattenForSlowMotion
ব্যবহার করুন।
- অপ্রচলিত
সংস্করণ 1.5
সংস্করণ 1.5.1
ডিসেম্বর 19, 2024
androidx.media3:media3-*:1.5.1
প্রকাশিত হয়েছে। সংস্করণ 1.5.1-এ এই কমিটগুলি রয়েছে।
- এক্সো প্লেয়ার:
- এই প্ল্যাটফর্ম API ( #1641 ) এর সাথে রিপোর্ট করা কোডেক টাইমআউট সমস্যা এড়াতে MediaCodec-এ অ্যাসিঙ্ক্রোনাস ডিক্রিপশনের ব্যবহার অক্ষম করুন।
- নিষ্কাশনকারী:
- MP3: যখন একটি
VBRI
ফ্রেমের বিষয়বস্তুর সারণী একটি ফাইলের সমস্ত MP3 ডেটা কভার করে না তখন তাড়াতাড়ি প্লেব্যাক বন্ধ করবেন না ( #1904 )।
- MP3: যখন একটি
- ভিডিও:
-
MediaCodecAdapter
ব্যবহার করার রোলব্যাকonOutputFormatChanged
( #1371 ) এ প্রক্রিয়া করার সময় সরবরাহ করা পিক্সেল আকৃতির অনুপাতের মান সরবরাহ করে।
-
- পাঠ্য:
-
ReplacingCuesResolver.discardCuesBeforeTimeUs
এ বাগ ফিক্স করুন যেখানেtimeUs
এ সক্রিয় ক্যু (আগে শুরু হয়েছিল কিন্তু এখনও শেষ হয়নি) ভুলভাবে বাতিল করা হয়েছে ( #1939 )।
-
- মেটাডেটা:
-
MediaMetadata
( #1958 ) এ ভরবিস মন্তব্য থেকে ডিস্ক/ট্র্যাক নম্বরিং এবং জেনার বের করুন।
-
সংস্করণ 1.5.0
নভেম্বর 27, 2024
androidx.media3:media3-*:1.5.0
প্রকাশিত হয়েছে। সংস্করণ 1.5.0 এ এই কমিটগুলি রয়েছে।
- সাধারণ গ্রন্থাগার:
-
ForwardingSimpleBasePlayer
যোগ করুন যা সম্পূর্ণ সামঞ্জস্যতা এবং শ্রোতা হ্যান্ডলিং ( #1183 ) নিশ্চিত করার সময় ছোট সমন্বয় সহ অন্য প্লেয়ারের কাছে ফরওয়ার্ড করার অনুমতি দেয়। -
getPlaylist()
পদ্ধতিতেSimpleBasePlayer.State.playlist
প্রতিস্থাপন করুন। -
SimpleBasePlayer.State.Builder.setPlaylist()
এর জন্য ওভাররাইড যোগ করুন একটি প্লেলিস্ট কাঠামো তৈরি করার পরিবর্তে সরাসরি একটিTimeline
এবং বর্তমানTracks
এবংMetadata
নির্দিষ্ট করতে। -
minSdk
বাড়িয়ে 21 করুন (Android Lollipop)। এটি অন্যান্য সমস্ত AndroidX লাইব্রেরির সাথে সারিবদ্ধ। -
androidx.media3:media3-common-ktx
আর্টিফ্যাক্ট যোগ করুন যা কমন লাইব্রেরির উপরে তৈরি Kotlin-নির্দিষ্ট কার্যকারিতা প্রদান করে -
media3-common-ktx
লাইব্রেরিতেPlayer.Events
শোনার জন্য একটি কোরোটিন ঘোরাতেPlayer.listen
সাসপেন্ডিং এক্সটেনশন ফাংশন যোগ করুন। - রানটাইম ক্লাস যাচাইকরণ ব্যর্থতা এড়াতে ডিজাইন করা ম্যানুয়ালি বাইরের লাইনযুক্ত অভ্যন্তরীণ ক্লাসগুলি থেকে
@DoNotInline
টীকাগুলি সরান৷ R8- এর সাম্প্রতিক সংস্করণগুলি রানটাইম ব্যর্থতা এড়াতে এখন স্বয়ংক্রিয়ভাবে আউট-অফ-লাইন কল করে (তাই ম্যানুয়াল আউট-অফ-লাইনিংয়ের আর প্রয়োজন নেই)। লাইব্রেরির সমস্ত গ্রেডল ব্যবহারকারীদের অবশ্যই ইতিমধ্যেই অ্যান্ড্রয়েড গ্রেডল প্লাগইনের একটি সংস্করণ ব্যবহার করতে হবে যা R8 এর একটি সংস্করণ ব্যবহার করে যাcompileSdk = 35
এর কারণে এটি করে। নন-গ্রেডল বিল্ড সিস্টেম সহ লাইব্রেরির ব্যবহারকারীদের তাদের R8-সমতুল্য সঙ্কুচিত/অস্পষ্টকারী পদক্ষেপটি নিশ্চিত করতে হবে যাতে রানটাইম ক্লাস যাচাইকরণ ব্যর্থতা এড়াতে অনুরূপ স্বয়ংক্রিয় আউট-অফ-লাইনিং প্রক্রিয়া করে। এই পরিবর্তনটি ইতিমধ্যেই অন্যান্য AndroidX লাইব্রেরিতে করা হয়েছে ।
-
- এক্সো প্লেয়ার:
-
MediaCodecRenderer.onProcessedStreamChange()
এখন প্রতিটি মিডিয়া আইটেমের জন্য কল করা যেতে পারে। আগে এটি প্রথমটির জন্য ডাকা হয়নি। এটি সক্ষম করতেMediaCodecRenderer.experimentalEnableProcessedStreamChangedAtStart()
ব্যবহার করুন। -
PreloadMediaSource.PreloadControl.onPreloadError
যোগPreloadMediaSource.PreloadControl
- অ্যাপে প্রিলোড ইভেন্ট প্রচার করতে
BasePreloadManager.Listener
যোগ করুন। - SNTP ক্লায়েন্ট টাইমআউট পরিবর্তন করার অনুমতি দিন এবং টাইমআউটে বিকল্প ঠিকানাগুলি পুনরায় চেষ্টা করুন ( #1540 )।
-
MediaCodecAdapter.Configuration.flags
সরান কারণ ক্ষেত্রটি সর্বদা শূন্য ছিল। - ব্যবহারকারীকে Wear OS API 35+ এ প্লেব্যাকের জন্য অন্তর্নির্মিত স্পিকার নির্বাচন করার অনুমতি দিন (যেখানে ডিভাইসটি এর জন্য সমর্থনের বিজ্ঞাপন দেয়)।
- অডিও ফোকাস হ্যান্ডলিং সক্ষম না হওয়া পর্যন্ত ব্লকিং কলটি
Context.getSystemService(Context.AUDIO_SERVICE)
এ স্থগিত করুন। এটি নিশ্চিত করে যে অডিও ফোকাস হ্যান্ডলিং সক্ষম না থাকলে ব্লকিং কলটি করা হবে না ( #1616 )। - লোডিং ব্যর্থ হলে বাফার করা সময়কাল নির্বিশেষে প্লেব্যাকের অনুমতি দিন ( #1571 )।
- পৃথক রেন্ডারার প্লেব্যাক প্রস্তুত হওয়ার অনুমতি দিলে সংকেত দিতে
AnalyticsListener.onRendererReadyChanged()
যোগ করুন। -
MediaCodec.CryptoException
কখনও কখনও একটি "অপ্রত্যাশিত রানটাইম ত্রুটি" হিসাবে রিপোর্ট করা ঠিক করুন যখনMediaCodec
অ্যাসিঙ্ক্রোনাস মোডে পরিচালিত হয় (এপিআই 31+ এ ডিফল্ট আচরণ)। -
PreloadMediaSource.PreloadControl.onContinueLoadingRequested()
দিয়েbufferedPositionUs
এর পরিবর্তেbufferedDurationUs
পাস করুন। এছাড়াওDefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS
DefaultPreloadManager.Status.STAGE_LOADED_FOR_DURATION_MS
এ পরিবর্তন করে, অ্যাপগুলিকে তখন ডিফল্ট স্টার্ট পজিশন থেকে একটি নির্দিষ্ট সময়কালের প্রতিনিধিত্বকারী একটি মান পাস করতে হবে যার জন্য সংশ্লিষ্ট মিডিয়া সোর্সটিকে এই অবস্থানের পরিবর্তে একটি প্রিলোড পজিশনের সাথে থাকতে হবে। -
ForwardingRenderer
ইমপ্লিমেন্টেশন যোগ করুন যা অন্য রেন্ডারারের কাছে সমস্ত মেথড কল ফরওয়ার্ড করে ( 1703 )। - প্লেলিস্টের পরবর্তী আইটেমের জন্য প্লেলিস্ট প্রিলোডিং যোগ করুন। অ্যাপগুলি সেই অনুযায়ী
ExoPlayer.setPreloadConfiguration(PreloadConfiguration)
কল করে প্রিলোডিং সক্ষম করতে পারে৷ ডিফল্টরূপে প্রিলোডিং অক্ষম করা হয়েছে৷ যখন অপ্ট-ইন করা হয় এবং প্লেব্যাকের সাথে হস্তক্ষেপ না করে, তখনDefaultLoadControl
প্রিলোডিং শুরু করতে এবং চালিয়ে যেতে সীমাবদ্ধ করে যখন প্লেয়ার প্লেব্যাকের জন্য লোড হচ্ছে না। অ্যাপগুলি সেই অনুযায়ীLoadControl.shouldContinuePreloading()
প্রয়োগ করে এই আচরণটি পরিবর্তন করতে পারে (যেমন যখনDefaultLoadControl
এ এই পদ্ধতিটি ওভাররাইড করা হয়)। কোনো অ্যাপLoadControl
কাস্টম বাস্তবায়ন ব্যবহার করলেLoadControl
ডিফল্ট বাস্তবায়ন প্রিলোডিং অক্ষম করে। - মেথড যোগ করুন
MediaSourceEventListener.EventDispatcher.dispatchEvent()
সাবক্লাস শ্রোতাদের ( 1736 ) ইভেন্ট আহ্বান করার অনুমতি দিতে। -
DefaultPreloadManager.Builder
যোগ করুন যা ধারাবাহিকভাবে শেয়ার করা কনফিগারেশনের সাথেDefaultPreloadManager
এবংExoPlayer
দৃষ্টান্ত তৈরি করে। -
LoadControl.onTracksSelected()
থেকেRenderer[]
প্যারামিটার সরান যেহেতুDefaultLoadControl
বাস্তবায়নExoTrackSelection[]
থেকে স্ট্রিমের ধরন পুনরুদ্ধার করতে পারে। - অপ্রচলিত
DefaultLoadControl.calculateTargetBufferBytes(Renderer[], ExoTrackSelection[])
এবং ওভাররাইড প্রতিরোধ করার জন্য চূড়ান্ত হিসাবে চিহ্নিত পদ্ধতি। এর পরিবর্তে নতুনDefaultLoadControl.calculateTargetBufferBytes(ExoTrackSelection[])
ব্যবহার করা উচিত। -
MergingMediaSource
এ সেকেন্ডারি সোর্স থেকেMediaSourceEventListener
ইভেন্ট রিপোর্ট করুন। এর ফলে সাইডলোড করা সাবটাইটেল (যাMediaItem.LocalConfiguration.subtitleConfigurations
এর সাথে যোগ করা হয়েছে) এর জন্য লোড শুরু/ত্রুটি/বাতিল/সম্পূর্ণ ইভেন্ট রিপোর্ট করা হবে, যাAnalyticsListener
থেকে নির্গত ডুপ্লিকেট লোড ইভেন্ট হিসাবে প্রদর্শিত হতে পারে। - প্লেব্যাক সম্পূর্ণরূপে বন্ধ করা থেকে সাবটাইটেল এবং মেটাডেটা ত্রুটি প্রতিরোধ করুন। পরিবর্তে সমস্যাযুক্ত ট্র্যাক নিষ্ক্রিয় করা হয়েছে এবং অবশিষ্ট ট্র্যাকগুলির প্লেব্যাক চলতে থাকে ( #1722 )।
- নতুন সাবটাইটেল হ্যান্ডলিংয়ে (এক্সট্রাকশনের সময়), যুক্ত পার্স (যেমন অবৈধ সাবটাইটেল ডেটা) এবং লোড ত্রুটি (যেমন HTTP 404)
onLoadError
কলব্যাকের মাধ্যমে নির্গত হয়। - লিগ্যাসি সাবটাইটেল পরিচালনায় (রেন্ডারিংয়ের সময়), শুধুমাত্র সম্পর্কিত লোড ত্রুটিগুলি
onLoadError
কলব্যাকের মাধ্যমে নির্গত হয় যখন পার্স ত্রুটিগুলি নিঃশব্দে উপেক্ষা করা হয় (এটি পূর্ব-বিদ্যমান আচরণ)।
- নতুন সাবটাইটেল হ্যান্ডলিংয়ে (এক্সট্রাকশনের সময়), যুক্ত পার্স (যেমন অবৈধ সাবটাইটেল ডেটা) এবং লোড ত্রুটি (যেমন HTTP 404)
- বাগ ফিক্স করুন যেখানে প্লেলিস্ট আইটেম বা পিরিয়ড মাল্টি-পিরিয়ড ড্যাশ স্ট্রীম এর সময়কালের সাথে যা প্রকৃত বিষয়বস্তুর সাথে মেলে না আইটেমের শেষে ফ্রেম ফ্রিজ হতে পারে ( #1698 )।
- শেষ আপডেটের পরে ক্লায়েন্ট পুনরায় আরম্ভ করার পর থেকে সর্বাধিক অতিবাহিত সময় সেট করতে
SntpClient
এ একটি সেটার যুক্ত করুন ( #1794 )।
-
- ট্রান্সফরমার:
-
SurfaceAssetLoader
যোগ করুন, যাSurface
মাধ্যমে ট্রান্সফরমারে ভিডিও ডেটা সারিবদ্ধ করা সমর্থন করে। -
ImageAssetLoader
একটিIllegalStateException
নিক্ষেপ করার পরিবর্তেAssetLoader.onError
এর মাধ্যমে অসমর্থিত ইনপুট রিপোর্ট করে। - ছবি রপ্তানির জন্য
MediaItem.Builder.setImageDurationMs
ব্যবহার করে ছবির সময়কাল নির্ধারণ করা বাধ্যতামূলক করুন৷ - অডিও EditedMediaItems এর ক্রমগুলির ফাঁকগুলির জন্য রপ্তানি সমর্থন যোগ করুন৷
-
- ট্র্যাক নির্বাচন:
-
DefaultTrackSelector
: চ্যানেল-ভিত্তিক অডিওর চেয়ে অবজেক্ট-ভিত্তিক অডিও পছন্দ করুন যখন অন্যান্য কারণগুলি সমান হয়।
-
- নিষ্কাশনকারী:
-
Mp4Extractor
এবংFragmentedMp4Extractor
H264 নমুনাগুলি সনাক্ত করার অনুমতি দিন যা পরবর্তী নমুনাগুলির দ্বারা রেফারেন্স হিসাবে ব্যবহৃত হয় না৷ -
AmrExtractor
এ সূচক-ভিত্তিক চাওয়া সক্রিয় করতে বিকল্প যোগ করুন। - বৈধ ফ্রেমের মধ্যে 128kB-এর বেশি MP3 ফাইলগুলিকে ছেঁটে ফেলা হিসাবে বিবেচনা করুন (অবৈধের পরিবর্তে)। এর মানে শেষ পর্যন্ত নন-MP3 ডেটা সহ ফাইল, MP3 বাইটের দৈর্ঘ্য নির্দেশ করার জন্য অন্য কোনও মেটাডেটা নেই, এখন
ParserException: Searched too many bytes.{contentIsMalformed=true, dataType=1}
( #1563 )। - MP4 ফাইল ( #1659 ) এ সম্পাদনা তালিকা প্রক্রিয়া করার সময় নন-কীফ্রেম মিডিয়া স্টার্ট পজিশনের জন্য প্রিরোল নমুনা হ্যান্ডলিং ঠিক করুন।
-
Mp4Extractor
এবংFragmentedMp4Extractor
( #1531 ) এmdhd
বক্স থেকে মিডিয়া সময়কাল ব্যবহার করে উন্নত ফ্রেম রেট গণনা। - MP4 সম্পাদনা তালিকায়
media_time
এর ভুল স্কেলিং ঠিক করুন। যদিও মুভি টাইমস্কেল ব্যবহার করেsegment_duration
ইতিমধ্যেই সঠিকভাবে স্কেল করা হয়েছিল,media_time
এখন ট্র্যাক টাইমস্কেল ব্যবহার করে সঠিকভাবে স্কেল করা হয়েছে, যেমন MP4 ফর্ম্যাট স্ট্যান্ডার্ড ( #1792 ) দ্বারা নির্দিষ্ট করা হয়েছে। - সম্পাদনা তালিকা ( #1797 ) সহ MP4-এর জন্য
endIndices
গণনার মধ্যে আউট-অফ-অর্ডার ফ্রেমগুলি পরিচালনা করুন। -
-1
মান ( #1819 ) পরিচালনা করতে MP4 ফাইলেরmdhd
বক্সে মিডিয়া সময়কাল পার্সিং ঠিক করুন। - H.263 ভিডিও ( #1821 ) এর জন্য MP4 ফাইলে
h263
বক্স সনাক্ত করার জন্য সমর্থন যোগ করুন। - AC-4 Level-4 ISO বেস মিডিয়া ফাইল ফরম্যাট সমর্থন যোগ করুন ( #1265 )।
-
- ডেটা সোর্স:
- API স্তর 34 ( #1262 ) এর পরিবর্তে সংস্করণ S এক্সটেনশন 7 থেকে শুরু করার অনুমতি দিতে
HttpEngineDataSource
আপডেট করুন। -
DataSourceContractTest
: দাবী করে যেDataSource.getUri()
সমাধান করা URI ফেরত দেয় (নথিভুক্ত হিসাবে)। যেখানে এটি অনুরোধ করা URI থেকে ভিন্ন, সেখানে নতুনDataSourceContractTest.TestResource.Builder.setResolvedUri()
পদ্ধতি ব্যবহার করে পরীক্ষাগুলি এটি নির্দেশ করতে পারে। -
DataSourceContractTest
: দাবি করুন যেDataSource.getUri()
এবংgetResponseHeaders()
তাদের 'ওপেন' মান ফিরিয়ে দেয় একটি ব্যর্থ কলের পরেopen()
(একটি 'না পাওয়া' রিসোর্সের কারণে) এবং পরবর্তীclose()
কলের আগে।-
DataSourceContractTest.getNotFoundResources()
ওভাররাইড করা পরীক্ষার সাব-ক্লাসগুলিকে একাধিক 'পাওয়া যায়নি' রিসোর্স প্রদান করতে এবং যে কোনো প্রত্যাশিত শিরোনামও প্রদান করতে দেয়। এটি HTTP 404 (শিরোনাম সহ) এবং "সার্ভার পাওয়া যায়নি" (কোন শিরোনাম নেই) এর মধ্যে পার্থক্য করতে দেয়।
-
- API স্তর 34 ( #1262 ) এর পরিবর্তে সংস্করণ S এক্সটেনশন 7 থেকে শুরু করার অনুমতি দিতে
- অডিও:
- মিডিয়াতে উপস্থিত থাকলে কোডেকে স্বয়ংক্রিয়ভাবে CTA-2075 লাউডনেস মেটাডেটা কনফিগার করুন।
- খোঁজার সময় মসৃণ ভলিউম র্যাম্প ডাউন নিশ্চিত করুন।
- অনুসন্ধানের সময় ঘটতে পারে এমন পপ শব্দগুলি ঠিক করুন।
- Sonic এর টাইম-স্ট্রেচিং/পিচ-শিফটিং অ্যালগরিদমের জন্য ট্রাঙ্কেশন ত্রুটি জমে যাওয়া ঠিক করুন।
-
SpeedChangingAudioProcessor
এ বাগ ফিক্স করুন যা ড্রপ আউটপুট ফ্রেম সৃষ্টি করে।
- ভিডিও:
-
MediaCodecVideoRenderer
ডিকোডিং নমুনাগুলি এড়িয়ে চলে যা অন্য নমুনা দ্বারা রেন্ডার করা বা রেফারেন্স হিসাবে ব্যবহৃত হয় না। - API 35 এবং তার উপরে,
MediaCodecAdapter
এখনconfigure
একটিnull
Surface
পেতে পারে এবং কোডেক এটিকে সমর্থন করলে (MediaCodecInfo.detachedSurfaceSupported
) পূর্বে সেট করাSurface
অপসারণের জন্য একটি নতুন পদ্ধতিdetachOutputSurface
এ কল করতে পারে। -
MediaCodecAdapter
সরবরাহকৃত পিক্সেল আকৃতির অনুপাতের মানগুলি ব্যবহার করুন যদিonOutputFormatChanged
( #1371 ) এ প্রক্রিয়া করার সময় দেওয়া হয়। - Galaxy Tab S7 FE-তে ডিভাইসের সমস্যার সমাধান যোগ করুন যার ফলে 60fps সুরক্ষিত H264 স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত হয় ( #1619 )।
- শেষ নমুনার পরে আটকে যায় এমন কোডেকগুলির জন্য সমাধান যোগ করুন একটি শেষ-অফ-স্ট্রীম সংকেত ফেরত না দিয়ে।
-
- পাঠ্য:
- একটি কাস্টম
VoiceSpan
যোগ করুন এবং WebVTT ভয়েস স্প্যান ( #1632 ) এর জন্য পপুলেট করুন। - খুব বড় সাবটাইটেল টাইমস্ট্যাম্প সহ HLS-এ WebVTT নিশ্চিত করুন (যা মাইক্রোসেকেন্ড হিসাবে উপস্থাপিত হলে এবং
90,000
MPEG টাইমবেস দ্বারা গুণিত হলে 64-বিটlong
ওভারফ্লো হয়) প্রদর্শিত হয় ( #1763 )। - ডলবি ভিশন সামগ্রীতে CEA-608 সাবটাইটেল সমর্থন করুন ( #1820 )।
- যখন CEA-608 সাবটাইটেল সক্রিয় থাকে তখন DASH মাল্টি-পিরিয়ড স্ট্রিমগুলিতে ঝুলন্ত প্লেব্যাক ঠিক করুন ( #1863 )।
- একটি কাস্টম
- মেটাডেটা:
- বরফযুক্ত বা vnd.dvb.ait বিষয়বস্তু ধারণকারী ট্র্যাকগুলিতে
C.TRACK_TYPE_METADATA
টাইপ বরাদ্দ করুন৷
- বরফযুক্ত বা vnd.dvb.ait বিষয়বস্তু ধারণকারী ট্র্যাকগুলিতে
- ছবি:
- গ্লাইড বা কয়েলের মতো বাহ্যিক চিত্র লোডিং লাইব্রেরির সাথে সরলীকৃত একীকরণের জন্য
ExternallyLoadedImageDecoder
যোগ করুন।
- গ্লাইড বা কয়েলের মতো বাহ্যিক চিত্র লোডিং লাইব্রেরির সাথে সরলীকৃত একীকরণের জন্য
- ডেটা সোর্স:
-
FileDescriptorDataSource
যোগ করুন, একটি নতুনDataSource
যা একটিFileDescriptor
( #3757 ) থেকে পড়তে ব্যবহার করা যেতে পারে।
-
- প্রভাব:
- ছোটখাটো
SurfaceTexture
স্কেলিং এর জন্যDefaultVideoFrameProcessor
সমাধান যোগ করুন।SurfaceTexture
একটি ছোট স্কেলিং অন্তর্ভুক্ত থাকতে পারে যা একটি ক্রপ করা বাফারের প্রান্তের চারপাশে 1-টেক্সেল সীমানা কেটে দেয়। এটি এখন এমনভাবে পরিচালনা করা হয় যে আউটপুট প্রত্যাশার কাছাকাছি। - গতি বাড়ান
DefaultVideoFrameProcessor.queueInputBitmap()
। ফলস্বরূপ,Transformer
দিয়ে ভিডিওতে ছবি রপ্তানি করা দ্রুততর হয়।
- ছোটখাটো
- আইএমএ এক্সটেনশন:
- প্লেলিস্ট সাফ করার ফলে
ImaServerSideAdInsertionMediaSource
এ একটিArrayIndexOutOfBoundsException
হতে পারে এমন বাগ ঠিক করুন। - বাগ ফিক্স করুন যেখানে সার্ভার-সাইড ঢোকানো DAI স্ট্রীম প্রিরোল ছাড়াই একটি
ArrayIndexOutOfBoundsException
হতে পারে যখন শেষ মিডরোল ( #1741 ) বাজবে।
- প্লেলিস্ট সাফ করার ফলে
- অধিবেশন:
-
MediaButtonReceiver.shouldStartForegroundService(Intent)
যোগ করুন অ্যাপগুলিকে এই পদ্ধতিটি ওভাররাইড করে প্লেব্যাক পুনরায় চালু করার জন্য আসা একটি প্লে কমান্ডকে দমন করার অনুমতি দিতে৷ ডিফল্টরূপে, পরিষেবাটি সর্বদা শুরু হয় এবং একটিForegroundServiceDidNotStartInTimeException
( #1528 ) দিয়ে সিস্টেমটি পরিষেবাটি ক্র্যাশ না করে প্লেব্যাক দমন করা যায় না। - একটি লিগ্যাসি পরিষেবার সাথে সংযুক্ত থাকাকালীন পদ্ধতির
MediaBrowserServiceCompat
ভেরিয়েন্টের পরিবর্তেMediaSessionCompat.Callback
এ পাঠানো একটিMediaBrowser
থেকে পাঠানো কাস্টম কমান্ডের কারণে বাগ সংশোধন করুন৷ এটি লিগ্যাসি পরিষেবা ( #1474 ) দ্বারা ফেরত পাঠানো প্রকৃত রিটার্ন মান পেতেMediaBrowser
কে বাধা দেয়। - মিডিয়া বোতামের জন্য ব্রডকাস্ট রিসিভার সেট করার সময় নির্দিষ্ট নির্মাতাদের ডিভাইস দ্বারা নিক্ষিপ্ত
IllegalArgumentException
পরিচালনা করুন ( #1730 )। - মিডিয়া আইটেমগুলির জন্য কমান্ড বোতাম যোগ করুন। এটি
MediaBrowserCompat
সাথে লিগ্যাসি লাইব্রেরির সাথেCustom browse actions
হিসাবে পরিচিত ছিল তার জন্য Media3 API যোগ করে। নোট করুন যে মিডিয়া আইটেমগুলির জন্য Media3 কমান্ড বোতামগুলিMediaBrowser
এবংMediaController
উভয়ের জন্য উপলব্ধ। AAOS-এর কাস্টম ব্রাউজ অ্যাকশন দেখুন। - একটি মিডিয়া3 কন্ট্রোলার কখনও কখনও
play()
অনুরোধ করার পরে একটি সেশন অ্যাপকে একটি ফোরগ্রাউন্ড পরিষেবা শুরু করতে দিতে অক্ষম হয় এমন বাগটি ঠিক করুন৷ -
CommandButton.Builder.setIconUri
সীমাবদ্ধ করুন শুধুমাত্র Uris কন্টেন্ট গ্রহণ করতে। - একটি লিগ্যাসি
MediaBrowserCompat
এর সাথে সংযোগ করার সময় প্রাথমিকMediaBrowserCompat
এ Media3 ব্রাউজারের সংযোগ ইঙ্গিতগুলি পাস করুন৷ পরিষেবাটিonGetRoot()
এ প্রথম কলের সাথে রুট ইঙ্গিত হিসাবে পাস করা সংযোগের ইঙ্গিতগুলি পেতে পারে৷ - বাগ ফিক্স করুন যেখানে একটি
MediaBrowser
একটি লিগ্যাসি ব্রাউজার পরিষেবার সাথে সংযুক্ত ছিল, ব্রাউজারটিparentid
এ সদস্যতা নেওয়ার পরে পরিষেবার দ্বারা প্রেরিত একটি ত্রুটি পায়নি৷ - আন্তঃঅপারেবিলিটি আচরণের উন্নতি করুন, যাতে একটি Media3 ব্রাউজার যা একটি লিগ্যাসি
MediaBrowserService
এর সাথে সংযুক্ত থাকে একটি পিতামাতার সদস্যতা নেওয়ার সময় একটিparentId
এর সন্তানদের দুবার অনুরোধ না করে।
-
- UI:
- XML-ভিত্তিক শেয়ার্ড ট্রানজিশনের সমস্যার কারণে
PlayerView
-in-Compose-AndroidView
ওয়ার্কঅ্যারাউন্ড অপ্ট-ইন-এ প্রসারিত/ক্রপ করা ভিডিও তৈরি করুন।AndroidView
ভিতরেPlayerView
ব্যবহার করা অ্যাপগুলিকে অপ্ট-ইন করার জন্যPlayerView.setEnableComposeSurfaceSyncWorkaround
কল করতে হবে ( #1237 , #1594 )। - চাহিদা অনুযায়ী পূর্ণস্ক্রীন বোতামের আইকনের আপডেটের অনুমতি দিতে
PlayerView
setFullscreenButtonState
যোগ করুন, যেমন আউট-অফ-ব্যান্ড এবং প্রতিক্রিয়াশীলভাবে একটি ক্লিক ইন্টারঅ্যাকশন ( #1590 , #184 )। - অ্যাপ-সংজ্ঞায়িত টেক্সট ট্র্যাক নির্বাচনের পছন্দগুলি থাকলে টেক্সট নির্বাচনে "কোনও নয়" পছন্দ কাজ করছে না এমন বাগ ঠিক করুন।
- XML-ভিত্তিক শেয়ার্ড ট্রানজিশনের সমস্যার কারণে
- ড্যাশ এক্সটেনশন:
- একটি সেগমেন্টের মাঝখানে শুরু হওয়া পিরিয়ডের জন্য সমর্থন যোগ করুন ( #1440 )।
- মসৃণ স্ট্রিমিং এক্সটেনশন:
- টেক্সট ট্র্যাক ( #1779 ) সহ স্মুথস্ট্রিমিং স্ট্রিমগুলি চালানোর সময়
Bad magic number for Bundle
ঠিক করুন।
- টেক্সট ট্র্যাক ( #1779 ) সহ স্মুথস্ট্রিমিং স্ট্রিমগুলি চালানোর সময়
- RTSP এক্সটেনশন:
- ডিকোডার এক্সটেনশন (FFmpeg, VP9, AV1, ইত্যাদি):
- IAMF ডিকোডার মডিউল যোগ করুন, যা অডিও সংশ্লেষণ করতে libiamf নেটিভ লাইব্রেরি ব্যবহার করে IAMF ট্র্যাক ধারণকারী MP4 ফাইলের প্লেব্যাকের জন্য সমর্থন প্রদান করে।
- প্লেব্যাক একটি স্টেরিও লেআউটের পাশাপাশি 5.1 এর সাথে স্থানিককরণের সাথে ঐচ্ছিক হেড ট্র্যাকিং সক্ষম করা আছে, কিন্তু বাইনরাল প্লেব্যাক সমর্থন বর্তমানে উপলব্ধ নেই।
- Android 15 ( #1685 ) এ ডিকোডার এক্সটেনশনের জন্য 16 KB পৃষ্ঠা সমর্থন যোগ করুন।
- IAMF ডিকোডার মডিউল যোগ করুন, যা অডিও সংশ্লেষণ করতে libiamf নেটিভ লাইব্রেরি ব্যবহার করে IAMF ট্র্যাক ধারণকারী MP4 ফাইলের প্লেব্যাকের জন্য সমর্থন প্রদান করে।
- কাস্ট এক্সটেনশন:
- CastSession সংযোগ বিচ্ছিন্ন হওয়ার পরে টাইমলাইন পরিষ্কার করা বন্ধ করুন, যা প্রেরক অ্যাপটিকে সংযোগ বিচ্ছিন্ন হওয়ার পরে স্থানীয়ভাবে প্লেব্যাক পুনরায় শুরু করতে সক্ষম করে।
- একটি
Context
প্রদান করা হলে CastPlayer এরDeviceInfo
পপুলেট করুন। এটি একটিRoutingSession
এMediaSession
লিঙ্ক করতে সক্ষম করে, যা আউটপুট সুইচার ( #1056 ) একীভূত করার জন্য প্রয়োজনীয়।
- পরীক্ষা উপযোগিতা:
-
DataSourceContractTest
এখন যাচাই করার জন্য পরীক্ষাগুলি অন্তর্ভুক্ত করে:- ইনপুট স্ট্রীম
read position
আপডেট করা হয়েছে৷ - আউটপুট বাফার
offset
সঠিকভাবে প্রয়োগ করা হয়।
- ইনপুট স্ট্রীম
-
- ডেমো অ্যাপ
- ডেমো শর্ট-ফর্ম অ্যাপে মেমরি লিক সমাধান করুন ( #1839 )।
- অপ্রচলিত চিহ্নগুলি সরান:
- অপসারিত
Player.hasPrevious
,Player.hasPreviousWindow()
সরান। পরিবর্তেPlayer.hasPreviousMediaItem()
ব্যবহার করুন। - অবচিত
Player.previous()
পদ্ধতি সরান। পরিবর্তেPlayer.seekToPreviousMediaItem()
ব্যবহার করুন। - অবমূল্যায়িত
DrmSessionEventListener.onDrmSessionAcquired
পদ্ধতি সরান। - অবমূল্যায়িত
DefaultEncoderFactory
কনস্ট্রাক্টরগুলি সরান। পরিবর্তেDefaultEncoderFactory.Builder
ব্যবহার করুন।
- অপসারিত
সংস্করণ 1.5.0-আরসি 02
নভেম্বর 19, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-আরসি 01
13 নভেম্বর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-BETA01
30 অক্টোবর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-আলফা 01
10 সেপ্টেম্বর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0
সংস্করণ 1.4.1
আগস্ট 27, 2024
androidx.media3:media3-*:1.4.1
প্রকাশিত হয়েছে। সংস্করণ 1.4.1 এ এই কমিটস রয়েছে।
- এক্সো প্লেয়ার:
- নিষ্কাশনকারী:
- এমপি 3: একটি
Info
ফ্রেমের দৈর্ঘ্যের ক্ষেত্রের উপর ভিত্তি করে নন-এমপি 3 ডেটা ট্রেলিং নন-এমপি 3 ডেটা সঠিকভাবে উপেক্ষা করেSearched too many bytes
( #1480 )।
- এমপি 3: একটি
- পাঠ্য:
- টিটিএমএল: শতাংশের
tts:fontSize
মানগুলি নিশ্চিত করার জন্য তারা শতাংশtts:fontSize
মানগুলি। - অনুরোধ করা আউটপুট শুরুর সময়টি
Subtitle
( #1516 ) এর চূড়ান্ত ইভেন্টের সময়ের চেয়ে বেশি বা সমান হওয়ার কারণে ভুলভাবে পরিচালনা করার কারণেLegacySubtitleUtil
IndexOutOfBoundsException
ঠিক করুন।
- টিটিএমএল: শতাংশের
- DRM:
-
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE
ত্রুটি। এই ত্রুটিটি ফ্রেমওয়ার্কMediaDrm.requiresSecureDecoder
পদ্ধতি ( #1603 ) এর একটি অসম্পূর্ণ বাস্তবায়নের কারণে ঘটে।
-
- প্রভাব:
-
GlObjectsProvider
একটিrelease()
পদ্ধতি যুক্ত করুন।
-
- অধিবেশন:
- ডকুমেন্টেড হিসাবে ( #1493 ) হিসাবে
KEYCODE_HEADSETHOOK
একটি ডাবল-ট্যাপকে একটি 'সন্ধান করুন' অ্যাকশনে রূপান্তর করুন। -
ForegroundServiceDidNotStartInTimeException
এক্সসেপশন ( #1581 ) এড়াতে এটিকে উপেক্ষা করবেন কিনা তা সিদ্ধান্ত নেওয়ার সময়MediaButtonReceiver
'প্লে' কমান্ড হিসাবেKEYCODE_HEADSETHOOK
হ্যান্ডেল করুন।
- ডকুমেন্টেড হিসাবে ( #1493 ) হিসাবে
- RTSP এক্সটেনশন:
- এসডিপি পার্সিংয়ে অবৈধ মিডিয়া বিবরণ এড়িয়ে যান ( #1087 )।
সংস্করণ 1.4.0
25 জুলাই, 2024
androidx.media3:media3-*:1.4.0
প্রকাশিত হয়েছে। সংস্করণ 1.4.0-এ এই কমিট রয়েছে।
- সাধারণ গ্রন্থাগার:
- ফরোয়ার্ড তাদের উপেক্ষা করার পরিবর্তে সুরক্ষিত
BasePlayer.seekTo()
এবংSimpleBasePlayer.handleSeek()
পদ্ধতিগুলিতে কল করার জন্য নো-অপের সন্ধান করেছে। আপনি যদি কোনও কাস্টম প্লেয়ারে এই পদ্ধতিগুলি প্রয়োগ করে থাকেন তবে আপনাকেmediaItemIndex == C.INDEX_UNSET
সাথে এই অতিরিক্ত কলগুলি পরিচালনা করতে হবে। - বর্ধিত জাভা 8 ডেসুগারিং ( #1312 ) এর উপর সংকলন নির্ভরতা সরান।
-
MediaItem.Builder.setImageDurationMs()
এ পাস করা সময়কালটি একটি নন-ইমেজMediaItem
জন্য উপেক্ষা করা হয়েছে (ডকুমেন্টেড হিসাবে) নিশ্চিত করুন। -
Format
উদাহরণগুলি সম্পর্কে অ্যাপ্লিকেশন সরবরাহিত কাস্টম তথ্য সঞ্চয় করতেFormat.customData
যুক্ত করুন।
- ফরোয়ার্ড তাদের উপেক্ষা করার পরিবর্তে সুরক্ষিত
- এক্সো প্লেয়ার:
-
BasePreloadManager
যুক্ত করুন যা তাদেরrankingData
দ্বারা নির্ধারিত অগ্রাধিকারগুলির উপর ভিত্তি করে একাধিক উত্সের জন্য প্রিলোডিংকে সমন্বিত করে। এই শ্রেণিটি প্রসারিত করে কাস্টমাইজেশন সম্ভব।DefaultPreloadManager
যুক্ত করুন যা উত্সগুলির মিডিয়া নমুনাগুলি মেমরিতে প্রিলোড করার জন্যPreloadMediaSource
ব্যবহার করে এবং একটি পূর্ণসংখ্যাrankingData
ব্যবহার করে যা ইউআইতে কোনও আইটেমের সূচককে নির্দেশ করে। - একাধিক খেলোয়াড়কে সমর্থন করার জন্য
LoadControl
বাস্তবায়ন সক্ষম করতেLoadControl
বেশিরভাগ পদ্ধতিতেPlayerId
যুক্ত করুন। -
Buffer.isDecodeOnly()
এবংC.BUFFER_FLAG_DECODE_ONLY
সরান। এই পতাকাটি সেট করার দরকার নেই কারণ রেন্ডারার এবং ডিকোডাররা টাইমস্ট্যাম্পের উপর ভিত্তি করে বাফারগুলি এড়িয়ে যাওয়ার সিদ্ধান্ত নেবে। কাস্টমRenderer
বাস্তবায়নগুলি বাফার সময়টি কমপক্ষেBaseRenderer.getLastResetPositionUs()
কাস্টমSimpleDecoder
বাস্তবায়নগুলি প্রয়োজনেisAtLeastOutputStartTimeUs()
চেক করতে পারে বাDecoderOutputBuffer.shouldBeSkipped
সহ অন্যান্য বাফারগুলি চিহ্নিত করতে পারে Old এগুলি এড়িয়ে যাওয়ার জন্য hold - প্রদত্ত
rankingData
দিয়ে কোনওMediaSource
প্রিলোড না করার নির্দেশ দেওয়ার জন্যTargetPreloadStatusControl.getTargetPreloadStatus(T)
দ্বারা একটি নাল মান ফেরত দেওয়ার অনুমতি দিন। -
BasePreloadManager
remove(MediaSource)
যুক্ত করুন। - প্রিলোড ম্যানেজার উদাহরণটি রাখার সময় সমস্ত হোল্ডিং উত্স প্রকাশের জন্য
BasePreloadManager
reset()
যুক্ত করুন। -
PriorityTaskManager
ব্যবহৃত অগ্রাধিকারের মানটি সংজ্ঞায়িত করতে এবং এপিআই 35 থেকে মিডিয়াকোডেক গুরুত্বের জন্য সংজ্ঞায়িত করতেExoPlayer.setPriority()
(এবংBuilder.setPriority()
) যুক্ত করুন। - শেষ রিভিউর সময় আপডেট করার সাথে সমস্যাটি সমাধান করুন যার ফলস্বরূপ সিএমসিডি ( #1124 ) এর ভুল
bs
(বাফার অনাহারে) কী তৈরি হয়েছিল। - উত্সটি শেষের দিকে লোড হয়েছে তা নির্দেশ করতে
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)
যুক্ত করুন। এটিDefaultPreloadManager
এবং কাস্টমPreloadMediaSource.PreloadControl
বাস্তবায়নগুলি পরবর্তী উত্সটি প্রিলোড করতে বা অন্যান্য পদক্ষেপ নিতে দেয়। - আইটেমগুলির শেষে নীরবতা এড়িয়ে যাওয়া বাগটি ঠিক করুন প্লেব্যাক ব্যতিক্রমকে ট্রিগার করতে পারে।
- প্রিলোডিং পিরিয়ডটি বাতিল করতে
PreloadMediaSource
clear
যুক্ত করুন। - নতুন ত্রুটি কোড
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED
যুক্ত করুন। - প্রাথমিক সামগ্রী মিডিয়া প্রস্তুতি শেষ হওয়ার আগে
AdsMediaSource
লোড প্রেরোল বিজ্ঞাপনগুলি ( #1358 ) দিন। - মূল সময়টি ইতিমধ্যে ম্যানিফেস্ট থেকে সরানো হওয়ার পরে মাল্টি-পিরিয়ড ড্যাশ লাইভ স্ট্রিমটি পুনরায় প্রস্তুত করার সময় প্লেব্যাকটি
STATE_ENDED
চলে গেছে এমন বাগটি ফিক্স করুন। -
PreloadMediaSource.PreloadControl
onTimelineRefreshed()
এর নাম পরিবর্তন করুনonSourcePrepared()
এবংonPrepared()
এonTracksSelected()
। এছাড়াওDefaultPreloadManager.Stage
ইন্টডিইএফগুলির নামকরণ করুন। - সিপিইউ ওয়েক-সাইকেলগুলির সাথে আরও ভালভাবে সারিবদ্ধ করার জন্য গতিশীল শিডিয়ুলিংয়ের জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন এবং যখন রেন্ডারাররা অগ্রগতি করতে পারে তখন জেগে উঠতে বিলম্ব করুন। আপনার এক্সোপ্লেয়ার উদাহরণটি সেটআপ করার সময় আপনি
experimentalSetDynamicSchedulingEnabled()
ব্যবহার করে এটি সক্ষম করতে পারেন। -
Renderer.getDurationToProgressUs()
যুক্ত করুন। একজনRenderer
এক্সোপ্লেয়ারে ফিরে আসার জন্য এই পদ্ধতিটি বাস্তবায়ন করতে পারে যে প্লেব্যাকটি অবশ্যই রেন্ডারারের অগ্রগতির জন্য অগ্রসর হতে হবে। যদিExoPlayer
experimentalSetDynamicSchedulingEnabled()
দিয়ে সেট করা থাকে তবেExoPlayer
তার কাজের কার্য নির্ধারণের সময় গণনা করার সময় এই পদ্ধতিটি কল করবে। -
MediaCodecAdapter#OnBufferAvailableListener
যুক্ত করতে সতর্ক করতে যুক্ত করুন যখন ইনপুট এবং আউটপুট বাফারগুলিMediaCodecRenderer
দ্বারা ব্যবহারের জন্য উপলব্ধ থাকে।MediaCodecRenderer
এই কলব্যাকগুলি গ্রহণ করার সময়ExoPlayer
সংকেত দেবেন এবং যদিExoPlayer
experimentalSetDynamicSchedulingEnabled()
দিয়ে সেট করা থাকে, তবেExoPlayer
তার কাজের লুপটি নির্ধারণ করবে কারণ রেন্ডারাররা অগ্রগতি করতে পারে। - পৃথক পরামিতিগুলির পরিবর্তে
LoadControl
পদ্ধতির জন্য ডেটা ক্লাস ব্যবহার করুন। -
ExoPlayer.isReleased()
ডাকা হয়েছে কিনা তা পরীক্ষা করতেExoplayer.release()
যুক্ত করুন। - সর্বাধিক অবস্থানটি কনফিগার করতে
ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()
যুক্ত করুন যার জন্য সর্বাধিক অবস্থানটিseekToPrevious()
পূর্ববর্তী আইটেমটি ( #1425 ) সন্ধান করে। - কিছু অডিও ফোকাস অসঙ্গতিগুলি ঠিক করুন, যেমন প্লেয়ার বিরতি দেওয়ার সময় পুরো বা ক্ষণস্থায়ী ফোকাস ক্ষতির প্রতিবেদন না করা ( #1436 )।
- প্রাথমিক প্রস্তুতি পদক্ষেপের পরে অতিরিক্ত ট্র্যাকগুলি ( #1476 ) রিপোর্ট করার কারণে এক্সট্র্যাক্টরদের দ্বারা সৃষ্ট সম্ভাব্য
IndexOutOfBoundsException
ঠিক করুন। -
ExoPlayer.setVideoEffect()
এরEffects
রেন্ডারারের অফসেট অপসারণ ( #1098 ) সহ টাইমস্ট্যাম্পগুলি গ্রহণ করবে। - অন্য প্লেলিস্ট আইটেম ( #1483 ) এর সামনে পড়ার সময় ঘটেছিল প্লেয়ার ত্রুটিটি পরিচালনা করার সময় সম্ভাব্য
IllegalArgumentException
ঠিক করুন।
-
- ট্রান্সফরমার:
- আউটপুট ফাইলের সংশ্লিষ্ট ট্র্যাকটি কীভাবে তৈরি করা হয়েছিল তা নির্দেশ করে
ExportResult
audioConversionProcess
এবংvideoConversionProcess
যুক্ত করুন। - ট্রিম অপ্টিমাইজেশন H.264 স্তরের চেকগুলি রিলাক্স করুন।
- একটি অনুক্রমে এসডিআর এবং এইচডিআর ইনপুট মিডিয়াগুলির মধ্যে পরিবর্তনের জন্য সমর্থন যুক্ত করুন।
- রচনা-স্তরের অডিও প্রভাবগুলির জন্য সমর্থন যুক্ত করুন।
- এইচডিআর ভিডিওগুলিতে ট্রান্সকোডিং আল্ট্রা এইচডিআর চিত্রগুলির জন্য সমর্থন যুক্ত করুন।
- সমস্যাটি সমাধান করুন যেখানে
DefaultAudioMixer
পুনরায় সেট করা এবং পুনরায় ব্যবহার করার পরে বাইটের সঠিক পরিমাণ আউটপুট দেয় না। - একটি ডিকোডার বাগের চারপাশে কাজ করুন যেখানে পিসিএম ইনপুট পরিচালনা করার সময় স্টেরিওতে অডিও চ্যানেলের সংখ্যা ক্যাপ করা হয়েছিল।
-
ExoPlayerAssetLoader
ট্র্যাকগুলি নির্বাচন করার সময়, অডিও চ্যানেল গণনা সীমাবদ্ধতাগুলি উপেক্ষা করুন কারণ তারা কেবল প্লেব্যাকের জন্য আবেদন করে। -
androidx.media3.transformer.Muxer
ইন্টারফেসটিandroidx.media3.muxer.Muxer
এবংandroidx.media3.transformer.Muxer
সরান। - সামগ্রী URI স্কিমগুলি থেকে HIC চিত্র লোড হচ্ছে ঠিক করুন। ( #1373 )।
- এভি সিঙ্ক উন্নত করতে
AudioGraphInput
ইনপুটে অডিও ট্র্যাক সময়কাল সামঞ্জস্য করুন। -
ExportResult.processedInputs
ইনপুটস ফিল্ড সরান। আপনি যদি এই ক্ষেত্রটি কোডেক বিশদগুলির জন্য ব্যবহার করেন তবে পরিবর্তেDefaultDecoderFactory.listener
ব্যবহার করুন। কোডেক ব্যতিক্রমের ক্ষেত্রে, কোডেকের বিশদটিExportException.codecInfo
উপলব্ধ থাকবে।
- আউটপুট ফাইলের সংশ্লিষ্ট ট্র্যাকটি কীভাবে তৈরি করা হয়েছিল তা নির্দেশ করে
- নিষ্কাশনকারী:
- এমপিইজি-টিএস: রোল ফরোয়ার্ড পরিবর্তনটি নিশ্চিত করে যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে। আই-ফ্রেমে কেবলমাত্র এইচএলএস স্ট্রিম ( #1150 ) এবং এইচ .262 এইচএলএস স্ট্রিম ( #1126 ) এ উদ্ভূত সমস্যাগুলি সমাধান করার জন্য ফিক্সগুলি অন্তর্ভুক্ত করে।
- এমপি 3: অন্তর্নিহিত স্ট্রিম (যেমন ফাইলের আকার, বা এইচটিটিপি
Content-Length
শিরোনাম) দ্বারা প্রতিবেদন করা আকারের তুলনায় কোনওInfo
ফ্রেম থেকে ডেটা আকার পছন্দ করুন। এটি নিয়মিত বিটরেট থেকে গণনা অনুসন্ধান থেকে অ-খেলাধুলা ট্রেলার ডেটা (যেমন অ্যালবাম আর্টওয়ার্ক) বাদ দিতে সহায়তা করে, সন্ধানকে আরও সঠিক করে তোলে ( #1376 )। - এমপি 3:
Info
ফ্রেমের পরে ফ্রেমের বিটরেট থেকে এক্সট্রাপোলেট করার পরিবর্তে ধ্রুবক বিটরেট সন্ধানের জন্য গড় বিটরেট গণনা করতে একটিInfo
ফ্রেমে ফ্রেম গণনা এবং অন্যান্য ডেটা ব্যবহার করুন (যেমনPCUT
ফ্রেম ( #1376 )। - এভিআই পাত্রে পিসিএম অডিও ফর্ম্যাট নিষ্কাশন ঠিক করুন।
- অডিও:
- ডিটিএস ফিক্স করুন: এক্স প্রোফাইল 2 পাসথ্রু প্লেব্যাকের জন্য এনকোডিং বৈশিষ্ট্য ( #1299 )।
- অফলোড প্লেব্যাকের জন্য,
AudioTrack.stop()
কল করার আগেDefaultAudioSink
স্ট্রিম সমাপ্তির জন্য ট্র্যাকিং ক্ষেত্রটি পুনরায় সেট করুন যাতেAudioTrack.StreamEventCallback#onPresentationEnded
সঠিকভাবে সনাক্ত করে যখন সমস্ত মুলতুবি ডেটা বাজানো হয়। -
SilenceSkippingAudioProcessor
বাগটি ঠিক করুন যেখানে বিভিন্ন অডিও ফর্ম্যাটগুলির মধ্যে রূপান্তর (উদাহরণস্বরূপ স্টেরিও থেকে মনোও) প্রসেসরটিকে একটি ব্যতিক্রম ছুঁড়ে ফেলতে পারে ( #1352 )। -
MediaCodecAudioRenderer.getDurationToProgressUs()
প্রয়োগ করুন যাতে এক্সপ্লেয়ারটি যখন মিডিয়াকোডেকিউডিয়েন্ডারার অগ্রগতি করতে পারে তখন তার মূল কাজের লুপটি গতিশীলভাবে নির্ধারণ করে।
- ভিডিও:
- ইস্যু করুন যেখানে
Listener.onRenderedFirstFrame()
খুব তাড়াতাড়ি এসে পৌঁছেছে যখন মিড-প্লেব্যাকের পৃষ্ঠগুলি স্যুইচ করার সময়। - প্রয়োজনে একটি সামঞ্জস্যপূর্ণ এভি 1 ডিকোডার ব্যবহার করতে ডলবি ভিশনের জন্য ডিকোডার ফ্যালব্যাক লজিকটি ঠিক করুন ( #1389 )।
- কোডেক ব্যতিক্রম ঠিক করুন যা কোনও ভিডিও রেন্ডারার মিড-প্লেব্যাক সক্ষম করার কারণে হতে পারে।
- ইস্যু করুন যেখানে
- পাঠ্য:
- ইস্যু ঠিক করুন যেখানে অনুসন্ধানের অবস্থানটি এড়িয়ে যাওয়ার আগে সাবটাইটেলগুলি শুরু হয়। এই সমস্যাটি কেবল মিডিয়া 3 1.4.0-ALPHA01 এ চালু হয়েছিল।
- ডিফল্ট সাবটাইটেল পার্সিং আচরণ পরিবর্তন করুন তাই এটি রেন্ডারিংয়ের সময় নিষ্কাশনের সময় ঘটে ( এক্সপ্লেয়ারটির আর্কিটেকচার ডায়াগ্রামটি এক্সট্রাকশন এবং রেন্ডারিংয়ের মধ্যে পার্থক্যের জন্য দেখুন)।
- এই পরিবর্তনটি
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)
এবংTextRenderer.experimentalSetLegacyDecodingEnabled(true)
উভয়কেই কল করে ওভাররাইড করা যেতে পারে। এই উপাদানগুলি কীভাবে একটিExoPlayer
উদাহরণে নিমজ্জিত করা যায় তার জন্য কাস্টমাইজেশনের উপর ডক্সগুলি দেখুন। এই পদ্ধতিগুলি (এবং উত্তরাধিকার সাবটাইটেল ডিকোডিংয়ের জন্য সমস্ত সমর্থন) ভবিষ্যতের প্রকাশে সরানো হবে। - কাস্টম
SubtitleDecoder
বাস্তবায়নের সাথে অ্যাপ্লিকেশনগুলি পরিবর্তেSubtitleParser
(এবংSubtitleParser.Factory
SubtitleDecoderFactory
পরিবর্তে) প্রয়োগ করতে সেগুলি আপডেট করতে হবে।
- এই পরিবর্তনটি
- পিজিএস: আক্ষরিক রঙের মান ( #1367 ) এর পরিবর্তে 0 রঙ সূচক হিসাবে
0
সমাধান করতে রান-দৈর্ঘ্যের ডিকোডিং ঠিক করুন। - সিইএ -708:
rowLock
মান উপেক্ষা করুন। সিইএ -708-ই এস -2023 স্পেসে বলা হয়েছে যে স্ট্রিমের উপস্থিত মানগুলি নির্বিশেষেrowLock
এবংcolumnLock
উভয়কেই সত্য বলে ধরে নেওয়া উচিত (columnLock
সমর্থন প্রয়োগ করা হয়নি, সুতরাং এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।- এটি মূলত
1.3.0-alpha01
রিলিজ নোটগুলিতে অন্তর্ভুক্ত ছিল, তবে পরিবর্তনটি দুর্ঘটনাক্রমে1.3.0-rc01
রিলিজের আগে ফিরিয়ে দেওয়া হয়েছিল। এটি এখন স্থির, সুতরাং পরিবর্তনটি আবার উপস্থিত রয়েছে।
- এটি মূলত
- সিইএ -708: 'সেট পেন লোকেশন' কমান্ড ( #1315 ) এর এক্সোপ্লেয়ারের নিষ্পাপ হ্যান্ডলিং দ্বারা যুক্ত হওয়া ডুপ্লিকেট নিউলাইনগুলি এড়িয়ে চলুন।
- যখন কোনও ওয়েবভিটিটি সাবটাইটেল নমুনায় কোনও ড্যাশ স্ট্রিমের অংশ হিসাবে ( #1516 ) অংশ হিসাবে কোনও সংকেত থাকে না তখন
LegacySubtitleUtil
থেকে একটিIllegalArgumentException
ঠিক করুন।
- মেটাডেটা:
- আইডি 3 বাছাই ট্যাগগুলিতে এমপি 4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম বাছাই' (
soal
), 'শিল্পী বাছাই' (soar
) এবং 'অ্যালবাম আর্টিস্ট বাছাই' (soaa
) এমপি 4 ট্যাগগুলি ভুলভাবেTSO2
,TSOA
এবংTSOP
আইডি 3 ট্যাগগুলিতে ( #1302 ) ম্যাপ করা হয়েছিল। - এমপি 4 (/আইটিউনস) সংখ্যাসূচক
gnre
(জেনার) এবংtmpo
(টেম্পো) ট্যাগগুলি পড়ার ঠিক করা হয়েছে যখন মানটি একের বেশি দীর্ঘ হয়। -
MediaMetadata.genre
( #1305 ) এ আইডিTCON
ফ্রেম প্রচার করুন।
- আইডি 3 বাছাই ট্যাগগুলিতে এমপি 4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম বাছাই' (
- ছবি:
- নন-স্কোয়ার ড্যাশ থাম্বনেইল গ্রিডগুলির জন্য সমর্থন যুক্ত করুন ( #1300 )।
- এপিআই 34+ এর জন্য AVIF এর জন্য সমর্থন যুক্ত করুন।
-
ExoPlayer.setImageOutput()
এর জন্য পূর্ববর্তী সেটImageOutput
সাফ করার জন্যnull
প্যারামিটার হিসাবে অনুমতি দিন।
- ডেটাসোর্স:
-
android.resource://package/id
কাঁচা রিসোর্স ইউআরআইগুলির জন্য সমর্থন প্রয়োগ করুন যেখানেpackage
বর্তমান অ্যাপ্লিকেশনটির প্যাকেজের চেয়ে আলাদা। এটি আগে কাজ করার জন্য নথিভুক্ত ছিল না, তবে নামের চেয়ে অন্য প্যাকেজে সংস্থান অ্যাক্সেস করার আরও কার্যকর উপায়। - অধীর আগ্রহে চেক
url
DataSpec
কনস্ট্রাক্টরগুলিতে নন-নুল। এই প্যারামিটারটি ইতিমধ্যে নন-নাল হওয়ার জন্য টীকাযুক্ত ছিল। - নির্মাণে ( #1405 ) হার্ড-কোডড না হয়ে
open()
এর সময় বাইট অ্যারেতে একটি ইউআরআই সমাধান করার জন্যByteArrayDataSource
অনুমতি দিন।
-
- DRM:
-
DefaultDrmSessionManagerProvider
ম্যানেজারপ্রোভাইডারে ( #1271 )LoadErrorHandlingPolicy
সেট করার অনুমতি দিন।
-
- প্রভাব:
-
SpeedChangeEffect
একইEditedMediaItem
বাComposition
মধ্যে একাধিক গতির পরিবর্তনগুলি সমর্থন করুন। - আল্ট্রা এইচডিআর বিটম্যাপ ইনপুট থেকে এইচএলজি এবং পিকিউ আউটপুট জন্য সমর্থন।
- EGL_GL_COLORSPACE_BT2020_HLG_EXT এর জন্য সমর্থন যুক্ত করুন, যা এক্সোপ্লেয়ার.সেটভিডোইফেক্ট এবং ট্রান্সফর্মারের ডিবাগ সারফেসভিউতে এইচএলজি পৃষ্ঠের আউটপুট উন্নত করে।
-
setOverlayFrameAnchor()
এ প্রয়োগ করা এক্স এবং ওয়াই মানগুলি উল্টিয়ে ডকুমেন্টেশনের সাথে সামঞ্জস্য করার জন্য ওভারলে ম্যাট্রিক্স বাস্তবায়ন আপডেট করুন। যদিOverlaySettings.Builder.setOverlayFrameAnchor()
ব্যবহার করে, তাদের x এবং y মানগুলি-1
দ্বারা গুণ করে ফ্লিপ করুন। -
ExoPlayer#setVideoEffects
( #821 ) এর সাথে ব্যবহৃত হলেTimestampWrapper
ক্র্যাশ হয় যেখানে বাগটি ঠিক করুন। - লিনিয়ার রঙ থেকে বৈদ্যুতিক বিটি 709 এসডিআর ভিডিওতে ডিফল্ট এসডিআর রঙের কার্যকারী স্থান পরিবর্তন করুন। মূল কালারস্পেস ধরে রাখতে তৃতীয় বিকল্পও সরবরাহ করুন।
- সম্পাদিতমিডাই আইটেমসেসেন্স ( #1055 ) এর অনির্দিষ্ট জেড-অর্ডার সংজ্ঞায়িত করার অনুমতি দিন।
- এইচডিআর সামগ্রীর বিভিন্ন টুকরো জুড়ে একটি ধারাবাহিক আলোকসজ্জা পরিসীমা বজায় রাখুন (এইচএলজি পরিসীমা ব্যবহার করে)।
- এইচডিআর সামগ্রীতে আল্ট্রা এইচডিআর (বিটম্যাপ) ওভারলেগুলির জন্য সমর্থন যুক্ত করুন।
- এপিআই 26 এর আগে ব্যবহার করার জন্য
SeparableConvolution
প্রভাবগুলি অনুমতি দিন। - ওভারলে এবং ফ্রেমের গতিশীল পরিসীমা অবশ্যই মেলে অবশ্যই অব্যবহৃত
OverlaySettings.useHdr
সরান। -
TextOverlay
জন্য এইচডিআর সমর্থন যুক্ত করুন। পাঠ্য ওভারলেটির আলোকসজ্জাOverlaySettings.Builder.setHdrLuminanceMultiplier()
এর সাথে সামঞ্জস্য করা যেতে পারে।
-
- আইএমএ এক্সটেনশন:
- অ্যাপসকে স্থিতিশীল করার জন্য ডিএআই বিজ্ঞাপন স্ট্রিমগুলি খেলতে প্রয়োজনীয় এপিআই প্রচার করুন।
-
ImaServerSideAdInsertionMediaSource.AdLoader
replaceAdTagParameters(Map <String, String>)
যুক্ত করুন যা রানটাইমে বিজ্ঞাপন ট্যাগ প্যারামিটারগুলি প্রতিস্থাপনের অনুমতি দেয়। - বিজ্ঞাপন প্লেব্যাকের সময় কোনও প্লেয়ার ত্রুটি ঘটলে ( #1334 ) যখন কোনও খেলোয়াড়ের ত্রুটি ঘটেছিল তখন
VideoAdPlayer.VideoAdPlayerCallback.onError()
ডাকা হয় না এমন বাগটি ফিক্স করুন। -
data://
বিজ্ঞাপন ট্যাগ ইউআরআইএস ( #700 ) ব্যবহার করার সময় একটিNullPointerException
ঠিক করতে ইমাম এসডিকে সংস্করণটি 3.33.0 এ বাম্প করুন।
- অধিবেশন:
-
CommandButton.enabled
এর ডিফল্ট পরিবর্তন করুন।true
হিসাবে চিহ্নিত করা হয়েছে এবং সম্পর্কিত কমান্ডটি উপলব্ধ থাকলেও মানটি কন্ট্রোলারদের জন্য মিথ্যা থাকতে পারে তা নিশ্চিত করে। -
CommandButton
জন্য আইকন ধ্রুবকগুলি যুক্ত করুন যা কাস্টম আইকন সংস্থানগুলির পরিবর্তে ব্যবহার করা উচিত। -
MediaSessionService.isPlaybackOngoing()
যুক্ত করুন অ্যাপ্লিকেশনগুলিকে জিজ্ঞাসা করতেonTaskRemoved()
( #1219 ) এ পরিষেবাটি বন্ধ করা দরকার কিনা তা জিজ্ঞাসা করতে। -
MediaSessionService.pauseAllPlayersAndStopSelf()
যুক্ত করুন যা সুবিধামত সমস্ত সেশনের প্লেব্যাক বিরতি দিতে এবংstopSelf()
MediaSessionService
লাইফসাইকেলটি বন্ধ করতে কল করতে দেয়। - প্লেব্যাক চলমান থাকলে বা অন্যথায় পরিষেবাটি বন্ধ করে দিলে একটি নিরাপদ ডিফল্ট বাস্তবায়ন সরবরাহ করার জন্য ওভাররাইড
MediaSessionService.onTaskRemoved(Intent)
- প্ল্যাটফর্ম সেশন মেটাডেটা ( #1256 ) এ সময়কাল নির্ধারণ না করে লাইভ স্ট্রিমগুলির জন্য মিডিয়া বিজ্ঞপ্তিতে সিকবারটি লুকান।
-
MediaDescriptionCompat
কমপ্যাটেMediaMetadata
রূপান্তরকে সারিবদ্ধ করুন, মিডিয়া 1 এর মতো মেটাডেটা বৈশিষ্ট্যগুলি নির্বাচন করার সময় একই পছন্দের ক্রম এবং যুক্তি ব্যবহার করতে। -
MediaSession.sendError()
যুক্ত করুন যা মিডিয়া 3 নিয়ামককে অ-মারাত্মক ত্রুটিগুলি প্রেরণের অনুমতি দেয়। বিজ্ঞপ্তি নিয়ামক ব্যবহার করারPlaybackState
(MediaSession.getMediaNotificationControllerInfo()
দেখুন get - কোনও নির্দিষ্ট নিয়ামকের কাছ থেকে প্লেয়ার ইন্টারঅ্যাকশনগুলির একটি সিরিজ শেষ হলে সেশনগুলি অবহিত করার জন্য
MediaSession.Callback.onPlayerInteractionFinished()
যুক্ত করুন। -
SessionError
যুক্ত করুন এবং ত্রুটি কোডের পরিবর্তেSessionResult
এবংLibraryResult
এটি ব্যবহার করুন ত্রুটি সম্পর্কে আরও তথ্য সরবরাহ করতে এবং যদি সম্ভব হয় তবে কীভাবে ত্রুটিটি সমাধান করবেন সে সম্পর্কে আরও তথ্য সরবরাহ করতে। - মিডিয়া সেশন প্রকাশের অ্যাপ্লিকেশনগুলির সাথে মিথস্ক্রিয়া পরীক্ষা করতে ব্যবহার করা যেতে পারে মিডিয়া 3 কন্ট্রোলার টেস্ট অ্যাপের জন্য কোডটি প্রকাশ করুন।
- মিডিয়া 3 এর
MediaSession[Builder].setSessionExtras()
এ মিডিয়া 1 কন্ট্রোলারেরPlaybackStateCompat.getExtras()
এ পাস করা অতিরিক্তগুলি প্রচার করুন। - প্ল্যাটফর্ম সেশনে এবং থেকে মারাত্মক এবং অ-মারাত্মক ত্রুটিগুলি মানচিত্র করুন। একটি
PlaybackException
PlaybackStateCompat
মারাত্মক ত্রুটি অবস্থায় ম্যাপ করা হয়। মিডিয়াসেশন সহ মিডিয়া বিজ্ঞপ্তি নিয়ামককে প্রেরণ করা একটিSessionError
MediaSession.sendError(ControllerInfo, SessionError)
PlaybackStateCompat
একটি অ-মারাত্মক ত্রুটিতে ম্যাপ করা হয়েছে যার অর্থ ত্রুটি কোড এবং বার্তা সেট করা আছে তবে প্ল্যাটফর্ম সেশনের অবস্থাটিSTATE_ERROR
থেকে আলাদা রয়েছে। - বৈশ্বিক সেশন ক্রিয়াকলাপকে ওভাররাইড করার জন্য সেশন ক্রিয়াকলাপকে নিয়ন্ত্রণকারী প্রতি সেট করার অনুমতি দিন।
ConnectionResult
ক্রিয়াকলাপটি সংযোগের সময় কন্ট্রোলারের জন্য সংজ্ঞায়িতAcceptedResultBuilder.setSessionActivivty(PendingIntent)
যেতে পারে একবার সংযুক্ত হয়ে গেলে, সেশন ক্রিয়াকলাপটিMediaSession.setSessionActivity(ControllerInfo, PendingIntent)
দিয়ে আপডেট করা যেতে পারে। -
MediaLibrarySession.Callback
কলগুলির ত্রুটির প্রতিলিপি উন্নত করুন। ত্রুটির প্রকারটি বেছে নেওয়ার জন্য বা ডিফল্টরূপে ত্রুটিযুক্ত প্রতিরূপের বাইরে অপ্ট-ইনগ আউট করার জন্য ত্রুটি প্রতিরূপটি এখনMediaLibrarySession.Builder.setLibraryErrorReplicationMode()
ব্যবহার করে কনফিগার করা যেতে পারে।
-
- UI:
-
ExoPlayer
( #1144 ) এর সাথে সংযুক্ত থাকাকালীনPlayerView
চিত্র প্রদর্শন সমর্থন যুক্ত করুন। - গ্লোবাল ওভাররাইডস ( #1200 ) এর পরিবর্তে
PlayerView
উদাহরণ প্রতি বিভিন্ন অঙ্কনযোগ্যদের অনুমতি দেওয়ার জন্য এক্সএমএল বৈশিষ্ট্যের মাধ্যমেPlayerControlView
বিভিন্ন আইকনগুলির কাস্টমাইজেশন যুক্ত করুন। - এপিআই 34 ( #1237 ) এর একটি রচনা
AndroidView
ভিতরেSurfaceView
ব্যবহার করার সময় স্ট্রেচড/ক্রপযুক্ত ভিডিওর কারণ হিসাবে একটি প্ল্যাটফর্ম বাগের চারপাশে কাজ করুন।
-
- ডাউনলোড:
- নিশ্চিত করুন যে
DownloadHelper
অপ্রকাশিতRenderer
দৃষ্টান্তগুলি ফাঁস করে না, যার ফলে শেষ পর্যন্ত একটি অ্যাপ্লিকেশনIllegalStateException: Too many receivers, total of 1000, registered for pid
( #1224 ) এর জন্য নিবন্ধিত।
- নিশ্চিত করুন যে
- ক্রোনেট এক্সটেনশন:
-
CronetDataSource
-এSocketTimeoutException
ঠিক করুন। ক্রোনেটের কয়েকটি সংস্করণে, কলব্যাক দ্বারা সরবরাহিত অনুরোধটি সর্বদা এক নয়। এটি কলব্যাকটি সম্পূর্ণ না করে এবং সময় দেওয়ার জন্য অনুরোধ করে (https://issuetracker.google.com/328442628)।
-
- এইচএলএস এক্সটেনশন:
- ফিক্স বাগ যেখানে মুলতুবি থাকা ইএমএসজি নমুনাগুলি একটি বিচ্ছিন্নতার জন্য অপেক্ষা করছে
HlsSampleStreamWrapper
এ একটি ভুল অফসেট সহ একটিIndexOutOfBoundsException
বা একটিIllegalArgumentException
( #1002 ) সৃষ্টি করে। - বাগটি ঠিক করুন যেখানে অ-প্রাথমিক প্লেলিস্টগুলি এলএল-এইচএলএস স্ট্রিমগুলির জন্য পুনরায় লোড করতে থাকে ( #1240 )।
- বাগটি ফিক্স করুন যেখানে ইনিশিয়ালাইজেশন বিভাগগুলির সাথে এইচএলএসের জন্য সিএমসিডি সক্ষম করার ফলে
Source Error
এবংIllegalArgumentException
ঘটে। - লাইভ প্লেব্যাক ( #1240 ) চলাকালীন অ-প্রাথমিক প্লে প্লেলিস্টগুলি রিফ্রেশ করা হয় না যেখানে বাগটি ফিক্স করুন।
- এইচএলএস লাইভ স্ট্রিমগুলির জন্য সিএমসিডি সক্ষম করার যেখানে
ArrayIndexOutOfBoundsException
( #1395 ) এর কারণে সিএমসিডি সক্ষম করা বাগটি ঠিক করুন।
- ফিক্স বাগ যেখানে মুলতুবি থাকা ইএমএসজি নমুনাগুলি একটি বিচ্ছিন্নতার জন্য অপেক্ষা করছে
- ড্যাশ এক্সটেনশন:
- কাস্ট এক্সটেনশন:
- মিডিয়া 3 মিডিয়া আইটেমের ( #1255 ) শিল্পীর কাছে
MediaQueueItem
অ্যালবামের শিরোনাম রূপান্তরিত করে এমন বাগটি ঠিক করুন।
- মিডিয়া 3 মিডিয়া আইটেমের ( #1255 ) শিল্পীর কাছে
- পরীক্ষা উপযোগিতা:
-
onInit()
এবংFakeRenderer
onRelease()
প্রয়োগ করুন। -
TestPlayerRunHelper.runUntil()/playUntil()
পরিবর্তন করুন ননফ্যাটাল ত্রুটিগুলিতে ব্যর্থ হওয়ার পদ্ধতিগুলি (যেমন যারাAnalyticsListener.onVideoCodecError()
) তে রিপোর্ট করা হয়েছে। এই আচরণটি অক্ষম করতে নতুনTestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
-
- ডেমো অ্যাপ:
- সংক্ষিপ্ত ফর্ম ডেমো অ্যাপে
DefaultPreloadManager
ব্যবহার করুন। - কমান্ড লাইন ( #1266 ) থেকে
Intent
যুক্তি সহ পুনরাবৃত্তি মোড সেট করার অনুমতি দিন। - ডিভাইস দ্বারা সমর্থিত হলে
HttpEngineDataSource
হিসাবেHttpDataSource
হিসাবে ব্যবহার করুন।
- সংক্ষিপ্ত ফর্ম ডেমো অ্যাপে
- অপ্রচলিত চিহ্নগুলি সরান:
-
CronetDataSourceFactory
সরান। পরিবর্তেCronetDataSource.Factory
ব্যবহার করুন। - কিছু
DataSpec
কনস্ট্রাক্টর সরান। পরিবর্তেDataSpec.Builder
ব্যবহার করুন। -
DefaultHttpDataSource
,OkHttpDataSource
এবংCronetDataSource
থেকেsetContentTypePredicate(Predicate)
পদ্ধতি সরান। পরিবর্তে প্রতিটিXXXDataSource.Factory
এ সমতুল্য পদ্ধতি ব্যবহার করুন। -
OkHttpDataSource
কনস্ট্রাক্টর এবংOkHttpDataSourceFactory
সরান। পরিবর্তেOkHttpDataSource.Factory
ব্যবহার করুন। -
PlayerMessage.setHandler(Handler)
সরান। পরিবর্তেsetLooper(Looper)
ব্যবহার করুন। -
Timeline.Window.isLive
ফিল্ড সরান। পরিবর্তেisLive()
পদ্ধতিটি ব্যবহার করুন। -
DefaultHttpDataSource
কনস্ট্রাক্টরগুলি সরান। পরিবর্তেDefaultHttpDataSource.Factory
ব্যবহার করুন। -
DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS
সরান। পরিবর্তেDashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS
ব্যবহার করুন। -
MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean)
সরান। পরিবর্তেMediaCodecInfo.canReuseCodec(Format, Format)
ব্যবহার করুন। -
DrmSessionManager.DUMMY
এবংgetDummyDrmSessionManager()
পদ্ধতি সরান। পরিবর্তেDrmSessionManager.DRM_UNSUPPORTED
ব্যবহার করুন। -
AnalyticsListener.onAudioInputFormatChanged(EventTime, Format)
,AnalyticsListener.onVideoInputFormatChanged(EventTime, Format)
,AudioRendererEventListener.onAudioInputFormatChanged(Format)
,VideoRendererEventListener.onVideoInputFormatChanged(Format)
। পরিবর্তেDecoderReuseEvaluation
নেয় এমন ওভারলোডগুলি ব্যবহার করুন। -
RendererSupport.FormatSupport
intdef এবংFORMAT_HANDLED
,FORMAT_EXCEEDS_CAPABILITIES
,FORMAT_UNSUPPORTED_DRM
,FORMAT_UNSUPPORTED_SUBTYPE
,FORMAT_UNSUPPORTED_TYPE
কনস্ট্যান্টগুলি সরান। এর পরিবর্তেandroidx.media3.common.C
এ সমতুল্য INTDEF এবং ধ্রুবকগুলি ব্যবহার করুন (যেমনC.FORMAT_HANDLED
ফরম্যাট_হ্যান্ডল)। -
Bundleable
ইন্টারফেস সরান। এর মধ্যে রয়েছে সমস্তBundleable.Creator<Foo> CREATOR
ধ্রুবক ক্ষেত্রগুলি অপসারণ করা। কলারদের পরিবর্তে প্রতিটি প্রকারেরBundle toBundle()
এবংstatic Foo fromBundle(Bundle)
পদ্ধতিগুলি।
-
সংস্করণ 1.4.0-rc01
10 জুলাই, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-beta01
জুন 26, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-alpha02
জুন 07, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-alpha01
এপ্রিল 17, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.3.0
সংস্করণ 1.3.1
11 এপ্রিল, 2024
androidx.media3:media3-*:1.3.1
প্রকাশিত হয়েছে। সংস্করণ 1.3.1 এ এই কমিটস রয়েছে।
- সাধারণ গ্রন্থাগার:
- স্থানীয়করণ বা অন্যান্য বিকল্প লেবেলগুলিকে অনুমতি দেওয়ার জন্য
Format.labels
যুক্ত করুন।
- স্থানীয়করণ বা অন্যান্য বিকল্প লেবেলগুলিকে অনুমতি দেওয়ার জন্য
- এক্সো প্লেয়ার:
- ইস্যু ঠিক করুন যেখানে
PreloadMediaPeriod
আবার যখন প্রিললোড করা হয় তখন স্ট্রিমগুলি ধরে রাখতে পারে না। - ট্র্যাক পুনঃনির্ধারণে খেলার সময়কালে সঠিক সংশ্লিষ্ট
TrackSelectionResult
প্রয়োগ করুন। - মিডিয়া আইটেমগুলির মধ্যে স্থানান্তরিত হওয়ার সময় কেবল খেলার সময়কালের অগ্রগতির পরে প্রাথমিক-সক্ষম রেন্ডারারগুলি শুরু করুন ( #1017 )।
- প্রোগুয়ার্ড
-keepclasseswithmembers
বিধিDefaultVideoFrameProcessor.Factory.Builder.build()
( #1187 ) এর জন্য বিধি বিধিগুলিতে অনুপস্থিত রিটার্ন প্রকার যুক্ত করুন।
- ইস্যু ঠিক করুন যেখানে
- ট্রান্সফরমার:
- এপিআই 30 এর আগে নেতিবাচক উপস্থাপনা টাইমস্ট্যাম্পগুলি সমর্থন না করে
MediaMuxer
কারণে নিক্ষিপ্ত ব্যতিক্রমের জন্য ওয়ার্কআরাউন্ড যুক্ত করুন।
- এপিআই 30 এর আগে নেতিবাচক উপস্থাপনা টাইমস্ট্যাম্পগুলি সমর্থন না করে
- ট্র্যাক নির্বাচন:
-
DefaultTrackSelector
: কম বা আনসেট ফ্রেম রেটযুক্ত ব্যক্তিদের তুলনায় 'যুক্তিসঙ্গত' ফ্রেম রেট (> = 10 এফপিএস) সহ ভিডিও ট্র্যাকগুলি পছন্দ করুন। এটি নিশ্চিত করে যে প্লেয়ারটি মোশন ফটোগুলি থেকে প্রাপ্ত এমপি 4 এস -এ 'রিয়েল' ভিডিও ট্র্যাকটি নির্বাচন করে যাতে দুটি এইচইভিসি ট্র্যাক থাকতে পারে যেখানে একটির উচ্চতর রেজোলিউশন রয়েছে তবে খুব কম সংখ্যক ফ্রেম ( #1051 ) রয়েছে।
-
- নিষ্কাশনকারী:
- ওয়েভ ফাইলগুলি ( #1117 ) থেকে বিজোড় আকারের খণ্ডগুলি পড়ার সময় প্যাডিংটি এড়িয়ে যাওয়া হয়নি এমন সমস্যাটি ঠিক করুন।
- এমপি 3:
XING
এবংVBRI
মতো মেটাডেটা ফ্রেম থেকে পপুলেটFormat.averageBitrate
। - এমপিইজি-টিএস: একটি পরিবর্তন প্রত্যাবর্তন করুন যা লক্ষ্য করে যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে তা নিশ্চিত করার লক্ষ্যে। এটি কেবলমাত্র এইচএলএস স্ট্রিম ( #1150 ) এবং এইচ .262 এইচএলএস স্ট্রিম ( #1126 ) এর সাথে নতুন সমস্যার কারণে পরিবর্তনের কারণে ঘটে।
- অডিও:
- অডিও ট্র্যাক অফলোড মোডে আরম্ভ করতে ব্যর্থ হলে অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন।
- ভিডিও:
- গ্যালাক্সি ট্যাব এস 7 ফে, গুগল টিভির সাথে ক্রোমকাস্ট এবং লেনোভো এম 10 এফএইচডি প্লাসের জন্য কোনও ডিভাইস ইস্যুর জন্য ওয়ার্কআআআআআআআআআআআআআআআআআআআর
- ওয়ার্কআরাউন্ড যুক্ত করুন যা নিশ্চিত করে যে প্রথম ফ্রেমটি সর্বদা রেন্ডার করার সময় রেন্ডার করা হয় এমনকি যদি ডিভাইসটি এপিআই ( #1169 ) দ্বারা প্রয়োজনীয় হিসাবে এটি স্বয়ংক্রিয়ভাবে এটি না করে। ( #966 )।
- সমস্যাটি সমাধান করুন যেখানে এইচডিআর রঙিন তথ্য হ্যান্ডলিং কোডেকের দুর্ব্যবহারের কারণ ঘটায় এবং এসডিআর ভিডিও ট্র্যাকগুলির জন্য অভিযোজিত ফর্ম্যাট স্যুইচগুলি ( #1158 ) প্রতিরোধ করে।
- পাঠ্য:
- ওয়েবভিটিটি:
WebvttParser.parse
( #1177 ) থেকে মজাদার অতিরিক্তCuesWithTiming
দৃষ্টান্ত তৈরি করা থেকে সরাসরি ক্রমাগত সংকেতগুলি প্রতিরোধ করুন।
- ওয়েবভিটিটি:
- DRM:
- একটি
NoSuchMethodError
চারপাশে কাজ করুন যাMediaDrm
ফ্রেমওয়ার্ক দ্বারাResourceBusyException
বা কিছু অ্যান্ড্রয়েড 14 ডিভাইসে ( #1145 )NotProvisionedException
পরিবর্তে নিক্ষেপ করা যেতে পারে।
- একটি
- প্রভাব:
- রঙের জায়গাগুলি রূপান্তর করে এসডিআর টোন-ম্যাপিংয়ে উন্নত হয়েছে।
- অধিবেশন:
- UI:
- অডিও ট্র্যাক ভাষার নাম অন্তর্ভুক্ত করার জন্য ফ্যালব্যাক যদি
Locale
কোনও ডিসপ্লে নাম সনাক্ত করতে না পারে ( #988 )।
- অডিও ট্র্যাক ভাষার নাম অন্তর্ভুক্ত করার জন্য ফ্যালব্যাক যদি
- ড্যাশ এক্সটেনশন:
- ম্যানিফেস্ট থেকে সমস্ত
Label
উপাদানগুলিকেFormat.labels
( #1054 ) জনকে পপুলেট করুন।
- ম্যানিফেস্ট থেকে সমস্ত
- RTSP এক্সটেনশন:
- এসডিপি পার্সিং ( #1087 ) এ খালি সেশন তথ্য মানগুলি (আই-ট্যাগ) এড়িয়ে যান।
- ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
- ডিফল্টরূপে স্থানীয় নির্ভরতা হিসাবে এমআইডিআই এক্সটেনশনটি অক্ষম করুন কারণ এটি কনফিগার করার জন্য একটি অতিরিক্ত মাভেন রিপোজিটরি প্রয়োজন। স্থানীয় নির্ভরতা থেকে এই মডিউলটির প্রয়োজন এমন ব্যবহারকারীরা এটি পুনরায় সক্ষম করতে পারেন ।
সংস্করণ 1.3.0
6 মার্চ, 2024
androidx.media3:media3-*:1.3.0
প্রকাশিত হয়েছে। সংস্করণ 1.3.0 এ এই কমিটস রয়েছে।
- সাধারণ গ্রন্থাগার:
-
android.resource://package/[type/]name
কাঁচা রিসোর্স ইউআরআইগুলির জন্য সমর্থন প্রয়োগ করুন যেখানেpackage
বর্তমান অ্যাপ্লিকেশনটির প্যাকেজের চেয়ে আলাদা। এটি সর্বদা কাজ করার জন্য নথিভুক্ত করা হয়েছে, তবে এখন পর্যন্ত সঠিকভাবে প্রয়োগ করা হয়নি। - অ্যাপ্লিকেশন কোড দ্বারা সেট করা মাইম প্রকারগুলি স্বাভাবিক করুন বা মিডিয়া থেকে সম্পূর্ণ নিম্ন-কেস হতে পড়ুন।
-
AdPlaybackState
এককUri
পরিবর্তে সম্পূর্ণMediaItem
সাথে বিজ্ঞাপনগুলি সংজ্ঞায়িত করুন। -
minSdk
19 (অ্যান্ড্রয়েড কিটকাট) এ বাড়ান। এটি অন্যান্য সমস্ত অ্যান্ড্রয়েডএক্স লাইব্রেরির সাথে একত্রিত , এবং আমাদের অ্যান্ড্রয়েডএক্স নির্ভরতার সর্বশেষ সংস্করণগুলিতে আপগ্রেড করার জন্য আমাদের প্রয়োজন। -
MediaMetadata.Builder.populate(MediaMetadata)
এartworkUri
এবংartworkData
উভয়কেই জনপ্রিয় করুন যখন তাদের মধ্যে কমপক্ষে একটি নাল ( #964 ) হয়।
-
- এক্সো প্লেয়ার:
-
PreloadMediaSource
এবংPreloadMediaPeriod
যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে প্লেব্যাকের আগে একটি নির্দিষ্ট শুরুর অবস্থানে একটি সামগ্রী মিডিয়া উত্স প্রিলোড করতে দেয়।PreloadMediaSource
Timeline
পাওয়ার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার, প্রদত্ত শুরুর অবস্থানে পিরিয়ড প্রস্তুত এবং ক্যাশে, ট্র্যাকগুলি নির্বাচন করা এবং সময়ের জন্য মিডিয়া ডেটা লোড করার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার যত্ন নেয়। অ্যাপ্লিকেশনগুলিPreloadMediaSource.PreloadControl
প্রয়োগ করে প্রিলোড অগ্রগতি নিয়ন্ত্রণ করে এবং প্লেব্যাকের জন্য প্লেয়ারকে প্রিলোড উত্সটি সেট করে। -
ExoPlayer.setImageOutput
যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকেImageRenderer.ImageOutput
সেট করতে দেয়। -
DefaultRenderersFactory
এখন নালImageOutput
এবংImageDecoder.Factory.DEFAULT
সহ ডিফল্টরূপে প্লেয়ারকে একটিImageRenderer
সরবরাহ করে। -
Player.Listener.onPositionDiscontinuity
। - নিষ্কাশনের সময় সাবটাইটেলগুলি পার্স করার জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন। আপনি এটি
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
ব্যবহার করে এটি সক্ষম করতে পারেন। -
PreloadMediaSource
সহ অভিযোজিত মিডিয়া উত্সগুলিকে সমর্থন করুন। -
HttpEngineDataSource
,HttpDataSource
httpengine এপিআই ব্যবহার করে প্রয়োগ করুন। - সাবক্লাসিং
CompositeSequenceableLoader
প্রতিরোধ করুন। এই উপাদানটি পূর্বে এক্সটেনসিবল করা হয়েছিল তবে লাইব্রেরির মধ্যে কখনও সাবক্লাস করা হয়নি। ডেকরেটর প্যাটার্ন ব্যবহার করে একটি উদাহরণ মোড়ানো এবং একটি কাস্টমCompositeSequenceableLoaderFactory
প্রয়োগ করে কাস্টমাইজেশনগুলি করা যেতে পারে। - সমস্যাটি ঠিক করুন যেখানে একই সময়ে পুনরাবৃত্তি করার ফলে এই আইটেমটি থেকে মেটাডেটা সাফ হয়ে যায় ( #1007 )।
-
BundledChunkExtractor.Factory
এবংDefaultHlsExtractorFactory
setSubtitleParserFactory
এবংnull
নালকে অস্বীকার করার জন্যexperimentalSetSubtitleParserFactory
পদ্ধতিগুলির নামকরণ করুন। পার্সিং আচরণ নিয়ন্ত্রণের জন্য নতুনexperimentalParseSubtitlesDuringExtraction(boolean)
পদ্ধতিগুলি ব্যবহার করুন। -
SubtitleParser.Factory
কাস্টমাইজ করার জন্য সমর্থন যুক্ত করুন at এক্সট্রাকশন চলাকালীন ব্যবহৃত ফ্যাক্টরি। এটিMediaSource.Factory.setSubtitleParserFactory()
দিয়ে অর্জন করা যেতে পারে। -
MergingMediaSource
থেকে উত্পন্ন সমস্তFormat.id
ক্ষেত্রগুলিতে উত্স উপসর্গ যুক্ত করুন। এটি কোন উত্সটি একটিFormat
তৈরি করেছে তা সনাক্ত করতে সহায়তা করে ( #883 )। - কাস্টম কমন মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) কী নামগুলি কেবল হাইফেন ( #1028 ) এর জন্য এটি সংশোধন করে কী নামগুলি বৈধ করার জন্য ব্যবহৃত রেজেক্সটি ঠিক করুন।
- ডাবল-এনকোডিং সিএমসিডি ক্যোয়ারী প্যারামিটারগুলি ( #1075 ) বন্ধ করুন।
-
- ট্রান্সফরমার:
- এইচ .265/এইচইভিসি এসইএফ স্লো মোশন ভিডিওগুলি সমতল করার জন্য সমর্থন যুক্ত করুন।
- ট্রান্সমাক্সিংয়ের গতি বাড়ান, বিশেষত 'ভিডিও সরান' সম্পাদনাগুলির জন্য।
- আউটপুট ফাইলটি কোনও ভিডিও ফ্রেমে শুরু হয় তা নিশ্চিত করতে API যুক্ত করুন। এটি প্লেয়ার বাস্তবায়নের সাথে ট্রিমিং অপারেশনগুলির আউটপুটকে আরও সামঞ্জস্যপূর্ণ করে তুলতে পারে যা প্রথম ভিডিও ফ্রেমটি উপস্থাপনা টাইমস্ট্যাম্প ( #829 ) না হওয়া পর্যন্ত দেখায় না।
- একক সম্পদ এমপি 4 ট্রিম অপারেশন অনুকূলকরণের জন্য সমর্থন যুক্ত করুন।
- আউটপুট ফাইলে কোনও ভিডিও ফ্রেমের প্রথম টাইমস্ট্যাম্প রয়েছে তা নিশ্চিত করতে সহায়তা যুক্ত করুন। আইওএস ভিত্তিক প্লেয়ারগুলিতে কালো ফ্রেম দিয়ে শুরু হওয়া আউটপুট ফাইলগুলি ফিক্স করে ( #829 )।
- ট্র্যাক নির্বাচন:
- চিত্র ট্র্যাক নির্বাচন সক্ষম করতে
DefaultTrackSelector.selectImageTrack
যুক্ত করুন। -
TrackSelectionParameters.isPrioritizeImageOverVideoEnabled
যুক্ত করুন is ডিফল্ট মানটিfalse
যার অর্থ একটি ভিডিও ট্র্যাক নির্বাচন করা অগ্রাধিকার দেওয়া হয়।
- চিত্র ট্র্যাক নির্বাচন সক্ষম করতে
- নিষ্কাশনকারী:
-
ColorInfo.colorSpace
,ColorInfo.colorTransfer
এবংColorInfo.colorRange
মান ( #692 ) পুনরুদ্ধার করতে এমপি 4 এক্সট্র্যাক্টরে অতিরিক্ত এভি 1 সি পার্সিং যুক্ত করুন। - এমপি 3: একটি
Info
শিরোনাম (Xing
হেডারের সিবিআর সমতুল্য) সহ ফাইলগুলির জন্য ধ্রুবক বিট্রেট (সিবিআর) ব্যবহার করুন। পূর্বে আমরাInfo
শিরোনাম থেকে সিক টেবিলটি ব্যবহার করেছি, তবে এর ফলে আমরা এটি উপেক্ষা করে এবং ফাইলটি সিবিআর বলে ধরে নিই তার চেয়ে কম সুনির্দিষ্ট সন্ধান করতে পারে। - এমপিইজি 2-টিএস: ডিটিএস, ডিটিএস-এলবিআর এবং ডিটিএস যুক্ত করুন: এক্স প্রোফাইল 2 সমর্থন ( #275 )।
- টিএস বর্ণনাকারীদের কাছ থেকে অডিও প্রকারগুলি বের করুন এবং তাদের পতাকাগুলিতে ম্যাপ করুন, ব্যবহারকারীদের আরও ভাল-অবহিত অডিও ট্র্যাক নির্বাচনগুলি ( #973 ) করার অনুমতি দেয়।
-
- অডিও:
- ভিডিও:
-
MediaCodecVideoRenderer
কনস্ট্রাক্টর পরিবর্তন করুন যা একটিVideoFrameProcessor.Factory
নেয় Fact ফ্যাক্টরি আর্গুমেন্ট গ্রহণ করে এবং এটি একটি কনস্ট্রাক্টর দিয়ে প্রতিস্থাপন করুন যা একটিVideoSinkProvider
যুক্তি নেয়।MediaCodecVideoRenderer
যা একটি কাস্টমVideoFrameProcessor.Factory
ইনজেকশন করতেVideoFrameProcessor.Factory
CompositingVideoSinkProvider
-
- পাঠ্য:
- সমাধানের জন্য বিটম্যাপ সংকেতগুলির সিরিয়ালাইজেশন ঠিক করুন
Tried to marshall a Parcel that contained Binder objects
DefaultExtractorsFactory.setTextTrackTranscodingEnabled
( #836 ) ব্যবহার করার সময় বাইন্ডার অবজেক্টের ত্রুটি রয়েছে। - সিইএ -708:
rowLock
মান উপেক্ষা করুন। সিইএ -708-ই এস -2023 স্পেসে বলা হয়েছে যে স্ট্রিমের উপস্থিত মানগুলি নির্বিশেষেrowLock
এবংcolumnLock
উভয়কেই সত্য বলে ধরে নেওয়া উচিত (columnLock
সমর্থন প্রয়োগ করা হয়নি, সুতরাং এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
- সমাধানের জন্য বিটম্যাপ সংকেতগুলির সিরিয়ালাইজেশন ঠিক করুন
- ছবি:
- ড্যাশ থাম্বনেইলগুলির জন্য সমর্থন যুক্ত করুন। গ্রিড চিত্রগুলি ক্রপযুক্ত এবং পৃথক থাম্বনেইলগুলি তাদের উপস্থাপনার সময়গুলির কাছাকাছি
ImageOutput
সরবরাহ করা হয়।
- ড্যাশ থাম্বনেইলগুলির জন্য সমর্থন যুক্ত করুন। গ্রিড চিত্রগুলি ক্রপযুক্ত এবং পৃথক থাম্বনেইলগুলি তাদের উপস্থাপনার সময়গুলির কাছাকাছি
- DRM:
- ডিফল্টরূপে অবিলম্বে ডিআরএম সামগ্রীতে 'ক্লিয়ার লিড' আনক্রিপ্ট করা নমুনাগুলি খেলুন, এমনকি পরবর্তী এনক্রিপ্ট করা নমুনাগুলির কীগুলি এখনও প্রস্তুত না হলেও। প্লেব্যাকের অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না থাকলে এটি মিড-প্লেব্যাক স্টলগুলির দিকে নিয়ে যেতে পারে (তবে পূর্বে প্লেব্যাক এই মুহুর্তে মোটেও শুরু হত না)। এই আচরণটি
MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey
ক্লারকন্টেন্টওয়াইথআউটকি বাDefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys
উইথআউটকেইস দিয়ে অক্ষম করা যেতে পারে।
- ডিফল্টরূপে অবিলম্বে ডিআরএম সামগ্রীতে 'ক্লিয়ার লিড' আনক্রিপ্ট করা নমুনাগুলি খেলুন, এমনকি পরবর্তী এনক্রিপ্ট করা নমুনাগুলির কীগুলি এখনও প্রস্তুত না হলেও। প্লেব্যাকের অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না থাকলে এটি মিড-প্লেব্যাক স্টলগুলির দিকে নিয়ে যেতে পারে (তবে পূর্বে প্লেব্যাক এই মুহুর্তে মোটেও শুরু হত না)। এই আচরণটি
- আইএমএ এক্সটেনশন:
- Fix issue where DASH and HLS ads without the appropriate file extension can't be played.
- অধিবেশন:
- Disable double-click detection for TV apps ( #962 ).
- Fix issue where
MediaItem.RequestMetadata
with just non-null extras is not transmitted between media controllers and sessions. - Add constructor to
MediaLibrarySession.Builder
that only takes aContext
instead of aMediaLibraryService
.
- HLS Extension:
- Reduce
HlsMediaPeriod
to package-private visibility. This type shouldn't be directly depended on from outside the HLS package. - Resolve seeks to beginning of a segment more efficiently ( #1031 ).
- Reduce
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- MIDI decoder: Ignore SysEx event messages ( #710 ).
- পরীক্ষা উপযোগিতা:
- Don't pause playback in
TestPlayerRunHelper.playUntilPosition
. The test keeps the playback in a playing state, but suspends progress until the test is able to add assertions and further actions.
- Don't pause playback in
- ডেমো অ্যাপ:
- Add a shortform demo module to demo the usage of
PreloadMediaSource
with the short-form content use case.
- Add a shortform demo module to demo the usage of
Version 1.3.0-rc01
22 ফেব্রুয়ারি, 2024
Use the 1.3.0 stable version .
সংস্করণ 1.3.0-beta01
7 ফেব্রুয়ারি, 2024
Use the 1.3.0 stable version .
সংস্করণ 1.3.0-alpha01
15 জানুয়ারী, 2024
Use the 1.3.0 stable version .
সংস্করণ 1.2.0
সংস্করণ 1.2.1
জানুয়ারী 9, 2024
- এক্সো প্লেয়ার:
- Fix issue where manual seeks outside of the
LiveConfiguration.min/maxOffset
range keep adjusting the offset back tomin/maxOffset
. - Fix issue that OPUS and VORBIS channel layouts are wrong for 3, 5, 6, 7 and 8 channels ( #8396 ).
- Fix issue where track selections after seek to zero in a live stream incorrectly let the stream start at its default position ( #9347 ).
- Fix the issue where new instances of
CmcdData.Factory
were receiving negative values forbufferedDurationUs
from chunk sources, resulting in anIllegalArgumentException
( #888 ).
- Fix issue where manual seeks outside of the
- ট্রান্সফরমার:
- Work around an issue where the encoder would throw at configuration time due to setting a high operating rate.
- নিষ্কাশনকারী:
- Mark secondary (unplayable) HEVC tracks in JPEG motion photos as
ROLE_FLAG_ALTERNATE
to prevent them being automatically selected for playback because of their higher resolution. - Fix wrong keyframe detection for TS H264 streams ( #864 ).
- Fix duration estimation of TS streams that are longer than 47721 seconds ( #855 ).
- Mark secondary (unplayable) HEVC tracks in JPEG motion photos as
- অডিও:
- Fix handling of EOS for
SilenceSkippingAudioProcessor
when called multiple times ( #712 ).
- Fix handling of EOS for
- ভিডিও:
- Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps AVC streams to be marked as unsupported ( #693 ).
- মেটাডেটা:
- Fix bug where
MediaMetadata
was only populated from Vorbis comments with upper-case keys ( #876 ). - Catch
OutOfMemoryError
when parsing very large ID3 frames, meaning playback can continue without the tag info instead of playback failing completely.
- Fix bug where
- DRM:
- Extend workaround for spurious ClearKey
https://default.url
license URL to API 33+ (previously the workaround only applied on API 33 exactly) ( #837 ). - Fix
ERROR_DRM_SESSION_NOT_OPENED
when switching from encrypted to clear content without a surface attached to the player. The error was due to incorrectly using a secure decoder to play the clear content.
- Extend workaround for spurious ClearKey
- অধিবেশন:
- Put the custom keys and values in
MediaMetadataCompat
toMediaMetadata.extras
andMediaMetadata.extras
toMediaMetadataCompat
( #756 , #802 ). - Fix broadcasting
notifyChildrenChanged
for legacy controllers ( #644 ). - Fix a bug where setting a negative time for a disabled
setWhen
timer of the notification caused a crash on some devices ( #903 ). - Fix
IllegalStateException
when the media notification controller hasn't completed connecting when the first notification update is requested ( #917 ).
- Put the custom keys and values in
- UI:
- ড্যাশ এক্সটেনশন:
- Parse "f800" as channel count of 5 for Dolby in DASH manifest ( #688 ).
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- Cast Extension:
- Sanitize creation of a
Timeline
to not crash the app when loading media fails on the cast device ( #708 ).
- Sanitize creation of a
সংস্করণ 1.2.0
15 নভেম্বর, 2023
- সাধারণ গ্রন্থাগার:
- Add a
@Nullable Throwable
parameter to the methods in theLog.Logger
interface. Themessage
parameter to these methods no longer contains any information about theThrowable
passed to theLog.{d,i,w,e}()
methods, so implementations will need to manually append this information if desired (possibly usingLogger.appendThrowableString(String, Throwable)
). - Fix Kotlin compatibility issue where nullable generic type parameters and nullable array element types are not detected as nullable. Examples are
TrackSelectorResult
andSimpleDecoder
method parameters ( #6792 ). - Change default UI and notification behavior in
Util.shouldShowPlayButton
to show a "play" button while playback is temporarily suppressed (eg due to transient audio focus loss). The legacy behavior can be maintained by usingPlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
orMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
( #11213 ). - Upgrade
androidx.annotation:annotation-experimental
to1.3.1
to fix https://issuetracker.google.com/251172715. - Move
ExoPlayer.setAudioAttributes
to thePlayer
interface.
- Add a
- এক্সো প্লেয়ার:
- Fix seeking issues in AC4 streams caused by not identifying decode-only samples correctly ( #11000 ).
- Add suppression of playback on unsuitable audio output devices (eg the built-in speaker on Wear OS devices) when this feature is enabled via
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
. The playback suppression reason will be updated asPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
if playback is attempted when no suitable audio outputs are available, or if all suitable outputs are disconnected during playback. The suppression reason will be removed when a suitable output is connected. - Add
MediaSource.canUpdateMediaItem
andMediaSource.updateMediaItem
to acceptMediaItem
updates after creation viaPlayer.replaceMediaItem(s)
. - Allow
MediaItem
updates for allMediaSource
classes provided by the library viaPlayer.replaceMediaItem(s)
( #33 , #9978 ). - Rename
MimeTypes.TEXT_EXOPLAYER_CUES
toMimeTypes.APPLICATION_MEDIA3_CUES
. - Add
PngExtractor
that sends and reads a whole PNG file into theTrackOutput
as one sample. - Enhance
SequenceableLoader.continueLoading(long)
method in theSequenceableLoader
interface toSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
.LoadingInfo
contains additional parameters, includingplaybackSpeed
andlastRebufferRealtimeMs
in addition to the existingplaybackPositionUs
. - Enhance
ChunkSource.getNextChunk(long, long, List, ChunkHolder)
method in theChunkSource
interface toChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
. - Add additional fields to Common Media Client Data (CMCD) logging: buffer starvation (
bs
), deadline (dl
), playback rate (pr
) and startup (su
) ( #8699 ). - Add luma and chroma bitdepth to
ColorInfo
( #491 ). - Add additional fields to Common Media Client Data (CMCD) logging: next object request (
nor
) and next range request (nrr
) ( #8699 ). - Add functionality to transmit Common Media Client Data (CMCD) data using query parameters ( #553 ).
- Fix
ConcurrentModificationException
inExperimentalBandwidthMeter
( #612 ). - Add
MediaPeriodId
parameter toCompositeMediaSource.getMediaTimeForChildMediaTime
. - Support
ClippingMediaSource
(and other sources with period/window time offsets) inConcatenatingMediaSource2
( #11226 ). - Change
BaseRenderer.onStreamChanged()
to also receive aMediaPeriodId
argument.
- ট্রান্সফরমার:
- Parse EXIF rotation data for image inputs.
- Remove
TransformationRequest.HdrMode
annotation type and its associated constants. UseComposition.HdrMode
and its associated constants instead. - Simplify the
OverlaySettings
to fix rotation issues. - Changed
frameRate
anddurationUs
parameters ofSampleConsumer.queueInputBitmap
toTimestampIterator
.
- Track Selection:
- Add
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
to explicitly allow or disallow non-seamless adaptation. The default stays at its current behavior oftrue
.
- Add
- নিষ্কাশনকারী:
- MPEG-TS: Ensure the last frame is rendered by passing the last access unit of a stream to the sample queue ( #7909 ).
- Fix typo when determining
rotationDegrees
. ChangedprojectionPosePitch
toprojectionPoseRoll
( #461 ). - Remove the assumption that
Extractor
instances can be directly inspected withinstanceof
. If you want runtime access to the implementation details of anExtractor
you must first callExtractor.getUnderlyingInstance
. - Add
BmpExtractor
. - Add
WebpExtractor
. - Add
HeifExtractor
. - Add QuickTime classic support to
Mp4Extractor
.
- অডিও:
- Add support for 24/32-bit big-endian PCM in MP4 and Matroska, and parse PCM encoding for
lpcm
in MP4. - Add support for extracting Vorbis audio in MP4.
- Add
AudioSink.getFormatOffloadSupport(Format)
that retrieves level of offload support the sink can provide for the format through aDefaultAudioOffloadSupportProvider
. It returns the newAudioOffloadSupport
that containsisFormatSupported
,isGaplessSupported
, andisSpeedChangeSupported
. - Add
AudioSink.setOffloadMode()
through which the offload configuration on the audio sink is configured. Default isAudioSink.OFFLOAD_MODE_DISABLED
. - Offload can be enabled through
setAudioOffloadPreference
inTrackSelectionParameters
. If the set preference is to enable, the device supports offload for the format, and the track selection is a single audio track, then audio offload will be enabled. - If
audioOffloadModePreference
is set toAUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
, then theDefaultTrackSelector
will only select an audio track and only if that track's format is supported in offload. If no audio track is supported in offload, then no track will be selected. - Disabling gapless support for offload when pre-API level 33 due to playback position issue after track transition.
- Remove parameter
enableOffload
fromDefaultRenderersFactory.buildAudioSink
method signature. - Remove method
DefaultAudioSink.Builder.setOffloadMode
. - Remove intdef value
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
. - Add support for Opus gapless metadata during offload playback.
- Allow renderer recovery by disabling offload if failed at first write ( #627 ).
- Enable Offload Scheduling by default for audio-only offloaded playback.
- Delete
ExoPlayer.experimentalSetOffloadSchedulingEnabled
andAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
. - Renamed
onExperimentalSleepingForOffloadChanged
asonSleepingForOffloadChanged
andonExperimentalOffloadedPlayback
asonOffloadedPlayback
. - Move audio offload mode related
TrackSelectionParameters
interfaces and definitions to an innerAudioOffloadPreferences
class. - Add
onAudioTrackInitialized
andonAudioTrackReleased
callbacks toAnalyticsListener
,AudioRendererEventListener
andAudioSink.Listener
. - Fix DTS Express audio buffer underflow issue ( #650 ).
- Fix bug where the capabilities check for E-AC3-JOC throws an
IllegalArgumentException
( #677 ).
- Add support for 24/32-bit big-endian PCM in MP4 and Matroska, and parse PCM encoding for
- ভিডিও:
- Allow
MediaCodecVideoRenderer
to use a customVideoFrameProcessor.Factory
. - Fix bug where the first frame couldn't be rendered if the audio stream starts with negative timestamps ( #291 ).
- Allow
- পাঠ্য:
- Remove
ExoplayerCuesDecoder
. Text tracks withsampleMimeType = application/x-media3-cues
are now directly handled byTextRenderer
without needing aSubtitleDecoder
instance.
- Remove
- মেটাডেটা:
-
MetadataDecoder.decode
will no longer be called for "decode-only" samples as the implementation must return null anyway.
-
- প্রভাব:
- Add
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
queuing bitmap input by timestamp. - Change
VideoFrameProcessor.registerInputStream()
to be non-blocking. Apps must implementVideoFrameProcessor.Listener#onInputStreamRegistered()
. - Changed
frameRate
anddurationUs
parameters ofVideoFrameProcessor.queueInputBitmap
toTimestampIterator
.
- Add
- আইএমএ এক্সটেনশন:
- Fix bug where a multi-period DASH live stream that is not the first item in a playlist can throw an exception ( #571 ).
- Release StreamManager before calling
AdsLoader.destroy()
- Bump IMA SDK version to 3.31.0.
- অধিবেশন:
- Set the notifications foreground service behavior to
FOREGROUND_SERVICE_IMMEDIATE
inDefaultMediaNotificationProvider
( #167 ). - Use only
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
above API 31 to avoid problems with deprecated API on Samsung devices ( #167 ). - Use the media notification controller as proxy to set available commands and custom layout used to populate the notification and the platform session.
- Convert media button events that are received by
MediaSessionService.onStartCommand()
within Media3 instead of routing them to the platform session and back to Media3. With this, the caller controller is always the media notification controller and apps can easily recognize calls coming from the notification in the same way on all supported API levels. - Fix bug where
MediaController.getCurrentPosition()
is not advancing when connected to a legacyMediaSessionCompat
. - Add
MediaLibrarySession.getSubscribedControllers(mediaId)
for convenience. - Override
MediaLibrarySession.Callback.onSubscribe()
to assert the availability of the parent ID for which the controller subscribes. If successful, the subscription is accepted andnotifyChildrenChanged()
is called immediately to inform the browser ( #561 ). - Add session demo module for Automotive OS and enable session demo for Android Auto.
- Do not set the queue of the framework session when
COMMAND_GET_TIMELINE
is not available for the media notification controller. With Android Auto as the client controller reading from the framework session, this has the effect that thequeue
button in the UI of Android Auto is not displayed ( #339 ). - Use
DataSourceBitmapLoader
by default instead ofSimpleBitmapLoader
( #271 , #327 ). - Add
MediaSession.Callback.onMediaButtonEvent(Intent)
that allows apps to override the default media button event handling.
- Set the notifications foreground service behavior to
- UI:
- Add a
Player.Listener
implementation for Wear OS devices that handles playback suppression due toPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
by launching a system dialog to allow a user to connect a suitable audio output (eg bluetooth headphones). The listener will auto-resume playback if a suitable device is connected within a configurable timeout (default is 5 minutes).
- Add a
- ডাউনলোড:
- Declare "data sync" foreground service type for
DownloadService
for Android 14 compatibility. When using this service, the app also needs to adddataSync
asforegroundServiceType
in the manifest and add theFOREGROUND_SERVICE_DATA_SYNC
permission ( #11239 ).
- Declare "data sync" foreground service type for
- HLS Extension:
- Refresh the HLS live playlist with an interval calculated from the last load start time rather than the last load completed time ( #663 ).
- ড্যাশ এক্সটেনশন:
- Allow multiple of the same DASH identifier in segment template URL.
- Add experimental support for parsing subtitles during extraction. This has better support for merging overlapping subtitles, including resolving flickering when transitioning between subtitle segments. You can enable this using
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
( #288 ).
- RTSP এক্সটেনশন:
- Fix a race condition that could lead to
IndexOutOfBoundsException
when falling back to TCP, or playback hanging in some situations. - Check state in RTSP setup when returning loading state of
RtspMediaPeriod
( #577 ). - Ignore custom Rtsp request methods in Options response public header ( #613 ).
- Use RTSP Setup Response timeout value in time interval of sending keep-alive RTSP Options requests ( #662 ).
- Fix a race condition that could lead to
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- Release the MIDI decoder module, which provides support for playback of standard MIDI files using the Jsyn library to synthesize audio.
- Add
DecoderOutputBuffer.shouldBeSkipped
to directly mark output buffers that don't need to be presented. This is preferred overC.BUFFER_FLAG_DECODE_ONLY
that will be deprecated. - Add
Decoder.setOutputStartTimeUs
andSimpleDecoder.isAtLeastOutputStartTimeUs
to allow decoders to drop decode-only samples before the start time. This should be preferred toBuffer.isDecodeOnly
that will be deprecated. - Fix bug publishing MIDI decoder artifact to Maven repository. The artifact is renamed to
media3-exoplayer-midi
( #734 ).
- লিনব্যাক এক্সটেনশন:
- Fix bug where disabling a surface can cause an
ArithmeticException
in Leanback code ( #617 ).
- Fix bug where disabling a surface can cause an
- পরীক্ষা উপযোগিতা:
- Make
TestExoPlayerBuilder
andFakeClock
compatible with Espresso UI tests and Compose UI tests. This fixes a bug where playback advances non-deterministically during Espresso or Compose view interactions.
- Make
- অপ্রচলিত চিহ্নগুলি সরান:
- Remove
TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean)
andTransformationRequest.Builder.experimental_setEnableHdrEditing(boolean)
. UseComposition.Builder.setHdrMode(int)
and pass theComposition
toTransformer.start(Composition, String)
instead. - Remove deprecated
DownloadNotificationHelper.buildProgressNotification
method, use a non deprecated method that takes anotMetRequirements
parameter instead.
- Remove
সংস্করণ 1.2.0-rc01
November 1, 2023
Use the 1.2.0 stable version .
Version 1.2.0-beta01
অক্টোবর 19, 2023
Use the 1.2.0 stable version .
সংস্করণ 1.2.0-alpha02
সেপ্টেম্বর 29, 2023
Use the 1.2.0 stable version .
সংস্করণ 1.2.0-alpha01
আগস্ট 17, 2023
Use the 1.2.0 stable version .
সংস্করণ 1.1.0
সংস্করণ 1.1.1
16 আগস্ট, 2023
- সাধারণ গ্রন্থাগার:
- সমস্ত মডিউল ( #499 ) থেকে দুর্ঘটনাক্রমে যোগ করা
multidex
নির্ভরতা সরান।
- সমস্ত মডিউল ( #499 ) থেকে দুর্ঘটনাক্রমে যোগ করা
- এক্সো প্লেয়ার:
-
PlaybackStatsListener
এ সমস্যাটি ঠিক করুন যেখানে প্লেলিস্ট সাফ করার পরে ভুয়াPlaybackStats
তৈরি করা হয়। - কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিং-এ অতিরিক্ত ক্ষেত্র যুক্ত করুন: স্ট্রিমিং ফরম্যাট (sf), স্ট্রিম টাইপ (st), সংস্করণ (v), শীর্ষ বিরেট (tb), অবজেক্টের সময়কাল (d), মাপা থ্রুপুট (mtp) এবং অবজেক্ট টাইপ (ot) ( #8699 )।
-
- অডিও:
- একটি বাগ ঠিক করুন যেখানে
Player.getState()
খুব ছোট ফাইল ( #538 ) খেলার সময়STATE_ENDED
এ রূপান্তরিত হয়নি।
- একটি বাগ ঠিক করুন যেখানে
- অডিও অফলোড:
- RFC 7845 অনুযায়ী অফলোড করা Opus প্লেব্যাকের জন্য Ogg ID হেডার এবং কমেন্ট হেডার পৃষ্ঠাগুলিকে বিটস্ট্রিমে প্রিপেন্ড করুন।
- ভিডিও:
- H.265/HEVC: SPS স্বল্প এবং দীর্ঘমেয়াদী রেফারেন্স ছবির তথ্য পার্সিং ঠিক করুন।
- পাঠ্য:
- CEA-608: Change cue truncation logic to only consider visible text. পূর্বে ইন্ডেন্ট এবং ট্যাব অফসেট অন্তর্ভুক্ত করা হয়েছিল যখন কিউ দৈর্ঘ্য 32 টি অক্ষরে সীমাবদ্ধ করা হয়েছিল (যা প্রযুক্তিগতভাবে বিশেষভাবে সঠিক ছিল) ( #11019 )।
- আইএমএ এক্সটেনশন:
- IMA SDK সংস্করণকে 3.30.3 এ বাম্প করুন৷
- অধিবেশন:
- Add custom layout to the state of the controller and provide a getter to access it. When the custom layout changes,
MediaController.Listener.onCustomLayoutChanged
is called. Apps that want to send different custom layouts to different Media3 controller can do this inMediaSession.Callback.onConnect
by using anAcceptedResultBuilder
to make sure the custom layout is available to the controller when connection completes. - Fix cases where
MediaLibraryServiceLegacyStub
sent an error to aResult
that didn't support this which produced anUnsupportedOperationException
( #78 ). - Fix the way
PlayerWrapper
creates aVolumeProviderCompat
by determiningvolumeControlType
through both legacy commands (COMMAND_ADJUST_DEVICE_VOLUME
andCOMMAND_SET_DEVICE_VOLUME
) and new commands (COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
andCOMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
) ( #554 ).
- Add custom layout to the state of the controller and provide a getter to access it. When the custom layout changes,
সংস্করণ 1.1.0
5 জুলাই, 2023
- সাধারণ গ্রন্থাগার:
- অনুপযুক্ত অডিও রুটের জন্য দমন কারণ যোগ করুন এবং খুব দীর্ঘ চাপা কারণ পরিবর্তন করার জন্য প্রস্তুত হলে প্লে করুন। ( #15 )।
- প্লেয়ারে কমান্ড যোগ করুন:
-
COMMAND_GET_METADATA
-
COMMAND_SET_PLAYLIST_METADATA
-
COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
-
COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
-
- প্লেয়ারে ওভারলোড করা পদ্ধতি যোগ করুন যা ব্যবহারকারীদের ভলিউম ফ্ল্যাগ নির্দিষ্ট করতে দেয়:
-
void setDeviceVolume(int, int)
-
void increaseDeviceVolume(int)
-
void decreaseDeviceVolume(int)
-
void setDeviceMuted(boolean, int)
-
-
DeviceInfo
এর জন্যBuilder
যোগ করুন এবং বিদ্যমান কনস্ট্রাক্টরকে অবমূল্যায়ন করুন। - দূরবর্তী প্লেব্যাকের জন্য রাউটিং কন্ট্রোলার আইডি নির্দিষ্ট করতে
DeviceInfo.routingControllerId
যোগ করুন। -
Player.replaceMediaItem(s)
যোগ করুন একটি শর্টকাট হিসাবে একই অবস্থানে আইটেম যোগ এবং অপসারণ ( #8046 )।
- এক্সো প্লেয়ার:
- ExoPlayer-কে শুধুমাত্র ডিভাইসের ভলিউম পদ্ধতির নিয়ন্ত্রণ করার অনুমতি দিন যদি স্পষ্টভাবে অপ্ট ইন করা থাকে। এতে অ্যাক্সেস পেতে
ExoPlayer.Builder.setDeviceVolumeControlEnabled
ব্যবহার করুন:-
getDeviceVolume()
-
isDeviceMuted()
-
setDeviceVolume(int)
এবংsetDeviceVolume(int, int)
-
increaseDeviceVolume(int)
এবংincreaseDeviceVolume(int, int)
-
decreaseDeviceVolume(int)
এবংdecreaseDeviceVolume(int, int)
-
- Add
FilteringMediaSource
that allows to filter available track types from aMediaSource
. - অভিযোজিত স্ট্রিমিং ফরম্যাট DASH, HLS এবং স্মুথস্ট্রিমিং-এর বহির্গামী অনুরোধগুলিতে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) অন্তর্ভুক্ত করার জন্য সমর্থন যোগ করুন। নিম্নলিখিত ক্ষেত্রগুলি,
br
,bl
,cid
,rtp
, এবংsid
, অন্তর্ভুক্ত করা হয়েছে ( #8699 )। API গঠন এবং API পদ্ধতি:- CMCD logging is disabled by default, use
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
to enable it. - সমস্ত কীগুলি ডিফল্টরূপে সক্রিয় থাকে, কোন কীগুলি লগ করা হয়েছে তা ফিল্টার করতে
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
ওভাররাইড করুন৷ - কাস্টম কী লগিং সক্ষম করতে
CmcdConfiguration.RequestConfig.getCustomData()
ওভাররাইড করুন।
- CMCD logging is disabled by default, use
- একটি কাস্টম
*.exolist.json
ফাইল ( #439 ) দিয়ে ডেমো অ্যাপ শুরু করা সহজ করতে প্রধান ডেমোর প্রকাশে অতিরিক্ত অ্যাকশন যোগ করুন। - ভিডিও প্লেব্যাকের সময়
Effect
ব্যবহার করার জন্যExoPlayer.setVideoEffects()
যোগ করুন। - একটি
int
পরিবর্তেsourceId
long
হিসাবে সংরক্ষণ করতেSampleQueue
আপডেট করুন। এটি পাবলিক পদ্ধতিSampleQueue.sourceId
এবংSampleQueue.peekSourceId
এর স্বাক্ষর পরিবর্তন করে। -
LoadControl
পদ্ধতিতে প্যারামিটার যোগ করুনshouldStartPlayback
এবংonTracksSelected
করা উচিত যা প্রাসঙ্গিকMediaPeriod
সাথে এই পদ্ধতিগুলিকে সংযুক্ত করার অনুমতি দেয়। - একটি টাইমলাইন প্যারামিটার যোগ করে
ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>)
এর স্বাক্ষর পরিবর্তন করুন যা মানচিত্রে কী হিসাবে ব্যবহৃত UID-এর সাথে পিরিয়ড ধারণ করে। মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলির সাথে একযোগে সমস্যা এড়াতে এটি প্রয়োজন। -
EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs)
এবংBaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs)
বাতিল করুন।mediaTimeOffsetUs
ছাড়া পদ্ধতির বৈকল্পিক পরিবর্তে কল করা যেতে পারে। মনে রাখবেন যে অবহেলিত ভেরিয়েন্টের জন্যও, অফসেটটি আর প্রেরক দ্বারা প্রেরিতMediaLoadData
অবজেক্টেরstartTimeUs
এবংendTimeUs
এ যোগ করা হয় না। -
ExoTrackSelection.blacklist
নাম পরিবর্তন করেexcludeTrack
এবংisTrackExcluded
এisBlacklisted
। - খালি প্লেলিস্টে কল করা হলে
ExoPlayer.setMediaItem(s)
এবংaddMediaItem(s)
এর মধ্যে অসামঞ্জস্যপূর্ণ আচরণ ঠিক করুন৷
- ExoPlayer-কে শুধুমাত্র ডিভাইসের ভলিউম পদ্ধতির নিয়ন্ত্রণ করার অনুমতি দিন যদি স্পষ্টভাবে অপ্ট ইন করা থাকে। এতে অ্যাক্সেস পেতে
- ট্রান্সফরমার:
-
Transformer.Builder.setMediaSourceFactory(MediaSource.Factory)
সরান। পরিবর্তেExoPlayerAssetLoader.Factory(MediaSource.Factory)
এবংTransformer.Builder.setAssetLoaderFactory(AssetLoader.Factory)
ব্যবহার করুন। -
Transformer.startTransformation(MediaItem, ParcelFileDescriptor)
সরান। - Fix a bug where transformation could get stuck (leading to muxer timeout) if the end of the video stream was signaled at the moment when an input frame was pending processing.
- সমর্থন প্রসারিত করতে
findDecoder/EncoderForFormat
ইউটিলিটিগুলি ব্যবহার করার পরিবর্তেMediaCodecList
এর মাধ্যমে কোডেক অনুসন্ধান করুন। -
DefaultEncoderFactory
বি-ফ্রেম কনফিগারেশন সরান কারণ এটি কিছু ডিভাইসে কাজ করে না।
-
- ট্র্যাক নির্বাচন:
-
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange
যোগ করুন যা ডিফল্টরূপে অক্ষম থাকে। সক্রিয় করা হলে, রেন্ডারারের ক্ষমতা পরিবর্তিত হলেDefaultTrackSelector
একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে৷
-
- নিষ্কাশনকারী:
- অডিও:
- টানেলিং সক্ষম হলে এবং
AudioProcessors
সক্রিয় থাকাকালীন কিছু প্লেব্যাক ব্যর্থ হলে বাগ ঠিক করুন, যেমন ফাঁকহীন ছাঁটাইয়ের জন্য ( #10847 )। - সরাসরি প্লেব্যাকে (অফলোড) Ogg প্যাকেটে ওপাস ফ্রেমগুলিকে এনক্যাপসুলেট করুন।
- অফলোড শিডিউলিংয়ের সাথে ঘুমের সময় বর্তমান অবস্থান এক্সট্রাপোলেট করুন।
- খেলোয়াড়ের জীবনচক্রের শেষে সংস্থানগুলি প্রকাশ করার জন্য
Renderer.release()
এবংAudioSink.release()
যোগ করুন। -
DefaultAudioSink
এ অডিও ক্ষমতার পরিবর্তনগুলি শুনুন।DefaultAudioSink
এর কনস্ট্রাক্টরে একটি প্রয়োজনীয় প্যারামিটারcontext
যোগ করুন, যার সাহায্যেDefaultAudioSink
AudioCapabilitiesReceiver
এ শ্রোতা হিসাবে নিবন্ধন করবে এবং ক্ষমতা পরিবর্তনের সাথে জানানো হলে তারaudioCapabilities
বৈশিষ্ট্য আপডেট করবে। -
AudioSink.Listener
ইন্টারফেস এবংRendererCapabilities.Listener
যাonRendererCapabilitiesChanged
ইভেন্টগুলিতে ট্রিগার করে একটি নতুন ইন্টারফেস এonAudioCapabilitiesChanged
এ একটি নতুন ইভেন্টের মাধ্যমে অডিও ক্ষমতার পরিবর্তনগুলি প্রচার করুন৷ - অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য
ChannelMixingAudioProcessor
যোগ করুন। -
DecoderDiscardReasons
নতুন int মানDISCARD_REASON_AUDIO_BYPASS_POSSIBLE
যোগ করুনDiscardঅডিও ক্ষমতা পরিবর্তনের পরে বাইপাস মোড সম্ভব হলে অডিও ডিকোডার বাতিল করার কারণ। - DTS Express এবং DTS:X ( #335 ) এর জন্য সরাসরি প্লেব্যাক সমর্থন যোগ করুন।
- টানেলিং সক্ষম হলে এবং
- ভিডিও:
- যখন রেন্ডারার অক্ষম থাকে তখন
MediaCodecVideoRenderer
0 এর প্রস্থ এবং উচ্চতা সহ একটিVideoSize
রিপোর্ট করুন৷Player.Listener.onVideoSizeChanged
সেই অনুযায়ী বলা হয় যখনPlayer.getVideoSize()
পরিবর্তন হয়। এই পরিবর্তনের সাথে,MediaCodecVideoRenderer
সাথে ExoPlayer-এর ভিডিওর আকার 0 এর প্রস্থ এবং উচ্চতা থাকে যখনPlayer.getCurrentTracks
ভিডিও সমর্থন করে না, বা সমর্থিত ভিডিও ট্র্যাকের আকার এখনও নির্ধারণ করা হয়নি।
- যখন রেন্ডারার অক্ষম থাকে তখন
- DRM:
-
DefaultDrmSession
এ কয়েকটি অভ্যন্তরীণ-শুধু পদ্ধতির দৃশ্যমানতা হ্রাস করুন যেগুলি DRM প্যাকেজের বাইরে থেকে কল করা হবে বলে আশা করা হয় না:-
void onMediaDrmEvent(int)
-
void provision()
-
void onProvisionCompleted()
-
onProvisionError(Exception, boolean)
-
-
- মুক্সার:
- একটি নতুন মুক্সার লাইব্রেরি যোগ করুন যা একটি MP4 কন্টেইনার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।
- আইএমএ এক্সটেনশন:
- DAI-এর জন্য মাল্টি-পিরিয়ড লাইভ DASH স্ট্রিমগুলি সক্ষম করুন৷ অনুগ্রহ করে মনে রাখবেন যে বর্তমান বাস্তবায়ন এখনও লাইভ স্ট্রীম ( #10912 ) এ খোঁজা সমর্থন করে না।
- লাইভ স্ট্রিমগুলিতে একটি নতুন বিজ্ঞাপন গোষ্ঠী সন্নিবেশিত করা হয়েছে এমন একটি বাগ ঠিক করুন কারণ পরপর টাইমলাইনে গণনা করা সামগ্রীর অবস্থান সামান্য পরিবর্তিত হয়।
- অধিবেশন:
- Add helper method
MediaSession.getControllerForCurrentRequest
to obtain information about the controller that is currently calling aPlayer
method. - Add
androidx.media3.session.MediaButtonReceiver
to enable apps to implement playback resumption with media button events sent by, for example, a Bluetooth headset ( #167 ). - Add default implementation to
MediaSession.Callback.onAddMediaItems
to allow requestedMediaItems
to be passed ontoPlayer
if they haveLocalConfiguration
(eg URI) ( #282 ). - Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
- Add default implementation to
MediaSession.Callback.onAddMediaItems
to allow requestedMediaItems
to be passed ontoPlayer
if they haveLocalConfiguration
(eg URI) ( #282 ). - Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
- Add helper method
- UI:
- একটি প্লে/পজ বোতামের সাহায্যে কাস্টম UI উপাদানগুলি লিখতে Util পদ্ধতিগুলি যোগ করুন
shouldShowPlayButton
এবংhandlePlayPauseButtonAction
।
- একটি প্লে/পজ বোতামের সাহায্যে কাস্টম UI উপাদানগুলি লিখতে Util পদ্ধতিগুলি যোগ করুন
- RTSP এক্সটেনশন:
- ড্যাশ এক্সটেনশন:
- মাল্টি পিরিয়ড DASH স্ট্রীমগুলির জন্য
MediaLoadData.startTimeMs
এবংMediaLoadData.endTimeMs
থেকে মিডিয়া টাইম অফসেট সরান৷ - একটি বাগ ঠিক করুন যেখানে একটি মাল্টি-পিরিয়ড লাইভ ড্যাশ মিডিয়া সোর্স পুনরায় প্রস্তুত করার ফলে একটি
IndexOutOfBoundsException
( #10838 ) তৈরি হয়।
- মাল্টি পিরিয়ড DASH স্ট্রীমগুলির জন্য
- HLS Extension:
-
HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)
যোগ করুন লোডিং থ্রেডেরTimestampAdjuster
শুরু হওয়ার জন্য অপেক্ষা করার জন্য একটি সময়সীমা সেট করতে। যদি টাইমআউটের আগে আরম্ভ করা সম্পূর্ণ না হয়, তাহলে প্লেব্যাকের অন্তহীন স্টল এড়াতে একটিPlaybackException
নিক্ষেপ করা হয়। টাইমআউট ডিফল্টরূপে শূন্য সেট করা হয় ( #323 )।
-
- পরীক্ষা উপযোগিতা:
-
DataSourceContractTest
এ URI স্কিমের ক্ষেত্রে অসংবেদনশীলতা পরীক্ষা করুন।
-
- অপ্রচলিত চিহ্নগুলি সরান:
-
DefaultAudioSink
কনস্ট্রাক্টর সরান, পরিবর্তেDefaultAudioSink.Builder
ব্যবহার করুন। -
HlsMasterPlaylist
সরান, পরিবর্তেHlsMultivariantPlaylist
ব্যবহার করুন। -
Player.stop(boolean)
সরান। পরিবর্তেPlayer.stop()
এবংPlayer.clearMediaItems()
(যদিreset
true
হয়) ব্যবহার করুন। - দুটি অবচয়িত
SimpleCache
কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা আরও ভাল পারফরম্যান্সের জন্য পরিবর্তে একটিDatabaseProvider
নেয়। -
DefaultBandwidthMeter
কনস্ট্রাক্টর সরান, পরিবর্তেDefaultBandwidthMeter.Builder
ব্যবহার করুন। -
DefaultDrmSessionManager
কনস্ট্রাক্টর সরান, পরিবর্তেDefaultDrmSessionManager.Builder
ব্যবহার করুন। - দুটি অবচয়িত
HttpDataSource.InvalidResponseCodeException
কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা ত্রুটি লগিং উন্নত করতে অতিরিক্ত ক্ষেত্র (cause
,responseBody
) গ্রহণ করে৷ -
DownloadHelper.forProgressive
,DownloadHelper.forHls
,DownloadHelper.forDash
এবংDownloadHelper.forSmoothStreaming
সরান, পরিবর্তেDownloadHelper.forMediaItem
ব্যবহার করুন। - অবচয়িত
DownloadService
কনস্ট্রাক্টর সরান, একটি অপ্রচলিত কনস্ট্রাক্টর ব্যবহার করুন যাতে একটিchannelDescriptionResourceId
প্যারামিটার প্রদান করার বিকল্প রয়েছে। - অক্ষরগুলির (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
এবংUTF16LE_NAME
) জন্য অপ্রচলিত স্ট্রিং ধ্রুবকগুলি সরানcom.google.common.base.Charsets
kotlin.text
প্যাকেজ থেকে Kotlin Charsets ব্যবহার করুন,java.nio.charset.StandardCharsets
- অবচয়িত
WorkManagerScheduler
কনস্ট্রাক্টর সরান, একটি অপ্রত্যাশিত কনস্ট্রাক্টর ব্যবহার করুন যার পরিবর্তে একটিContext
প্যারামিটার প্রদান করার বিকল্প রয়েছে। - ক্রিয়েট
createVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
, এবংcreateSampleFormat
, যেগুলিFormat
শ্রেণীকে ইনস্ট্যান্টিয়েট করতে ব্যবহৃত হয়েছিল সেগুলি সরান৷ পরিবর্তেFormat
উদাহরণ তৈরি করার জন্যFormat.Builder
ব্যবহার করুন। - অপসারিত পদ্ধতিগুলি সরান
copyWithMaxInputSize
,copyWithSubsampleOffsetUs
,copyWithLabel
,copyWithManifestFormatInfo
,copyWithGaplessInfo
,copyWithFrameRate
,copyWithDrmInitData
, copyWithMetadata ,copyWithMetadata
,copyWithBitrate
,copyWithVideoSize
ব্যবহার করুন পরিবর্তেFormat.buildUpon()
এবং সেটার পদ্ধতি। - অপসারিত
ExoPlayer.retry()
মুছে ফেলুন, এর পরিবর্তেprepare()
ব্যবহার করুন। - অপ্রচলিত শূন্য-আর্গ
DefaultTrackSelector
কনস্ট্রাক্টর সরান, পরিবর্তেDefaultTrackSelector(Context)
ব্যবহার করুন। - অপসারিত
OfflineLicenseHelper
কনস্ট্রাক্টর সরান, পরিবর্তেOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
ব্যবহার করুন৷ - অপসারিত
DownloadManager
কনস্ট্রাক্টর সরান, এর পরিবর্তে একটিExecutor
নেওয়া কনস্ট্রাক্টর ব্যবহার করুন। - অপ্রচলিত
Cue
কনস্ট্রাক্টর সরান, পরিবর্তেCue.Builder
ব্যবহার করুন। - অপসারিত
OfflineLicenseHelper
কনস্ট্রাক্টর সরান, পরিবর্তেOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
ব্যবহার করুন৷ - চারটি অপ্রচলিত
AnalyticsListener
পদ্ধতি সরান:-
onDecoderEnabled
, পরিবর্তেonAudioEnabled
এবং/অথবাonVideoEnabled
ব্যবহার করুন। -
onDecoderInitialized
,onAudioDecoderInitialized
এবং/অথবাonVideoDecoderInitialized
ব্যবহার করুন। -
onDecoderInputFormatChanged
,onAudioInputFormatChanged
এবং/অথবাonVideoInputFormatChanged
ব্যবহার করুন। -
onDecoderDisabled
,onAudioDisabled
এবং/অথবাonVideoDisabled
ব্যবহার করুন।
-
- বাতিল করা
Player.Listener.onSeekProcessed
এবংAnalyticsListener.onSeekProcessed
সরান, পরিবর্তেDISCONTINUITY_REASON_SEEK
সাথেonPositionDiscontinuity
ব্যবহার করুন। -
ExoPlayer.setHandleWakeLock(boolean)
সরান, পরিবর্তেsetWakeMode(int)
ব্যবহার করুন। - অপসারিত
DefaultLoadControl.Builder.createDefaultLoadControl()
সরান, পরিবর্তেbuild()
ব্যবহার করুন। - অপসারিত
MediaItem.PlaybackProperties
সরান, পরিবর্তেMediaItem.LocalConfiguration
ব্যবহার করুন৷ অপ্রচলিত ক্ষেত্রMediaItem.playbackProperties
এখনMediaItem.LocalConfiguration
টাইপের।
-
সংস্করণ 1.1.0-rc01
জুন 21, 2023
Use the 1.1.0 stable version .
সংস্করণ 1.1.0-beta01
7 জুন, 2023
Use the 1.1.0 stable version .
সংস্করণ 1.1.0-alpha01
10 মে, 2023
Use the 1.1.0 stable version .
সংস্করণ 1.0.0
সংস্করণ 1.0.2
18 মে, 2023
androidx.media3:media3-*:1.0.2
is released. Version 1.0.2 contains these commits.
This release corresponds to the ExoPlayer 2.18.7 release .
This release contains the following changes since the 1.0.1 release :
- Core library:
-
Buffer.isLastSample()
যোগ করুন যা বোঝায় যদিBuffer
ফ্ল্যাগC.BUFFER_FLAG_LAST_SAMPLE
থাকে। - 'স্ট্রিমের শেষ' নমুনা না পড়ে ফ্রেমের সাথে শেষ নমুনাটি সারিবদ্ধ থাকলে যেখানে শেষ ফ্রেম রেন্ডার নাও হতে পারে সেই সমস্যার সমাধান করুন। ( #11079 )।
-
- নিষ্কাশনকারী:
- RTSP এবং MP4 এক্সট্র্যাক্টর ( #303 ) দ্বারা ইতিমধ্যে ব্যবহৃত পার্সিং লজিক পুনরায় ব্যবহার করে MPEG-TS ফাইলগুলিতে H.265 SPS-এর পার্সিং ঠিক করুন।
- পাঠ্য:
- SSA: UTF-16 ফাইলগুলির জন্য সমর্থন যোগ করুন যদি তারা একটি বাইট অর্ডার চিহ্ন দিয়ে শুরু করে ( #319 )।
- অধিবেশন:
- Fix issue where
MediaController
doesn't update its available commands when connected to a legacyMediaSessionCompat
that updates its actions. - Fix bug that prevented the
MediaLibraryService
from returning null for a call from System UI toCallback.onGetLibraryRoot
withparams.isRecent == true
on API 30 ( #355 ). - Fix memory leak of
MediaSessionService
orMediaLibraryService
( #346 ). - Fix bug where a combined
Timeline
and position update in aMediaSession
may cause aMediaController
to throw anIllegalStateException
.
- Fix issue where
সংস্করণ 1.0.1
18 এপ্রিল, 2023
androidx.media3:media3-*:1.0.1
is released. Version 1.0.1 contains these commits.
This release corresponds to the ExoPlayer 2.18.6 release .
- Core library:
- ডিফল্ট অবস্থানে যাওয়ার সময় লক্ষ্য লাইভ স্ট্রিম ওভাররাইড রিসেট করুন ( #11051 )।
- মিডিয়াতে খালি নমুনা স্ট্রীম প্লেব্যাক আটকে যেতে পারে এমন বাগ ঠিক করুন।
- অধিবেশন:
- Fix bug where multiple identical queue items published by a legacy
MediaSessionCompat
result in an exception inMediaController
( #290 ). - Add missing forwarding of
MediaSession.broadcastCustomCommand
to the legacyMediaControllerCompat.Callback.onSessionEvent
( #293 ). - Fix bug where calling
MediaSession.setPlayer
doesn't update the available commands. - Fix issue that
TrackSelectionOverride
instances sent from aMediaController
are ignored if they reference a group withFormat.metadata
( #296 ). - Fix issue where
Player.COMMAND_GET_CURRENT_MEDIA_ITEM
needs to be available to access metadata via the legacyMediaSessionCompat
. - Fix issue where
MediaSession
instances on a background thread cause crashes when used inMediaSessionService
( #318 ). - Fix issue where a media button receiver was declared by the library without the app having intended this ( #314 ).
- Fix bug where multiple identical queue items published by a legacy
- ড্যাশ:
- খালি সেগমেন্ট টাইমলাইনগুলির হ্যান্ডলিং ঠিক করুন ( #11014 )।
- RTSP:
- RTSP Error 461 UnsupportedTransport ( #11069 ) এর সাথে UDP এর সাথে RTSP সেটআপ ব্যর্থ হলে TCP দিয়ে পুনরায় চেষ্টা করুন।
সংস্করণ 1.0.0
22 মার্চ, 2023
androidx.media3:media3-*:1.0.0
is released. সংস্করণ 1.0.0 এই কমিট ধারণ করে.
This release corresponds to the ExoPlayer 2.18.5 release .
There are no changes since 1.0.0-rc02.
Version 1.0.0-rc02
2 মার্চ, 2023
androidx.media3:media3-*:1.0.0-rc02
is released. Version 1.0.0-rc02 contains these commits.
This release corresponds to the ExoPlayer 2.18.4 release .
- Core library:
- ডাউনলোড:
-
SegmentDownloader
এবং সাবক্লাসে ( #248 ) কনফিগারযোগ্য মার্জ করার জন্য দুটি সেগমেন্টের শুরুর সময়ের সর্বাধিক পার্থক্য করুন।
-
- অডিও:
- ভিডিও:
- HEVC
HEVCProfileMain10
এর পরিবর্তে HEVC HDR10 বিন্যাসHEVCProfileMain10HDR10
এ ম্যাপ করুন। - Google TV এবং Lenovo M10 FHD Plus-এর সাথে Chromecast-এ ডিভাইস সংক্রান্ত সমস্যার সমাধান যোগ করুন যার ফলে 60fps AVC স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত হয় ( #10898 )।
- স্ক্রীন রিফ্রেশ রেট থেকে অনেক বেশি ফ্রেম রেট সহ মিডিয়া প্লে করার সময় ফ্রেম রিলিজ কর্মক্ষমতা সমস্যাগুলি ঠিক করুন৷
- HEVC
- কাস্ট:
- মিডিয়া আইটেমগুলির মধ্যে স্থানান্তর করার সময় ক্ষণস্থায়ী
STATE_IDLE
ঠিক করুন ( #245 )।
- মিডিয়া আইটেমগুলির মধ্যে স্থানান্তর করার সময় ক্ষণস্থায়ী
- RTSP:
- অবৈধ আরটিএসপির পার্সিংয়ে নিক্ষিপ্ত IllegalArgumentException ধরুন প্রতিক্রিয়া বার্তা বর্ণনা করুন ( #10971 )।
- অধিবেশন:
- Fix a bug where notification play/pause button doesn't update with player state ( #192 ).
- আইএমএ এক্সটেনশন:
- একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই)
LOADED
ইভেন্টটি পাওয়া যায়নি৷
- একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই)
সংস্করণ 1.0.0-rc01
ফেব্রুয়ারী 16, 2023
androidx.media3:media3-*:1.0.0-rc01
is released. সংস্করণ 1.0.0-rc01 এই কমিট ধারণ করে।
This release corresponds to the ExoPlayer 2.18.3 release .
- Core library:
-
MediaCodecSelector
এর পছন্দগুলি বজায় রাখার জন্য রেন্ডারারের ডিকোডার অর্ডারিং লজিককে টুইক করুন, এমনকি একটি ডিকোডার রিপোর্ট করলেও এটি কার্যকরীভাবে মিডিয়া চালাতে সক্ষম নাও হতে পারে। উদাহরণস্বরূপ ডিফল্ট নির্বাচকের সাথে, শুধুমাত্র কার্যকরী সমর্থন সহ হার্ডওয়্যার ডিকোডারকে সফ্টওয়্যার ডিকোডারের চেয়ে পছন্দ করা হবে যা সম্পূর্ণরূপে ফর্ম্যাট সমর্থন করে ( #10604 )। -
ExoPlayer.Builder.setPlaybackLooper
যোগ করুন যা একটি নতুন ExoPlayer উদাহরণের জন্য একটি পূর্ব-বিদ্যমান প্লেব্যাক থ্রেড সেট করে৷ - ডাউনলোড ম্যানেজার সাহায্যকারীদের সাফ করার অনুমতি দিন ( #10776 )।
-
BasePlayer.seekTo
এ পরামিতি যোগ করুন যাতে অনুসন্ধানের জন্য ব্যবহৃত কমান্ড নির্দেশ করে। - API 21+ ( #220 ) তে অঙ্কনযোগ্য লোড করার সময় থিম ব্যবহার করুন।
-
ConcatenatingMediaSource2
যোগ করুন যা একাধিক মিডিয়া আইটেমকে একক উইন্ডোতে একত্রিত করার অনুমতি দেয় ( #247 )।
-
- নিষ্কাশনকারী:
- একটি
NullPointerException
এর পরিবর্তে একটিParserException
নিক্ষেপ করুন যদি ট্র্যাক পরমাণু পার্স করার সময় নমুনা টেবিল (stbl) একটি প্রয়োজনীয় নমুনা বিবরণ (stsd) অনুপস্থিত থাকে। - fMP4 ( #10941 ) এ সরাসরি সিঙ্ক ফ্রেমে খোঁজার সময় সঠিকভাবে নমুনাগুলি এড়িয়ে যান।
- একটি
- অডিও:
- সরাসরি প্লেব্যাকে (পাসথ্রু)
AudioTrack
জন্য ন্যূনতম বাফার আকার গণনা করতে সংকুচিত অডিও বিন্যাস বিটরেট ব্যবহার করুন।
- সরাসরি প্লেব্যাকে (পাসথ্রু)
- পাঠ্য:
- যদি একটি সাবটাইটেল ফাইলে কোন সংকেত না থাকে তাহলে
TextRenderer
Subtitle.getEventTime
এ একটি অবৈধ (নেতিবাচক) সূচক পাস করার সমাধান করুন। - SubRip: UTF-16 ফাইলগুলির জন্য সমর্থন যোগ করুন যদি তারা একটি বাইট অর্ডার চিহ্ন দিয়ে শুরু করে।
- যদি একটি সাবটাইটেল ফাইলে কোন সংকেত না থাকে তাহলে
- মেটাডেটা:
- ID3 v2.4 দ্বারা অনুমোদিত, ID3 ফ্রেম থেকে একাধিক নাল-বিচ্ছিন্ন মান পার্স করুন।
- মেটাডেটা দ্বারা বর্ণিত বিষয়বস্তুর ধরন বা ফোল্ডারের ধরন বোঝাতে
MediaMetadata.mediaType
যোগ করুন। -
MediaMetadata.isBrowsable
এর প্রতিস্থাপন হিসাবেMediaMetadata.folderType
যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
- ড্যাশ:
- টাইল গণনা সহ চিত্র অভিযোজন সেটের জন্য সম্পূর্ণ পার্সিং যোগ করুন ( #3752 )।
- UI:
- অধিবেশন:
- Add abstract
SimpleBasePlayer
to help implement thePlayer
interface for custom players. - Add helper method to convert platform session token to Media3
SessionToken
( #171 ). - Use
onMediaMetadataChanged
to trigger updates of the platform media session ( #219 ). - Add the media session as an argument of
getMediaButtons()
of theDefaultMediaNotificationProvider
and use immutable lists for clarity ( #216 ). - Add
onSetMediaItems
callback listener to provide means to modify/setMediaItem
list, starting index and position by session before setting onto Player ( #156 ). - Avoid double tap detection for non-Bluetooth media button events ( #233 ).
- Make
QueueTimeline
more robust in case of a shady legacy session state ( #241 ).
- Add abstract
- মেটাডেটা:
- ID3 v2.4 দ্বারা অনুমোদিত, ID3 ফ্রেম থেকে একাধিক নাল-বিচ্ছিন্ন মান পার্স করুন।
- মেটাডেটা দ্বারা বর্ণিত বিষয়বস্তুর ধরন বা ফোল্ডারের ধরন বোঝাতে
MediaMetadata.mediaType
যোগ করুন। -
MediaMetadata.isBrowsable
এর প্রতিস্থাপন হিসাবেMediaMetadata.folderType
যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
- কাস্ট এক্সটেনশন:
- 21.2.0-এ কাস্ট SDK সংস্করণকে বাম্প করুন।
- আইএমএ এক্সটেনশন:
- থ্রেডিং সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে
ImaServerSideAdInsertionMediaSource
এর প্লেয়ার লিসেনারকে সরিয়ে দিন। - টিভি ডিভাইসে স্কিপ বোতামে ফোকাস করার অনুরোধ করার জন্য
ImaServerSideAdInsertionMediaSource.AdsLoader.Builder
এ যখন উপলব্ধ একটি প্রপার্টিfocusSkipButtonWhenAvailable
যোগ করুন এবং এটিকে ডিফল্টরূপে সত্যে সেট করুন৷ -
ImaServerSideAdInsertionMediaSource.AdsLoader
এ একটি পদ্ধতিfocusSkipButton()
যোগ করুন প্রোগ্রাম্যাটিকভাবে স্কিপ বোতামে ফোকাস করার অনুরোধ করতে। - IMA SDK সংস্করণকে 3.29.0 এ বাম্প করুন৷
- থ্রেডিং সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে
- ডেমো অ্যাপ:
- রানটাইমে বিজ্ঞপ্তি ডাউনলোড করার জন্য বিজ্ঞপ্তির অনুমতির অনুরোধ করুন ( #10884 )।
Version 1.0.0-beta03
নভেম্বর 22, 2022
androidx.media3:media3-*:1.0.0-beta03
is released. Version 1.0.0-beta03 contains these commits.
This release corresponds to the ExoPlayer 2.18.2 release .
- Core library:
- বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে
ExoPlayer.isTunnelingEnabled
যোগ করুন ( #2518 )। - একটি একক
MediaSource
( #7279 ) মোড়ানো সহজ করতেWrappingMediaSource
যোগ করুন। - অপর্যাপ্ত উপলব্ধ মেমরির কারণে প্লেব্যাক আটকে যাওয়ার আগে ব্যাক বাফার বাতিল করুন।
- অফলোড সক্ষম হলে ট্রেসিং "doSomeWork" ব্লকটি বন্ধ করুন৷
-
PlaybackStatsListener
( #180 ) এ দ্রুত অনুসন্ধানের সাথে সেশন ট্র্যাকিং সমস্যা সমাধান করুন। - একটি একক-আইটেম প্লেলিস্ট ( #10667 ) এ
seekToNext
বাseekToPrevious
কল করার সময় অনুপস্থিতonMediaItemTransition
কলব্যাক পাঠান। -
Player.getSurfaceSize
যোগ করুন যা ভিডিওটি রেন্ডার করা হয়েছে এমন পৃষ্ঠের আকার প্রদান করে। - প্লেয়ার রিলিজের সময় শ্রোতাদের অপসারণ করার ফলে একটি
IllegalStateException
( #10758 ) হতে পারে এমন ত্রুটির সমাধান করুন৷
- বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে
- নির্মাণ:
- সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন
compileSdkVersion
প্রয়োগ করুন ( #10684 )। - অন্য গ্রেডল বিল্ডে অন্তর্ভুক্ত করার সময় প্রকাশনা ব্লক এড়িয়ে চলুন।
- সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন
- ট্র্যাক নির্বাচন:
- ডিসপ্লে সমর্থন না করলে ডলবি ভিশনে অন্যান্য ট্র্যাক পছন্দ করুন। ( #8944 )।
- ডাউনলোড:
- ভিডিও:
- ডলবি ভিশনের বিকল্প ডিকোডার ব্যবহার করে দেখুন যদি ডিসপ্লে সমর্থন না করে। ( #9794 )।
- অডিও:
- একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory ত্রুটি এড়াতে
AudioTrack
দৃষ্টান্ত প্রকাশের জন্যSingleThreadExecutor
ব্যবহার করুন ( #10057 )। - Adds
AudioOffloadListener.onExperimentalOffloadedPlayback
for the AudioTrack offload state. ( #134 )। -
AudioTrackBufferSizeProvider
একটি সর্বজনীন ইন্টারফেস করুন। - পছন্দের অডিও আউটপুট ডিভাইস সেট করতে
ExoPlayer.setPreferredAudioDevice
যোগ করুন ( #135 )। - Rename
androidx.media3.exoplayer.audio.AudioProcessor
toandroidx.media3.common.audio.AudioProcessor
. - সমস্ত অ্যান্ড্রয়েড সংস্করণে ( #10701 ) যথাক্রমে 7.1 এবং 7.1.4 চ্যানেল মাস্কে 8-চ্যানেল এবং 12-চ্যানেল অডিও ম্যাপ করুন।
- একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory ত্রুটি এড়াতে
- মেটাডেটা:
-
MetadataRenderer
এখন মেটাডেটা উপলব্ধ হওয়ার সাথে সাথে রেন্ডার করার জন্য কনফিগার করা যেতে পারে।MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)
দিয়ে একটি উদাহরণ তৈরি করুন রেন্ডারার মেটাডেটা প্রথম দিকে আউটপুট করবে নাকি প্লেয়ার পজিশনের সাথে সিঙ্ক করবে।
-
- DRM:
- অ্যান্ড্রয়েড 13 ক্লিয়ারকি বাস্তবায়নে একটি বাগ নিয়ে কাজ করুন যা একটি অ-খালি কিন্তু অবৈধ লাইসেন্স URL প্রদান করে।
-
setMediaDrmSession failed: session not opened
ত্রুটি (যেমন Widevine থেকে ClearKey)।
- পাঠ্য:
- CEA-608: ফিল্ড 2-এ পরিষেবা সুইচ কমান্ডগুলি সঠিকভাবে পরিচালনা করা হয়েছে তা নিশ্চিত করুন ( #10666 )।
- ড্যাশ:
- ম্যানিফেস্ট ( #10460 ) থেকে
EventStream.presentationTimeOffset
পার্স করুন।
- ম্যানিফেস্ট ( #10460 ) থেকে
- UI:
-
TrackSelectionDialogBuilder
( #10429 ) এ প্রিসেট হিসাবে প্লেয়ারের বর্তমান ওভাররাইড ব্যবহার করুন।
-
- অধিবেশন:
- Ensure commands are always executed in the correct order even if some require asynchronous resolution ( #85 ).
- Add
DefaultMediaNotificationProvider.Builder
to buildDefaultMediaNotificationProvider
instances. The builder can configure the notification ID, the notification channel ID and the notification channel name used by the provider. Also, add methodDefaultMediaNotificationProvider.setSmallIcon(int)
to set the notifications small icon. ( #104 ). - Ensure commands sent before
MediaController.release()
are not dropped ( #99 ). -
SimpleBitmapLoader
can load bitmap fromfile://
URIs ( #108 ). - Fix assertion that prevents
MediaController
to seek over an ad in a period ( #122 ). - When playback ends, the
MediaSessionService
is stopped from the foreground and a notification is shown to restart playback of the last played media item ( #112 ). - Don't start a foreground service with a pending intent for pause ( #167 ).
- Manually hide the 'badge' associated with the notification created by
DefaultNotificationProvider
on API 26 and API 27 (the badge is automatically hidden on API 28+) ( #131 ). - Fix bug where a second binder connection from a legacy MediaSession to a Media3 MediaController causes IllegalStateExceptions ( #49 ).
- RTSP:
- আইএমএ:
- IMA SDK বিজ্ঞাপন লোড করার সময় আটকে যায় এমন ক্ষেত্রে পরিচালনা করতে বিজ্ঞাপনের তথ্য লোড করার সময়সীমা যোগ করুন ( #10510 )।
- বিষয়বস্তুর শেষ পর্যন্ত খোঁজার সময় মিড-রোল বিজ্ঞাপনগুলি এড়িয়ে যাওয়া প্রতিরোধ করুন ( #10685 )।
- সার্ভার-সাইড সন্নিবেশিত বিজ্ঞাপন সহ লাইভ স্ট্রিমগুলির জন্য উইন্ডোর সময়কাল সঠিকভাবে গণনা করুন, উদাহরণস্বরূপ IMA DAI ( #10764 )।
- FFmpeg এক্সটেনশন:
- NDK 23.1.7779620 এবং তার উপরে ( #9933 ) এর সাথে FFmpeg লাইব্রেরি লিঙ্ক করতে নতুন প্রয়োজনীয় পতাকা যুক্ত করুন।
- AV1 এক্সটেনশন:
- সর্বশেষ অ্যান্ড্রয়েড স্টুডিও রিলিজের ( #9933 ) সাথে অসঙ্গতি এড়াতে CMake সংস্করণ আপডেট করুন।
- কাস্ট এক্সটেনশন:
- একটি
MediaController
( #142 ) দিয়ে প্লেব্যাক নিয়ন্ত্রণ করার সময়CastPlayer
সনাক্ত করতে সক্ষম হতেgetDeviceInfo()
প্রয়োগ করুন।
- একটি
- ট্রান্সফরমার:
- যখন একটি আউটপুট নমুনা তৈরি করা খুব ধীর তা সনাক্ত করতে muxer ওয়াচডগ টাইমার যোগ করুন৷
- অপ্রচলিত চিহ্নগুলি সরান:
-
Transformer.Builder.setOutputMimeType(String)
সরান। এই বৈশিষ্ট্য সরানো হয়েছে. ডিফল্ট মুক্সার ব্যবহার করা হলে MIME প্রকারটি সর্বদা MP4 হবে।
-
Version 1.0.0-beta02
জুলাই 21, 2022
androidx.media3:media3-*:1.0.0-beta02
is released. Version 1.0.0-beta02 contains these commits.
This release corresponds to the ExoPlayer 2.18.1 release .
- Core library:
- নিশ্চিত করুন যে
ExoPlayer.setShuffleOrder
সাথেShuffleOrder
পরিবর্তন করার ফলেPlayer.Listener#onTimelineChanged
withreason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
( #9889 )। - প্রগতিশীল মিডিয়ার জন্য, শুধুমাত্র বাফার অবস্থানে নির্বাচিত ট্র্যাকগুলি অন্তর্ভুক্ত করুন ( #10361 )।
- সমস্ত ExoPlayer লগ আউটপুট ( #9752 ) এর জন্য কাস্টম লগারকে অনুমতি দিন।
-
DefaultMediaSourceFactory
এsetDataSourceFactory
এর বাস্তবায়ন ঠিক করুন, যা কিছু ক্ষেত্রে অ-কার্যকর ছিল ( #116 )।
- নিশ্চিত করুন যে
- নিষ্কাশনকারী:
- ড্যাশ:
- ম্যানিফেস্ট ( #10246 ) থেকে ClearKey লাইসেন্স URL পার্স করুন।
- UI:
- নিশ্চিত করুন যে টকব্যাক প্লেব্যাক কন্ট্রোল মেনুতে বর্তমানে সক্রিয় গতির বিকল্প ঘোষণা করেছে ( #10298 )।
- RTSP:
- VP8 খণ্ডিত প্যাকেট হ্যান্ডলিং যোগ করুন ( #110 )।
- লিনব্যাক এক্সটেনশন:
-
LeanbackAdapter
( 10420 ) এ যখন-তৈরি পরিবর্তন হয়playWhenReady
শুনুন।
-
- কাস্ট:
সংস্করণ 1.0.0-beta01
16 জুন, 2022
androidx.media3:media3-*:1.0.0-beta01
is released. Version 1.0.0-beta01 contains these commits.
This corresponds to the ExoPlayer 2.18.0 release .
- Core library:
-
MediaMetricsManager
মাধ্যমে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সমর্থন সক্ষম করুন৷ ExoPlayer প্লেব্যাক ইভেন্ট এবং কর্মক্ষমতা ডেটা প্ল্যাটফর্মে ফরোয়ার্ড করবে, যা ডিভাইসে সিস্টেম কর্মক্ষমতা এবং ডিবাগিং তথ্য প্রদান করতে সাহায্য করে। ডিভাইসের ব্যবহারকারীর দ্বারা ব্যবহার এবং ডায়াগনস্টিক ডেটা ভাগ করা সক্ষম হলে এই ডেটা Google দ্বারা সংগ্রহ করা যেতে পারে৷ অ্যাপগুলিExoPlayer.Builder.setUsePlatformDiagnostics(false)
দিয়ে ExoPlayer-এর জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে অবদান রাখা থেকে অপ্ট-আউট করতে পারে। -
MergingMediaSource
ব্যবহার করার সময় ট্র্যাকগুলি প্রায়ই রিসেট করা হয় এমন বাগ ঠিক করুন, উদাহরণস্বরূপ যখন সাইড-লোড করা সাবটাইটেল এবং নির্বাচিত সাবটাইটেল মিড-প্লেব্যাক ( #10248 ) পরিবর্তন করা হয়। - API 29 এবং 30-এ 5G-NSA নেটওয়ার্কের ধরন সনাক্ত করা বন্ধ করুন৷ এই প্লেব্যাকগুলি একটি 4G নেটওয়ার্ক ধরে নেবে৷
-
MediaSource.Factory.setDrmSessionManagerProvider
এবংMediaSource.Factory.setLoadErrorHandlingPolicy
এnull
পাস করার অনুমতি দিন। প্রয়োজনেDefaultDrmSessionManagerProvider
এবংDefaultLoadErrorHandlingPolicy
এর উদাহরণগুলি স্পষ্টভাবে পাস করা যেতে পারে। - সঠিক
LocalConfiguration
জানা না থাকলে মিডিয়া প্লে করার জন্য প্রয়োজনীয় মেটাডেটা উপস্থাপন করতেMediaItem.RequestMetadata
যোগ করুন। এছাড়াওMediaMetadata.mediaUrl
মুছে ফেলুন কারণ এটি এখনRequestMetadata
তে অন্তর্ভুক্ত। - খেলোয়াড়দের একটি আইটেম সেট করার অনুমতি দিতে সক্ষম করতে
Player.Command.COMMAND_SET_MEDIA_ITEM
যোগ করুন।
-
- ট্র্যাক নির্বাচন:
-
TrackSelectionOverrides
ক্লাসকেTrackSelectionParameters
এ সমতল করুন এবংTrackSelectionOverride
শীর্ষ স্তরের শ্রেণীতে উন্নীত করুন। -
TracksInfo
Tracks
এবংTracksInfo.TrackGroupInfo
ইনফোকেTracks.Group
পুনঃনামকরণ করুন।Player.getCurrentTracksInfo
এবংPlayer.Listener.onTracksInfoChanged
এর নামওPlayer.getCurrentTracks
এবংPlayer.Listener.onTracksChanged
করা হয়েছে। This includes 'un-deprecating' thePlayer.Listener.onTracksChanged
method name, but with different parameter types. -
DefaultTrackSelector.buildUponParameters
এবংDefaultTrackSelector.Parameters.buildUpon
পরিবর্তন করুনDefaultTrackSelector.Parameters.Builder
এর পরিবর্তেDefaultTrackSelector.ParametersBuilder
ফেরত দিন। -
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
যোগ করুন যা ডিফল্টরূপে সক্ষম। সক্রিয় করা হলে,DefaultTrackSelector
এমন অডিও ট্র্যাক পছন্দ করবে যার চ্যানেলের সংখ্যা ডিভাইসের আউটপুট ক্ষমতার বেশি নয়। হ্যান্ডহেল্ড ডিভাইসে,DefaultTrackSelector
মাল্টিচ্যানেল অডিও ফরম্যাটের চেয়ে স্টেরিও/মনো পছন্দ করবে, যদি না মাল্টিচ্যানেল ফর্ম্যাটটি স্থানিক (Android 12L+) বা ডলবি চারপাশের সাউন্ড ফর্ম্যাট না হয়। উপরন্তু, অডিও স্থানিককরণকে সমর্থন করে এমন ডিভাইসগুলিতে,DefaultTrackSelector
স্প্যাটিলাইজার বৈশিষ্ট্যগুলির পরিবর্তনের জন্য নিরীক্ষণ করবে এবং এর উপর একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে। একটিtelevision
UI মোড সহ ডিভাইসগুলিকে এই সীমাবদ্ধতাগুলি থেকে বাদ দেওয়া হয়েছে এবং সর্বোচ্চ চ্যানেল গণনা সহ বিন্যাসটিকে অগ্রাধিকার দেওয়া হবে৷ এই বৈশিষ্ট্যটি সক্ষম করার জন্য,DefaultTrackSelector
দৃষ্টান্ত একটিContext
দিয়ে তৈরি করা আবশ্যক।
-
- ভিডিও:
-
DummySurface
নাম পরিবর্তন করেPlaceholderSurface
করুন। -
MediaCodecVideoRenderer.getCodecMaxInputSize
এ AV1 সমর্থন যোগ করুন।
-
- অডিও:
- LG AC3 অডিও ডিকোডার বিজ্ঞাপন অ-মানক MIME প্রকার ব্যবহার করুন৷
- API <21-এ ধীরগতির ART যাচাইকরণ রোধ করতে
android.media.AudioAttributes
থেকেAudioAttributes.getAudioAttributesV21()
এর রিটার্ন টাইপটিকে একটি নতুনAudioAttributesV21
র্যাপার ক্লাসে পরিবর্তন করুন। - প্ল্যাটফর্ম (API 29+) জিজ্ঞাসা করুন বা অডিও পাসথ্রু-এর জন্য অডিও এনকোডিং চ্যানেল গণনা অনুমান করুন যখন ফর্ম্যাট অডিও চ্যানেল গণনা সেট করা নেই, যা HLS খণ্ডহীন প্রস্তুতি ( 10204 ) এর সাথে ঘটে।
- চ্যানেল মাস্ক
AudioFormat.CHANNEL_OUT_7POINT1POINT4
দিয়েAudioTrack
কনফিগার করুন যদি ডিকোডার 12টি চ্যানেল PCM অডিও ( #10322 .
- ডিআরএম
- বিন্যাস পরিবর্তন ( 10274 ) এর পরে অবিলম্বে খোঁজার সময় DRM সেশনটি সর্বদা সঠিকভাবে আপডেট করা হয়েছে তা নিশ্চিত করুন।
- পাঠ্য:
-
Player.getCurrentCues()
পরিবর্তন করুনList<Cue>
এর পরিবর্তেCueGroup
ফেরত দিতে। - SSA:
OutlineColour
শৈলী সেটিং সমর্থন করুন যখনBorderStyle == 3
(অর্থাৎOutlineColour
কিউর পটভূমি সেট করে) ( #8435 )। - CEA-708: একাধিক পরিষেবা ব্লকে ডেটা পার্স করুন এবং বর্তমানে নির্বাচিত পরিষেবা নম্বরের সাথে যুক্ত নয় এমন ব্লকগুলিকে উপেক্ষা করুন।
-
RawCcExtractor
সরান, যা শুধুমাত্র একটি Google-অভ্যন্তরীণ সাবটাইটেল বিন্যাস পরিচালনা করতে ব্যবহৃত হয়েছিল।
-
- নিষ্কাশনকারী:
- UI:
- Fix delivery of events to
OnClickListener
s set onPlayerView
in the case thatuseController=false
( #9605 ). এছাড়াও সমস্ত ভিউ কনফিগারেশনের জন্যOnLongClickListener
এ ইভেন্টের ডেলিভারি ঠিক করুন। - Fix incorrectly treating a sequence of touch events that exit the bounds of
PlayerView
beforeACTION_UP
as a click ( #9861 ). -
PlayerView
অ্যাক্সেসিবিলিটি সমস্যাটি ঠিক করুন যেখানে ট্যাপ করা নিয়ন্ত্রণগুলি লুকানোর পরিবর্তে প্লেব্যাককে টগল করতে পারে ( #8627 )। -
ExoPlayer
পরিবর্তেPlayer
ইন্টারফেসের সাথে কাজ করতেTrackSelectionView
এবংTrackSelectionDialogBuilder
পুনরায় লিখুন। এটি ভিউগুলিকে অন্যান্যPlayer
বাস্তবায়নের সাথে ব্যবহার করার অনুমতি দেয় এবং UI মডিউল থেকে ExoPlayer মডিউলে নির্ভরতা সরিয়ে দেয়। এটি একটি ব্রেকিং পরিবর্তন. -
PlayerView
ট্র্যাক সিলেক্টরে জোর করে টেক্সট ট্র্যাক দেখাবেন না এবং "কোনটিই" নির্বাচন করা না থাকলে একটি উপযুক্ত বাধ্যতামূলক পাঠ্য ট্র্যাক নির্বাচন করুন ( #9432 )।
- Fix delivery of events to
- ড্যাশ:
- ডিটিএস
AudioChannelConfiguration
উপাদান থেকে চ্যানেল গণনা পার্স করুন। এটি ডিটিএস স্ট্রীমের জন্য অডিও পাসথ্রু পুনরায় সক্ষম করে ( #10159 )। -
DashMediaSource.Factory.setCompositeSequenceableLoaderFactory
এnull
পাস করার অনুমতি দিন।DefaultCompositeSequenceableLoaderFactory
এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
- ডিটিএস
- HLS:
- প্লেলিস্ট CODECS অ্যাট্রিবিউটে অডিও কোডেক ( #10065 ) না থাকলে খণ্ডিত প্রস্তুতিতে পতন।
-
HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
, এবংHlsMediaSource.Factory.setPlaylistTrackerFactory
এnull
পাস করার অনুমতি দিন।DefaultCompositeSequenceableLoaderFactory
,DefaultHlsPlaylistParserFactory
, অথবাDefaultHlsPlaylistTracker.FACTORY
এর একটি রেফারেন্স প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে৷
- মসৃণ স্ট্রিমিং:
-
SsMediaSource.Factory.setCompositeSequenceableLoaderFactory
এnull
পাস করার অনুমতি দিন।DefaultCompositeSequenceableLoaderFactory
এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
-
- RTSP:
- H263 ( #63 ) এর জন্য RTP রিডার যোগ করুন।
- MPEG4 ( #35 ) এর জন্য RTP রিডার যোগ করুন।
- HEVC ( #36 ) এর জন্য RTP রিডার যোগ করুন।
- AMR এর জন্য RTP রিডার যোগ করুন। বর্তমানে শুধুমাত্র মনো-চ্যানেল, নন-ইন্টারলিভড AMR স্ট্রীম সমর্থিত। যৌগিক AMR RTP পেলোড সমর্থিত নয়। ( #46 )
- VP8 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
- WAV ( #56 ) এর জন্য RTP রিডার যোগ করুন।
- RTSP মৌলিক অনুমোদন হেডার ঠিক করুন। ( #9544 )।
- বাধ্যতামূলক SDP ক্ষেত্রগুলি পরীক্ষা করা বন্ধ করুন কারণ ExoPlayer-এর তাদের প্রয়োজন নেই ( #10049 )।
- RTSP টাইমিং ( #10165 ) পার্স করার সময় চেক করা ব্যতিক্রম ছুঁড়ে দিন।
- VP9 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
- OPUS ( #53 ) এর জন্য RTP রিডার যোগ করুন।
- তথ্য সূত্র:
-
DummyDataSource
থেকেPlaceholderDataSource
নামকরণ করুন। - OkHttp ব্যাহত হ্যান্ডলিং ওয়ার্কআউন্ড।
-
- অধিবেশন:
- Replace
MediaSession.MediaItemFiller
withMediaSession.Callback.onAddMediaItems
to allow asynchronous resolution of requests. - Support
setMediaItems(s)
methods whenMediaController
connects to a legacy media session. - Remove
MediaController.setMediaUri
andMediaSession.Callback.onSetMediaUri
. The same functionality can be achieved by usingMediaController.setMediaItem
andMediaSession.Callback.onAddMediaItems
. - Forward legacy
MediaController
calls to play media toMediaSession.Callback.onAddMediaItems
instead ofonSetMediaUri
. - Add
MediaNotification.Provider
andDefaultMediaNotificationProvider
to provide customization of the notification. - Add
BitmapLoader
andSimpleBitmapLoader
for downloading artwork images. - Add
MediaSession.setCustomLayout()
to provide backwards compatibility with the legacy session. - Add
MediaSession.setSessionExtras()
to provide feature parity with legacy session. - Rename
MediaSession.MediaSessionCallback
toMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
toMediaLibrarySession.Callback
andMediaSession.Builder.setSessionCallback
tosetCallback
. - Fix NPE in
MediaControllerImplLegacy
( #59 ). - Update session position info on timeline change( #51 ).
- Fix NPE in
MediaControllerImplBase
after releasing controller ( #74 ).
- Replace
- বিজ্ঞাপন প্লেব্যাক / IMA:
- মিডিয়া রেটিং কাউন্সিলের (MRC) সুপারিশের সাথে সারিবদ্ধ হতে প্রতি 100ms থেকে প্রতি 200ms-এ বিজ্ঞাপন ভোটের হার কমিয়ে দিন।
- FFmpeg এক্সটেনশন:
- একটি CMake বাগ এড়াতে CMake সংস্করণ
3.21.0+
এ আপডেট করুন যার ফলে AndroidStudio-এর গ্রেডেল সিঙ্ক ব্যর্থ হয় ( #9933 )।
- একটি CMake বাগ এড়াতে CMake সংস্করণ
- অপ্রচলিত চিহ্নগুলি সরান:
-
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
সরান। পরিবর্তেPlayer.Listener.onTracksChanged(Tracks)
ব্যবহার করুন। -
Player.getCurrentTrackGroups
এবংPlayer.getCurrentTrackSelections
সরান। পরিবর্তেPlayer.getCurrentTracks
ব্যবহার করুন। এছাড়াও আপনিExoPlayer.getCurrentTrackGroups
এবংExoPlayer.getCurrentTrackSelections
ব্যবহার করা চালিয়ে যেতে পারেন, যদিও এই পদ্ধতিগুলি অবহেলিত থাকে৷ -
DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
এবংDEFAULT_TRACK_SELECTOR_PARAMETERS
ধ্রুবকগুলি সরান৷ সম্ভব হলে এর পরিবর্তেgetDefaultTrackSelectorParameters(Context)
ব্যবহার করুন এবং অন্যথায়DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
। - কনস্ট্রাক্টর
DefaultTrackSelector(ExoTrackSelection.Factory)
সরান। পরিবর্তেDefaultTrackSelector(Context, ExoTrackSelection.Factory)
ব্যবহার করুন। - Remove
Transformer.Builder.setContext
. এর পরিবর্তেContext
Transformer.Builder
কনস্ট্রাক্টরের কাছে পাঠানো উচিত।
-
Version 1.0.0-alpha03
14 মার্চ, 2022
androidx.media3:media3-*:1.0.0-alpha03
is released. Version 1.0.0-alpha03 contains these commits.
This corresponds to the ExoPlayer 2.17.1 release .
- অডিও:
- HLS-এ Dolby Atmos (E-AC3-JOC) এর জন্য অডিও ক্ষমতা পরীক্ষা করার ত্রুটি ঠিক করুন।
- নিষ্কাশনকারী:
- FMP4: সমস্যাটি ঠিক করুন যেখানে v0 এবং v1 emsg পরমাণু ( #9996 ) উভয় স্ট্রিমের জন্য ভুল ক্রমে emsg নমুনা মেটাডেটা আউটপুট হতে পারে।
- পাঠ্য:
-
SubtitleConfiguration
ফিল্ডকে অগ্রাধিকার দিতেSingleSampleMediaSource.Factory.setTrackId
এবংMediaItem.SubtitleConfiguration.Builder.setId
এর মিথস্ক্রিয়া ঠিক করুন এবং এটি সেট না থাকলেFactory
মানতে ফিরে যান ( #10016 )।
-
- বিজ্ঞাপন প্লেব্যাক:
- লাইভ HLS SSAI স্ট্রীমগুলিতে বিজ্ঞাপনের সময়সীমার মধ্যে অডিও আন্ডাররান ঠিক করুন।
Version 1.0.0-alpha02
2 মার্চ, 2022
androidx.media3:media3-*:1.0.0-alpha02
is released. Version 1.0.0-alpha02 contains these commits.
This corresponds to the ExoPlayer 2.17.0 release .
- মূল গ্রন্থাগার:
- সুরক্ষিত পদ্ধতি যোগ করুন
DefaultRenderersFactory.getCodecAdapterFactory()
যাতেDefaultRenderersFactory
এর সাবক্লাসগুলি যাbuildVideoRenderers()
বাbuildAudioRenderers()
ওভাররাইড করে কোডেক অ্যাডাপ্টার ফ্যাক্টরি অ্যাক্সেস করতে পারে এবং তাদের তৈরি করাMediaCodecRenderer
দৃষ্টান্তগুলিতে এটি পাস করতে পারে। - ICY হেডার ফিল্ডের
name
এবংgenre
যথাক্রমেMediaMetadata.station
এবংMediaMetadata.genre
এ প্রচার করুন যাতে তারাPlayer.Listener.onMediaMetadataChanged()
( #9677 ) এর মাধ্যমে অ্যাপে পৌঁছায়। -
DefaultHttpDataSource#getResponseHeaders
থেকে নাল কীগুলি সরান। - একটি
MediaCodec
দৃষ্টান্ত তৈরি করতে ব্যর্থ হলে ঘুমান এবং পুনরায় চেষ্টা করুন। এটি একটি সমস্যাকে ঘিরে কাজ করে যা কিছু ডিভাইসে একটি সুরক্ষিত কোডেক থেকে অন্য কোডেকে স্যুইচ করার সময় ঘটে ( #8696 )। -
MediaCodecAdapter.getMetrics()
যোগ করুন যাতে ব্যবহারকারীরাMediaCodec
থেকে মেট্রিক্স ডেটা পেতে পারেন। ( #9766 )। - Maven নির্ভরতা রেজোলিউশন ( #8353 ) ঠিক করুন।
- লাইভ স্ট্রিমগুলির জন্য স্বয়ংক্রিয় গতির সামঞ্জস্য অক্ষম করুন যাতে কম লেটেন্সি বৈশিষ্ট্য নেই বা গতি সেট করার জন্য ব্যবহারকারীর অনুরোধ নেই ( #9329 )।
-
DecoderCounters#inputBufferCount
queuedInputBufferCount
এ পুনঃনামকরণ করুন। -
SimpleExoPlayer.renderers
ব্যক্তিগত করুন। RenderersExoPlayer.getRenderer
এর মাধ্যমে অ্যাক্সেস করা যেতে পারে। -
Player.EventFlags
এ মানগুলি মেলানোর জন্য কিছুAnalyticsListener.EventFlags
ধ্রুবক মান আপডেট করা হয়েছে। -
AnalyticsCollector
একটি ইন্টারফেসে বিভক্ত করুন এবং ডিফল্ট বাস্তবায়নে এটিকে R8 দ্বারা ছিনিয়ে নেওয়ার অনুমতি দিতে যদি কোনো অ্যাপের প্রয়োজন না হয়।
- সুরক্ষিত পদ্ধতি যোগ করুন
- ট্র্যাক নির্বাচন:
- ট্র্যাক নির্বাচনে ( #9402 ) পছন্দের ভিডিও রোল পতাকা সমর্থন করে।
- অভিযোজনের জন্য একাধিক ভিডিও ট্র্যাক নির্বাচন করার সময় পছন্দের MIME প্রকার এবং ভূমিকা ফ্ল্যাগগুলি গ্রহণ করতে ভিডিও ট্র্যাক নির্বাচন যুক্তি আপডেট করুন ( #9519 )।
- ভিডিও এবং অডিও ট্র্যাক নির্বাচন লজিক আপডেট করুন শুধুমাত্র অভিযোজিত নির্বাচনের জন্য ফরম্যাট বেছে নিতে যাতে একই স্তরের ডিকোডার এবং হার্ডওয়্যার সমর্থন রয়েছে ( #9565 )।
- একাধিক কোডেক প্রাইমারি, হার্ডওয়্যার-এক্সিলারেটেড ডিকোডার ( #4835 ) দ্বারা সমর্থিত হলে আরও দক্ষ কোডেক পছন্দ করতে ভিডিও ট্র্যাক নির্বাচন লজিক আপডেট করুন।
- প্রযুক্তিগত ট্র্যাক নির্বাচনের সীমাবদ্ধতার (উদাহরণস্বরূপ, পছন্দের MIME প্রকার, বা সর্বাধিক চ্যানেল গণনা) থেকে অডিও বিষয়বস্তু পছন্দগুলি (উদাহরণস্বরূপ, "ডিফল্ট" অডিও ট্র্যাক বা সিস্টেম লোকেল ভাষার সাথে মিলে যাওয়া একটি ট্র্যাক)।
- ট্র্যাক নির্বাচনের সমস্যাটি ঠিক করুন যেখানে একটি ট্র্যাক গ্রুপকে ওভাররাইড করা একই ধরণের অন্যান্য ট্র্যাক গ্রুপগুলিকে নিষ্ক্রিয় করে না ( #9675 )।
- ট্র্যাক নির্বাচনের সমস্যাটি ঠিক করুন যেখানে অ-খালি এবং খালি ট্র্যাক ওভাররাইডের মিশ্রণ সঠিকভাবে প্রয়োগ করা হয়নি ( #9649 )।
- একটি
TrackGroupArray
এ ডুপ্লিকেটTrackGroup
নিষিদ্ধ করুন।TrackGroup
গুলিকে সর্বদাTrackGroup
কনস্ট্রাক্টরে একটিid
সেট করে আলাদা করা যায়। একটি সক্রিয় ট্র্যাক ওভাররাইড ( #9718 ) সহ অ্যাপটিকে ব্যাকগ্রাউন্ড করার পরে প্লেব্যাক পুনরায় শুরু করার সময় এটি একটি ক্র্যাশ সংশোধন করে। - প্লেব্যাক লাইভ প্রান্তের খুব কাছাকাছি হলেও পর্যাপ্ত নেটওয়ার্ক ব্যান্ডউইথের অধীনে একটি গুণমান বৃদ্ধির অনুমতি দেওয়ার জন্য
AdaptiveTrackSelection
যুক্তি সংশোধন করুন ( #9784 )।
- ভিডিও:
- প্রয়োজনে একটি সামঞ্জস্যপূর্ণ H264/H265 ডিকোডার ব্যবহার করতে ডলবি ভিশনের জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন।
- অডিও:
- প্রয়োজনে একটি সামঞ্জস্যপূর্ণ E-AC3 ডিকোডার ব্যবহার করতে ডলবি অ্যাটমস (E-AC3-JOC) এর জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন৷
-
AudioCapabilities
এপিআই পরিবর্তন করুন যাতেAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
স্পষ্টভাবে পাস করার প্রয়োজন হয়৷ DEFAULT_AUDIO_CAPABILITIES এর পরিবর্তেnull
৷ - Allow customization of the
AudioTrack
buffer size calculation by injecting anAudioTrackBufferSizeProvider
toDefaultAudioSink
. ( #8891 ). - Retry
AudioTrack
creation if the requested buffer size was > 1MB. ( #9712 ).
- নিষ্কাশনকারী:
- পাঠ্য:
- DRM:
- DrmSessionManager থেকে
playbackLooper
সরানDrmSessionManager.(pre)acquireSession
। যখন একটি কাস্টমMediaSource
একটি অ্যাপ্লিকেশন দ্বারা একটিDrmSessionManager
ব্যবহার করা হয়, তখনplaybackLooper
পরিবর্তেDrmSessionManager.setPlayer
এ পাস করতে হবে৷
- DrmSessionManager থেকে
- বিজ্ঞাপন প্লেব্যাক / IMA:
- IMA ডায়নামিক অ্যাড ইনসার্শন (DAI) ( #8213 ) এর জন্য সমর্থন যোগ করুন।
- একটি বিজ্ঞাপন গোষ্ঠী পুনরায় সেট করার অনুমতি দেওয়ার জন্য
AdPlaybackState
এ একটি পদ্ধতি যুক্ত করুন যাতে এটি আবার চালানো যায় ( #9615 )। - বিজ্ঞাপন প্লেব্যাকের সময় প্লেব্যাকের গতি 1.0 প্রয়োগ করুন ( #9018 )।
- সমস্যাটি ঠিক করুন যেখানে একটি বিজ্ঞাপন গোষ্ঠী লোড করতে ব্যর্থ হয়েছে যা তাৎক্ষণিক প্লেব্যাক রিসেট করেছে ( #9929 )।
- UI:
- ড্যাশ:
-
Representation
পার্স করা অপরিহার্য এবং সম্পূরক বৈশিষ্ট্য যোগ করুন ( #9579 )। -
forced-subtitle
ট্র্যাক ভূমিকা সমর্থন করুন ( #9727 )। -
C.SELECTION_FLAG_DEFAULT
হিসাবেmain
ট্র্যাক ভূমিকাকে ব্যাখ্যা করা বন্ধ করুন। - DVB নেমস্পেস ( #9856 ) ঘোষণা করে না এমন ম্যানিফেস্টের জন্য বেস ইউআরএল এক্সক্লুশন লজিক ঠিক করুন।
- আপেক্ষিক
MPD.Location
অবস্থান ইউআরএল ( #9939 ) সমর্থন করুন।
-
- HLS:
- শুধুমাত্র অডিও HLS স্ট্রিমগুলির জন্য
Format.label
সঠিকভাবে পূরণ করুন ( #9608 )। - স্টার্ট আপের সময় উন্নত করতে ডিফল্টরূপে খণ্ডহীন প্রস্তুতি ব্যবহার করুন। যদি আপনার উপস্থাপনায় মিক্সড ক্লোজড-ক্যাপশন ট্র্যাক থাকে যা মাস্টার প্লেলিস্টে ঘোষিত না হয়, তাহলে আপনাকে প্লেব্যাকের জন্য উপলব্ধ হতে মাস্টার প্লেলিস্টে যোগ করতে হবে, অথবা
HlsMediaSource.Factory.setAllowChunklessPreparation(false)
দিয়ে খণ্ডহীন প্রস্তুতি বন্ধ করতে হবে। - HLS ( #2882 ) এ কী-ফ্রেম নির্ভুল খোঁজার সমর্থন করুন।
- শুধুমাত্র অডিও HLS স্ট্রিমগুলির জন্য
- RTSP:
- যেকোনো সার্ভার সংযোগের জন্য ব্যবহৃত
SocketFactory
ওভাররাইড করতে একটি ক্লায়েন্ট API প্রদান করুন ( #9606 )। - যদি উভয়ই উপস্থিত থাকে তবে BASIC এর চেয়ে DIGEST প্রমাণীকরণ পদ্ধতি পছন্দ করুন ( #9800 )।
- RTSP ট্র্যাক টাইমিং উপলব্ধ না হলে হ্যান্ডেল করুন ( #9775 )।
- অবৈধ RTP-তথ্য হেডার মান উপেক্ষা করুন ( #9619 )।
- যেকোনো সার্ভার সংযোগের জন্য ব্যবহৃত
- ট্রান্সফরমার:
- প্রয়োজনীয় সর্বনিম্ন API সংস্করণ 21-এ বৃদ্ধি করুন।
-
TransformationException
এখন ট্রান্সফর্মেশনের সময় ঘটে যাওয়া ত্রুটি বর্ণনা করতে ব্যবহৃত হয়। - রূপান্তর বিকল্পগুলি নির্দিষ্ট করার জন্য
TransformationRequest
যোগ করুন। - একাধিক শ্রোতাদের নিবন্ধন করার অনুমতি দিন।
- কোডেক আউটপুট আংশিকভাবে পড়া হলে ট্রান্সফরমার আটকে যাওয়া ঠিক করুন।
- Muxer থ্রো রিলিজ করার সময়
Transformer.getProgress
এ সম্ভাব্য NPE ঠিক করুন। - রূপান্তর প্রয়োগের জন্য একটি ডেমো অ্যাপ যোগ করুন।
- মিডিয়া সেশন এক্সটেনশন:
- ডিফল্টরূপে,
MediaSessionConnector
এখন স্টপে প্লেলিস্ট সাফ করে। যে অ্যাপগুলি প্লেলিস্টটিকে ধরে রাখতে চায় তারা সংযোগকারীতেsetClearMediaItemsOnStop(false)
কল করতে পারে৷
- ডিফল্টরূপে,
- কাস্ট এক্সটেনশন:
- FFmpeg এক্সটেনশন:
-
build_ffmpeg.sh
কে GNU এর পরিবর্তে LLVM এর বিন ইউটিলসের উপর নির্ভর করুন ( #9933 )।
-
- অ্যান্ড্রয়েড 12 সামঞ্জস্যতা:
-
com.google.android.gms:play-services-cast-framework:20.1.0
এর উপর নির্ভর করতে কাস্ট এক্সটেনশন আপগ্রেড করুন।play-services-cast-framework
আগের সংস্করণগুলি অ্যান্ড্রয়েড 12 টার্গেট করা অ্যাপগুলির সাথে সামঞ্জস্যপূর্ণ নয় এবংPendingIntent
s ( #9528 ) তৈরি করার সময় একটিIllegalArgumentException
এর সাথে ক্র্যাশ হবে৷
-
- অপ্রচলিত চিহ্নগুলি সরান:
-
Player.EventListener
সরান। পরিবর্তেPlayer.Listener
ব্যবহার করুন। - Remove
MediaSourceFactory#setDrmSessionManager
,MediaSourceFactory#setDrmHttpDataSourceFactory
, andMediaSourceFactory#setDrmUserAgent
. UseMediaSourceFactory#setDrmSessionManagerProvider
instead. - Remove
MediaSourceFactory#setStreamKeys
. UseMediaItem.Builder#setStreamKeys
instead. - Remove
MediaSourceFactory#createMediaSource(Uri)
. UseMediaSourceFactory#createMediaSource(MediaItem)
instead. -
DashMediaSource
,HlsMediaSource
এবংSsMediaSource
থেকেsetTag
সরান। UseMediaItem.Builder#setTag
instead. - Remove
DashMediaSource#setLivePresentationDelayMs(long, boolean)
. UseMediaItem.Builder#setLiveConfiguration
andMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
to override the manifest, orDashMediaSource#setFallbackTargetLiveOffsetMs
to provide a fallback value. - সরান
(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
। থ্রেড প্রয়োগ থেকে অপ্ট আউট করা আর সম্ভব নয়৷ -
ActionFile
এবংActionFileUpgradeUtil
সরান।DefaultDownloadIndex
এ লিগ্যাসি অ্যাকশন ফাইল মার্জ করতেActionFileUpgradeUtil
ব্যবহার করতে ExoPlayer 2.16.1 বা তার আগে ব্যবহার করুন। - Remove
ProgressiveMediaSource#setExtractorsFactory
. পরিবর্তেProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
কনস্ট্রাক্টর ব্যবহার করুন। - Remove
ProgressiveMediaSource.Factory#setTag
and, andProgressiveMediaSource.Factory#setCustomCacheKey
. UseMediaItem.Builder#setTag
andMediaItem.Builder#setCustomCacheKey
instead. -
DefaultRenderersFactory(Context, @ExtensionRendererMode int)
এবংDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
কনস্ট্রাক্টরগুলি সরান৷ Use theDefaultRenderersFactory(Context)
constructor,DefaultRenderersFactory#setExtensionRendererMode
, andDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
instead. - সমস্ত পাবলিক
CronetDataSource
কনস্ট্রাক্টর সরান। পরিবর্তেCronetDataSource.Factory
ব্যবহার করুন।
-
- নিম্নলিখিত
IntDefs
শুধুমাত্র@Target(TYPE_USE)
এ পরিবর্তন করুন। এটি কোটলিনে ব্যবহারের সংকলনকে ভেঙে ফেলতে পারে, যেটি টাইপ (Int
) টীকা করার জন্য টীকাটি সরানোর মাধ্যমে ঠিক করা যেতে পারে।-
@AacAudioObjectType
-
@Ac3Util.SyncFrameInfo.StreamType
-
@AdLoadException.Type
-
@AdtsExtractor.Flags
-
@AmrExtractor.Flags
-
@AspectRatioFrameLayout.ResizeMode
-
@AudioFocusManager.PlayerCommand
-
@AudioSink.SinkFormatSupport
-
@BinarySearchSeeker.TimestampSearchResult.Type
-
@BufferReplacementMode
-
@C.BufferFlags
-
@C.ColorRange
-
@C.ColorSpace
-
@C.ColorTransfer
-
@C.CryptoMode
-
@C.Encoding
-
@C.PcmEncoding
-
@C.Projection
-
@C.SelectionReason
-
@C.StereoMode
-
@C.VideoOutputMode
-
@CacheDataSource.Flags
-
@CaptionStyleCompat.EdgeType
-
@DataSpec.Flags
-
@DataSpec.HttpMethods
-
@DecoderDiscardReasons
-
@DecoderReuseResult
-
@DefaultAudioSink.OutputMode
-
@DefaultDrmSessionManager.Mode
-
@DefaultTrackSelector.SelectionEligibility
-
@DefaultTsPayloadReaderFactory.Flags
-
@EGLSurfaceTexture.SecureMode
-
@EbmlProcessor.ElementType
-
@ExoMediaDrm.KeyRequest.RequestType
-
@ExtensionRendererMode
-
@Extractor.ReadResult
-
@FileTypes.Type
-
@FlacExtractor.Flags
(com.google.android.exoplayer2.ext.flac
প্যাকেজে) -
@FlacExtractor.Flags
(com.google.android.exoplayer2.extractor.flac
প্যাকেজে) -
@FragmentedMp4Extractor.Flags
-
@HlsMediaPlaylist.PlaylistType
-
@HttpDataSourceException.Type
-
@IllegalClippingException.Reason
-
@IllegalMergeException.Reason
-
@LoadErrorHandlingPolicy.FallbackType
-
@MatroskaExtractor.Flags
-
@Mp3Extractor.Flags
-
@Mp4Extractor.Flags
-
@NotificationUtil.Importance
-
@PlaybackException.FieldNumber
-
@PlayerNotificationManager.Priority
-
@PlayerNotificationManager.Visibility
-
@PlayerView.ShowBuffering
-
@Renderer.State
-
@RendererCapabilities.AdaptiveSupport
-
@RendererCapabilities.Capabilities
-
@RendererCapabilities.DecoderSupport
-
@RendererCapabilities.FormatSupport
-
@RendererCapabilities.HardwareAccelerationSupport
-
@RendererCapabilities.TunnelingSupport
-
@SampleStream.ReadDataResult
-
@SampleStream.ReadFlags
-
@StyledPlayerView.ShowBuffering
-
@SubtitleView.ViewType
-
@TextAnnotation.Position
-
@TextEmphasisSpan.MarkFill
-
@TextEmphasisSpan.MarkShape
-
@Track.Transformation
-
@TrackOutput.SampleDataPart
-
@Transformer.ProgressState
-
@TsExtractor.Mode
-
@TsPayloadReader.Flags
-
@WebvttCssStyle.FontSizeUnit
-
সংস্করণ 1.0.0-alpha01
27 অক্টোবর, 2021
androidx.media3:media3-*:1.0.0-alpha01
is released. সংস্করণ 1.0.0-alpha01-এ এই কমিট রয়েছে।
নতুন বৈশিষ্ট্য
Media3 is the new home for media support libraries, including ExoPlayer. The first alpha contains early, functional implementations of libraries for implementing media use cases, including:
- ExoPlayer, an application-level media player for Android that is easy to customize and extend.
- Media session functionality, for exposing and controlling playbacks. This new session module uses the same
Player
interface as ExoPlayer. - UI components for building media playback user interfaces.
- Modules wrapping functionality in other libraries for use with ExoPlayer, for example, ad insertion via the IMA SDK.
For more information, see the Media3 GitHub project .
ExoPlayer was previously hosted in a separate ExoPlayer GitHub project . In Media3 its package name is androidx.media3.exoplayer
. We plan to continue to maintain and release the ExoPlayer GitHub project for a while to give apps time to migrate to Media3. Media3 has replacements for all the ExoPlayer modules, except for the legacy media2 and mediasession extensions, which are replaced by the new media3-session
module. This provides direct integration between players and media sessions without needing to use an adapter/connector class.