মিডিয়া3
সর্বশেষ আপডেট | স্থিতিশীল রিলিজ | প্রার্থী মুক্তি | বিটা রিলিজ | আলফা রিলিজ |
---|---|---|---|---|
নভেম্বর 27, 2024 | 1.5.0 | - | - | - |
নির্ভরতা ঘোষণা করা
Media3 এর উপর নির্ভরতা যোগ করতে, আপনাকে অবশ্যই আপনার প্রকল্পে Google Maven সংগ্রহস্থল যোগ করতে হবে। আরও তথ্যের জন্য Google এর Maven সংগ্রহস্থল পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle
ফাইলে আপনার প্রয়োজনীয় আর্টিফ্যাক্টগুলির জন্য নির্ভরতা যোগ করুন:
Groovy
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" }
Kotlin
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.5
সংস্করণ 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-rc02
নভেম্বর 19, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-rc01
13 নভেম্বর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-beta01
30 অক্টোবর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.5.0-alpha01
10 সেপ্টেম্বর, 2024
1.5.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0
সংস্করণ 1.4.1
আগস্ট 27, 2024
androidx.media3:media3-*:1.4.1
প্রকাশিত হয়েছে। সংস্করণ 1.4.1-এ এই কমিটগুলি রয়েছে।
- এক্সো প্লেয়ার:
- নিষ্কাশনকারী:
- MP3: একটি
Info
ফ্রেমের দৈর্ঘ্য ক্ষেত্রের উপর ভিত্তি করে অনুগামী নন-MP3 ডেটা সঠিকভাবে উপেক্ষা করেSearched too many bytes
ত্রুটি ঠিক করুন ( #1480 )।
- MP3: একটি
- পাঠ্য:
- TTML: শতকরা
tts:fontSize
মানগুলির হ্যান্ডলিং ঠিক করুন যাতে তারা শতাংশtts:fontSize
মান সহ প্যারেন্ট নোড থেকে সঠিকভাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। -
LegacySubtitleUtil
এIndexOutOfBoundsException
ঠিক করুন কারণ অনুরোধ করা আউটপুট শুরুর সময়টিSubtitle
( #1516 ) চূড়ান্ত ইভেন্ট সময়ের চেয়ে বেশি বা সমান হওয়ার ক্ষেত্রে ভুলভাবে পরিচালনা করা হয়েছে।
- TTML: শতকরা
- DRM:
-
android.media.MediaCodec$CryptoException: Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE
এপিআই 31+ ডিভাইসে L1 ওয়াইডিভাইন সামগ্রী চালাতে ত্রুটি। ফ্রেমওয়ার্কMediaDrm.requiresSecureDecoder
পদ্ধতি ( #1603 ) এর একটি অসম্পূর্ণ বাস্তবায়নের কারণে এই ত্রুটিটি ঘটেছে।
-
- প্রভাব:
-
GlObjectsProvider
এ একটিrelease()
পদ্ধতি যোগ করুন।
-
- অধিবেশন:
-
KEYCODE_HEADSETHOOK
এর একটি ডবল-ট্যাপকে 'পরবর্তীতে অনুসন্ধান করুন' অ্যাকশনে রূপান্তর করুন, যেমন নথিভুক্ত ( #1493 )। -
ForegroundServiceDidNotStartInTimeException
( #1581 ) এড়াতে এটিকে উপেক্ষা করার সিদ্ধান্ত নেওয়ার সময়KEYCODE_HEADSETHOOK
MediaButtonReceiver
এ একটি 'play' কমান্ড হিসাবে পরিচালনা করুন।
-
- RTSP এক্সটেনশন:
- SDP পার্সিং ( #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
ব্যবহার করে যা UI-তে একটি আইটেমের সূচক নির্দেশ করে৷ - একাধিক প্লেয়ারকে সমর্থন করার জন্য
LoadControl
বাস্তবায়ন সক্ষম করতেLoadControl
বেশিরভাগ পদ্ধতিতেPlayerId
যোগ করুন। -
Buffer.isDecodeOnly()
এবংC.BUFFER_FLAG_DECODE_ONLY
সরান। রেন্ডারার এবং ডিকোডাররা টাইমস্ট্যাম্পের উপর ভিত্তি করে বাফারগুলি এড়িয়ে যাওয়ার সিদ্ধান্ত নেবে বলে এই পতাকা সেট করার দরকার নেই৷ একটি নমুনা দেখানো হবে কিনা তা নির্ধারণ করতে কাস্টমRenderer
বাস্তবায়নের বাফার সময় অন্ততBaseRenderer.getLastResetPositionUs()
কিনা তা পরীক্ষা করা উচিত। কাস্টমSimpleDecoder
বাস্তবায়ন যদি প্রয়োজন হয় তাহলেisAtLeastOutputStartTimeUs()
চেক করতে পারে বা অন্য বাফারগুলিকে এড়িয়ে যেতেDecoderOutputBuffer.shouldBeSkipped
দিয়ে চিহ্নিত করতে পারে। -
TargetPreloadStatusControl.getTargetPreloadStatus(T)
দ্বারা একটি নাল মান ফেরত দেওয়ার অনুমতি দিন যাতে প্রদত্তrankingData
সাথে একটিMediaSource
প্রিলোড না করা যায়। -
BasePreloadManager
এremove(MediaSource)
যোগ করুন। - প্রিলোড ম্যানেজার ইনস্ট্যান্স রাখার সময় সমস্ত হোল্ডিং সোর্স প্রকাশ করতে
BasePreloadManager
এreset()
যোগ করুন। -
PriorityTaskManager
এবং API 35 থেকে MediaCodec গুরুত্বের জন্য ব্যবহৃত অগ্রাধিকার মান নির্ধারণ করতেExoPlayer.setPriority()
(এবংBuilder.setPriority()
) যোগ করুন। - CMCD ( #1124 ) তে ভুল
bs
(বাফার স্টারভেশন) কী এর ফলে শেষ রিবাফার টাইম আপডেট করার সমস্যার সমাধান করুন। - উৎসটি শেষ পর্যন্ত লোড হয়েছে তা বোঝাতে
PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource)
যোগ করুন। এটিDefaultPreloadManager
এবং কাস্টমPreloadMediaSource.PreloadControl
বাস্তবায়নকে পরবর্তী সোর্স প্রিলোড করতে বা অন্যান্য পদক্ষেপ নেওয়ার অনুমতি দেয়৷ - বাগ ঠিক করুন যেখানে আইটেমগুলির শেষে নীরবতা এড়িয়ে যাওয়া একটি প্লেব্যাক ব্যতিক্রম ট্রিগার করতে পারে৷
- প্রিলোডিং পিরিয়ড বাতিল করতে
PreloadMediaSource
এclear
যোগ করুন। - নতুন ত্রুটি কোড যোগ করুন
PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED
যেটি ব্যবহার করা হয় যখন কোডেক সংস্থানগুলি উচ্চ অগ্রাধিকারমূলক কাজের জন্য পুনরুদ্ধার করা হয়৷ - প্রাথমিক বিষয়বস্তু মিডিয়া প্রস্তুতি সম্পূর্ণ হওয়ার আগে
AdsMediaSource
প্রিরোল বিজ্ঞাপন লোড করতে দিন ( #1358 )। - মূল পিরিয়ডটি ইতিমধ্যেই ম্যানিফেস্ট থেকে মুছে ফেলার পরে একটি মাল্টি-পিরিয়ড DASH লাইভ স্ট্রিম পুনরায় প্রস্তুত করার সময় প্লেব্যাক
STATE_ENDED
এ সরানো হয়েছে এমন ত্রুটির সমাধান করুন৷ -
PreloadMediaSource.PreloadControl
এonTimelineRefreshed()
onSourcePrepared()
এবংonPrepared()
onTracksSelected()
এ পুনঃনামকরণ করুন। এছাড়াওDefaultPreloadManager.Stage
এ IntDef-এর নাম পরিবর্তন করুন। - CPU ওয়েক-সাইকেলের সাথে কাজকে আরও ভালোভাবে সারিবদ্ধ করতে এবং রেন্ডারাররা যখন অগ্রগতি করতে পারে তখন জেগে উঠতে বিলম্ব করতে ডায়নামিক শিডিউলিংয়ের জন্য পরীক্ষামূলক সমর্থন যোগ করুন। আপনার ExoPlayer দৃষ্টান্ত সেট আপ করার সময় আপনি
experimentalSetDynamicSchedulingEnabled()
ব্যবহার করে এটি সক্ষম করতে পারেন। -
Renderer.getDurationToProgressUs()
যোগ করুন। একজনRenderer
এক্সোপ্লেয়ারে ফিরে যাওয়ার জন্য এই পদ্ধতিটি প্রয়োগ করতে পারে যে সময়কাল রেন্ডারারের অগ্রগতির জন্য প্লেব্যাককে অগ্রসর হতে হবে। যদিExoPlayer
experimentalSetDynamicSchedulingEnabled()
দিয়ে সেট করা থাকে তাহলেExoPlayer
তার কাজের টাস্ক শিডিউল করার সময় গণনা করার সময় এই পদ্ধতিটিকে কল করবে। -
MediaCodecAdapter#OnBufferAvailableListener
যোগ করুন যখন ইনপুট এবং আউটপুট বাফারMediaCodecRenderer
দ্বারা ব্যবহারের জন্য উপলব্ধ থাকে তখন সতর্ক করতে। এই কলব্যাকগুলি পাওয়ার সময়MediaCodecRenderer
ExoPlayer
সংকেত দেবে এবংExoPlayer
experimentalSetDynamicSchedulingEnabled()
এর সাথে সেট করা থাকলে, রেন্ডারাররা অগ্রগতি করতে পারে বলেExoPlayer
তার কাজের লুপ নির্ধারণ করবে৷ - পৃথক প্যারামিটারের পরিবর্তে
LoadControl
পদ্ধতির জন্য ডেটা ক্লাস ব্যবহার করুন। -
Exoplayer.release()
কল করা হয়েছে কিনা তা পরীক্ষা করতেExoPlayer.isReleased()
যোগ করুন। -
ExoPlayer.Builder.setMaxSeekToPreviousPositionMs()
যোগ করুন সর্বোচ্চ অবস্থানটি কনফিগার করতে যার জন্যseekToPrevious()
পূর্ববর্তী আইটেমটি ( #1425 ) চায়। - কিছু অডিও ফোকাস অসঙ্গতি ঠিক করুন, যেমন প্লেয়ার পজ করার সময় সম্পূর্ণ বা ক্ষণস্থায়ী ফোকাস ক্ষতির রিপোর্ট না করা ( #1436 )।
- সম্ভাব্য
IndexOutOfBoundsException
ঠিক করুন এক্সট্রাক্টররা প্রাথমিক প্রস্তুতির ধাপের পরে অতিরিক্ত ট্র্যাক রিপোর্ট করার কারণে ( #1476 )। -
ExoPlayer.setVideoEffect()
এরEffects
রেন্ডারার অফসেট সরানো সহ টাইমস্ট্যাম্পগুলি পাবে ( #1098 )। - অন্য প্লেলিস্ট আইটেম ( #1483 ) এ পড়ার সময় প্লেয়ার ত্রুটি পরিচালনা করার সময় সম্ভাব্য
IllegalArgumentException
ঠিক করুন।
-
- ট্রান্সফরমার:
-
ExportResult
এaudioConversionProcess
এবংvideoConversionProcess
যোগ করুন আউটপুট ফাইলে সংশ্লিষ্ট ট্র্যাক কীভাবে তৈরি করা হয়েছে তা নির্দেশ করে। - শিথিল ট্রিম অপ্টিমাইজেশান H.264 স্তর চেক.
- একটি ক্রমানুসারে SDR এবং HDR ইনপুট মিডিয়ার মধ্যে পরিবর্তনের জন্য সমর্থন যোগ করুন।
- রচনা-স্তরের অডিও প্রভাবগুলির জন্য সমর্থন যোগ করুন।
- এইচডিআর ভিডিওতে আল্ট্রা এইচডিআর ছবি ট্রান্সকোড করার জন্য সমর্থন যোগ করুন।
- রিসেট এবং পুনঃব্যবহারের পরে
DefaultAudioMixer
সঠিক পরিমাণ বাইটের আউটপুট না করে এমন সমস্যাটি সমাধান করুন। - একটি ডিকোডার বাগ নিয়ে কাজ করুন যেখানে পিসিএম ইনপুট পরিচালনা করার সময় অডিও চ্যানেলের সংখ্যা স্টেরিওতে সীমাবদ্ধ ছিল।
-
ExoPlayerAssetLoader
এ ট্র্যাক নির্বাচন করার সময়, অডিও চ্যানেল গণনার সীমাবদ্ধতা উপেক্ষা করুন কারণ তারা শুধুমাত্র প্লেব্যাকের জন্য প্রযোজ্য। -
androidx.media3.transformer.Muxer
ইন্টারফেসandroidx.media3.muxer.Muxer
দিয়ে প্রতিস্থাপন করুন এবংandroidx.media3.transformer.Muxer
সরান। - কন্টেন্ট URI স্কিম থেকে HEIC ইমেজ লোডিং ঠিক করুন। ( #1373 )।
- AV সিঙ্ক উন্নত করতে
AudioGraphInput
এ অডিও ট্র্যাকের সময়কাল সামঞ্জস্য করুন। -
ExportResult.processedInputs
ক্ষেত্র সরান। আপনি যদি কোডেক বিবরণের জন্য এই ক্ষেত্রটি ব্যবহার করেন, তাহলে পরিবর্তেDefaultDecoderFactory.listener
ব্যবহার করুন। কোডেক ব্যতিক্রমের ক্ষেত্রে, কোডেক বিবরণExportException.codecInfo
তে পাওয়া যাবে।
-
- নিষ্কাশনকারী:
- MPEG-TS: নমুনা সারিতে একটি স্ট্রীমের শেষ অ্যাক্সেস ইউনিট পাস করে শেষ ফ্রেমটি রেন্ডার করা হয়েছে তা নিশ্চিত করে পরিবর্তনটি এগিয়ে দিন ( #7909 )। শুধুমাত্র I-ফ্রেমে যে সমস্যাগুলি উদ্ভূত হয়েছে সেগুলি সমাধানের জন্য অন্তর্ভুক্ত করা হচ্ছে HLS স্ট্রীম ( #1150 ) এবং H.262 HLS স্ট্রীম ( #1126 )৷
- MP3: অন্তর্নিহিত স্ট্রীম (যেমন ফাইলের আকার, বা HTTP
Content-Length
শিরোনাম) দ্বারা রিপোর্ট করা আকারের চেয়ে একটিInfo
ফ্রেম থেকে ডেটা আকার পছন্দ করুন। এটি ধ্রুবক বিটরেট চাওয়ার গণনা থেকে অ-প্লেযোগ্য ট্রেলার ডেটা (যেমন অ্যালবাম আর্টওয়ার্ক) বাদ দিতে সাহায্য করে, অনুসন্ধানগুলিকে আরও সঠিক করে তোলে ( #1376 )। - MP3:
Info
ফ্রেমে ফ্রেম গণনা এবং অন্যান্য ডেটা ব্যবহার করুন (যদি উপস্থিত থাকে)Info
ফ্রেমের পরে ফ্রেমের বিটরেট থেকে এক্সট্রাপোলেট করার পরিবর্তে একটি গড় বিটরেট গণনা করতে একটি ইনফো ফ্রেমের (যদি থাকে) ব্যবহার করুন, যেমনPCUT
ফ্রেম ( #1376 )। - AVI পাত্রে PCM অডিও ফরম্যাট নিষ্কাশন ঠিক করুন।
- অডিও:
- ডিটিএস ফিক্স করুন: পাসথ্রু প্লেব্যাকের জন্য এক্স প্রোফাইল 2 এনকোডিং বৈশিষ্ট্য ( #1299 )।
- অফলোড করা প্লেব্যাকের জন্য,
AudioTrack.stop()
কল করার আগেDefaultAudioSink
এ স্ট্রীম সমাপ্তির জন্য ট্র্যাকিং ফিল্ড রিসেট করুন যাতেAudioTrack.StreamEventCallback#onPresentationEnded
সঠিকভাবে সনাক্ত করতে পারে যখন সমস্ত মুলতুবি ডেটা চালানো হয়েছে৷ -
SilenceSkippingAudioProcessor
এ বাগ ফিক্স করুন যেখানে বিভিন্ন অডিও ফরম্যাটের মধ্যে পরিবর্তন (উদাহরণস্বরূপ স্টেরিও থেকে মনো) প্রসেসরকে ব্যতিক্রম ঘটাতে পারে ( #1352 )। -
MediaCodecAudioRenderer.getDurationToProgressUs()
প্রয়োগ করুন যাতে ExoPlayer গতিশীলভাবে তার প্রধান কাজের লুপ নির্ধারণ করে কখন MediaCodecAudioRenderer অগ্রগতি করতে পারে।
- ভিডিও:
- মাঝামাঝি প্লেব্যাকের সারফেস স্যুইচ করার সময় যেখানে
Listener.onRenderedFirstFrame()
খুব তাড়াতাড়ি আসে সেই সমস্যার সমাধান করুন। - প্রয়োজনে একটি সামঞ্জস্যপূর্ণ AV1 ডিকোডার ব্যবহার করতে ডলবি ভিশনের জন্য ডিকোডার ফলব্যাক লজিক ঠিক করুন ( #1389 )।
- একটি ভিডিও রেন্ডারার মিড-প্লেব্যাক সক্ষম করার কারণে হতে পারে এমন কোডেক ব্যতিক্রমের সমাধান করুন৷
- মাঝামাঝি প্লেব্যাকের সারফেস স্যুইচ করার সময় যেখানে
- পাঠ্য:
- একটি অনুসন্ধান অবস্থানের আগে শুরু হওয়া সাবটাইটেলগুলি এড়িয়ে যাওয়ার সমস্যাটি ঠিক করুন৷ এই সমস্যাটি শুধুমাত্র Media3 1.4.0-alpha01-এ চালু করা হয়েছে।
- ডিফল্ট সাবটাইটেল পার্সিং আচরণ পরিবর্তন করুন যাতে এটি রেন্ডারিংয়ের পরিবর্তে নিষ্কাশনের সময় ঘটে ( এক্সোপ্লেয়ারের আর্কিটেকচার ডায়াগ্রামটি নিষ্কাশন এবং রেন্ডারিংয়ের মধ্যে পার্থক্যের জন্য দেখুন)।
-
MediaSource.Factory.experimentalParseSubtitlesDuringExtraction(false)
এবংTextRenderer.experimentalSetLegacyDecodingEnabled(true)
উভয় কল করে এই পরিবর্তনটি ওভাররাইড করা যেতে পারে। একটিExoPlayer
উদাহরণে এই উপাদানগুলিকে কীভাবে প্লাম্ব করা যায় তার জন্য কাস্টমাইজেশনের ডক্স দেখুন। এই পদ্ধতিগুলি (এবং লিগ্যাসি সাবটাইটেল ডিকোডিংয়ের জন্য সমস্ত সমর্থন) ভবিষ্যতের রিলিজে সরিয়ে দেওয়া হবে। - কাস্টম
SubtitleDecoder
বাস্তবায়ন সহ অ্যাপগুলিকেSubtitleParser
(এবংSubtitleDecoderFactory
এর পরিবর্তেSubtitleParser.Factory
) বাস্তবায়ন করতে তাদের আপডেট করতে হবে।
-
- PGS: আক্ষরিক রঙের মান ( #1367 ) এর পরিবর্তে, একটি রঙ সূচক হিসাবে
0
সমাধান করতে রান-দৈর্ঘ্য ডিকোডিং ঠিক করুন। - CEA-708:
rowLock
মান উপেক্ষা করুন। CEA-708-E S-2023 স্পেক বলে যেrowLock
এবংcolumnLock
উভয়কেই সত্য বলে ধরে নেওয়া উচিত, স্ট্রীমে উপস্থিত মান নির্বিশেষে (columnLock
সমর্থন বাস্তবায়িত হয় না, তাই এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।- এটি মূলত
1.3.0-alpha01
রিলিজ নোটে অন্তর্ভুক্ত ছিল, কিন্তু পরিবর্তনটি ভুলবশত1.3.0-rc01
রিলিজের আগে ফিরিয়ে দেওয়া হয়েছিল। এটি এখন স্থির করা হয়েছে, তাই পরিবর্তনটি আবার বর্তমান।
- এটি মূলত
- CEA-708: ExoPlayer-এর 'সেট পেন লোকেশন' কমান্ড ( #1315 ) এর নিষ্পাপ হ্যান্ডলিং দ্বারা ডুপ্লিকেট নতুন লাইন যোগ করা এড়িয়ে চলুন।
-
LegacySubtitleUtil
থেকে একটিIllegalArgumentException
ঠিক করুন যখন WebVTT সাবটাইটেল নমুনায় কোন চিহ্ন থাকে না, যেমন একটি DASH স্ট্রীমের অংশ হিসাবে ( #1516 )।
- মেটাডেটা:
- ID3 সাজানোর ট্যাগ থেকে MP4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম সর্ট' (
soal
), 'শিল্পী সাজানো' (soar
) এবং 'অ্যালবাম আর্টিস্ট সর্ট' (soaa
) MP4 ট্যাগগুলিTSO2
,TSOA
এবংTSOP
ID3 ট্যাগে ( #1302 ) ভুলভাবে ম্যাপ করা হয়েছিল৷ - মান এক বাইটের বেশি হলে MP4 (/iTunes) নিউমেরিক
gnre
(genre) এবংtmpo
(টেম্পো) ট্যাগের রিডিং ঠিক করুন। - ID3
TCON
ফ্রেমMediaMetadata.genre
( #1305 ) এ প্রচার করুন।
- ID3 সাজানোর ট্যাগ থেকে MP4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম সর্ট' (
- ছবি:
- নন-স্কোয়ার ড্যাশ থাম্বনেইল গ্রিডের জন্য সমর্থন যোগ করুন ( #1300 )।
- API 34+ এর জন্য AVIF এর জন্য সমর্থন যোগ করুন।
- পূর্বে সেট করা
ImageOutput
সাফ করার জন্যExoPlayer.setImageOutput()
এর প্যারামিটার হিসাবেnull
অনুমতি দিন।
- ডেটা সোর্স:
-
android.resource://package/id
raw resource URI-এর জন্য সমর্থন প্রয়োগ করুন যেখানেpackage
বর্তমান অ্যাপ্লিকেশনের প্যাকেজের থেকে আলাদা। এটি কাজ করার জন্য পূর্বে নথিভুক্ত করা হয়নি, তবে নামের তুলনায় অন্য প্যাকেজে সংস্থান অ্যাক্সেস করার আরও কার্যকর উপায়। -
DataSpec
কনস্ট্রাক্টরগুলিতেurl
অ-শূন্য আছে তা আগ্রহের সাথে চেক করুন। এই প্যারামিটারটি ইতিমধ্যেই নন-নাল বলে টীকা করা হয়েছে। -
ByteArrayDataSource
নির্মাণের সময় হার্ড-কোড করার পরিবর্তেopen()
চলাকালীন একটি বাইট অ্যারেতে একটি URI সমাধান করার অনুমতি দিন ( #1405 )।
-
- DRM:
-
DefaultDrmSessionManagerProvider
( #1271 ) এ একটিLoadErrorHandlingPolicy
সেট করার অনুমতি দিন।
-
- প্রভাব:
-
SpeedChangeEffect
এ একইEditedMediaItem
বাComposition
মধ্যে একাধিক গতি পরিবর্তন সমর্থন করুন। - আল্ট্রা এইচডিআর বিটম্যাপ ইনপুট থেকে HLG এবং PQ আউটপুটের জন্য সমর্থন।
- EGL_GL_COLORSPACE_BT2020_HLG_EXT এর জন্য সমর্থন যোগ করুন, যা ExoPlayer.setVideoEffect এবং ট্রান্সফরমারের ডিবাগ সারফেসভিউতে HLG পৃষ্ঠের আউটপুট উন্নত করে।
-
setOverlayFrameAnchor()
এ প্রয়োগ করা x এবং y মানগুলি ফ্লিপ করে ডকুমেন্টেশনের সাথে সামঞ্জস্যপূর্ণ করতে ওভারলে ম্যাট্রিক্স বাস্তবায়ন আপডেট করুন।OverlaySettings.Builder.setOverlayFrameAnchor()
ব্যবহার করলে, তাদের x এবং y মানগুলিকে-1
দ্বারা গুণ করে ফ্লিপ করুন। -
ExoPlayer#setVideoEffects
( #821 ) এর সাথে ব্যবহার করার সময় যেখানেTimestampWrapper
ক্র্যাশ হয় সেখানে বাগ ঠিক করুন। - ডিফল্ট SDR রঙের কাজের স্থানকে রৈখিক রং থেকে বৈদ্যুতিক BT 709 SDR ভিডিওতে পরিবর্তন করুন। এছাড়াও মূল রঙের স্থান ধরে রাখতে তৃতীয় বিকল্প প্রদান করুন।
- EditedMediaItemSequences ( #1055 ) এর অনির্দিষ্ট z-ক্রম সংজ্ঞায়িত করার অনুমতি দিন।
- HDR বিষয়বস্তুর বিভিন্ন অংশ জুড়ে একটি সামঞ্জস্যপূর্ণ আলোক পরিসর বজায় রাখুন (HLG পরিসর ব্যবহার করে)।
- HDR সামগ্রীতে আল্ট্রা এইচডিআর (বিটম্যাপ) ওভারলেগুলির জন্য সমর্থন যোগ করুন।
- API 26 এর আগে
SeparableConvolution
প্রভাবগুলি ব্যবহার করার অনুমতি দিন। - অব্যবহৃত
OverlaySettings.useHdr
সরান যেহেতু ওভারলে এবং ফ্রেমের গতিশীল পরিসর অবশ্যই মিলবে। -
TextOverlay
এর জন্য HDR সমর্থন যোগ করুন। টেক্সট ওভারলে এর উজ্জ্বলতাOverlaySettings.Builder.setHdrLuminanceMultiplier()
দিয়ে সামঞ্জস্য করা যেতে পারে।
-
- আইএমএ এক্সটেনশন:
- স্থিতিশীল করার জন্য DAI বিজ্ঞাপন স্ট্রীম চালানোর জন্য অ্যাপগুলির জন্য প্রয়োজনীয় API-কে প্রচার করুন।
-
ImaServerSideAdInsertionMediaSource.AdLoader
এreplaceAdTagParameters(Map <String, String>)
যোগ করুন যা রানটাইমে বিজ্ঞাপন ট্যাগ প্যারামিটার প্রতিস্থাপন করতে দেয়। - যেখানে
VideoAdPlayer.VideoAdPlayerCallback.onError()
বলা হয়নি যেখানে বিজ্ঞাপন প্লেব্যাকের সময় প্লেয়ারের ত্রুটি ঘটেছে ( #1334 ) বাগটি ঠিক করুন৷ -
data://
বিজ্ঞাপন ট্যাগ URIs ( #700 ) ব্যবহার করার সময় একটিNullPointerException
ঠিক করতে IMA SDK সংস্করণকে 3.33.0 এ বাম্প করুন৷
- অধিবেশন:
-
CommandButton.enabled
এর ডিফল্টtrue
পরিবর্তন করুন এবং নিশ্চিত করুন যে মানটি কন্ট্রোলারের জন্য মিথ্যা থাকতে পারে এমনকি যদি সংশ্লিষ্ট কমান্ড উপলব্ধ থাকে। -
CommandButton
এর জন্য আইকন ধ্রুবক যোগ করুন যা কাস্টম আইকন সম্পদের পরিবর্তে ব্যবহার করা উচিত। -
onTaskRemoved()
( #1219 ) এ পরিষেবাটি বন্ধ করা দরকার কিনা তা অ্যাপগুলিকে জিজ্ঞাসা করতেMediaSessionService.isPlaybackOngoing()
যোগ করুন। -
MediaSessionService.pauseAllPlayersAndStopSelf()
যোগ করুন যা সুবিধাজনকভাবে সমস্ত সেশনের প্লেব্যাককে বিরতি দিতে এবংMediaSessionService
এর জীবনচক্র বন্ধ করতেstopSelf()
কল করার অনুমতি দেয়৷ - একটি নিরাপদ ডিফল্ট বাস্তবায়ন প্রদান করতে
MediaSessionService.onTaskRemoved(Intent)
ওভাররাইড করুন যা প্লেব্যাক চলমান থাকলে বা অন্যথায় পরিষেবাটি বন্ধ করে দিলে অগ্রভাগে পরিষেবা চালু রাখে। - প্ল্যাটফর্ম সেশন মেটাডেটা ( #1256 ) এ সময়কাল সেট না করে লাইভ স্ট্রিমের জন্য মিডিয়া বিজ্ঞপ্তিতে সিকবার লুকান।
- Media1 এর মতো মেটাডেটা বৈশিষ্ট্য নির্বাচন করার সময় একই পছন্দের ক্রম এবং যুক্তি ব্যবহার করার জন্য
MediaMetadata
এরMediaDescriptionCompat
এ রূপান্তর সারিবদ্ধ করুন। -
MediaSession.sendError()
যুক্ত করুন যা মিডিয়া 3 নিয়ামককে অ-মারাত্মক ত্রুটিগুলি প্রেরণের অনুমতি দেয়। বিজ্ঞপ্তি নিয়ামক ব্যবহার করার সময় ( মিডিয়াসেশনPlaybackState
MediaSession.getMediaNotificationControllerInfo()
- কোনও নির্দিষ্ট নিয়ামকের কাছ থেকে প্লেয়ার ইন্টারঅ্যাকশনগুলির একটি সিরিজ শেষ হলে সেশনগুলি অবহিত করার জন্য
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)।
-
- HLS এক্সটেনশন:
- বাগটি ঠিক করুন যেখানে ইএমএসজি নমুনাগুলি বিচ্ছিন্নতার জন্য অপেক্ষা করা মুলতুবি থাকা নমুনাগুলি
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-আরসি 01
10 জুলাই, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-BETA01
জুন 26, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-আলফা 02
জুন 07, 2024
1.4.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.4.0-আলফা 01
এপ্রিল 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
উইথআউটকেইস দিয়ে অক্ষম করা যেতে পারে।
- ডিফল্টরূপে অবিলম্বে ডিআরএম সামগ্রীতে 'ক্লিয়ার লিড' আনক্রিপ্ট করা নমুনাগুলি খেলুন, এমনকি পরবর্তী এনক্রিপ্ট করা নমুনাগুলির কীগুলি এখনও প্রস্তুত না হলেও। প্লেব্যাকের অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না থাকলে এটি মিড-প্লেব্যাক স্টলগুলির দিকে নিয়ে যেতে পারে (তবে পূর্বে প্লেব্যাক এই মুহুর্তে মোটেও শুরু হত না)। এই আচরণটি
- আইএমএ এক্সটেনশন:
- উপযুক্ত ফাইল এক্সটেনশন ছাড়াই ড্যাশ এবং এইচএলএস বিজ্ঞাপনগুলি যেখানে প্লে করা যায় না সেখানে সমস্যাটি ঠিক করুন।
- অধিবেশন:
- টিভি অ্যাপ্লিকেশনগুলির জন্য ডাবল-ক্লিক সনাক্তকরণ অক্ষম করুন ( #962 )।
- সমস্যাটি সমাধান করুন যেখানে
MediaItem.RequestMetadata
কেবল নন-নাল অতিরিক্ত সহ মিডিয়া কন্ট্রোলার এবং সেশনের মধ্যে সংক্রমণিত হয় না। -
MediaLibrarySession.Builder
কনস্ট্রাক্টর যুক্ত করুন যা কেবলমাত্রMediaLibraryService
পরিবর্তে একটিContext
নেয়।
- HLS এক্সটেনশন:
- প্যাকেজ-বেসরকারী দৃশ্যমানতায়
HlsMediaPeriod
হ্রাস করুন। এই ধরণের এইচএলএস প্যাকেজের বাইরে থেকে সরাসরি নির্ভর করা উচিত নয়। - সমাধান করুন আরও দক্ষতার সাথে একটি বিভাগ শুরু করার চেষ্টা করে ( #1031 )।
- প্যাকেজ-বেসরকারী দৃশ্যমানতায়
- ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
- এমআইডিআই ডিকোডার: সিসেক্স ইভেন্ট বার্তাগুলি উপেক্ষা করুন ( #710 )।
- পরীক্ষা উপযোগিতা:
-
TestPlayerRunHelper.playUntilPosition
প্লেব্যাক বিরতি দেবেন না। পরীক্ষাটি প্লেব্যাককে একটি খেলার অবস্থায় রাখে, তবে পরীক্ষাটি দৃ ser ়তা এবং আরও ক্রিয়া যুক্ত করতে সক্ষম না হওয়া পর্যন্ত অগ্রগতি স্থগিত করে।
-
- ডেমো অ্যাপ:
- শর্ট-ফর্ম সামগ্রী ব্যবহারের ক্ষেত্রে
PreloadMediaSource
ব্যবহারের ডেমো করতে একটি শর্টফর্ম ডেমো মডিউল যুক্ত করুন।
- শর্ট-ফর্ম সামগ্রী ব্যবহারের ক্ষেত্রে
সংস্করণ 1.3.0-আরসি 01
22 ফেব্রুয়ারি, 2024
1.3.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.3.0-BETA01
7 ফেব্রুয়ারি, 2024
1.3.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.3.0-আলফা 01
15 জানুয়ারী, 2024
1.3.0 স্থিতিশীল সংস্করণ ব্যবহার করুন।
সংস্করণ 1.2.0
সংস্করণ 1.2.1
জানুয়ারী 9, 2024
- এক্সো প্লেয়ার:
- ইস্যু ঠিক করুন
min/maxOffset
ম্যানুয়ালLiveConfiguration.min/maxOffset
বাইরে চায়। - ইস্যু করুন যে ওপাস এবং ভোর্বিস চ্যানেল লেআউটগুলি 3, 5, 6, 7 এবং 8 চ্যানেলের ( #8396 ) এর জন্য ভুল।
- একটি লাইভ স্ট্রিমে শূন্য করার পরে ট্র্যাক নির্বাচনগুলি যেখানে ভুলভাবে স্ট্রিমটি তার ডিফল্ট অবস্থানে ( #9347 ) শুরু করতে দিন সেখানে ট্র্যাক নির্বাচনগুলি ঠিক করুন।
-
CmcdData.Factory
নতুন দৃষ্টান্তগুলি যেখানে অংশের উত্স থেকেbufferedDurationUs
জন্য নেতিবাচক মানগুলি গ্রহণ করছে, সেই সমস্যাটি সমাধান করুন, যার ফলে একটিIllegalArgumentException
( #888 ) তৈরি হয়েছিল।
- ইস্যু ঠিক করুন
- ট্রান্সফরমার:
- এমন কোনও সমস্যা নিয়ে কাজ করুন যেখানে উচ্চ অপারেটিং হার নির্ধারণের কারণে এনকোডার কনফিগারেশনের সময় নিক্ষেপ করবে।
- নিষ্কাশনকারী:
- মার্ক মাধ্যমিক (প্লেযোগ্য) এইচইভিসি ট্র্যাকগুলি জেপিইজি মোশন ফটোগুলিতে
ROLE_FLAG_ALTERNATE
হিসাবে তাদের উচ্চতর রেজোলিউশনের কারণে প্লেব্যাকের জন্য স্বয়ংক্রিয়ভাবে নির্বাচিত হওয়া রোধ করতে পারে। - টিএস এইচ 264 স্ট্রিমগুলির জন্য ভুল কীফ্রেম সনাক্তকরণ ঠিক করুন ( #864 )।
- 47721 সেকেন্ডের চেয়ে দীর্ঘ ( #855 ) টিএস স্ট্রিমগুলির সময়কাল অনুমান করুন।
- মার্ক মাধ্যমিক (প্লেযোগ্য) এইচইভিসি ট্র্যাকগুলি জেপিইজি মোশন ফটোগুলিতে
- অডিও:
- একাধিকবার ( #712 ) বলা হয় যখন
SilenceSkippingAudioProcessor
জন্য EOS এর হ্যান্ডলিং ঠিক করুন।
- একাধিকবার ( #712 ) বলা হয় যখন
- ভিডিও:
- Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps AVC streams to be marked as unsupported ( #693 ).
- মেটাডেটা:
- বাগটি ফিক্স করুন যেখানে
MediaMetadata
কেবল উচ্চ-কেস কীগুলি ( #876 ) দিয়ে ভোর্বিস মন্তব্য থেকে জনবহুল ছিল। - খুব বড় আইডি 3 ফ্রেমগুলি পার্স করার সময়
OutOfMemoryError
ধরুন, যার অর্থ প্লেব্যাক পুরোপুরি ব্যর্থ হওয়ার পরিবর্তে ট্যাগ তথ্য ছাড়াই চালিয়ে যেতে পারে।
- বাগটি ফিক্স করুন যেখানে
- DRM:
- স্পিউরিয়াস ক্লিয়ারকি
https://default.url
লাইসেন্স ইউআরএল এর জন্য এপিআই 33+ এর জন্য ওয়ার্কআরাউন্ড প্রসারিত করুন (পূর্বে কেবলমাত্র এপিআই 33 এ প্রয়োগ করা ওয়ার্কআউটআউন্ডটি ঠিক প্রয়োগ করা হয়েছে) ( #837 )। - প্লেয়ারটির সাথে সংযুক্ত কোনও পৃষ্ঠ ছাড়াই এনক্রিপ্ট করা থেকে কনক্রিপ্ট করা থেকে স্যুইচ করার সময়
ERROR_DRM_SESSION_NOT_OPENED
করুন। ত্রুটিটি পরিষ্কার সামগ্রী খেলতে ভুলভাবে একটি সুরক্ষিত ডিকোডার ব্যবহার করার কারণে হয়েছিল।
- স্পিউরিয়াস ক্লিয়ারকি
- অধিবেশন:
-
MediaMetadata.extras
এবংMediaMetadata.extras
MediaMetadataCompat
#756 , #802 ) এMediaMetadataCompat
কাস্টম কী এবং মানগুলি রাখুন। - লিগ্যাসি কন্ট্রোলারদের জন্য ব্রডকাস্টিং
notifyChildrenChanged
ফিক্স করুন ( #644 )। - একটি বাগ ঠিক করুন যেখানে বিজ্ঞপ্তিটির টাইমার যখন কোনও প্রতিবন্ধী
setWhen
জন্য নেতিবাচক সময় নির্ধারণ করা কিছু ডিভাইসে ক্র্যাশ ঘটায় ( #903 )। - যখন প্রথম বিজ্ঞপ্তি আপডেটের জন্য অনুরোধ করা হয় ( #917 ) যখন মিডিয়া বিজ্ঞপ্তি কন্ট্রোলার সংযোগ শেষ না করে তখন
IllegalStateException
ঠিক করুন।
-
- UI:
- ড্যাশ এক্সটেনশন:
- ড্যাশ ম্যানিফেস্টে ডলবির জন্য 5 এর চ্যানেল গণনা হিসাবে "F800" পার্স ( #688 )।
- ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
- কাস্ট এক্সটেনশন:
- কাস্ট ডিভাইসে ( #708 ) মিডিয়া লোড করার সময় অ্যাপ্লিকেশনটি ক্রাশ না করার জন্য একটি
Timeline
তৈরি স্যানিটাইজ করুন।
- কাস্ট ডিভাইসে ( #708 ) মিডিয়া লোড করার সময় অ্যাপ্লিকেশনটি ক্রাশ না করার জন্য একটি
সংস্করণ 1.2.0
15 নভেম্বর, 2023
- সাধারণ গ্রন্থাগার:
-
Log.Logger
ইন্টারফেসের পদ্ধতিগুলিতে একটি@Nullable Throwable
প্যারামিটার যুক্ত করুন। এই পদ্ধতিগুলিরmessage
প্যারামিটারে আর লগকে দেওয়াThrowable
সম্পর্কে কোনও তথ্য নেইLog.{d,i,w,e}()
পদ্ধতিগুলি, সুতরাং বাস্তবায়নগুলি যদি ইচ্ছা হলে এই তথ্যটি ম্যানুয়ালি সংযোজন করতে হবে (সম্ভবতLogger.appendThrowableString(String, Throwable)
)। - কোটলিন সামঞ্জস্যতার সমস্যাটি ঠিক করুন যেখানে বাতিলযোগ্য জেনেরিক টাইপ প্যারামিটার এবং বাতিলযোগ্য অ্যারে উপাদান প্রকারগুলি বাতিলযোগ্য হিসাবে সনাক্ত করা যায় না। উদাহরণগুলি হ'ল
TrackSelectorResult
এবংSimpleDecoder
পদ্ধতি পরামিতি ( #6792 )। - প্লেব্যাক অস্থায়ীভাবে দমন করা হলে (যেমন ক্ষণস্থায়ী অডিও ফোকাস ক্ষতির কারণে) একটি "প্লে" বোতামটি দেখানোর জন্য
Util.shouldShowPlayButton
ডিফল্ট ইউআই এবং বিজ্ঞপ্তি আচরণ পরিবর্তন করুন uld লিগ্যাসি আচরণটিPlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false)
বাMediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false)
( #11213 ) ব্যবহার করে বজায় রাখা যেতে পারে। - আপগ্রেড
androidx.annotation:annotation-experimental
1.3.1
এ। -
Player
ইন্টারফেসেExoPlayer.setAudioAttributes
সরান।
-
- এক্সো প্লেয়ার:
- কেবলমাত্র ডিকোড-কেবলমাত্র নমুনাগুলি সঠিকভাবে সনাক্ত না করার কারণে এসি 4 স্ট্রিমগুলিতে সমস্যাগুলি সন্ধান করুন ( #11000 )।
- অনুপযুক্ত অডিও আউটপুট ডিভাইসগুলিতে প্লেব্যাকের দমন যোগ করুন (যেমন ওয়েয়ার ওএস ডিভাইসে অন্তর্নির্মিত স্পিকার) যখন এই বৈশিষ্ট্যটি
ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput
আউটপুটটির মাধ্যমে সক্ষম করা হয়। প্লেব্যাক দমন কারণটিPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
হিসাবে আপডেট করা হবে Play উপযুক্ত আউটপুট সংযুক্ত থাকলে দমন কারণটি সরানো হবে। -
MediaSource.canUpdateMediaItem
এবংMediaSource.updateMediaItem
যোগ করুনMediaItem
আপডেটগুলিPlayer.replaceMediaItem(s)
মাধ্যমে তৈরির পরে গ্রহণের জন্য। -
Player.replaceMediaItem(s)
( #33 , #9978 ) এর মাধ্যমে লাইব্রেরি দ্বারা সরবরাহিত সমস্তMediaSource
ক্লাসের জন্যMediaItem
আপডেটের অনুমতি দিন। -
MimeTypes.TEXT_EXOPLAYER_CUES
থেকেMimeTypes.APPLICATION_MEDIA3_CUES
3_কুইস করুন। -
PngExtractor
যুক্ত করুন যা একটি নমুনা হিসাবেTrackOutput
একটি সম্পূর্ণ পিএনজি ফাইল প্রেরণ করে এবং পড়তে পারে। -
SequenceableLoader.continueLoading(long)
ইন্টারফেসেSequenceableLoader
ইন্টারফেসেSequenceableLoader.continueLoading(LoadingInfo loadingInfo)
বাড়ান।LoadingInfo
বিদ্যমানplaybackPositionUs
ছাড়াওplaybackSpeed
এবংlastRebufferRealtimeMs
সহ অতিরিক্ত পরামিতি রয়েছে। -
ChunkSource.getNextChunk(long, long, List, ChunkHolder)
বৃদ্ধি করুনChunkSource
ইন্টারফেসেChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
। - সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) লগিংয়ে অতিরিক্ত ক্ষেত্র যুক্ত করুন: বাফার স্টারভেশন (
bs
), ডেডলাইন (dl
), প্লেব্যাক রেট (pr
) এবং স্টার্টআপ (su
) ( #8699 )। - লুমা এবং ক্রোমা বিটডেপথকে
ColorInfo
যুক্ত করুন ( #491 )। - সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) লগিংয়ে অতিরিক্ত ক্ষেত্র যুক্ত করুন: পরবর্তী অবজেক্ট রিকোয়েস্ট (
nor
) এবং পরবর্তী পরিসীমা অনুরোধ (nrr
) ( #8699 )। - ক্যোয়ারী প্যারামিটারগুলি ( #553 ) ব্যবহার করে সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) ডেটা প্রেরণ করতে কার্যকারিতা যুক্ত করুন।
-
ExperimentalBandwidthMeter
( #612 )ConcurrentModificationException
ঠিক করুন। -
CompositeMediaSource.getMediaTimeForChildMediaTime
MediaPeriodId
প্যারামিটার যুক্ত করুন। -
ConcatenatingMediaSource2
2 ( #11226 ) এClippingMediaSource
(এবং পিরিয়ড/উইন্ডো টাইম অফসেট সহ অন্যান্য উত্সগুলি) সমর্থন করুন। - একটি
MediaPeriodId
যুক্তি পেতেBaseRenderer.onStreamChanged()
পরিবর্তন করুন।
- ট্রান্সফরমার:
- চিত্র ইনপুটগুলির জন্য পার্স এক্সিফ রোটেশন ডেটা।
-
TransformationRequest.HdrMode
টীকাটি প্রকার এবং এর সাথে সম্পর্কিত ধ্রুবকগুলি সরান। এর পরিবর্তেComposition.HdrMode
এবং এর সাথে সম্পর্কিত ধ্রুবকগুলি ব্যবহার করুন। - ঘূর্ণন সমস্যাগুলি ঠিক করতে
OverlaySettings
সহজ করুন। -
TimestampIterator
SampleConsumer.queueInputBitmap
frameRate
এবংdurationUs
পরামিতি পরিবর্তিত হয়েছে।
- ট্র্যাক নির্বাচন:
-
DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness
যুক্ত করুন। অ-সামুদ্রিকবিহীন অভিযোজনকে স্পষ্টভাবে মঞ্জুরি দিতে বা বাতিল করতে allowaudiononsaseasteaptivey ডিফল্টটিtrue
বর্তমান আচরণে থাকে।
-
- নিষ্কাশনকারী:
- এমপিইজি-টিএস: নিশ্চিত করুন যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে।
-
rotationDegrees
নির্ধারণ করার সময় টাইপো ঠিক করুন।projectionPosePitch
projectionPoseRoll
( #461 ) এ পরিবর্তিত হয়েছে। - এই ধারণাটি সরান যে
Extractor
উদাহরণগুলি সরাসরিinstanceof
দিয়ে পরিদর্শন করা যেতে পারে। আপনি যদি কোনওExtractor
বাস্তবায়নের বিবরণে রানটাইম অ্যাক্সেস চান তবে আপনাকে প্রথমেExtractor.getUnderlyingInstance
কল করতে হবে get -
BmpExtractor
যুক্ত করুন। -
WebpExtractor
যুক্ত করুন। -
HeifExtractor
যুক্ত করুন। -
Mp4Extractor
কুইকটাইম ক্লাসিক সমর্থন যুক্ত করুন।
- অডিও:
- এমপি 4 এবং ম্যাট্রোস্কায় 24/32-বিট বিগ-এন্ডিয়ান পিসিএম এবং এমপি 4 এ
lpcm
জন্য পার্স পিসিএম এনকোডিংয়ের জন্য সমর্থন যুক্ত করুন। - এমপি 4 এ ভোর্বিস অডিও আহরণের জন্য সমর্থন যুক্ত করুন।
-
AudioSink.getFormatOffloadSupport(Format)
DefaultAudioOffloadSupportProvider
এটি নতুনAudioOffloadSupport
ফিরিয়ে দেয় যাisFormatSupported
,isGaplessSupported
এবংisSpeedChangeSupported
রয়েছে। -
AudioSink.setOffloadMode()
যুক্ত করুন যার মাধ্যমে অডিও সিঙ্কের অফলোড কনফিগারেশনটি কনফিগার করা আছে। ডিফল্ট হ'লAudioSink.OFFLOAD_MODE_DISABLED
। -
TrackSelectionParameters
setAudioOffloadPreference
মাধ্যমে অফলোড সক্ষম করা যেতে পারে। যদি সেট পছন্দটি সক্ষম করতে হয় তবে ডিভাইসটি ফর্ম্যাটটির জন্য অফলোডকে সমর্থন করে এবং ট্র্যাক নির্বাচনটি একটি একক অডিও ট্র্যাক, তবে অডিও অফলোড সক্ষম করা হবে। - যদি
audioOffloadModePreference
AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED
সেট করা থাকে, তবেDefaultTrackSelector
কেবল একটি অডিও ট্র্যাক নির্বাচন করবে এবং কেবলমাত্র যদি সেই ট্র্যাকের ফর্ম্যাটটি অফলোডে সমর্থিত হয়। যদি কোনও অডিও ট্র্যাক অফলোডে সমর্থিত না হয় তবে কোনও ট্র্যাক নির্বাচন করা হবে না। - ট্র্যাক ট্রানজিশনের পরে প্লেব্যাক পজিশন ইস্যুর কারণে প্রাক-এপিআই স্তর 33 যখন অফলোডের জন্য গ্যাপলেস সমর্থন অক্ষম করা।
-
DefaultRenderersFactory.buildAudioSink
পদ্ধতি স্বাক্ষর থেকে প্যারামিটারenableOffload
সরান। - পদ্ধতি
DefaultAudioSink.Builder.setOffloadMode
সরান। - INTDEF মান
DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED
করুন। - অফলোড প্লেব্যাকের সময় ওপাস গ্যাপলেস মেটাডেটার জন্য সমর্থন যুক্ত করুন।
- প্রথম লিখতে ব্যর্থ হলে ( #627 ) অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন।
- অডিও-কেবলমাত্র অডিওলড প্লেব্যাকের জন্য ডিফল্টরূপে অফলোড শিডিয়ুলিং সক্ষম করুন।
-
ExoPlayer.experimentalSetOffloadSchedulingEnabled
মুছুনAudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
-
onExperimentalSleepingForOffloadChanged
onSleepingForOffloadChanged
এবংonExperimentalOffloadedPlayback
onOffloadedPlayback
হিসাবে নামকরণ করা হয়েছে। - একটি অভ্যন্তরীণ
AudioOffloadPreferences
ক্লাসে অডিও অডিও অফলোড মোড সম্পর্কিতTrackSelectionParameters
ইন্টারফেস এবং সংজ্ঞাগুলি সরান। -
AnalyticsListener
,AudioRendererEventListener
এবংAudioSink.Listener
onAudioTrackInitialized
এবংonAudioTrackReleased
কলব্যাকগুলি যুক্ত করুন। - ফিক্স ডিটিএস এক্সপ্রেস অডিও বাফার আন্ডারফ্লো ইস্যু ( #650 )।
- E-AC3-JOC এর জন্য ক্ষমতাগুলি চেক করুন যেখানে বাগটি ঠিক করুন একটি
IllegalArgumentException
( #677 ) ছুড়ে দেয়।
- এমপি 4 এবং ম্যাট্রোস্কায় 24/32-বিট বিগ-এন্ডিয়ান পিসিএম এবং এমপি 4 এ
- ভিডিও:
-
MediaCodecVideoRenderer
একটি কাস্টমVideoFrameProcessor.Factory
ব্যবহার করার অনুমতি দিন। - অডিও স্ট্রিমটি নেতিবাচক টাইমস্ট্যাম্পগুলি ( #291 ) দিয়ে শুরু হলে প্রথম ফ্রেমটি রেন্ডার করা যায় না এমন বাগটি ঠিক করুন।
-
- পাঠ্য:
-
ExoplayerCuesDecoder
সরান।sampleMimeType = application/x-media3-cues
সহ পাঠ্য ট্র্যাকগুলি এখনSubtitleDecoder
উদাহরণের প্রয়োজন ছাড়াই সরাসরিTextRenderer
দ্বারা পরিচালিত হয়।
-
- মেটাডেটা:
-
MetadataDecoder.decode
আর "ডিকোড-কেবল" নমুনার জন্য আর ডাকা হবে না কারণ বাস্তবায়ন অবশ্যই নাল ফিরে আসতে হবে।
-
- প্রভাব:
- টাইমস্ট্যাম্প দ্বারা বিটম্যাপ ইনপুটটি কুইউয়িং বিটম্যাপ ইনপুট
VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>)
যুক্ত করুন। -
VideoFrameProcessor.registerInputStream()
rege অ্যাপ্লিকেশনগুলি অবশ্যইVideoFrameProcessor.Listener#onInputStreamRegistered()
প্রয়োগ করতে হবে। -
VideoFrameProcessor.queueInputBitmap
TimestampIterator
frameRate
এবংdurationUs
প্যারামিটারগুলি পরিবর্তিত হয়েছে।
- টাইমস্ট্যাম্প দ্বারা বিটম্যাপ ইনপুটটি কুইউয়িং বিটম্যাপ ইনপুট
- আইএমএ এক্সটেনশন:
- প্লেলিস্টের প্রথম আইটেম নয় এমন একটি মাল্টি-পিরিয়ড ড্যাশ লাইভ স্ট্রিম যেখানে একটি ব্যতিক্রম ( #571 ) ছুঁড়ে ফেলতে পারে সেখানে বাগটি ঠিক করুন।
-
AdsLoader.destroy()
কল করার আগে স্ট্রিম ম্যানেজারটি প্রকাশ করুন - ইমাম এসডিকে সংস্করণটি 3.31.0 এ বাম্প করুন।
- অধিবেশন:
-
DefaultMediaNotificationProvider
প্রোভাইডারে ( #167 )FOREGROUND_SERVICE_IMMEDIATE
বিজ্ঞপ্তিগুলি অগ্রভাগের পরিষেবা আচরণটি সেট করুন। - স্যামসুং ডিভাইসগুলিতে অবনমিত এপিআইয়ের সমস্যা এড়াতে কেবল
android.media.session.MediaSession.setMediaButtonBroadcastReceiver()
উপরে এপিআই 31 এর উপরে ব্যবহার করুন ( #167 )। - বিজ্ঞপ্তি এবং প্ল্যাটফর্ম সেশনটি পপুলেট করতে ব্যবহৃত কমান্ড এবং কাস্টম লেআউট সেট করতে মিডিয়া বিজ্ঞপ্তি নিয়ামককে প্রক্সি হিসাবে ব্যবহার করুন।
- মিডিয়া বোতামের ইভেন্টগুলি রূপান্তর করুন যা
MediaSessionService.onStartCommand()
দ্বারা প্রাপ্ত মিডিয়া 3 এর মধ্যে তাদের প্ল্যাটফর্ম সেশনে রাউট করার পরিবর্তে এবং মিডিয়া 3 এ ফিরে আসে। এটির সাথে, কলার কন্ট্রোলার সর্বদা মিডিয়া বিজ্ঞপ্তি নিয়ামক এবং অ্যাপ্লিকেশনগুলি সহজেই সমস্ত সমর্থিত এপিআই স্তরে একইভাবে বিজ্ঞপ্তি থেকে আসা কলগুলি স্বীকৃতি দিতে পারে। - বাগটি ফিক্স করুন যেখানে
MediaController.getCurrentPosition()
অগ্রসর হচ্ছে না যখন কোনও উত্তরাধিকারMediaSessionCompat
সাথে সংযুক্ত থাকে। - সুবিধার জন্য
MediaLibrarySession.getSubscribedControllers(mediaId)
- ওভাররাইড
MediaLibrarySession.Callback.onSubscribe()
যার জন্য কন্ট্রোলার সাবস্ক্রাইব করে তার পিতামাতার আইডির প্রাপ্যতা জোর দেওয়ার জন্য। যদি সফল হয় তবে সাবস্ক্রিপশনটি গৃহীতnotifyChildrenChanged()
এবং ব্রাউজারকে অবহিত করার জন্য অবিলম্বে ডাকা হয় ( #561 )। - স্বয়ংচালিত ওএসের জন্য সেশন ডেমো মডিউল যুক্ত করুন এবং অ্যান্ড্রয়েড অটোর জন্য সেশন ডেমো সক্ষম করুন।
- মিডিয়া বিজ্ঞপ্তি নিয়ামকের জন্য
COMMAND_GET_TIMELINE
উপলভ্য না হলে ফ্রেমওয়ার্ক সেশনের সারি সেট করবেন না। ফ্রেমওয়ার্ক সেশন থেকে ক্লায়েন্ট কন্ট্রোলার হিসাবে অ্যান্ড্রয়েড অটো সহ, অ্যান্ড্রয়েড অটো এর ইউআইতেqueue
বোতামটি প্রদর্শিত হবে না ( #339 ) এর প্রভাব রয়েছে। -
SimpleBitmapLoader
পরিবর্তে ডিফল্টরূপেDataSourceBitmapLoader
ব্যবহার করুন ( #271 , #327 )। -
MediaSession.Callback.onMediaButtonEvent(Intent)
যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে ডিফল্ট মিডিয়া বোতাম ইভেন্ট হ্যান্ডলিংকে ওভাররাইড করতে দেয়।
-
- UI:
- একজন
Player.Listener
যুক্ত করুনPlayer.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT
যদি কোনও উপযুক্ত ডিভাইসটি কনফিগারযোগ্য সময়সীমার মধ্যে সংযুক্ত থাকে (ডিফল্ট 5 মিনিট) শ্রোতা প্লেব্যাকটি স্বতঃ-পুনর্বিবেচনা করবে।
- একজন
- ডাউনলোড:
- অ্যান্ড্রয়েড 14 সামঞ্জস্যের জন্য
DownloadService
জন্য "ডেটা সিঙ্ক" ফোরগ্রাউন্ড পরিষেবা প্রকারটি ঘোষণা করুন। এই পরিষেবাটি ব্যবহার করার সময়, অ্যাপ্লিকেশনটিকে ম্যানিফেস্টেforegroundServiceType
হিসাবেdataSync
যুক্ত করতে হবে এবংFOREGROUND_SERVICE_DATA_SYNC
অনুমতি ( #11239 ) যুক্ত করতে হবে।
- অ্যান্ড্রয়েড 14 সামঞ্জস্যের জন্য
- HLS এক্সটেনশন:
- সর্বশেষ লোড সমাপ্ত সময় ( #663 ) এর চেয়ে শেষ লোড শুরুর সময় থেকে গণনা করা একটি ব্যবধান সহ এইচএলএস লাইভ প্লেলিস্টকে রিফ্রেশ করুন।
- ড্যাশ এক্সটেনশন:
- বিভাগের টেম্পলেট ইউআরএলে একই ড্যাশ আইডেন্টিফায়ার একাধিক অনুমতি দিন।
- নিষ্কাশনের সময় সাবটাইটেলগুলি পার্স করার জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন। সাবটাইটেল বিভাগগুলির মধ্যে স্থানান্তরিত করার সময় ফ্লিকারিং সমাধান সহ ওভারল্যাপিং সাবটাইটেলগুলি মার্জ করার জন্য এটি আরও ভাল সমর্থন রয়েছে। আপনি এটি
DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction()
( #288 ) ব্যবহার করে এটি সক্ষম করতে পারেন।
- RTSP এক্সটেনশন:
- টিসিপিতে ফিরে আসার সময় বা কিছু পরিস্থিতিতে ঝুলন্ত প্লেব্যাকের দিকে
IndexOutOfBoundsException
হতে পারে এমন একটি রেসের শর্তটি ঠিক করুন। - আরটিএসপি সেটআপে স্টেটটি পরীক্ষা করুন যখন
RtspMediaPeriod
লোডিং স্টেট ( #577 ) ফেরত দেয়। - Ignore custom Rtsp request methods in Options response public header ( #613 ).
- Use RTSP Setup Response timeout value in time interval of sending keep-alive RTSP Options requests ( #662 ).
- টিসিপিতে ফিরে আসার সময় বা কিছু পরিস্থিতিতে ঝুলন্ত প্লেব্যাকের দিকে
- Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
- Release the MIDI decoder module, which provides support for playback of standard MIDI files using the Jsyn library to synthesize audio.
- Add
DecoderOutputBuffer.shouldBeSkipped
to directly mark output buffers that don't need to be presented. This is preferred 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
Version 1.2.0-rc01
নভেম্বর 1, 2023
Use the 1.2.0 stable version .
Version 1.2.0-beta01
অক্টোবর 19, 2023
Use the 1.2.0 stable version .
Version 1.2.0-alpha02
সেপ্টেম্বর 29, 2023
Use the 1.2.0 stable version .
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: শুধুমাত্র দৃশ্যমান পাঠ্য বিবেচনা করতে কিউ ট্রাঙ্কেশন লজিক পরিবর্তন করুন। পূর্বে ইন্ডেন্ট এবং ট্যাব অফসেট অন্তর্ভুক্ত করা হয়েছিল যখন কিউ দৈর্ঘ্য 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)
-
-
FilteringMediaSource
যোগ করুন যা একটিMediaSource
থেকে উপলব্ধ ট্র্যাক প্রকারগুলিকে ফিল্টার করার অনুমতি দেয়৷ - অভিযোজিত স্ট্রিমিং ফরম্যাট DASH, HLS এবং স্মুথস্ট্রিমিং-এর বহির্গামী অনুরোধগুলিতে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) অন্তর্ভুক্ত করার জন্য সমর্থন যোগ করুন। নিম্নলিখিত ক্ষেত্রগুলি,
br
,bl
,cid
,rtp
, এবংsid
, অন্তর্ভুক্ত করা হয়েছে ( #8699 )। API গঠন এবং API পদ্ধতি:- CMCD লগিং ডিফল্টরূপে অক্ষম থাকে, এটি সক্রিয় করতে
MediaSource.Factory.setCmcdConfigurationFactory(CmcdConfiguration.Factory cmcdConfigurationFactory)
ব্যবহার করুন৷ - সমস্ত কীগুলি ডিফল্টরূপে সক্রিয় থাকে, কোন কীগুলি লগ করা হয়েছে তা ফিল্টার করতে
CmcdConfiguration.RequestConfig.isKeyAllowed(String key)
ওভাররাইড করুন৷ - কাস্টম কী লগিং সক্ষম করতে
CmcdConfiguration.RequestConfig.getCustomData()
ওভাররাইড করুন।
- CMCD লগিং ডিফল্টরূপে অক্ষম থাকে, এটি সক্রিয় করতে
- একটি কাস্টম
*.exolist.json
ফাইল ( #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)
সরান। - একটি বাগ ঠিক করুন যেখানে রূপান্তর আটকে যেতে পারে (মুক্সার টাইমআউটের দিকে নিয়ে যায়) যদি ভিডিও স্ট্রিমের সমাপ্তি মুহুর্তে সিগন্যাল করা হয় যখন একটি ইনপুট ফ্রেম প্রক্রিয়াকরণ মুলতুবি ছিল।
- সমর্থন প্রসারিত করতে
findDecoder/EncoderForFormat
ইউটিলিটিগুলি ব্যবহার করার পরিবর্তেMediaCodecList
এর মাধ্যমে কোডেক অনুসন্ধান করুন। -
DefaultEncoderFactory
বি-ফ্রেম কনফিগারেশন সরান কারণ এটি কিছু ডিভাইসে কাজ করে না।
-
- ট্র্যাক নির্বাচন:
-
DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange
যোগ করুন যা ডিফল্টরূপে অক্ষম থাকে। সক্রিয় করা হলে, রেন্ডারারের ক্ষমতা পরিবর্তিত হলেDefaultTrackSelector
একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে৷
-
- নিষ্কাশনকারী:
- অডিও:
- টানেলিং সক্ষম হলে এবং
AudioProcessors
সক্রিয় থাকাকালীন কিছু প্লেব্যাক ব্যর্থ হলে বাগ ঠিক করুন, যেমন ফাঁকহীন ছাঁটাইয়ের জন্য ( #10847 )। - সরাসরি প্লেব্যাকে (অফলোড) Ogg প্যাকেটে ওপাস ফ্রেমগুলিকে এনক্যাপসুলেট করুন।
- Extrapolate current position during sleep with offload scheduling.
- খেলোয়াড়ের জীবনচক্রের শেষে সংস্থানগুলি প্রকাশ করার জন্য
Renderer.release()
এবংAudioSink.release()
যোগ করুন। -
DefaultAudioSink
এ অডিও ক্ষমতার পরিবর্তনগুলি শুনুন।DefaultAudioSink
এর কনস্ট্রাক্টরে একটি প্রয়োজনীয় প্যারামিটারcontext
যোগ করুন, যার সাহায্যেDefaultAudioSink
AudioCapabilitiesReceiver
এ শ্রোতা হিসাবে নিবন্ধন করবে এবং ক্ষমতা পরিবর্তনের সাথে জানানো হলে তারaudioCapabilities
বৈশিষ্ট্য আপডেট করবে। -
AudioSink.Listener
ইন্টারফেস এবংRendererCapabilities.Listener
যাonRendererCapabilitiesChanged
ইভেন্টগুলিতে ট্রিগার করে একটি নতুন ইন্টারফেস এonAudioCapabilitiesChanged
এ একটি নতুন ইভেন্টের মাধ্যমে অডিও ক্ষমতার পরিবর্তনগুলি প্রচার করুন৷ - অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য
ChannelMixingAudioProcessor
যোগ করুন। - ডিকোডারে নতুন int মান
DISCARD_REASON_AUDIO_BYPASS_POSSIBLE
যোগ করুনDecoderDiscardReasons
অডিও ক্ষমতা পরিবর্তনের পরে বাইপাস মোড সম্ভব হলে অডিও ডিকোডার বাতিল করার কারণ। - 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 এক্সটেনশন:
-
HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long)
যোগ করুন লোডিং থ্রেডেরTimestampAdjuster
শুরু হওয়ার জন্য অপেক্ষা করার জন্য একটি সময়সীমা সেট করতে। যদি টাইমআউটের আগে আরম্ভ করা সম্পূর্ণ না হয়, তাহলে প্লেব্যাকের অন্তহীন স্টল এড়াতে একটিPlaybackException
নিক্ষেপ করা হয়। টাইমআউট ডিফল্টরূপে শূন্য সেট করা হয় ( #323 )।
-
- পরীক্ষা উপযোগিতা:
-
DataSourceContractTest
এ URI স্কিমের ক্ষেত্রে অসংবেদনশীলতা পরীক্ষা করুন।
-
- অপ্রচলিত চিহ্নগুলি সরান:
-
DefaultAudioSink
কনস্ট্রাক্টর সরান, পরিবর্তেDefaultAudioSink.Builder
ব্যবহার করুন। -
HlsMasterPlaylist
সরান, পরিবর্তেHlsMultivariantPlaylist
ব্যবহার করুন। -
Player.stop(boolean)
সরান। UsePlayer.stop()
andPlayer.clearMediaItems()
(ifreset
istrue
) instead. - Remove two deprecated
SimpleCache
constructors, use a non-deprecated constructor that takes aDatabaseProvider
instead for better performance. - Remove
DefaultBandwidthMeter
constructor, useDefaultBandwidthMeter.Builder
instead. - Remove
DefaultDrmSessionManager
constructors, useDefaultDrmSessionManager.Builder
instead. - Remove two deprecated
HttpDataSource.InvalidResponseCodeException
constructors, use a non-deprecated constructor that accepts additional fields(cause
,responseBody
) to enhance error logging. - Remove
DownloadHelper.forProgressive
,DownloadHelper.forHls
,DownloadHelper.forDash
, andDownloadHelper.forSmoothStreaming
, useDownloadHelper.forMediaItem
instead. - Remove deprecated
DownloadService
constructor, use a non deprecated constructor that includes the option to provide achannelDescriptionResourceId
parameter. - Remove deprecated String constants for Charsets (
ASCII_NAME
,UTF8_NAME
,ISO88591_NAME
,UTF16_NAME
andUTF16LE_NAME
), use Kotlin Charsets from thekotlin.text
package, thejava.nio.charset.StandardCharsets
or thecom.google.common.base.Charsets
instead. - Remove deprecated
WorkManagerScheduler
constructor, use a non deprecated constructor that includes the option to provide aContext
parameter instead. - Remove the deprecated methods
createVideoSampleFormat
,createAudioSampleFormat
,createContainerFormat
, andcreateSampleFormat
, which were used to instantiate theFormat
class. Instead useFormat.Builder
for creating instances ofFormat
. - Remove the deprecated methods
copyWithMaxInputSize
,copyWithSubsampleOffsetUs
,copyWithLabel
,copyWithManifestFormatInfo
,copyWithGaplessInfo
,copyWithFrameRate
,copyWithDrmInitData
,copyWithMetadata
,copyWithBitrate
andcopyWithVideoSize
, useFormat.buildUpon()
and setter methods instead. - Remove deprecated
ExoPlayer.retry()
, useprepare()
instead. - Remove deprecated zero-arg
DefaultTrackSelector
constructor, useDefaultTrackSelector(Context)
instead. - Remove deprecated
OfflineLicenseHelper
constructor, useOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
instead. - Remove deprecated
DownloadManager
constructor, use the constructor that takes anExecutor
instead. - Remove deprecated
Cue
constructors, useCue.Builder
instead. - Remove deprecated
OfflineLicenseHelper
constructor, useOfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher)
instead. - Remove four deprecated
AnalyticsListener
methods:-
onDecoderEnabled
, useonAudioEnabled
and/oronVideoEnabled
instead. -
onDecoderInitialized
, useonAudioDecoderInitialized
and/oronVideoDecoderInitialized
instead. -
onDecoderInputFormatChanged
, useonAudioInputFormatChanged
and/oronVideoInputFormatChanged
instead. -
onDecoderDisabled
, useonAudioDisabled
and/oronVideoDisabled
instead.
-
- Remove the deprecated
Player.Listener.onSeekProcessed
andAnalyticsListener.onSeekProcessed
, useonPositionDiscontinuity
withDISCONTINUITY_REASON_SEEK
instead. - Remove
ExoPlayer.setHandleWakeLock(boolean)
, usesetWakeMode(int)
instead. - Remove deprecated
DefaultLoadControl.Builder.createDefaultLoadControl()
, usebuild()
instead. - Remove deprecated
MediaItem.PlaybackProperties
, useMediaItem.LocalConfiguration
instead. Deprecated fieldMediaItem.playbackProperties
is now of typeMediaItem.LocalConfiguration
.
-
Version 1.1.0-rc01
জুন 21, 2023
Use the 1.1.0 stable version .
Version 1.1.0-beta01
7 জুন, 2023
Use the 1.1.0 stable version .
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 :
- মূল গ্রন্থাগার:
-
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 .
- মূল গ্রন্থাগার:
- ডিফল্ট অবস্থানে যাওয়ার সময় লক্ষ্য লাইভ স্ট্রিম ওভাররাইড রিসেট করুন ( #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. Version 1.0.0 contains these commits.
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 .
- মূল গ্রন্থাগার:
- ডাউনলোড:
-
SegmentDownloader
এবং সাবক্লাসে ( #248 ) কনফিগারযোগ্য মার্জ করার জন্য দুটি সেগমেন্টের শুরুর সময়ের সর্বাধিক পার্থক্য করুন।
-
- অডিও:
- ভিডিও:
-
HEVCProfileMain10
এর পরিবর্তে HEVC HDR10 বিন্যাসHEVCProfileMain10HDR10
এ ম্যাপ করুন। - Google TV এবং Lenovo M10 FHD Plus-এর সাথে Chromecast-এ ডিভাইস সংক্রান্ত সমস্যার সমাধান যোগ করুন যার ফলে 60fps AVC স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত হয় ( #10898 )।
- স্ক্রীন রিফ্রেশ রেট থেকে অনেক বেশি ফ্রেম রেট সহ মিডিয়া প্লে করার সময় ফ্রেম রিলিজ কর্মক্ষমতা সমস্যাগুলি ঠিক করুন৷
-
- কাস্ট:
- মিডিয়া আইটেমগুলির মধ্যে স্থানান্তর করার সময় ক্ষণস্থায়ী
STATE_IDLE
ঠিক করুন ( #245 )।
- মিডিয়া আইটেমগুলির মধ্যে স্থানান্তর করার সময় ক্ষণস্থায়ী
- RTSP:
- অবৈধ আরটিএসপির পার্সিংয়ে নিক্ষিপ্ত IllegalArgumentException ধরুন প্রতিক্রিয়া বার্তা বর্ণনা করুন ( #10971 )।
- অধিবেশন:
- Fix a bug where notification play/pause button doesn't update with player state ( #192 ).
- আইএমএ এক্সটেনশন:
- একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই)
LOADED
ইভেন্টটি পাওয়া যায়নি৷
- একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই)
Version 1.0.0-rc01
ফেব্রুয়ারী 16, 2023
androidx.media3:media3-*:1.0.0-rc01
is released. Version 1.0.0-rc01 contains these commits.
This release corresponds to the ExoPlayer 2.18.3 release .
- মূল গ্রন্থাগার:
-
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 .
- মূল গ্রন্থাগার:
- বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে
ExoPlayer.isTunnelingEnabled
যোগ করুন ( #2518 )। - একটি একক
MediaSource
( #7279 ) মোড়ানো সহজ করতেWrappingMediaSource
যোগ করুন। - অপর্যাপ্ত উপলব্ধ মেমরির কারণে প্লেব্যাক আটকে যাওয়ার আগে ব্যাক বাফার বাতিল করুন।
- অফলোড সক্ষম হলে ট্রেসিং "doSomeWork" ব্লকটি বন্ধ করুন৷
- Fix session tracking problem with fast seeks in
PlaybackStatsListener
( #180 ). - একটি একক-আইটেম প্লেলিস্ট ( #10667 ) এ
seekToNext
বাseekToPrevious
কল করার সময় অনুপস্থিতonMediaItemTransition
কলব্যাক পাঠান। -
Player.getSurfaceSize
যোগ করুন যা ভিডিওটি রেন্ডার করা হয়েছে এমন পৃষ্ঠের আকার প্রদান করে। - প্লেয়ার রিলিজের সময় শ্রোতাদের অপসারণ করার ফলে একটি
IllegalStateException
( #10758 ) হতে পারে এমন ত্রুটির সমাধান করুন৷
- বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে
- নির্মাণ:
- সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন
compileSdkVersion
প্রয়োগ করুন ( #10684 )। - অন্য গ্রেডল বিল্ডে অন্তর্ভুক্ত করার সময় প্রকাশনা ব্লক এড়িয়ে চলুন।
- সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন
- ট্র্যাক নির্বাচন:
- ডিসপ্লে সমর্থন না করলে ডলবি ভিশনে অন্যান্য ট্র্যাক পছন্দ করুন। ( #8944 )।
- ডাউনলোড:
- ভিডিও:
- ডলবি ভিশনের বিকল্প ডিকোডার ব্যবহার করে দেখুন যদি ডিসপ্লে সমর্থন না করে। ( #9794 )।
- অডিও:
- একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory ত্রুটি এড়াতে
AudioTrack
দৃষ্টান্ত প্রকাশের জন্যSingleThreadExecutor
ব্যবহার করুন ( #10057 )। - অডিওট্র্যাক অফলোড অবস্থার জন্য
AudioOffloadListener.onExperimentalOffloadedPlayback
যোগ করে। ( #134 ). -
AudioTrackBufferSizeProvider
একটি সর্বজনীন ইন্টারফেস করুন। - Add
ExoPlayer.setPreferredAudioDevice
to set the preferred audio output device ( #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:
- IMA SDK বিজ্ঞাপন লোড করার সময় আটকে যায় এমন ক্ষেত্রে পরিচালনা করতে বিজ্ঞাপনের তথ্য লোড করার সময়সীমা যোগ করুন ( #10510 )।
- বিষয়বস্তুর শেষ পর্যন্ত খোঁজার সময় মিড-রোল বিজ্ঞাপনগুলি এড়িয়ে যাওয়া প্রতিরোধ করুন ( #10685 )।
- সার্ভার-সাইড সন্নিবেশিত বিজ্ঞাপন সহ লাইভ স্ট্রিমগুলির জন্য উইন্ডোর সময়কাল সঠিকভাবে গণনা করুন, উদাহরণস্বরূপ IMA DAI ( #10764 )।
- FFmpeg এক্সটেনশন:
- NDK 23.1.7779620 এবং তার উপরে ( #9933 ) এর সাথে FFmpeg লাইব্রেরি লিঙ্ক করতে নতুন প্রয়োজনীয় পতাকা যুক্ত করুন।
- AV1 এক্সটেনশন:
- সর্বশেষ অ্যান্ড্রয়েড স্টুডিও রিলিজের ( #9933 ) সাথে অসঙ্গতি এড়াতে CMake সংস্করণ আপডেট করুন।
- কাস্ট এক্সটেনশন:
- Implement
getDeviceInfo()
to be able to identifyCastPlayer
when controlling playback with aMediaController
( #142 ).
- Implement
- ট্রান্সফরমার:
- যখন একটি আউটপুট নমুনা তৈরি করা খুব ধীর তা সনাক্ত করতে muxer ওয়াচডগ টাইমার যোগ করুন৷
- অপ্রচলিত চিহ্নগুলি সরান:
- Remove
Transformer.Builder.setOutputMimeType(String)
. এই বৈশিষ্ট্য সরানো হয়েছে. ডিফল্ট মুক্সার ব্যবহার করা হলে MIME প্রকারটি সর্বদা MP4 হবে।
- Remove
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 .
- মূল গ্রন্থাগার:
- নিশ্চিত করুন যে
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
শুনুন।
-
- কাস্ট:
Version 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 .
- মূল গ্রন্থাগার:
-
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
করা হয়েছে। এর মধ্যে রয়েছেPlayer.Listener.onTracksChanged
পদ্ধতির নাম 'আন-অপ্রত্যাশিত', কিন্তু বিভিন্ন ধরনের প্যারামিটার সহ। -
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:
- Add RTP reader for H263 ( #63 ).
- 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)
সরান। UseDefaultTrackSelector(Context, ExoTrackSelection.Factory)
instead. - Remove
Transformer.Builder.setContext
. TheContext
should be passed to theTransformer.Builder
constructor instead.
-
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 .
- অডিও:
- Fix error checking audio capabilities for Dolby Atmos (E-AC3-JOC) in HLS.
- নিষ্কাশনকারী:
- FMP4: Fix issue where emsg sample metadata could be output in the wrong order for streams containing both v0 and v1 emsg atoms ( #9996 ).
- পাঠ্য:
- Fix the interaction of
SingleSampleMediaSource.Factory.setTrackId
andMediaItem.SubtitleConfiguration.Builder.setId
to prioritise theSubtitleConfiguration
field and fall back to theFactory
value if it's not set ( #10016 ).
- Fix the interaction of
- Ad playback:
- Fix audio underruns between ad periods in live HLS SSAI streams.
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 .
- Core Library:
- Add protected method
DefaultRenderersFactory.getCodecAdapterFactory()
so that subclasses ofDefaultRenderersFactory
that overridebuildVideoRenderers()
orbuildAudioRenderers()
can access the codec adapter factory and pass it toMediaCodecRenderer
instances they create. - Propagate ICY header fields
name
andgenre
toMediaMetadata.station
andMediaMetadata.genre
respectively so that they reach the app viaPlayer.Listener.onMediaMetadataChanged()
( #9677 ). - Remove null keys from
DefaultHttpDataSource#getResponseHeaders
. - Sleep and retry when creating a
MediaCodec
instance fails. This works around an issue that occurs on some devices when switching a surface from a secure codec to another codec ( #8696 ). - Add
MediaCodecAdapter.getMetrics()
to allow users obtain metrics data fromMediaCodec
. ( #9766 ). - Fix Maven dependency resolution ( #8353 ).
- Disable automatic speed adjustment for live streams that neither have low-latency features nor a user request setting the speed ( #9329 ).
- Rename
DecoderCounters#inputBufferCount
toqueuedInputBufferCount
. - Make
SimpleExoPlayer.renderers
private. Renderers can be accessed viaExoPlayer.getRenderer
. - Updated some
AnalyticsListener.EventFlags
constant values to match values inPlayer.EventFlags
. - Split
AnalyticsCollector
into an interface and default implementation to allow it to be stripped by R8 if an app doesn't need it.
- Add protected method
- ট্র্যাক নির্বাচন:
- Support preferred video role flags in track selection ( #9402 ).
- Update video track selection logic to take preferred MIME types and role flags into account when selecting multiple video tracks for adaptation ( #9519 ).
- Update video and audio track selection logic to only choose formats for adaptive selections that have the same level of decoder and hardware support ( #9565 ).
- Update video track selection logic to prefer more efficient codecs if multiple codecs are supported by primary, hardware-accelerated decoders ( #4835 ).
- Prefer audio content preferences (for example, the "default" audio track or a track matching the system locale language) over technical track selection constraints (for example, preferred MIME type, or maximum channel count).
- Fix track selection issue where overriding one track group did not disable other track groups of the same type ( #9675 ).
- Fix track selection issue where a mixture of non-empty and empty track overrides is not applied correctly ( #9649 ).
- Prohibit duplicate
TrackGroup
s in aTrackGroupArray
.TrackGroup
s can always be made distinguishable by setting anid
in theTrackGroup
constructor. This fixes a crash when resuming playback after backgrounding the app with an active track override ( #9718 ). - Amend logic in
AdaptiveTrackSelection
to allow a quality increase under sufficient network bandwidth even if playback is very close to the live edge ( #9784 ).
- ভিডিও:
- Fix decoder fallback logic for Dolby Vision to use a compatible H264/H265 decoder if needed.
- অডিও:
- Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) to use a compatible E-AC3 decoder if needed.
- Change
AudioCapabilities
APIs to require passing explicitlyAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
instead ofnull
. - Allow customization of the
AudioTrack
buffer size calculation by injecting anAudioTrackBufferSizeProvider
toDefaultAudioSink
. ( #8891 ). - Retry
AudioTrack
creation if the requested buffer size was > 1MB. ( #9712 ).
- নিষ্কাশনকারী:
- পাঠ্য:
- Add a
MediaItem.SubtitleConfiguration.id
field which is propagated to theFormat.id
field of the subtitle track created from the configuration ( #9673 ). - Add basic support for WebVTT subtitles in Matroska containers ( #9886 ).
- Prevent
Cea708Decoder
from reading more than the declared size of a service block.
- Add a
- DRM:
- Remove
playbackLooper
fromDrmSessionManager.(pre)acquireSession
. When aDrmSessionManager
is used by an app in a customMediaSource
, theplaybackLooper
needs to be passed toDrmSessionManager.setPlayer
instead.
- Remove
- বিজ্ঞাপন প্লেব্যাক / IMA:
- Add support for IMA Dynamic Ad Insertion (DAI) ( #8213 ).
- Add a method to
AdPlaybackState
to allow resetting an ad group so that it can be played again ( #9615 ). - Enforce playback speed of 1.0 during ad playback ( #9018 ).
- Fix issue where an ad group that failed to load caused an immediate playback reset ( #9929 ).
- UI:
- ড্যাশ:
- Add parsed essential and supplemental properties to the
Representation
( #9579 ). - Support the
forced-subtitle
track role ( #9727 ). - Stop interpreting the
main
track role asC.SELECTION_FLAG_DEFAULT
. - Fix base URL exclusion logic for manifests that do not declare the DVB namespace ( #9856 ).
- Support relative
MPD.Location
URLs ( #9939 ).
- Add parsed essential and supplemental properties to the
- HLS:
- Correctly populate
Format.label
for audio only HLS streams ( #9608 ). - Use chunkless preparation by default to improve start up time. If your renditions contain muxed closed-caption tracks that are not declared in the master playlist, you should add them to the master playlist to be available for playback, or turn off chunkless preparation with
HlsMediaSource.Factory.setAllowChunklessPreparation(false)
. - Support key-frame accurate seeking in HLS ( #2882 ).
- Correctly populate
- RTSP:
- ট্রান্সফরমার:
- Increase required min API version to 21.
-
TransformationException
is now used to describe errors that occur during a transformation. - Add
TransformationRequest
for specifying the transformation options. - Allow multiple listeners to be registered.
- Fix Transformer being stuck when the codec output is partially read.
- Fix potential NPE in
Transformer.getProgress
when releasing the muxer throws. - Add a demo app for applying transformations.
- MediaSession extension:
- By default,
MediaSessionConnector
now clears the playlist on stop. Apps that want the playlist to be retained can callsetClearMediaItemsOnStop(false)
on the connector.
- By default,
- কাস্ট এক্সটেনশন:
- FFmpeg এক্সটেনশন:
- Make
build_ffmpeg.sh
depend on LLVM's bin utils instead of GNU's ( #9933 ).
- Make
- Android 12 compatibility:
- Upgrade the Cast extension to depend on
com.google.android.gms:play-services-cast-framework:20.1.0
. Earlier versions ofplay-services-cast-framework
are not compatible with apps targeting Android 12, and will crash with anIllegalArgumentException
when creatingPendingIntent
s ( #9528 ).
- Upgrade the Cast extension to depend on
- অপ্রচলিত চিহ্নগুলি সরান:
- Remove
Player.EventListener
. UsePlayer.Listener
instead. - 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. - Remove
setTag
fromDashMediaSource
,HlsMediaSource
andSsMediaSource
. 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. - Remove
(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
. Opting out of the thread enforcement is no longer possible. - Remove
ActionFile
andActionFileUpgradeUtil
. Use ExoPlayer 2.16.1 or before to useActionFileUpgradeUtil
to merge legacy action files intoDefaultDownloadIndex
. - Remove
ProgressiveMediaSource#setExtractorsFactory
. UseProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
constructor instead. - Remove
ProgressiveMediaSource.Factory#setTag
and, andProgressiveMediaSource.Factory#setCustomCacheKey
. UseMediaItem.Builder#setTag
andMediaItem.Builder#setCustomCacheKey
instead. - Remove
DefaultRenderersFactory(Context, @ExtensionRendererMode int)
andDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
constructors. Use theDefaultRenderersFactory(Context)
constructor,DefaultRenderersFactory#setExtensionRendererMode
, andDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
instead. - Remove all public
CronetDataSource
constructors. UseCronetDataSource.Factory
instead.
- Remove
- Change the following
IntDefs
to@Target(TYPE_USE)
only. This may break the compilation of usages in Kotlin, which can be fixed by moving the annotation to annotate the type (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
(incom.google.android.exoplayer2.ext.flac
package) -
@FlacExtractor.Flags
(incom.google.android.exoplayer2.extractor.flac
package) -
@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
-
Version 1.0.0-alpha01
27 অক্টোবর, 2021
androidx.media3:media3-*:1.0.0-alpha01
is released. Version 1.0.0-alpha01 contains these commits.
নতুন বৈশিষ্ট্য
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.