মিডিয়া3

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

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

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

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

গ্রোভি

dependencies {
    def media3_version = "1.4.0"

    // 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"
}

কোটলিন

dependencies {
    val media3_version = "1.4.0"

    // 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")
}

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

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

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

সংস্করণ 1.4.0

সংস্করণ 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 প্রিলোড না করা যায়।
    • BasePreloadManagerremove(MediaSource) যোগ করুন।
    • প্রিলোড ম্যানেজার ইনস্ট্যান্স রাখার সময় সমস্ত হোল্ডিং সোর্স প্রকাশ করতে BasePreloadManagerreset() যোগ করুন।
    • PriorityTaskManager এবং API 35 থেকে MediaCodec গুরুত্বের জন্য ব্যবহৃত অগ্রাধিকার মান নির্ধারণ করতে ExoPlayer.setPriority() (এবং Builder.setPriority() ) যোগ করুন।
    • CMCD ( #1124 ) তে ভুল bs (বাফার স্টারভেশন) কী এর ফলে শেষ রিবাফার টাইম আপডেট করার সমস্যার সমাধান করুন।
    • উৎসটি শেষ পর্যন্ত লোড হয়েছে তা বোঝাতে PreloadMediaSource.PreloadControl.onLoadedToTheEndOfSource(PreloadMediaSource) যোগ করুন। এটি DefaultPreloadManager এবং কাস্টম PreloadMediaSource.PreloadControl বাস্তবায়নকে পরবর্তী সোর্স প্রিলোড করতে বা অন্যান্য পদক্ষেপ নেওয়ার অনুমতি দেয়৷
    • বাগ ঠিক করুন যেখানে আইটেমগুলির শেষে নীরবতা এড়িয়ে যাওয়া একটি প্লেব্যাক ব্যতিক্রম ট্রিগার করতে পারে৷
    • প্রিলোডিং পিরিয়ড বাতিল করতে PreloadMediaSourceclear যোগ করুন।
    • নতুন ত্রুটি কোড যোগ করুন PlaybackException.ERROR_CODE_DECODING_RESOURCES_RECLAIMED যেটি ব্যবহার করা হয় যখন কোডেক সংস্থানগুলি উচ্চ অগ্রাধিকারমূলক কাজের জন্য পুনরুদ্ধার করা হয়৷
    • প্রাথমিক বিষয়বস্তু মিডিয়া প্রস্তুতি সম্পূর্ণ হওয়ার আগে AdsMediaSource প্রিরোল বিজ্ঞাপন লোড করতে দিন ( #1358 )।
    • মূল পিরিয়ডটি ইতিমধ্যেই ম্যানিফেস্ট থেকে মুছে ফেলার পরে একটি মাল্টি-পিরিয়ড DASH লাইভ স্ট্রিম পুনরায় প্রস্তুত করার সময় প্লেব্যাক STATE_ENDED এ সরানো হয়েছে এমন ত্রুটির সমাধান করুন৷
    • PreloadMediaSource.PreloadControlonTimelineRefreshed() 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 ঠিক করুন।
  • ট্রান্সফরমার:
    • ExportResultaudioConversionProcess এবং 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 (এবং SubtitleParser.Factory এর পরিবর্তে SubtitleDecoderFactory ) বাস্তবায়ন করতে তাদের আপডেট করতে হবে।
    • 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 ) এ প্রচার করুন।
  • ছবি:
    • নন-স্কোয়ার ড্যাশ থাম্বনেইল গ্রিডের জন্য সমর্থন যোগ করুন ( #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.AdLoaderreplaceAdTagParameters(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() যোগ করুন যা Media3 কন্ট্রোলারে অ-মারাত্মক ত্রুটি পাঠানোর অনুমতি দেয়। নোটিফিকেশন কন্ট্রোলার ব্যবহার করার সময় (দেখুন MediaSession.getMediaNotificationControllerInfo() ), প্রদত্ত ত্রুটি তথ্য ( #543 ) সহ প্ল্যাটফর্ম সেশনের PlaybackState একটি ত্রুটির অবস্থায় আপডেট করতে কাস্টম ত্রুটি ব্যবহার করা হয়।
    • একটি নির্দিষ্ট কন্ট্রোলার থেকে প্লেয়ার ইন্টারঅ্যাকশনের একটি সিরিজ শেষ হলে সেশনগুলি জানাতে MediaSession.Callback.onPlayerInteractionFinished() যোগ করুন।
    • SessionError যোগ করুন এবং ত্রুটি সম্পর্কে আরও তথ্য প্রদান করতে এবং সম্ভব হলে ত্রুটিটি কীভাবে সমাধান করা যায় সে সম্পর্কে ত্রুটি কোডের পরিবর্তে এটি SessionResult এবং LibraryResult এ ব্যবহার করুন।
    • মিডিয়া 3 কন্ট্রোলার টেস্ট অ্যাপের জন্য কোডটি প্রকাশ করুন যা একটি মিডিয়া সেশন প্রকাশকারী অ্যাপগুলির সাথে ইন্টারঅ্যাকশন পরীক্ষা করতে ব্যবহার করা যেতে পারে।
    • মিডিয়া3-এর MediaSession[Builder].setSessionExtras() এ একটি media1 কন্ট্রোলারের PlaybackStateCompat.getExtras() এ পাস করা অতিরিক্তগুলি প্রচার করুন।
    • প্ল্যাটফর্ম সেশনে এবং থেকে মারাত্মক এবং অ-মারাত্মক ত্রুটি ম্যাপ করুন। একটি PlaybackException PlaybackStateCompat একটি মারাত্মক ত্রুটি অবস্থায় ম্যাপ করা হয়েছে। MediaSession.sendError(ControllerInfo, SessionError) সহ মিডিয়া নোটিফিকেশন কন্ট্রোলারে পাঠানো একটি SessionError PlaybackStateCompat কম্প্যাটে একটি অ-মারাত্মক ত্রুটির সাথে ম্যাপ করা হয়েছে যার অর্থ ত্রুটি কোড এবং বার্তা সেট করা আছে কিন্তু প্ল্যাটফর্ম সেশনের অবস্থা STATE_ERROR এর থেকে আলাদা থাকে।
    • গ্লোবাল সেশন অ্যাক্টিভিটি ওভাররাইড করতে সেশন অ্যাক্টিভিটি প্রতি কন্ট্রোলার সেট করার অনুমতি দিন। AcceptedResultBuilder.setSessionActivivty(PendingIntent) এর সাথে একটি ConnectionResult তৈরি করে সংযোগের সময় একটি নিয়ামকের জন্য অধিবেশন কার্যকলাপ সংজ্ঞায়িত করা যেতে পারে। একবার সংযুক্ত হলে, সেশন কার্যকলাপ MediaSession.setSessionActivity(ControllerInfo, PendingIntent) এর সাথে আপডেট করা যেতে পারে।
    • MediaLibrarySession.Callback এ কলের ত্রুটির প্রতিলিপি উন্নত করুন। ত্রুটির প্রতিলিপি এখন MediaLibrarySession.Builder.setLibraryErrorReplicationMode() ব্যবহার করে ত্রুটির ধরন বেছে নেওয়ার জন্য বা ডিফল্টরূপে চালু থাকা ত্রুটির প্রতিলিপি থেকে অপ্ট-আউট করার মাধ্যমে কনফিগার করা যেতে পারে।
  • UI:
    • একটি ExoPlayer ( #1144 ) এর সাথে সংযুক্ত থাকাকালীন PlayerView এ চিত্র প্রদর্শন সমর্থন যোগ করুন।
    • PlayerControlView বিভিন্ন আইকনের কাস্টমাইজেশন যোগ করুন xml অ্যাট্রিবিউটের মাধ্যমে PlayerView ইন্সট্যান্স প্রতি বিভিন্ন অঙ্কনযোগ্য করার জন্য, গ্লোবাল ওভাররাইডের পরিবর্তে ( #1200 )।
    • API 34 ( #1237 ) এ কম্পোজ AndroidView ভিতরে SurfaceView ব্যবহার করার সময় প্রসারিত/ক্রপ করা ভিডিও তৈরি করে এমন একটি প্ল্যাটফর্ম বাগ নিয়ে কাজ করুন।
  • ডাউনলোড:
    • নিশ্চিত করুন যে DownloadHelper অপ্রকাশিত Renderer দৃষ্টান্ত ফাঁস করে না, যার ফলে অবশেষে IllegalStateException: Too many receivers, total of 1000, registered for pid ( #1224 ) এর জন্য নিবন্ধিত।
  • ক্রোনেট এক্সটেনশন:
    • CronetDataSourceSocketTimeoutException ঠিক করুন। Cronet এর কিছু সংস্করণে, কলব্যাক দ্বারা প্রদত্ত অনুরোধ সবসময় একই রকম হয় না। এর ফলে কলব্যাক সম্পূর্ণ হয় না এবং টাইমিং আউটের অনুরোধ করে (https://issuetracker.google.com/328442628)।
  • HLS এক্সটেনশন:
    • বাগটি ঠিক করুন যেখানে মুলতুবি থাকা EMSG নমুনাগুলি একটি বিচ্ছিন্নতার জন্য অপেক্ষা করা হয়েছে HlsSampleStreamWrapper এ একটি ভুল অফসেট সহ একটি IndexOutOfBoundsException বা একটি IllegalArgumentException ( #1002 ) সৃষ্টি করে।
    • যেখানে অ-প্রাথমিক প্লেলিস্টগুলি LL-HLS স্ট্রিমগুলির জন্য পুনরায় লোড হতে থাকে সেখানে বাগ ঠিক করুন ( #1240 )৷
    • বাগ ফিক্স করুন যেখানে HLS-এর জন্য CMCD সক্রিয় করার ফলে Source Error এবং IllegalArgumentException হয়েছে।
    • লাইভ প্লেব্যাকের সময় যেখানে নন-প্রাথমিক প্লেলিস্টগুলি রিফ্রেশ হয় না সেখানে বাগ ঠিক করুন ( #1240 )।
    • HLS লাইভ স্ট্রিমগুলির জন্য CMCD সক্ষম করার ফলে ArrayIndexOutOfBoundsException ( #1395 ) হয় যেখানে বাগ ঠিক করুন৷
  • ড্যাশ এক্সটেনশন:
    • বাগ ঠিক করুন যেখানে একটি মাল্টি-পিরিয়ড লাইভ স্ট্রীম পুনরায় প্রস্তুত করলে একটি IndexOutOfBoundsException ( #1329 ) হতে পারে।
    • dashif:Laurl লাইসেন্স ইউআরএল ( #1345 ) এর জন্য সমর্থন যোগ করুন।
  • কাস্ট এক্সটেনশন:
    • MediaQueueItem এর অ্যালবাম শিরোনামটিকে Media3 মিডিয়া আইটেম ( #1255 ) এ শিল্পীর কাছে রূপান্তরিত করা বাগ সংশোধন করুন।
  • পরীক্ষা উপযোগিতা:
    • FakeRendereronInit() এবং onRelease() প্রয়োগ করুন।
    • অপ্রত্যাশিত ত্রুটিগুলি ব্যর্থ করতে TestPlayerRunHelper.runUntil()/playUntil() পদ্ধতিগুলি পরিবর্তন করুন (যেমন যেগুলি AnalyticsListener.onVideoCodecError() এ রিপোর্ট করা হয়েছে)৷ এই আচরণটি নিষ্ক্রিয় করতে নতুন TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX() পদ্ধতি চেইন ব্যবহার করুন৷
  • ডেমো অ্যাপ:
    • সংক্ষিপ্ত ফর্ম ডেমো অ্যাপে DefaultPreloadManager ব্যবহার করুন।
    • কমান্ড লাইন ( #1266 ) থেকে Intent আর্গুমেন্ট সহ পুনরাবৃত্তি মোড সেট করার অনুমতি দিন।
    • ডিভাইস দ্বারা সমর্থিত হলে HttpEngineDataSource HttpDataSource হিসাবে ব্যবহার করুন৷
  • অপ্রচলিত চিহ্নগুলি সরান:
    • CronetDataSourceFactory সরান। পরিবর্তে CronetDataSource.Factory ব্যবহার করুন।
    • কিছু DataSpec কনস্ট্রাক্টর সরান। পরিবর্তে DataSpec.Builder ব্যবহার করুন।
    • DefaultHttpDataSource , OkHttpDataSource এবং CronetDataSource থেকে setContentTypePredicate(Predicate) পদ্ধতি সরান। পরিবর্তে প্রতিটি XXXDataSource.Factory এ সমতুল্য পদ্ধতি ব্যবহার করুন।
    • OkHttpDataSource কনস্ট্রাক্টর এবং OkHttpDataSourceFactory সরান। পরিবর্তে OkHttpDataSource.Factory ব্যবহার করুন।
    • PlayerMessage.setHandler(Handler) সরান। পরিবর্তে setLooper(Looper) ব্যবহার করুন।
    • Timeline.Window.isLive ক্ষেত্র সরান। পরিবর্তে isLive() পদ্ধতি ব্যবহার করুন।
    • DefaultHttpDataSource কনস্ট্রাক্টর সরান। পরিবর্তে DefaultHttpDataSource.Factory ব্যবহার করুন।
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS সরান। পরিবর্তে DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS ব্যবহার করুন।
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) সরান। পরিবর্তে MediaCodecInfo.canReuseCodec(Format, Format) ব্যবহার করুন।
    • DrmSessionManager.DUMMY এবং getDummyDrmSessionManager() পদ্ধতি সরান। পরিবর্তে DrmSessionManager.DRM_UNSUPPORTED ব্যবহার করুন।
    • AnalyticsListener.onAudioInputFormatChanged(EventTime, Format) , AnalyticsListener.onVideoInputFormatChanged(EventTime, Format) , AudioRendererEventListener.onAudioInputFormatChanged(Format) , VideoRendererEventListener.onVideoInputFormatChanged(Format) । পরিবর্তে একটি DecoderReuseEvaluation নিতে ওভারলোড ব্যবহার করুন.
    • RendererSupport.FormatSupport IntDef এবং FORMAT_HANDLED , FORMAT_EXCEEDS_CAPABILITIES , FORMAT_UNSUPPORTED_DRM , FORMAT_UNSUPPORTED_SUBTYPE , FORMAT_UNSUPPORTED_TYPE কনস্ট্যান্টগুলি সরান৷ পরিবর্তে androidx.media3.common.C তে সমতুল্য IntDef এবং ধ্রুবক ব্যবহার করুন (যেমন C.FORMAT_HANDLED )।
    • Bundleable ইন্টারফেস সরান. এর মধ্যে রয়েছে সমস্ত Bundleable.Creator<Foo> CREATOR ধ্রুবক ক্ষেত্রগুলি সরানো৷ কলারের পরিবর্তে প্রতিটি প্রকারের জন্য Bundle toBundle() এবং static Foo fromBundle(Bundle) পদ্ধতি ব্যবহার করা উচিত।

সংস্করণ 1.4.0-rc01

10 জুলাই, 2024

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

সংস্করণ 1.4.0-beta01

জুন 26, 2024

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

সংস্করণ 1.4.0-alpha02

জুন 07, 2024

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

সংস্করণ 1.4.0-alpha01

এপ্রিল 17, 2024

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

সংস্করণ 1.3.0

সংস্করণ 1.3.1

11 এপ্রিল, 2024

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

  • সাধারণ গ্রন্থাগার:
    • স্থানীয় বা অন্য বিকল্প লেবেলগুলিকে অনুমতি দিতে Format.labels যোগ করুন।
  • এক্সো প্লেয়ার:
    • PreloadMediaPeriod স্ট্রীমগুলিকে আবার প্রিলোড করার সময় ধরে রাখতে পারে না এমন সমস্যার সমাধান করুন।
    • ট্র্যাক পুনঃনির্বাচনের সময় প্লেয়িং পিরিয়ডে সঠিক সংশ্লিষ্ট TrackSelectionResult প্রয়োগ করুন।
    • মিডিয়া আইটেম ( #1017 ) এর মধ্যে স্থানান্তর করার সময় প্লেয়িং পিরিয়ড অগ্রসর হওয়ার পরেই প্রারম্ভিক-সক্ষম রেন্ডারার শুরু করুন।
    • DefaultVideoFrameProcessor.Factory.Builder.build() ( #1187 ) এর জন্য proguard -keepclasseswithmembers নিয়মে অনুপস্থিত রিটার্ন টাইপ যোগ করুন।
  • ট্রান্সফরমার:
    • API 30 এর আগে MediaMuxer নেতিবাচক উপস্থাপনা টাইমস্ট্যাম্প সমর্থন না করার কারণে নিক্ষিপ্ত ব্যতিক্রমের জন্য সমাধান যোগ করুন।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector : কম বা সেট না করা ফ্রেম রেটগুলির তুলনায় 'যুক্তিসঙ্গত' ফ্রেম রেট (>=10fps) সহ ভিডিও ট্র্যাকগুলিকে পছন্দ করুন৷ এটি নিশ্চিত করে যে প্লেয়ারটি মোশন ফটোগুলি থেকে বের করা MP4-এ 'আসল' ভিডিও ট্র্যাক নির্বাচন করে যাতে দুটি HEVC ট্র্যাক থাকতে পারে যেখানে একটির রেজোলিউশন বেশি কিন্তু খুব কম সংখ্যক ফ্রেম ( #1051 )।
  • নিষ্কাশনকারী:
    • WAV ফাইল ( #1117 ) থেকে বিজোড়-আকারের খণ্ড পড়ার সময় যেখানে প্যাডিং বাদ দেওয়া হয়নি সেই সমস্যাটি ঠিক করুন।
    • MP3: মেটাডেটা ফ্রেম যেমন XING এবং VBRI থেকে Format.averageBitrate পপুলেট করুন।
    • MPEG-TS: একটি পরিবর্তন প্রত্যাবর্তন করুন যার লক্ষ্য শেষ ফ্রেমটি নিশ্চিত করার লক্ষ্যে একটি স্ট্রীমের শেষ অ্যাক্সেস ইউনিটকে নমুনা সারিতে পাস করে ( #7909 )। এটি শুধুমাত্র আই-ফ্রেমের HLS স্ট্রীম ( #1150 ) এবং H.262 HLS স্ট্রীম ( #1126 ) এর সাথে নতুন সমস্যা সৃষ্টি করার কারণে এই পরিবর্তন হয়েছে।
  • শ্রুতি:
    • অডিও ট্র্যাক অফলোড মোডে আরম্ভ করতে ব্যর্থ হলে অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন।
  • ভিডিও:
    • Galaxy Tab S7 FE, Google TV এর সাথে Chromecast এবং Lenovo M10 FHD Plus-এ ডিভাইসের সমস্যার সমাধান যোগ করুন যার ফলে 60fps H265 স্ট্রীম অসমর্থিত হিসাবে চিহ্নিত করা হয়
    • এপিআই ( #1169 ) এর প্রয়োজন অনুযায়ী ডিভাইসটি স্বয়ংক্রিয়ভাবে এটি না করলেও টানেলিং করার সময় প্রথম ফ্রেমটি সর্বদা রেন্ডার করা নিশ্চিত করে এমন সমাধান যোগ করুন। ( #966 )।
    • HDR কালার ইনফো হ্যান্ডলিং কোডেক খারাপ আচরণের কারণ হয় এবং SDR ভিডিও ট্র্যাকের জন্য অভিযোজিত ফর্ম্যাট সুইচ প্রতিরোধ করে এমন সমস্যাটি সমাধান করুন ( #1158 )।
  • পাঠ্য:
    • WebVTT: WebvttParser.parse ( #1177 ) থেকে বানোয়াট অতিরিক্ত CuesWithTiming দৃষ্টান্ত তৈরি করা থেকে সরাসরি ধারাবাহিক সংকেতগুলিকে আটকান।
  • DRM:
    • একটি NoSuchMethodError নিয়ে কাজ করুন যা কিছু Android 14 ডিভাইসে ResourceBusyException বা NotProvisionedException এর পরিবর্তে MediaDrm ফ্রেমওয়ার্ক দ্বারা নিক্ষেপ করা যেতে পারে ( #1145 )।
  • প্রভাব:
    • রঙের স্থানগুলিকে রূপান্তর করে PQ থেকে SDR টোন-ম্যাপিং উন্নত করা হয়েছে।
  • সেশন:
    • কন্ট্রোলার বর্তমান আইটেম ( #951 ) প্রতিস্থাপন করলে বর্তমান অবস্থান যেখানে ফিরে যায় সেই সমস্যাটি ঠিক করুন।
    • মিডিয়া কন্ট্রোলার এবং সেশনের মধ্যে যেখানে MediaMetadata শুধুমাত্র নন-নাল extras সহ প্রেরিত হয় না সেখানে সমস্যাটি ঠিক করুন ( #1176 )।
  • UI:
    • অডিও ট্র্যাক ভাষার নাম অন্তর্ভুক্ত করতে ফলব্যাক যদি Locale একটি প্রদর্শন নাম সনাক্ত করতে না পারে ( #988 )।
  • ড্যাশ এক্সটেনশন:
    • ম্যানিফেস্ট থেকে Format.labels ( #1054 ) এ সমস্ত Label উপাদান পূরণ করুন।
  • RTSP এক্সটেনশন:
    • SDP পার্সিং ( #1087 ) এ খালি সেশন তথ্য মান (আই-ট্যাগ) এড়িয়ে যান।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, MIDI, ইত্যাদি):
    • স্থানীয় নির্ভরতা হিসাবে MIDI এক্সটেনশনটিকে ডিফল্টরূপে অক্ষম করুন কারণ এটি কনফিগার করার জন্য একটি অতিরিক্ত Maven সংগ্রহস্থলের প্রয়োজন৷ স্থানীয় নির্ভরতা থেকে এই মডিউলটি প্রয়োজন এমন ব্যবহারকারীরা এটিকে পুনরায় সক্ষম করতে পারেন

সংস্করণ 1.3.0

6 মার্চ, 2024

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

  • সাধারণ গ্রন্থাগার:
    • android.resource://package/[type/]name raw রিসোর্স URI-এর জন্য সমর্থন প্রয়োগ করুন যেখানে package বর্তমান অ্যাপ্লিকেশনের প্যাকেজ থেকে আলাদা। এটি সর্বদা কাজ করার জন্য নথিভুক্ত করা হয়েছে, কিন্তু এখন পর্যন্ত সঠিকভাবে প্রয়োগ করা হয়নি।
    • অ্যাপ কোড দ্বারা সেট করা MIME প্রকারগুলিকে স্বাভাবিক করুন বা সম্পূর্ণরূপে ছোট হাতের হতে মিডিয়া থেকে পড়ুন৷
    • AdPlaybackState এ একটি একক Uri এর পরিবর্তে একটি সম্পূর্ণ MediaItem সহ বিজ্ঞাপনগুলিকে সংজ্ঞায়িত করুন৷
    • minSdk বাড়িয়ে 19 করুন (Android KitKat)। এটি অন্যান্য সমস্ত AndroidX লাইব্রেরির সাথে সারিবদ্ধ , এবং আমাদের AndroidX নির্ভরতার সর্বশেষ সংস্করণগুলিতে আপগ্রেড করার জন্য এটি প্রয়োজনীয়৷
    • MediaMetadata.Builder.populate(MediaMetadata)artworkUri এবং artworkData উভয়ই পপুলেট করুন যখন তাদের মধ্যে অন্তত একটি নন-নাল ( #964 ) হয়।
  • এক্সো প্লেয়ার:
    • PreloadMediaSource এবং PreloadMediaPeriod যোগ করুন যা অ্যাপগুলিকে প্লেব্যাকের আগে একটি নির্দিষ্ট স্টার্ট পজিশনে একটি বিষয়বস্তু মিডিয়া সোর্স প্রিলোড করতে দেয়। PreloadMediaSource Timeline পাওয়ার জন্য বিষয়বস্তু মিডিয়া উত্স প্রস্তুত করার, প্রদত্ত স্টার্ট পজিশনে পিরিয়ড প্রস্তুত করা এবং ক্যাশে করা, ট্র্যাক নির্বাচন করা এবং পিরিয়ডের জন্য মিডিয়া ডেটা লোড করার যত্ন নেয়। Apps PreloadMediaSource.PreloadControl প্রয়োগ করে প্রিলোডের অগ্রগতি নিয়ন্ত্রণ করে এবং প্লেব্যাকের জন্য প্লেয়ারে প্রিলোড করা উৎস সেট করে।
    • ExoPlayer.setImageOutput যোগ করুন যা অ্যাপগুলিকে ImageRenderer.ImageOutput সেট করতে দেয়।
    • DefaultRenderersFactory এখন null ImageOutput এবং ImageDecoder.Factory.DEFAULT সহ ডিফল্টরূপে প্লেয়ারকে একটি ImageRenderer প্রদান করে।
    • এমিট Player.Listener.onPositionDiscontinuity ইভেন্ট যখন নীরবতা এড়ানো হয় ( #765 )।
    • নিষ্কাশনের সময় সাবটাইটেল পার্স করার জন্য পরীক্ষামূলক সমর্থন যোগ করুন। আপনি MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ব্যবহার করে এটি সক্ষম করতে পারেন।
    • PreloadMediaSource সহ অভিযোজিত মিডিয়া উত্সগুলিকে সমর্থন করুন৷
    • HttpEngineDataSource , HttpEngine API ব্যবহার করে একটি HttpDataSource প্রয়োগ করুন।
    • CompositeSequenceableLoader সাবক্লাসিং প্রতিরোধ করুন। এই কম্পোনেন্টটি আগে এক্সটেনসিবল করা হয়েছিল কিন্তু লাইব্রেরির মধ্যে কখনও সাবক্লাস করা হয়নি। ডেকোরেটর প্যাটার্ন ব্যবহার করে একটি উদাহরণ মোড়ানো এবং একটি কাস্টম CompositeSequenceableLoaderFactory প্রয়োগ করে কাস্টমাইজেশন করা যেতে পারে।
    • সমস্যাটি ঠিক করুন যেখানে একই সময়ে পুনরাবৃত্তি করলে এই আইটেমটি থেকে মেটাডেটা সাফ হয়ে যায় ( #1007 )।
    • BundledChunkExtractor.Factory এবং DefaultHlsExtractorFactoryexperimentalSetSubtitleParserFactory পদ্ধতির নাম পরিবর্তন করে setSubtitleParserFactory সেট করুন এবং null পাস করার অনুমতি না দিন। পার্সিং আচরণ নিয়ন্ত্রণ করতে নতুন experimentalParseSubtitlesDuringExtraction(boolean) ব্যবহার করুন।
    • নিষ্কাশনের সময় ব্যবহৃত SubtitleParser.Factory কাস্টমাইজ করার জন্য সমর্থন যোগ করুন। এটি MediaSource.Factory.setSubtitleParserFactory() দিয়ে অর্জন করা যেতে পারে।
    • MergingMediaSource থেকে উৎপন্ন সমস্ত Format.id ক্ষেত্রে উৎস উপসর্গ যোগ করুন। এটি সনাক্ত করতে সাহায্য করে কোন উৎসটি একটি Format তৈরি করেছে ( #883 )।
    • কাস্টম কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) কী নামগুলিকে শুধুমাত্র হাইফেন পরীক্ষা করার জন্য এটিকে পরিবর্তন করে যাচাই করার জন্য ব্যবহৃত রেজেক্স ঠিক করুন ( #1028 )।
    • CMCD ক্যোয়ারী প্যারামিটার ( #1075 ) ডাবল-এনকোডিং বন্ধ করুন।
  • ট্রান্সফরমার:
    • H.265/HEVC SEF স্লো মোশন ভিডিও সমতল করার জন্য সমর্থন যোগ করুন।
    • ট্রান্সমক্সিং গতি বাড়ান, বিশেষ করে 'ভিডিও সরান' সম্পাদনার জন্য।
    • আউটপুট ফাইল একটি ভিডিও ফ্রেমে শুরু হয় তা নিশ্চিত করতে API যোগ করুন। এটি প্লেয়ার বাস্তবায়নের সাথে ট্রিমিং অপারেশনগুলির আউটপুটকে আরও সামঞ্জস্যপূর্ণ করে তুলতে পারে যা উপস্থাপনা টাইমস্ট্যাম্প ( #829 ) পর্যন্ত প্রথম ভিডিও ফ্রেম দেখায় না।
    • একক সম্পদ MP4 ট্রিম অপারেশন অপ্টিমাইজ করার জন্য সমর্থন যোগ করুন।
    • আউটপুট ফাইলে একটি ভিডিও ফ্রেমের প্রথম টাইমস্ট্যাম্প আছে তা নিশ্চিত করতে সমর্থন যোগ করুন। iOS ভিত্তিক প্লেয়ারগুলিতে কালো ফ্রেম দিয়ে শুরু হওয়া আউটপুট ফাইলগুলিকে ঠিক করে ( #829 )।
  • ট্র্যাক নির্বাচন:
    • ছবি ট্র্যাক নির্বাচন সক্ষম করতে DefaultTrackSelector.selectImageTrack যোগ করুন।
    • TrackSelectionParameters.isPrioritizeImageOverVideoEnabled যোগ করুন যদি একটি ইমেজ ট্র্যাক এবং একটি ভিডিও ট্র্যাক উভয়ই উপলব্ধ থাকে তবে একটি ইমেজ ট্র্যাক নির্বাচন করতে হবে কিনা। ডিফল্ট মান false যার মানে একটি ভিডিও ট্র্যাক নির্বাচন করা অগ্রাধিকার।
  • নিষ্কাশনকারী:
    • ColorInfo.colorSpace , ColorInfo.colorTransfer , এবং ColorInfo.colorRange মান ( #692 ) পুনরুদ্ধার করতে MP4 এক্সট্র্যাক্টরে অতিরিক্ত AV1C পার্সিং যোগ করুন।
    • MP3: একটি Info শিরোনাম ( Xing শিরোলেখের CBR সমতুল্য) ফাইলের জন্য ধ্রুবক বিটরেট (CBR) ব্যবহার করুন। আগে আমরা Info হেডার থেকে সিক টেবিল ব্যবহার করতাম, কিন্তু এর ফলে কম সুনির্দিষ্ট চাওয়া হয় যদি আমরা এটিকে উপেক্ষা করি এবং ফাইলটি CBR বলে ধরে নিই।
    • MPEG2-TS: DTS, DTS-LBR এবং DTS:X Profile2 সমর্থন যোগ করুন ( #275 )।
    • TS বর্ণনাকারী থেকে অডিও প্রকারগুলি বের করুন এবং সেগুলিকে রোল ফ্ল্যাগে ম্যাপ করুন, ব্যবহারকারীদের আরও ভাল-অবহিত অডিও ট্র্যাক নির্বাচন করতে অনুমতি দেয় ( #973 )।
  • শ্রুতি:
    • মসৃণ ভলিউম র‌্যাম্প সহ নীরবতা স্কিপিং অ্যালগরিদম উন্নত করুন; ন্যূনতম নীরবতা এবং আরও প্রাকৃতিক নীরবতার সময়কাল ধরে রাখা হয়েছে ( #7423 )।
    • এড়িয়ে যাওয়া নীরবতাকে আরও নির্ধারকভাবে রিপোর্ট করুন ( #1035 )।
  • ভিডিও:
    • MediaCodecVideoRenderer কনস্ট্রাক্টরটি পরিবর্তন করুন যা একটি VideoFrameProcessor.Factory আর্গুমেন্ট নেয় এবং এটি একটি কনস্ট্রাক্টর দিয়ে প্রতিস্থাপন করুন যা একটি VideoSinkProvider আর্গুমেন্ট নেয়৷ যে অ্যাপগুলি একটি কাস্টম VideoFrameProcessor.Factory ইনজেক্ট করতে চায়৷ ফ্যাক্টরি একটি CompositingVideoSinkProvider ইনস্ট্যান্ট করতে পারে যা কাস্টম VideoFrameProcessor.Factory ব্যবহার করে এবং ভিডিও সিঙ্ক প্রদানকারীকে MediaCodecVideoRenderer এ পাস করে৷
  • পাঠ্য:
    • সমাধানের জন্য বিটম্যাপ সংকেতের সিরিয়ালাইজেশন ঠিক করুন DefaultExtractorsFactory.setTextTrackTranscodingEnabled ( #836 ) ব্যবহার করার সময় Tried to marshall a Parcel that contained Binder objects
    • CEA-708: rowLock মান উপেক্ষা করুন। CEA-708-E S-2023 স্পেক বলে যে rowLock এবং columnLock উভয়কেই সত্য বলে ধরে নেওয়া উচিত, স্ট্রীমে উপস্থিত মান নির্বিশেষে ( columnLock সমর্থন বাস্তবায়িত হয় না, তাই এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
  • ছবি:
    • DASH থাম্বনেইলের জন্য সমর্থন যোগ করুন। গ্রিড ইমেজ ক্রপ করা হয় এবং পৃথক থাম্বনেইল তাদের উপস্থাপনা সময়ের কাছাকাছি ImageOutput প্রদান করা হয়.
  • DRM:
    • ডিফল্টরূপে অবিলম্বে DRM সামগ্রীতে 'ক্লিয়ার লিড' আনএনক্রিপ্ট করা নমুনাগুলি চালান, এমনকি যদি পরবর্তী এনক্রিপ্ট করা নমুনার কীগুলি এখনও প্রস্তুত না হয়। প্লেব্যাক অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না হলে এটি মধ্য-প্লেব্যাক স্টলের দিকে নিয়ে যেতে পারে (কিন্তু আগে প্লেব্যাক এই সময়ে একেবারেই শুরু হত না)। এই আচরণ MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey বা DefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys দিয়ে নিষ্ক্রিয় করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • যেখানে উপযুক্ত ফাইল এক্সটেনশন ছাড়া DASH এবং HLS বিজ্ঞাপন চালানো যাবে না সেই সমস্যার সমাধান করুন।
  • সেশন:
    • টিভি অ্যাপ্লিকেশানগুলির জন্য ডাবল-ক্লিক সনাক্তকরণ অক্ষম করুন ( #962 )।
    • যেখানে মিডিয়া কন্ট্রোলার এবং সেশনের মধ্যে শুধুমাত্র নন-নাল এক্সট্রা সহ MediaItem.RequestMetadata প্রেরণ করা হয় না সেখানে সমস্যাটি সমাধান করুন।
    • MediaLibrarySession.Builder এ কনস্ট্রাক্টর যোগ করুন যা শুধুমাত্র একটি MediaLibraryService এর পরিবর্তে একটি Context নেয়।
  • HLS এক্সটেনশন:
    • প্যাকেজ-ব্যক্তিগত দৃশ্যমানতায় HlsMediaPeriod কমিয়ে দিন। এই ধরনের HLS প্যাকেজের বাইরে থেকে সরাসরি নির্ভর করা উচিত নয়।
    • সমাধান আরও দক্ষতার সাথে একটি সেগমেন্ট শুরু করতে চায় ( #1031 )।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, MIDI, ইত্যাদি):
    • MIDI ডিকোডার: SysEx ইভেন্ট বার্তা উপেক্ষা করুন ( #710 )।
  • পরীক্ষা উপযোগিতা:
    • TestPlayerRunHelper.playUntilPosition এ প্লেব্যাক বিরতি দেবেন না। পরীক্ষাটি প্লেব্যাকটিকে একটি বাজানো অবস্থায় রাখে, কিন্তু যতক্ষণ না পরীক্ষাটি দাবী এবং আরও ক্রিয়াকলাপ যোগ করতে সক্ষম হয় ততক্ষণ পর্যন্ত অগ্রগতি স্থগিত করে।
  • ডেমো অ্যাপ:
    • শর্ট-ফর্ম কন্টেন্ট ব্যবহারের ক্ষেত্রে PreloadMediaSource এর ব্যবহার ডেমো করতে একটি শর্টফর্ম ডেমো মডিউল যোগ করুন।

সংস্করণ 1.3.0-rc01

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

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

সংস্করণ 1.3.0-beta01

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

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

সংস্করণ 1.3.0-alpha01

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

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

সংস্করণ 1.2.0

সংস্করণ 1.2.1

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

  • এক্সো প্লেয়ার:
    • যেখানে ম্যানুয়াল LiveConfiguration.min/maxOffset পরিসরের বাইরে খোঁজে সেই সমস্যার সমাধান করুন অফসেটকে min/maxOffset এ সামঞ্জস্য করতে থাকুন।
    • 3, 5, 6, 7 এবং 8 চ্যানেলের ( #8396 ) জন্য OPUS এবং VORBIS চ্যানেল লেআউটগুলি যে ভুল তা সমাধান করুন।
    • একটি লাইভ স্ট্রীমে ভুলভাবে স্ট্রীমটিকে তার ডিফল্ট অবস্থানে শুরু করতে দেওয়ার পরে ট্র্যাক নির্বাচন শূন্য করার পরে সমস্যাটি সমাধান করুন ( #9347 )।
    • সমস্যাটি ঠিক করুন যেখানে CmcdData.Factory এর নতুন দৃষ্টান্তগুলি খণ্ড উত্স থেকে bufferedDurationUs এর জন্য নেতিবাচক মান গ্রহণ করছে, যার ফলে একটি IllegalArgumentException ( #888 ) হয়েছে৷
  • ট্রান্সফরমার:
    • একটি উচ্চ অপারেটিং রেট সেট করার কারণে কনফিগারেশনের সময় এনকোডার নিক্ষেপ করবে এমন একটি সমস্যা নিয়ে কাজ করুন।
  • নিষ্কাশনকারী:
    • উচ্চতর রেজোলিউশনের কারণে প্লেব্যাকের জন্য স্বয়ংক্রিয়ভাবে নির্বাচিত হওয়া ঠেকাতে JPEG মোশন ফটোগুলিতে সেকেন্ডারি (অপ্লেযোগ্য) HEVC ট্র্যাকগুলিকে ROLE_FLAG_ALTERNATE হিসাবে চিহ্নিত করুন৷
    • TS H264 স্ট্রীম ( #864 ) এর জন্য ভুল কীফ্রেম সনাক্তকরণ ঠিক করুন।
    • 47721 সেকেন্ডের ( #855 ) থেকে দীর্ঘ TS স্ট্রিমগুলির সময়কাল অনুমান ঠিক করুন।
  • শ্রুতি:
    • একাধিকবার কল করা হলে SilenceSkippingAudioProcessor জন্য EOS-এর হ্যান্ডলিং ঠিক করুন ( #712 )।
  • ভিডিও:
    • Galaxy Tab S7 FE, Google TV এর সাথে Chromecast এবং Lenovo M10 FHD Plus-এ ডিভাইসের সমস্যার সমাধান যোগ করুন যার কারণে 60fps AVC স্ট্রীমগুলি অসমর্থিত হিসাবে চিহ্নিত করা হয়েছে ( #693 )৷
  • মেটাডেটা:
    • বাগ ঠিক করুন যেখানে MediaMetadata শুধুমাত্র বড় হাতের কী ( #876 ) দিয়ে ভরবিস মন্তব্য থেকে পপুলেট করা হয়েছিল।
    • খুব বড় ID3 ফ্রেম পার্স করার সময় OutOfMemoryError ধরুন, যার অর্থ প্লেব্যাক সম্পূর্ণরূপে ব্যর্থ হওয়ার পরিবর্তে ট্যাগ তথ্য ছাড়াই চালিয়ে যেতে পারে৷
  • DRM:
    • বানোয়াট ClearKey https://default.url লাইসেন্স URL-এর জন্য API 33+ তে ওয়ার্কআরাউন্ড প্রসারিত করুন (আগে শুধুমাত্র API 33-এ ঠিকভাবে প্রয়োগ করা হয়েছিল) ( #837 )।
    • প্লেয়ারের সাথে সংযুক্ত সারফেস ছাড়াই এনক্রিপ্ট করা থেকে সাফ কন্টেন্টে স্যুইচ করার সময় ERROR_DRM_SESSION_NOT_OPENED ঠিক করুন। পরিষ্কার বিষয়বস্তু চালানোর জন্য একটি নিরাপদ ডিকোডার ভুলভাবে ব্যবহার করার কারণে ত্রুটি ঘটেছে।
  • সেশন:
    • MediaMetadataCompatMediaMetadata.extras এবং MediaMetadata.extrasMediaMetadataCompat ( #756 , #802 ) কাস্টম কী এবং মানগুলি রাখুন।
    • লিগ্যাসি কন্ট্রোলার ( #644 ) এর জন্য সম্প্রচারের notifyChildrenChanged ঠিক করুন।
    • একটি বাগ ঠিক করুন যেখানে একটি অক্ষম setWhen জন্য একটি নেতিবাচক সময় সেট করুন যখন বিজ্ঞপ্তির টাইমার কিছু ডিভাইসে ক্র্যাশ ঘটায় ( #903 )।
    • IllegalStateException ঠিক করুন যখন মিডিয়া নোটিফিকেশন কন্ট্রোলার সংযোগ সম্পূর্ণ না করে যখন প্রথম বিজ্ঞপ্তি আপডেটের অনুরোধ করা হয় ( #917 )।
  • UI:
    • একটি BottomSheetDialogFragment ( #511 ) এ মেটেরিয়াল ডিজাইনের সাথে ব্যবহার করার সময় যেখানে ফরোয়ার্ড এবং রিওয়াইন্ড বোতামগুলি দৃশ্যমান না সেখানে সমস্যাটি সমাধান করুন।
    • PlayerControlView -এর ফাস্ট ফরোয়ার্ড বোতামের নম্বরগুলি যেখানে ভুলভাবে সংযোজন করা হয়েছে তা ঠিক করুন ( #547 )।
  • ড্যাশ এক্সটেনশন:
    • DASH ম্যানিফেস্টে ( #688 ) ডলবির জন্য চ্যানেলের সংখ্যা 5 হিসাবে "f800" পার্স করুন।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, MIDI, ইত্যাদি):
    • MIDI: সমস্যা সমাধান করুন যেখানে ফরওয়ার্ড চাওয়া প্রোগ্রাম পরিবর্তন ইভেন্টগুলি এড়িয়ে যায় ( #704 )।
    • FFmpeg 6.0 এ স্থানান্তর করুন এবং r26b ( #707 , #867 ) সমর্থিত NDK আপডেট করুন।
  • কাস্ট এক্সটেনশন:
    • কাস্ট ডিভাইসে মিডিয়া লোডিং ব্যর্থ হলে অ্যাপটি ক্র্যাশ না করার জন্য একটি Timeline তৈরির স্যানিটাইজ করুন ( #708 )।

সংস্করণ 1.2.0

15 নভেম্বর, 2023

  • সাধারণ গ্রন্থাগার:
    • Log.Logger ইন্টারফেসের পদ্ধতিতে একটি @Nullable Throwable প্যারামিটার যোগ করুন। এই পদ্ধতির message প্যারামিটারে আর Log.{d,i,w,e}() -এ Throwable পাস করা কোনো তথ্য থাকে না Logger.appendThrowableString(String, Throwable) )।
    • কোটলিন সামঞ্জস্যের সমস্যাটি ঠিক করুন যেখানে বাতিলযোগ্য জেনেরিক টাইপ প্যারামিটার এবং বাতিলযোগ্য অ্যারে উপাদানের প্রকারগুলি বাতিলযোগ্য হিসাবে সনাক্ত করা যায় না। উদাহরণ হল TrackSelectorResult এবং SimpleDecoder পদ্ধতি প্যারামিটার ( #6792 )।
    • প্লেব্যাক সাময়িকভাবে চাপা থাকার সময় একটি "প্লে" বোতাম দেখানোর জন্য Util.shouldShowPlayButton এ ডিফল্ট UI এবং বিজ্ঞপ্তি আচরণ পরিবর্তন করুন (যেমন অস্থায়ী অডিও ফোকাস ক্ষতির কারণে)। PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) বা MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) ( #11213 ) ব্যবহার করে উত্তরাধিকার আচরণ বজায় রাখা যেতে পারে।
    • https://issuetracker.google.com/251172715 ঠিক করতে androidx.annotation:annotation-experimental 1.3.1 -এ আপগ্রেড করুন।
    • ExoPlayer.setAudioAttributes Player ইন্টারফেসে সরান।
  • এক্সো প্লেয়ার:
    • ডিকোড-শুধু নমুনাগুলি সঠিকভাবে সনাক্ত না করার কারণে AC4 স্ট্রীমগুলিতে অনুসন্ধানের সমস্যাগুলি সমাধান করুন ( #11000 )।
    • যখন এই বৈশিষ্ট্যটি ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput এর মাধ্যমে সক্ষম করা হয় তখন অনুপযুক্ত অডিও আউটপুট ডিভাইসে (যেমন Wear OS ডিভাইসে বিল্ট-ইন স্পিকার) প্লেব্যাকের দমন যোগ করুন। প্লেব্যাক দমনের কারণটি Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT হিসাবে আপডেট করা হবে৷ PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT যদি প্লেব্যাকের চেষ্টা করা হয় যখন কোন উপযুক্ত অডিও আউটপুট উপলব্ধ না থাকে, বা প্লেব্যাকের সময় সমস্ত উপযুক্ত আউটপুট সংযোগ বিচ্ছিন্ন হয়৷ একটি উপযুক্ত আউটপুট সংযুক্ত হলে দমনের কারণটি সরানো হবে।
    • Player.replaceMediaItem(s) এর মাধ্যমে তৈরির পরে MediaItem আপডেটগুলি গ্রহণ করতে MediaSource.canUpdateMediaItem এবং MediaSource.updateMediaItem যোগ করুন৷
    • Player.replaceMediaItem(s) ( #33 , #9978 ) এর মাধ্যমে লাইব্রেরি দ্বারা প্রদত্ত সমস্ত MediaSource ক্লাসের জন্য MediaItem আপডেটের অনুমতি দিন।
    • MimeTypes.TEXT_EXOPLAYER_CUES থেকে MimeTypes.APPLICATION_MEDIA3_CUES নাম পরিবর্তন করুন।
    • একটি নমুনা হিসাবে TrackOutput একটি সম্পূর্ণ পিএনজি ফাইল পাঠায় এবং পাঠ করে এমন PngExtractor যোগ করুন।
    • 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) উন্নত করুন।
    • কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিং-এ অতিরিক্ত ক্ষেত্র যুক্ত করুন: বাফার স্টারভেশন ( bs ), সময়সীমা ( dl ), প্লেব্যাক রেট ( pr ) এবং স্টার্টআপ ( su ) ( #8699 )।
    • ColorInfo ( #491 ) এ লুমা এবং ক্রোমা বিটডেপথ যোগ করুন।
    • কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিং-এ অতিরিক্ত ক্ষেত্র যোগ করুন: পরবর্তী অবজেক্ট রিকোয়েস্ট ( nor ) এবং পরবর্তী রেঞ্জ রিকোয়েস্ট ( nrr ) ( #8699 )।
    • ক্যোয়ারী প্যারামিটার ( #553 ) ব্যবহার করে কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) ডেটা প্রেরণ করার জন্য কার্যকারিতা যুক্ত করুন।
    • ExperimentalBandwidthMeter ( #612 ) এ ConcurrentModificationException ঠিক করুন।
    • CompositeMediaSource.getMediaTimeForChildMediaTimeMediaPeriodId প্যারামিটার যোগ করুন।
    • ConcatenatingMediaSource2 ( #11226 ) এ ClippingMediaSource (এবং পিরিয়ড/উইন্ডো টাইম অফসেট সহ অন্যান্য উত্স) সমর্থন করুন।
    • একটি MediaPeriodId আর্গুমেন্ট পেতে BaseRenderer.onStreamChanged() পরিবর্তন করুন।
  • ট্রান্সফরমার:
    • ইমেজ ইনপুটগুলির জন্য EXIF ​​রোটেশন ডেটা পার্স করুন।
    • TransformationRequest.HdrMode টীকা প্রকার এবং এর সাথে সম্পর্কিত ধ্রুবকগুলি সরান৷ পরিবর্তে Composition.HdrMode এবং এর সাথে যুক্ত ধ্রুবক ব্যবহার করুন।
    • ঘূর্ণন সমস্যা সমাধানের জন্য OverlaySettings সরল করুন।
    • SampleConsumer.queueInputBitmap এর frameRate এবং durationUs প্যারামিটার TimestampIterator পরিবর্তন করা হয়েছে।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness সিমলেস অ্যাডাপ্টিভনেস যোগ করুন সুস্পষ্টভাবে নন-সিমলেস অ্যাডাপ্টেশনকে অনুমতি দিতে বা অননুমোদিত করতে। ডিফল্ট তার বর্তমান আচরণ true থাকে।
  • নিষ্কাশনকারী:
    • MPEG-TS: একটি স্ট্রীমের শেষ অ্যাক্সেস ইউনিটকে নমুনা সারিতে দিয়ে শেষ ফ্রেমটি রেন্ডার করা হয়েছে তা নিশ্চিত করুন ( #7909 )।
    • rotationDegrees নির্ধারণ করার সময় টাইপো ঠিক করুন। projectionPosePitch projectionPoseRoll ( #461 ) এ পরিবর্তন করা হয়েছে।
    • Extractor ইনস্ট্যান্স সরাসরি instanceof দিয়ে পরিদর্শন করা যেতে পারে এমন ধারণাটি সরান। আপনি যদি Extractor বাস্তবায়নের বিবরণে রানটাইম অ্যাক্সেস চান তবে আপনাকে প্রথমে Extractor.getUnderlyingInstance কল করতে হবে।
    • BmpExtractor যোগ করুন।
    • WebpExtractor যোগ করুন।
    • HeifExtractor যোগ করুন।
    • Mp4ExtractorQuickTime ক্লাসিক সমর্থন যোগ করুন।
  • শ্রুতি:
    • MP4 এবং Matroska-এ 24/32-বিট বিগ-এন্ডিয়ান PCM-এর জন্য সমর্থন যোগ করুন এবং MP4-এ lpcm এর জন্য PCM এনকোডিং পার্স করুন।
    • MP4 এ Vorbis অডিও নিষ্কাশনের জন্য সমর্থন যোগ করুন।
    • AudioSink.getFormatOffloadSupport(Format) যোগ করুন যা অফলোড সমর্থনের স্তর পুনরুদ্ধার করে যা সিঙ্ক একটি DefaultAudioOffloadSupportProvider এর মাধ্যমে ফর্ম্যাটের জন্য সরবরাহ করতে পারে। এটি নতুন AudioOffloadSupport প্রদান করে যাতে isFormatSupported , isGaplessSupported এবং isSpeedChangeSupported রয়েছে।
    • AudioSink.setOffloadMode() যোগ করুন যার মাধ্যমে অডিও সিঙ্কে অফলোড কনফিগারেশন কনফিগার করা হয়েছে। ডিফল্ট হল AudioSink.OFFLOAD_MODE_DISABLED
    • TrackSelectionParameterssetAudioOffloadPreference মাধ্যমে অফলোড সক্ষম করা যেতে পারে। যদি সেট পছন্দ সক্রিয় করতে হয়, ডিভাইসটি ফর্ম্যাটের জন্য অফলোড সমর্থন করে এবং ট্র্যাক নির্বাচন একটি একক অডিও ট্র্যাক হয়, তাহলে অডিও অফলোড সক্ষম হবে৷
    • যদি audioOffloadModePreference AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED তে সেট করা থাকে, তাহলে DefaultTrackSelector শুধুমাত্র একটি অডিও ট্র্যাক নির্বাচন করবে এবং শুধুমাত্র যদি সেই ট্র্যাকের বিন্যাসটি অফলোডে সমর্থিত হয়। যদি অফলোডে কোনো অডিও ট্র্যাক সমর্থিত না হয়, তাহলে কোনো ট্র্যাক নির্বাচন করা হবে না৷
    • ট্র্যাক ট্রানজিশনের পরে প্লেব্যাক অবস্থানের সমস্যার কারণে প্রি-এপিআই স্তর 33 হলে অফলোডের জন্য গ্যাপলেস সমর্থন অক্ষম করা হচ্ছে।
    • DefaultRenderersFactory.buildAudioSink পদ্ধতি স্বাক্ষর থেকে প্যারামিটার enableOffload সরান।
    • DefaultAudioSink.Builder.setOffloadMode পদ্ধতি সরান।
    • intdef মান DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED সরান।
    • অফলোড প্লেব্যাকের সময় Opus গ্যাপলেস মেটাডেটার জন্য সমর্থন যোগ করুন।
    • প্রথম লিখতে ব্যর্থ হলে অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন ( #627 )।
    • অডিও-কেবল অফলোড প্লেব্যাকের জন্য ডিফল্টরূপে অফলোড শিডিউলিং সক্ষম করুন৷
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled এবং AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged মুছুন।
    • onExperimentalSleepingForOffloadChanged onSleepingForOffloadChanged এবং onExperimentalOffloadedPlayback onOffloadedPlayback হিসাবে পুনঃনামকরণ করা হয়েছে।
    • অডিও অফলোড মোড সম্পর্কিত TrackSelectionParameters ইন্টারফেস এবং সংজ্ঞা একটি অভ্যন্তরীণ AudioOffloadPreferences ক্লাসে সরান।
    • AnalyticsListener , AudioRendererEventListener এবং AudioSink.ListeneronAudioTrackInitialized এবং onAudioTrackReleased কলব্যাক যোগ করুন।
    • ডিটিএস এক্সপ্রেস অডিও বাফার আন্ডারফ্লো সমস্যা ( #650 ) ঠিক করুন।
    • E-AC3-JOC-এর জন্য ক্ষমতা পরীক্ষা করে যেখানে একটি IllegalArgumentException ( #677 ) নিক্ষেপ করে সেখানে বাগ ঠিক করুন।
  • ভিডিও:
    • MediaCodecVideoRenderer একটি কাস্টম VideoFrameProcessor.Factory ব্যবহার করার অনুমতি দিন।
    • অডিও স্ট্রীম নেতিবাচক টাইমস্ট্যাম্প ( #291 ) দিয়ে শুরু হলে যেখানে প্রথম ফ্রেমটি রেন্ডার করা যাবে না সেখানে বাগ ঠিক করুন।
  • পাঠ্য:
    • ExoplayerCuesDecoder সরান। sampleMimeType = application/x-media3-cues সহ পাঠ্য ট্র্যাকগুলি এখন SubtitleDecoder উদাহরণের প্রয়োজন ছাড়াই সরাসরি TextRenderer দ্বারা পরিচালিত হয়।
  • মেটাডেটা:
    • MetadataDecoder.decode আর "ডিকোড-অনলি" নমুনার জন্য বলা হবে না কারণ বাস্তবায়নকে যেভাবেই হোক নাল দিতে হবে।
  • প্রভাব:
    • VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) টাইমস্ট্যাম্প দ্বারা সারিবদ্ধ বিটম্যাপ ইনপুট যোগ করুন।
    • VideoFrameProcessor.registerInputStream() নন-ব্লকিং-এ পরিবর্তন করুন। অ্যাপগুলিকে অবশ্যই VideoFrameProcessor.Listener#onInputStreamRegistered() প্রয়োগ করতে হবে৷
    • VideoFrameProcessor.queueInputBitmap এর frameRate এবং durationUs প্যারামিটার TimestampIterator পরিবর্তন করা হয়েছে।
  • আইএমএ এক্সটেনশন:
    • বাগ ফিক্স করুন যেখানে একটি মাল্টি-পিরিয়ড DASH লাইভ স্ট্রীম যা একটি প্লেলিস্টের প্রথম আইটেম নয় সেটি একটি ব্যতিক্রম ( #571 ) ফেলতে পারে।
    • AdsLoader.destroy() কল করার আগে StreamManager রিলিজ করুন
    • IMA SDK সংস্করণকে 3.31.0 এ বাম্প করুন৷
  • সেশন:
    • DefaultMediaNotificationProvider ( #167 ) এ FOREGROUND_SERVICE_IMMEDIATE এ বিজ্ঞপ্তি ফোরগ্রাউন্ড পরিষেবা আচরণ সেট করুন।
    • Samsung ডিভাইসে ( #167 ) অবহেলিত API-এর সমস্যা এড়াতে API 31-এর উপরে শুধুমাত্র android.media.session.MediaSession.setMediaButtonBroadcastReceiver() ব্যবহার করুন।
    • উপলব্ধ কমান্ড এবং বিজ্ঞপ্তি এবং প্ল্যাটফর্ম সেশন পূরণ করতে ব্যবহৃত কাস্টম লেআউট সেট করতে প্রক্সি হিসাবে মিডিয়া বিজ্ঞপ্তি নিয়ামক ব্যবহার করুন।
    • মিডিয়া বোতাম ইভেন্টগুলিকে রূপান্তর করুন যা Media3-এর মধ্যে MediaSessionService.onStartCommand() দ্বারা প্রাপ্ত হয় এবং সেগুলিকে প্ল্যাটফর্ম সেশনে রুট করার পরিবর্তে মিডিয়া3-এ ফিরে যান। এর সাহায্যে, কলার কন্ট্রোলার সর্বদা মিডিয়া নোটিফিকেশন কন্ট্রোলার এবং অ্যাপগুলি সমস্ত সমর্থিত API স্তরে একই ভাবে বিজ্ঞপ্তি থেকে আসা কলগুলিকে সহজেই চিনতে পারে।
    • যেখানে MediaController.getCurrentPosition() একটি লিগ্যাসি MediaSessionCompat এর সাথে সংযুক্ত থাকাকালীন অগ্রসর হচ্ছে না সেখানে বাগটি ঠিক করুন।
    • সুবিধার জন্য MediaLibrarySession.getSubscribedControllers(mediaId) যোগ করুন।
    • অভিভাবক আইডি যেটির জন্য নিয়ামক সাবস্ক্রাইব করেছেন তার উপলব্ধতা নিশ্চিত করতে MediaLibrarySession.Callback.onSubscribe() ওভাররাইড করুন৷ সফল হলে, সাবস্ক্রিপশন গৃহীত হয় এবং notifyChildrenChanged() ব্রাউজারকে ( #561 ) জানানোর জন্য অবিলম্বে কল করা হয়।
    • Automotive OS এর জন্য সেশন ডেমো মডিউল যোগ করুন এবং Android Auto এর জন্য সেশন ডেমো সক্ষম করুন।
    • মিডিয়া বিজ্ঞপ্তি কন্ট্রোলারের জন্য COMMAND_GET_TIMELINE উপলব্ধ না থাকলে ফ্রেমওয়ার্ক সেশনের সারি সেট করবেন না৷ ফ্রেমওয়ার্ক সেশন থেকে ক্লায়েন্ট কন্ট্রোলার রিডিং হিসাবে Android Auto-এর সাথে, এটি এমন প্রভাব ফেলে যে Android Auto-এর UI-তে queue বোতামটি প্রদর্শিত হয় না ( #339 )।
    • SimpleBitmapLoader ( #271 , #327 ) এর পরিবর্তে ডিফল্টরূপে DataSourceBitmapLoader ব্যবহার করুন।
    • MediaSession.Callback.onMediaButtonEvent(Intent) যোগ করুন যা অ্যাপগুলিকে ডিফল্ট মিডিয়া বোতাম ইভেন্ট পরিচালনা ওভাররাইড করতে দেয়।
  • UI:
    • Wear OS ডিভাইসগুলির জন্য একটি Player.Listener ইমপ্লিমেন্টেশন যোগ করুন যা Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT এর কারণে প্লেব্যাক সাপ্রেশন পরিচালনা করে। PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT ব্যবহারকারীকে একটি উপযুক্ত অডিও আউটপুট (যেমন ব্লুটুথ হেডফোন) সংযোগ করার জন্য একটি সিস্টেম ডায়ালগ চালু করার মাধ্যমে। শ্রোতা স্বয়ংক্রিয়ভাবে প্লেব্যাক শুরু করবে যদি একটি উপযুক্ত ডিভাইস কনফিগারযোগ্য সময়সীমার মধ্যে সংযুক্ত থাকে (ডিফল্ট 5 মিনিট)।
  • ডাউনলোড:
    • Android 14 সামঞ্জস্যের জন্য DownloadService এর জন্য "ডেটা সিঙ্ক" ফোরগ্রাউন্ড পরিষেবার ধরণ ঘোষণা করুন। এই পরিষেবাটি ব্যবহার করার সময়, অ্যাপটিকে ম্যানিফেস্টে foregroundServiceType হিসাবে dataSync যোগ করতে হবে এবং FOREGROUND_SERVICE_DATA_SYNC অনুমতি ( #11239 ) যোগ করতে হবে।
  • HLS এক্সটেনশন:
    • HLS লাইভ প্লেলিস্ট রিফ্রেশ করুন একটি ব্যবধান সহ শেষ লোড শুরুর সময় থেকে গণনা করা শেষ লোড সমাপ্ত সময়ের ( #663 ) থেকে।
  • ড্যাশ এক্সটেনশন:
    • সেগমেন্ট টেমপ্লেট URL-এ একই DASH শনাক্তকারীর একাধিক অনুমতি দিন।
    • নিষ্কাশনের সময় সাবটাইটেল পার্স করার জন্য পরীক্ষামূলক সমর্থন যোগ করুন। এটি ওভারল্যাপিং সাবটাইটেল মার্জ করার জন্য আরও ভাল সমর্থন রয়েছে, সাবটাইটেল সেগমেন্টগুলির মধ্যে স্থানান্তর করার সময় ফ্লিকারিং সমাধান করা সহ। আপনি DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ( #288 ) ব্যবহার করে এটি সক্ষম করতে পারেন।
  • RTSP এক্সটেনশন:
    • এমন একটি রেসের অবস্থা ঠিক করুন যা TCP-এ ফিরে যাওয়ার সময় IndexOutOfBoundsException হতে পারে, বা কিছু পরিস্থিতিতে প্লেব্যাক ঝুলতে পারে।
    • RtspMediaPeriod ( #577 ) এর লোডিং অবস্থা ফেরানোর সময় RTSP সেটআপে স্থিতি পরীক্ষা করুন।
    • বিকল্প প্রতিক্রিয়া পাবলিক হেডারে কাস্টম Rtsp অনুরোধ পদ্ধতি উপেক্ষা করুন ( #613 )।
    • কিপ-অ্যালাইভ RTSP অপশন রিকোয়েস্ট পাঠানোর সময়ের ব্যবধানে RTSP সেটআপ রেসপন্স টাইমআউট মান ব্যবহার করুন ( #662 )।
  • ডিকোডার এক্সটেনশন (FFmpeg, VP9, ​​AV1, MIDI, ইত্যাদি):
    • MIDI ডিকোডার মডিউলটি প্রকাশ করুন, যা অডিও সংশ্লেষিত করতে Jsyn লাইব্রেরি ব্যবহার করে স্ট্যান্ডার্ড MIDI ফাইলগুলির প্লেব্যাকের জন্য সমর্থন প্রদান করে।
    • আউটপুট বাফারগুলিকে সরাসরি চিহ্নিত করতে DecoderOutputBuffer.shouldBeSkipped যোগ করুন যা উপস্থাপন করার প্রয়োজন নেই। এটিকে C.BUFFER_FLAG_DECODE_ONLY থেকে অগ্রাধিকার দেওয়া হবে যা অবমূল্যায়িত হবে৷
    • Decoder.setOutputStartTimeUs এবং SimpleDecoder.isAtLeastOutputStartTimeUs যোগ করুন ডিকোডারগুলিকে শুরুর সময়ের আগে ডিকোড-শুধু নমুনাগুলি ড্রপ করার অনুমতি দিতে৷ এটি Buffer.isDecodeOnly থেকে পছন্দ করা উচিত যেটি অবমূল্যায়িত হবে।
    • Maven সংগ্রহস্থলে MIDI ডিকোডার আর্টিফ্যাক্ট প্রকাশের বাগ ঠিক করুন। আর্টিফ্যাক্টটির নাম পরিবর্তন করে media3-exoplayer-midi ( #734 ) রাখা হয়েছে।
  • লিনব্যাক এক্সটেনশন:
    • একটি সারফেস অক্ষম করার ফলে লিনব্যাক কোডে ( #617 ) একটি ArithmeticException ঘটতে পারে এমন বাগ ঠিক করুন।
  • পরীক্ষা উপযোগিতা:
    • TestExoPlayerBuilder এবং FakeClock Espresso UI পরীক্ষা এবং রচনা UI পরীক্ষার সাথে সামঞ্জস্যপূর্ণ করুন। এটি একটি বাগ সংশোধন করে যেখানে প্লেব্যাক এস্প্রেসো বা কম্পোজ ভিউ ইন্টারঅ্যাকশনের সময় অ-নির্ধারকভাবে অগ্রসর হয়।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) এবং TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) সরান। Composition.Builder.setHdrMode(int) ব্যবহার করুন এবং পরিবর্তে Transformer.start(Composition, String)Composition পাস করুন।
    • অপসারিত DownloadNotificationHelper.buildProgressNotification পদ্ধতি সরান, একটি অপ্রচলিত পদ্ধতি ব্যবহার করুন যা পরিবর্তে একটি notMetRequirements প্যারামিটার নেয়।

সংস্করণ 1.2.0-rc01

নভেম্বর 1, 2023

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

সংস্করণ 1.2.0-beta01

অক্টোবর 19, 2023

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

সংস্করণ 1.2.0-alpha02

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

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

সংস্করণ 1.2.0-alpha01

আগস্ট 17, 2023

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

সংস্করণ 1.1.0

সংস্করণ 1.1.1

16 আগস্ট, 2023

  • সাধারণ গ্রন্থাগার:
    • সমস্ত মডিউল ( #499 ) থেকে দুর্ঘটনাক্রমে যোগ করা multidex নির্ভরতা সরান।
  • এক্সো প্লেয়ার:
    • PlaybackStatsListener এ সমস্যাটি ঠিক করুন যেখানে প্লেলিস্ট সাফ করার পরে ভুয়া PlaybackStats তৈরি করা হয়।
    • কমন মিডিয়া ক্লায়েন্ট ডেটা (CMCD) লগিং-এ অতিরিক্ত ক্ষেত্র যোগ করুন: স্ট্রিমিং ফরম্যাট (sf), স্ট্রিম টাইপ (st), ভার্সন (v), টপ বিরেট (tb), অবজেক্ট ডিউরেশন (d), মাপা থ্রুপুট (mtp) এবং অবজেক্ট টাইপ (ot) ( #8699 )।
  • শ্রুতি:
    • একটি বাগ ঠিক করুন যেখানে Player.getState() খুব ছোট ফাইল ( #538 ) খেলার সময় STATE_ENDED এ রূপান্তরিত হয়নি।
  • অডিও অফলোড:
    • RFC 7845 অনুযায়ী অফলোড করা Opus প্লেব্যাকের জন্য Ogg ID হেডার এবং কমেন্ট হেডার পৃষ্ঠাগুলিকে বিটস্ট্রিমে প্রিপেন্ড করুন।
  • ভিডিও:
    • H.265/HEVC: SPS স্বল্প এবং দীর্ঘমেয়াদী রেফারেন্স ছবির তথ্য পার্সিং ঠিক করুন।
  • পাঠ্য:
    • CEA-608: শুধুমাত্র দৃশ্যমান পাঠ্য বিবেচনা করতে কিউ ট্রাঙ্কেশন লজিক পরিবর্তন করুন। পূর্বে ইন্ডেন্ট এবং ট্যাব অফসেট অন্তর্ভুক্ত করা হয়েছিল যখন কিউ দৈর্ঘ্য 32 টি অক্ষরে সীমাবদ্ধ করা হয়েছিল (যা প্রযুক্তিগতভাবে বিশেষভাবে সঠিক ছিল) ( #11019 )।
  • আইএমএ এক্সটেনশন:
    • IMA SDK সংস্করণকে 3.30.3 এ বাম্প করুন৷
  • সেশন:
    • কন্ট্রোলারের অবস্থায় কাস্টম লেআউট যোগ করুন এবং এটি অ্যাক্সেস করার জন্য একটি গেটার প্রদান করুন। কাস্টম লেআউট পরিবর্তন হলে, MediaController.Listener.onCustomLayoutChanged বলা হয়। যে অ্যাপগুলি বিভিন্ন Media3 কন্ট্রোলারে বিভিন্ন কাস্টম লেআউট পাঠাতে চায় তারা MediaSession.Callback.onConnect এ একটি AcceptedResultBuilder ব্যবহার করে কানেকশন সম্পূর্ণ হলে কাস্টম লেআউট কন্ট্রোলারের কাছে উপলব্ধ আছে কিনা তা নিশ্চিত করতে পারে৷
    • যেসব ক্ষেত্রে MediaLibraryServiceLegacyStub একটি Result একটি ত্রুটি পাঠিয়েছে যা এটি সমর্থন করে না যা একটি UnsupportedOperationException ( #78 ) তৈরি করেছে তা ঠিক করুন।
    • লিগ্যাসি কমান্ড ( COMMAND_ADJUST_DEVICE_VOLUME এবং COMMAND_SET_DEVICE_VOLUME ) এবং নতুন COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS মাধ্যমে volumeControlType নির্ধারণ করে PlayerWrapper একটি VolumeProviderCompat তৈরি করার উপায় ঠিক করুন COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS ) ( #554 )

সংস্করণ 1.1.0

5 জুলাই, 2023

  • সাধারণ গ্রন্থাগার:
    • অনুপযুক্ত অডিও রুটের জন্য দমন কারণ যোগ করুন এবং খুব দীর্ঘ চাপা কারণ পরিবর্তন করার জন্য প্রস্তুত হলে প্লে করুন। ( #15 )।
    • প্লেয়ারে কমান্ড যোগ করুন:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • প্লেয়ারে ওভারলোড করা পদ্ধতি যোগ করুন যা ব্যবহারকারীদের ভলিউম ফ্ল্যাগ নির্দিষ্ট করতে দেয়:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo এর জন্য Builder যোগ করুন এবং বিদ্যমান কনস্ট্রাক্টরকে অবমূল্যায়ন করুন।
    • দূরবর্তী প্লেব্যাকের জন্য রাউটিং কন্ট্রোলার আইডি নির্দিষ্ট করতে DeviceInfo.routingControllerId যোগ করুন।
    • Player.replaceMediaItem(s) যোগ করুন একটি শর্টকাট হিসাবে একই অবস্থানে আইটেম যোগ এবং অপসারণ ( #8046 )।
  • এক্সো প্লেয়ার:
    • ExoPlayer-কে শুধুমাত্র ডিভাইসের ভলিউম পদ্ধতির নিয়ন্ত্রণ করার অনুমতি দিন যদি স্পষ্টভাবে অপ্ট ইন করা থাকে। এতে অ্যাক্সেস পেতে ExoPlayer.Builder.setDeviceVolumeControlEnabled ব্যবহার করুন:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) এবং setDeviceVolume(int, int)
      • increaseDeviceVolume(int) এবং increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) এবং decreaseDeviceVolume(int, int)
    • 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() ওভাররাইড করুন।
    • একটি কাস্টম *.exolist.json ফাইল ( #439 ) দিয়ে ডেমো অ্যাপ শুরু করা সহজ করতে প্রধান ডেমোর প্রকাশে অতিরিক্ত অ্যাকশন যোগ করুন।
    • ভিডিও প্লেব্যাকের সময় Effect ব্যবহার করার জন্য ExoPlayer.setVideoEffects() যোগ করুন।
    • একটি int এর পরিবর্তে sourceId long হিসাবে সংরক্ষণ করতে SampleQueue আপডেট করুন। এটি পাবলিক পদ্ধতি SampleQueue.sourceId এবং SampleQueue.peekSourceId এর স্বাক্ষর পরিবর্তন করে।
    • LoadControl পদ্ধতিতে প্যারামিটার যোগ করুন স্টার্টপ্লেব্যাক এবং onTracksSelected shouldStartPlayback যা প্রাসঙ্গিক MediaPeriod সাথে এই পদ্ধতিগুলিকে সংযুক্ত করার অনুমতি দেয়।
    • একটি টাইমলাইন প্যারামিটার যোগ করে ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) এর স্বাক্ষর পরিবর্তন করুন যা মানচিত্রে কী হিসাবে ব্যবহৃত UID-এর সাথে পিরিয়ড ধারণ করে। মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলির সাথে একযোগে সমস্যা এড়াতে এটি প্রয়োজন।
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) এবং BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) বাতিল করুন। mediaTimeOffsetUs ছাড়া পদ্ধতির বৈকল্পিক পরিবর্তে কল করা যেতে পারে। মনে রাখবেন যে অবহেলিত ভেরিয়েন্টের জন্যও, অফসেটটি আর প্রেরক দ্বারা প্রেরিত MediaLoadData অবজেক্টের startTimeUs এবং endTimeUs যোগ করা হয় না।
    • ExoTrackSelection.blacklist নাম পরিবর্তন করে excludeTrack এবং isTrackExcludedisBlacklisted
    • খালি প্লেলিস্টে কল করা হলে ExoPlayer.setMediaItem(s) এবং addMediaItem(s) এর মধ্যে অসামঞ্জস্যপূর্ণ আচরণ ঠিক করুন৷
  • ট্রান্সফরমার:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) সরান। পরিবর্তে ExoPlayerAssetLoader.Factory(MediaSource.Factory) এবং Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) ব্যবহার করুন।
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) সরান।
    • একটি বাগ ঠিক করুন যেখানে রূপান্তর আটকে যেতে পারে (মুক্সার টাইমআউটের দিকে নিয়ে যায়) যদি ভিডিও স্ট্রিমের সমাপ্তি মুহুর্তে সিগন্যাল করা হয় যখন একটি ইনপুট ফ্রেম প্রক্রিয়াকরণ মুলতুবি ছিল।
    • সমর্থন প্রসারিত করতে findDecoder/EncoderForFormat ইউটিলিটিগুলি ব্যবহার করার পরিবর্তে MediaCodecList এর মাধ্যমে কোডেক অনুসন্ধান করুন।
    • DefaultEncoderFactory বি-ফ্রেম কনফিগারেশন সরান কারণ এটি কিছু ডিভাইসে কাজ করে না।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange যোগ করুন যা ডিফল্টরূপে অক্ষম থাকে। সক্রিয় করা হলে, রেন্ডারারের ক্ষমতা পরিবর্তিত হলে DefaultTrackSelector একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে৷
  • নিষ্কাশনকারী:
    • Ogg: দীর্ঘ সময়ের ( #391 ) সাথে ফাইল খুঁজতে গিয়ে বাগ ফিক্স করুন।
    • FMP4: সমস্যাটি ঠিক করুন যেখানে TimestampAdjuster ইএমএসজি পরমাণু ( #356 ) থেকে মেটাডেটা নমুনা সময় সহ একটি ভুল টাইমস্ট্যাম্প অফসেট শুরু করে।
  • শ্রুতি:
    • টানেলিং সক্ষম হলে এবং AudioProcessors সক্রিয় থাকাকালীন কিছু প্লেব্যাক ব্যর্থ হলে বাগ ঠিক করুন, যেমন ফাঁকহীন ছাঁটাইয়ের জন্য ( #10847 )।
    • সরাসরি প্লেব্যাকে (অফলোড) Ogg প্যাকেটে ওপাস ফ্রেমগুলিকে এনক্যাপসুলেট করুন।
    • অফলোড শিডিউলিংয়ের সাথে ঘুমের সময় বর্তমান অবস্থান এক্সট্রাপোলেট করুন।
    • খেলোয়াড়ের জীবনচক্রের শেষে সংস্থানগুলি প্রকাশ করার জন্য Renderer.release() এবং AudioSink.release() যোগ করুন।
    • DefaultAudioSink এ অডিও ক্ষমতার পরিবর্তনগুলি শুনুন। DefaultAudioSink এর কনস্ট্রাক্টরে একটি প্রয়োজনীয় প্যারামিটার context যোগ করুন, যার সাহায্যে DefaultAudioSink AudioCapabilitiesReceiver এ শ্রোতা হিসাবে নিবন্ধন করবে এবং ক্ষমতা পরিবর্তনের সাথে জানানো হলে তার audioCapabilities বৈশিষ্ট্য আপডেট করবে।
    • AudioSink.Listener ইন্টারফেস এবং onAudioCapabilitiesChanged যা onRendererCapabilitiesChanged ইভেন্টগুলিতে ট্রিগার করে একটি নতুন ইন্টারফেস এ RendererCapabilities.Listener এ একটি নতুন ইভেন্টের মাধ্যমে অডিও ক্ষমতার পরিবর্তনগুলি প্রচার করুন৷
    • অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য ChannelMixingAudioProcessor যোগ করুন।
    • DecoderDiscardReasons নতুন int মান DISCARD_REASON_AUDIO_BYPASS_POSSIBLE যোগ করুনDiscardঅডিও ক্ষমতা পরিবর্তনের পরে বাইপাস মোড সম্ভব হলে অডিও ডিকোডার বাতিল করার কারণ।
    • DTS Express এবং DTS:X ( #335 ) এর জন্য সরাসরি প্লেব্যাক সমর্থন যোগ করুন।
  • ভিডিও:
    • যখন রেন্ডারার অক্ষম থাকে তখন MediaCodecVideoRenderer 0 এর প্রস্থ এবং উচ্চতা সহ একটি VideoSize রিপোর্ট করুন৷ Player.Listener.onVideoSizeChanged কে সেই অনুযায়ী বলা হয় যখন Player.getVideoSize() পরিবর্তন হয়। এই পরিবর্তনের সাথে, MediaCodecVideoRenderer এর সাথে ExoPlayer-এর ভিডিওর আকার 0 এর প্রস্থ এবং উচ্চতা থাকে যখন Player.getCurrentTracks ভিডিও সমর্থন করে না, বা সমর্থিত ভিডিও ট্র্যাকের আকার এখনও নির্ধারণ করা হয়নি।
  • DRM:
    • DefaultDrmSession এ বেশ কয়েকটি অভ্যন্তরীণ-শুধু পদ্ধতির দৃশ্যমানতা হ্রাস করুন যেগুলি DRM প্যাকেজের বাইরে থেকে কল করার আশা করা হয় না:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • মুক্সার:
    • একটি নতুন মুক্সার লাইব্রেরি যোগ করুন যা একটি MP4 কন্টেইনার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • DAI-এর জন্য মাল্টি-পিরিয়ড লাইভ DASH স্ট্রিমগুলি সক্ষম করুন৷ অনুগ্রহ করে মনে রাখবেন যে বর্তমান বাস্তবায়ন এখনও লাইভ স্ট্রীম ( #10912 ) এ খোঁজা সমর্থন করে না।
    • লাইভ স্ট্রিমগুলিতে একটি নতুন বিজ্ঞাপন গোষ্ঠী সন্নিবেশিত করা হয়েছে এমন একটি বাগ ঠিক করুন কারণ পরপর টাইমলাইনে গণনা করা সামগ্রীর অবস্থান সামান্য পরিবর্তিত হয়।
  • সেশন:
    • সাহায্যকারী পদ্ধতি যোগ করুন MediaSession.getControllerForCurrentRequest যে কন্ট্রোলারটি বর্তমানে Player পদ্ধতিতে কল করছে সে সম্পর্কে তথ্য পেতে।
    • androidx.media3.session.MediaButtonReceiver যোগ করুন যাতে পাঠানো মিডিয়া বোতাম ইভেন্টগুলির মাধ্যমে প্লেব্যাক পুনঃসূচনা কার্যকর করতে অ্যাপ্লিকেশনগুলিকে সক্ষম করতে, উদাহরণস্বরূপ, একটি ব্লুটুথ হেডসেট ( #167 )৷
    • MediaSession.Callback.onAddMediaItems এ ডিফল্ট বাস্তবায়ন যোগ করুন যাতে অনুরোধ করা MediaItems Player পাস করার অনুমতি দেয় যদি তাদের LocalConfiguration থাকে (যেমন URI) ( #282 )।
    • অ্যান্ড্রয়েড 12 এবং নীচের ( #410 ) জন্য ডিফল্টরূপে কমপ্যাক্ট মিডিয়া বিজ্ঞপ্তি ভিউতে "পূর্ববর্তীতে অনুসন্ধান করুন" এবং "পরবর্তীতে অনুসন্ধান করুন" কমান্ড বোতামগুলি যুক্ত করুন।
    • MediaSession.Callback.onAddMediaItems এ ডিফল্ট বাস্তবায়ন যোগ করুন যাতে অনুরোধ করা MediaItems Player পাস করার অনুমতি দেয় যদি তাদের LocalConfiguration থাকে (যেমন URI) ( #282 )।
    • অ্যান্ড্রয়েড 12 এবং নীচের ( #410 ) জন্য ডিফল্টরূপে কমপ্যাক্ট মিডিয়া বিজ্ঞপ্তি ভিউতে "পূর্ববর্তীতে অনুসন্ধান করুন" এবং "পরবর্তীতে অনুসন্ধান করুন" কমান্ড বোতামগুলি যুক্ত করুন।
  • UI:
    • একটি প্লে/পজ বোতামের সাহায্যে কাস্টম UI উপাদানগুলি লিখতে Util পদ্ধতিগুলি যোগ করুন shouldShowPlayButton এবং handlePlayPauseButtonAction
  • RTSP এক্সটেনশন:
    • MPEG4-LATM-এর জন্য, ডিফল্ট প্রোফাইল-লেভেল-আইডি মান ব্যবহার করুন যদি ডিসক্রাইব রেসপন্স এসডিপি বার্তা ( #302 ) এ অনুপস্থিত থাকে।
    • RTSP সেশন থেকে আপেক্ষিক পাথ রেজোলিউশনের জন্য বেস Uri ব্যবহার করুন যদি DESCRIBE রেসপন্স হেডারে উপস্থিত থাকে ( #11160 )।
  • ড্যাশ এক্সটেনশন:
    • মাল্টি পিরিয়ড DASH স্ট্রীমগুলির জন্য MediaLoadData.startTimeMs এবং MediaLoadData.endTimeMs থেকে মিডিয়া টাইম অফসেট সরান৷
    • একটি বাগ ঠিক করুন যেখানে একটি মাল্টি-পিরিয়ড লাইভ ড্যাশ মিডিয়া সোর্স পুনরায় প্রস্তুত করার ফলে একটি IndexOutOfBoundsException ( #10838 ) তৈরি হয়।
  • HLS এক্সটেনশন:
    • HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) যোগ করুন লোডিং থ্রেডের TimestampAdjuster শুরু হওয়ার জন্য অপেক্ষা করার জন্য একটি সময়সীমা সেট করতে। যদি টাইমআউটের আগে আরম্ভ করা সম্পূর্ণ না হয়, তাহলে প্লেব্যাকের অন্তহীন স্টল এড়াতে একটি PlaybackException নিক্ষেপ করা হয়। টাইমআউট ডিফল্টরূপে শূন্য সেট করা হয় ( #323 )।
  • পরীক্ষা উপযোগিতা:
    • DataSourceContractTest এ URI স্কিমের ক্ষেত্রে অসংবেদনশীলতা পরীক্ষা করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • DefaultAudioSink কনস্ট্রাক্টর সরান, পরিবর্তে DefaultAudioSink.Builder ব্যবহার করুন।
    • HlsMasterPlaylist সরান, পরিবর্তে HlsMultivariantPlaylist ব্যবহার করুন।
    • Player.stop(boolean) সরান। পরিবর্তে Player.stop() এবং Player.clearMediaItems() (যদি reset true হয়) ব্যবহার করুন।
    • দুটি অবচয়িত SimpleCache কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা আরও ভাল পারফরম্যান্সের জন্য পরিবর্তে একটি DatabaseProvider নেয়।
    • DefaultBandwidthMeter কনস্ট্রাক্টর সরান, পরিবর্তে DefaultBandwidthMeter.Builder ব্যবহার করুন।
    • DefaultDrmSessionManager কনস্ট্রাক্টর সরান, পরিবর্তে DefaultDrmSessionManager.Builder ব্যবহার করুন।
    • দুটি অবচয়িত HttpDataSource.InvalidResponseCodeException কনস্ট্রাক্টর সরান, একটি অ-বঞ্চিত কনস্ট্রাক্টর ব্যবহার করুন যা ত্রুটি লগিং উন্নত করতে অতিরিক্ত ক্ষেত্র ( cause , responseBody ) গ্রহণ করে৷
    • DownloadHelper.forProgressive , DownloadHelper.forHls , DownloadHelper.forDash এবং DownloadHelper.forSmoothStreaming সরান, পরিবর্তে DownloadHelper.forMediaItem ব্যবহার করুন।
    • অবচয়িত DownloadService কনস্ট্রাক্টর সরান, একটি অপ্রচলিত কনস্ট্রাক্টর ব্যবহার করুন যাতে একটি channelDescriptionResourceId প্যারামিটার প্রদান করার বিকল্প রয়েছে।
    • com.google.common.base.Charsets ( ASCII_NAME , UTF8_NAME , ISO88591_NAME , UTF16_NAME এবং UTF16LE_NAME ) জন্য অপ্রচলিত স্ট্রিং ধ্রুবকগুলি সরান , kotlin.text প্যাকেজ থেকে Kotlin Charsets ব্যবহার করুন, java.nio.charset.StandardCharsets
    • অবচয়িত WorkManagerScheduler কনস্ট্রাক্টর সরান, একটি অপ্রত্যাশিত কনস্ট্রাক্টর ব্যবহার করুন যার পরিবর্তে একটি Context প্যারামিটার প্রদান করার বিকল্প রয়েছে।
    • ক্রিয়েট createVideoSampleFormat , createAudioSampleFormat , createContainerFormat , এবং createSampleFormat , যেগুলি Format শ্রেণীকে ইনস্ট্যান্টিয়েট করতে ব্যবহৃত হয়েছিল সেগুলি সরান৷ পরিবর্তে Format উদাহরণ তৈরি করার জন্য Format.Builder ব্যবহার করুন।
    • অপসারিত পদ্ধতিগুলি সরিয়ে দিন copyWithMaxInputSize , copyWithSubsampleOffsetUs , copyWithLabel , copyWithManifestFormatInfo , copyWithGaplessInfo , copyWithFrameRate , copyWithDrmInitData , copyWithMetadata , copyWithMetadata , copyWithBitrate , Format.buildUpon() এবং পরিবর্তে copyWithVideoSize পদ্ধতি।
    • অপসারিত ExoPlayer.retry() মুছে ফেলুন, এর পরিবর্তে prepare() ব্যবহার করুন।
    • অপ্রচলিত শূন্য-আর্গ DefaultTrackSelector কনস্ট্রাক্টর সরান, পরিবর্তে DefaultTrackSelector(Context) ব্যবহার করুন।
    • অপসারিত OfflineLicenseHelper কনস্ট্রাক্টর সরান, পরিবর্তে OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) ব্যবহার করুন৷
    • অপসারিত DownloadManager কনস্ট্রাক্টর সরান, এর পরিবর্তে একটি Executor নেওয়া কনস্ট্রাক্টর ব্যবহার করুন।
    • অপ্রচলিত Cue কনস্ট্রাক্টর সরান, পরিবর্তে Cue.Builder ব্যবহার করুন।
    • অপসারিত OfflineLicenseHelper কনস্ট্রাক্টর সরান, পরিবর্তে OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) ব্যবহার করুন৷
    • চারটি অপ্রচলিত AnalyticsListener পদ্ধতি সরান:
      • onDecoderEnabled , পরিবর্তে onAudioEnabled এবং/অথবা onVideoEnabled ব্যবহার করুন।
      • onDecoderInitialized , onAudioDecoderInitialized এবং/অথবা onVideoDecoderInitialized ব্যবহার করুন।
      • onDecoderInputFormatChanged , onAudioInputFormatChanged এবং/অথবা onVideoInputFormatChanged ব্যবহার করুন।
      • onDecoderDisabled , onAudioDisabled এবং/অথবা onVideoDisabled ব্যবহার করুন।
    • বাতিল করা Player.Listener.onSeekProcessed এবং AnalyticsListener.onSeekProcessed সরান, পরিবর্তে DISCONTINUITY_REASON_SEEK এর সাথে onPositionDiscontinuity ব্যবহার করুন।
    • ExoPlayer.setHandleWakeLock(boolean) সরান, পরিবর্তে setWakeMode(int) ব্যবহার করুন।
    • অপসারিত DefaultLoadControl.Builder.createDefaultLoadControl() সরান, পরিবর্তে build() ব্যবহার করুন।
    • অপসারিত MediaItem.PlaybackProperties সরান, পরিবর্তে MediaItem.LocalConfiguration ব্যবহার করুন৷ অপ্রচলিত ক্ষেত্র MediaItem.playbackProperties এখন MediaItem.LocalConfiguration টাইপের।

সংস্করণ 1.1.0-rc01

জুন 21, 2023

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

সংস্করণ 1.1.0-beta01

7 জুন, 2023

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

সংস্করণ 1.1.0-alpha01

10 মে, 2023

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

সংস্করণ 1.0.0

সংস্করণ 1.0.2

18 মে, 2023

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

এই রিলিজটি ExoPlayer 2.18.7 রিলিজের সাথে মিলে যায়।

এই রিলিজে 1.0.1 প্রকাশের পর থেকে নিম্নলিখিত পরিবর্তনগুলি রয়েছে:

  • মূল গ্রন্থাগার:
    • Buffer.isLastSample() যোগ করুন যা বোঝায় যদি Buffer ফ্ল্যাগ C.BUFFER_FLAG_LAST_SAMPLE থাকে।
    • 'স্ট্রিমের শেষ' নমুনা না পড়ে ফ্রেমের সাথে শেষ নমুনাটি সারিবদ্ধ থাকলে যেখানে শেষ ফ্রেম রেন্ডার নাও হতে পারে সেই সমস্যার সমাধান করুন। ( #11079 )।
  • নিষ্কাশনকারী:
    • RTSP এবং MP4 এক্সট্র্যাক্টর ( #303 ) দ্বারা ইতিমধ্যে ব্যবহৃত পার্সিং লজিক পুনরায় ব্যবহার করে MPEG-TS ফাইলগুলিতে H.265 SPS-এর পার্সিং ঠিক করুন।
  • পাঠ্য:
    • SSA: UTF-16 ফাইলগুলির জন্য সমর্থন যোগ করুন যদি তারা একটি বাইট অর্ডার চিহ্ন দিয়ে শুরু করে ( #319 )।
  • সেশন:
    • একটি লিগ্যাসি MediaSessionCompat এর সাথে সংযুক্ত থাকাকালীন যেখানে MediaController এর উপলব্ধ কমান্ডগুলি আপডেট করে না যেখানে এটির ক্রিয়াগুলি আপডেট করে সেই সমস্যাটি সমাধান করুন৷
    • বাগ সংশোধন করুন যা MediaLibraryService সিস্টেম UI থেকে Callback.onGetLibraryRootparams.isRecent == true API 30 ( #355 ) এ সত্যের সাথে একটি কলের জন্য নাল ফেরাতে বাধা দেয়।
    • MediaSessionService বা MediaLibraryService ( #346 ) এর মেমরি লিক ঠিক করুন।
    • একটি MediaSession এ একটি সম্মিলিত Timeline এবং অবস্থান আপডেট একটি MediaController একটি IllegalStateException নিক্ষেপের কারণ হতে পারে এমন বাগ ঠিক করুন।

সংস্করণ 1.0.1

18 এপ্রিল, 2023

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

এই রিলিজটি ExoPlayer 2.18.6 রিলিজের সাথে মিলে যায়।

  • মূল গ্রন্থাগার:
    • ডিফল্ট অবস্থানে যাওয়ার সময় লক্ষ্য লাইভ স্ট্রিম ওভাররাইড রিসেট করুন ( #11051 )।
    • মিডিয়াতে খালি নমুনা স্ট্রীম প্লেব্যাক আটকে যেতে পারে এমন বাগ ঠিক করুন।
  • সেশন:
    • একটি লিগ্যাসি MediaSessionCompat দ্বারা প্রকাশিত একাধিক অভিন্ন সারি আইটেম যেখানে MediaController ( #290 ) এ একটি ব্যতিক্রম দেখায় সেখানে বাগ ঠিক করুন।
    • উত্তরাধিকার MediaControllerCompat.Callback.onSessionEvent ( #293 ) এ MediaSession.broadcastCustomCommand এর অনুপস্থিত ফরওয়ার্ডিং যোগ করুন।
    • যেখানে MediaSession.setPlayer কল করা উপলব্ধ কমান্ড আপডেট করে না সেখানে বাগ ঠিক করুন।
    • একটি MediaController থেকে প্রেরিত TrackSelectionOverride দৃষ্টান্তগুলি যদি Format.metadata ( #296 ) সহ একটি গোষ্ঠীর উল্লেখ করলে তা উপেক্ষা করা হয় এমন সমস্যার সমাধান করুন৷
    • যেখানে Player.COMMAND_GET_CURRENT_MEDIA_ITEM লিগ্যাসি MediaSessionCompat এর মাধ্যমে মেটাডেটা অ্যাক্সেস করার জন্য উপলব্ধ থাকা প্রয়োজন সেখানে সমস্যাটি সমাধান করুন।
    • একটি ব্যাকগ্রাউন্ড থ্রেডে MediaSession দৃষ্টান্তগুলি MediaSessionService ( #318 ) এ ব্যবহার করার সময় ক্র্যাশ করে এমন সমস্যার সমাধান করুন।
    • একটি মিডিয়া বোতাম রিসিভার অ্যাপটি উদ্দেশ্য না করেই লাইব্রেরি দ্বারা ঘোষণা করা হয়েছে এমন সমস্যাটি ঠিক করুন ( #314 )।
  • ড্যাশ:
    • খালি সেগমেন্ট টাইমলাইনগুলির হ্যান্ডলিং ঠিক করুন ( #11014 )।
  • RTSP:
    • RTSP Error 461 UnsupportedTransport ( #11069 ) এর সাথে UDP এর সাথে RTSP সেটআপ ব্যর্থ হলে TCP দিয়ে পুনরায় চেষ্টা করুন।

সংস্করণ 1.0.0

22 মার্চ, 2023

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

এই রিলিজটি ExoPlayer 2.18.5 রিলিজের সাথে মিলে যায়।

1.0.0-rc02 থেকে কোন পরিবর্তন নেই।

সংস্করণ 1.0.0-rc02

2 মার্চ, 2023

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

এই রিলিজটি ExoPlayer 2.18.4 রিলিজের সাথে মিলে যায়।

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

সংস্করণ 1.0.0-rc01

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

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

এই রিলিজটি ExoPlayer 2.18.3 রিলিজের সাথে মিলে যায়।

  • মূল গ্রন্থাগার:
    • 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.folderType এর প্রতিস্থাপন হিসাবে MediaMetadata.isBrowsable যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
  • ড্যাশ:
    • টাইল গণনা সহ চিত্র অভিযোজন সেটের জন্য সম্পূর্ণ পার্সিং যোগ করুন ( #3752 )।
  • UI:
    • দৃশ্যমানতা পরিবর্তনগুলি নিবন্ধিত শ্রোতার কাছে পাস করা হয়েছে তা নিশ্চিত করতে অবচ্যুত PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener) ঠিক করুন ( #229 )।
    • ডান-থেকে-বাম (RTL) লেআউট ( #227 ) ব্যবহার করার সময় PlayerView এ কেন্দ্র প্লেয়ার নিয়ন্ত্রণের ক্রম ঠিক করুন।
  • সেশন:
    • কাস্টম প্লেয়ারদের জন্য Player ইন্টারফেস বাস্তবায়নে সহায়তা করতে বিমূর্ত SimpleBasePlayer যোগ করুন।
    • প্ল্যাটফর্ম সেশন টোকেনকে Media3 SessionToken ( #171 ) এ রূপান্তর করতে সহায়ক পদ্ধতি যোগ করুন।
    • প্ল্যাটফর্ম মিডিয়া সেশনের আপডেটগুলি ট্রিগার করতে onMediaMetadataChanged ব্যবহার করুন ( #219 )।
    • DefaultMediaNotificationProvider এর getMediaButtons() এর একটি যুক্তি হিসাবে মিডিয়া সেশন যোগ করুন এবং স্পষ্টতার জন্য অপরিবর্তনীয় তালিকা ব্যবহার করুন ( #216 )।
    • প্লেয়ার ( #156 ) এ সেট করার আগে সেশন অনুসারে সূচী এবং অবস্থান শুরু করা MediaItem তালিকা সংশোধন/সেট করার উপায় প্রদান করতে onSetMediaItems কলব্যাক শ্রোতা যোগ করুন।
    • নন-ব্লুটুথ মিডিয়া বোতাম ইভেন্টগুলির জন্য ডবল ট্যাপ সনাক্তকরণ এড়িয়ে চলুন ( #233 )।
    • একটি ছায়াময় উত্তরাধিকার সেশন অবস্থার ক্ষেত্রে QueueTimeline আরও শক্তিশালী করুন ( #241 )।
  • মেটাডেটা:
    • ID3 v2.4 দ্বারা অনুমোদিত, ID3 ফ্রেম থেকে একাধিক নাল-বিচ্ছিন্ন মান পার্স করুন।
    • মেটাডেটা দ্বারা বর্ণিত বিষয়বস্তুর ধরন বা ফোল্ডারের ধরন বোঝাতে MediaMetadata.mediaType যোগ করুন।
    • MediaMetadata.folderType এর প্রতিস্থাপন হিসাবে MediaMetadata.isBrowsable যোগ করুন। পরবর্তী রিলিজে ফোল্ডারের ধরনটি বাতিল করা হবে।
  • কাস্ট এক্সটেনশন:
    • 21.2.0-এ কাস্ট SDK সংস্করণকে বাম্প করুন।
  • আইএমএ এক্সটেনশন:
    • থ্রেডিং সমস্যা এড়াতে অ্যাপ্লিকেশন থ্রেডে ImaServerSideAdInsertionMediaSource এর প্লেয়ার লিসেনারকে সরিয়ে দিন।
    • টিভি ডিভাইসে স্কিপ বোতামে ফোকাস করার অনুরোধ করার জন্য ImaServerSideAdInsertionMediaSource.AdsLoader.Builder এ যখন উপলব্ধ একটি প্রপার্টি focusSkipButtonWhenAvailable যোগ করুন এবং এটিকে ডিফল্টরূপে সত্যে সেট করুন৷
    • ImaServerSideAdInsertionMediaSource.AdsLoader এ একটি পদ্ধতি focusSkipButton() যোগ করুন প্রোগ্রাম্যাটিকভাবে স্কিপ বোতামে ফোকাস করার অনুরোধ করতে।
    • IMA SDK সংস্করণকে 3.29.0 এ বাম্প করুন৷
  • ডেমো অ্যাপ:
    • রানটাইমে বিজ্ঞপ্তি ডাউনলোড করার জন্য বিজ্ঞপ্তির অনুমতির অনুরোধ করুন ( #10884 )।

সংস্করণ 1.0.0-beta03

নভেম্বর 22, 2022

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

এই রিলিজটি ExoPlayer 2.18.2 রিলিজের সাথে মিলে যায়।

  • মূল গ্রন্থাগার:
    • বর্তমানে নির্বাচিত ট্র্যাকগুলির জন্য টানেলিং সক্ষম হয়েছে কিনা তা পরীক্ষা করতে ExoPlayer.isTunnelingEnabled যোগ করুন ( #2518 )।
    • একটি একক MediaSource ( #7279 ) মোড়ানো সহজ করতে WrappingMediaSource যোগ করুন।
    • অপর্যাপ্ত উপলব্ধ মেমরির কারণে প্লেব্যাক আটকে যাওয়ার আগে ব্যাক বাফার বাতিল করুন।
    • অফলোড সক্ষম হলে ট্রেসিং "doSomeWork" ব্লকটি বন্ধ করুন৷
    • PlaybackStatsListener ( #180 ) এ দ্রুত অনুসন্ধানের সাথে সেশন ট্র্যাকিং সমস্যা সমাধান করুন।
    • একটি একক-আইটেম প্লেলিস্ট ( #10667 ) এ seekToNext বা seekToPrevious কল করার সময় অনুপস্থিত onMediaItemTransition কলব্যাক পাঠান।
    • Player.getSurfaceSize যোগ করুন যা ভিডিওটি রেন্ডার করা হয়েছে এমন পৃষ্ঠের আকার প্রদান করে।
    • প্লেয়ার রিলিজের সময় শ্রোতাদের অপসারণ করার ফলে একটি IllegalStateException ( #10758 ) হতে পারে এমন ত্রুটির সমাধান করুন৷
  • নির্মাণ:
    • সংকলন ত্রুটিগুলি এড়াতে সর্বনিম্ন compileSdkVersion প্রয়োগ করুন ( #10684 )।
    • অন্য গ্রেডল বিল্ডে অন্তর্ভুক্ত করার সময় প্রকাশনা ব্লক এড়িয়ে চলুন।
  • ট্র্যাক নির্বাচন:
    • ডিসপ্লে সমর্থন না করলে ডলবি ভিশনে অন্যান্য ট্র্যাক পছন্দ করুন। ( #8944 )।
  • ডাউনলোড:
    • একই PriorityTaskManager ( #10570 ) এর সাথে একযোগে ডাউনলোড এবং প্লেব্যাকের কারণে ProgressiveDownloader সম্ভাব্য অসীম লুপ ঠিক করুন।
    • ডাউনলোড বিজ্ঞপ্তি অবিলম্বে প্রদর্শিত করুন ( #183 )।
    • অত্যধিক থ্রেড তৈরি এড়াতে সমান্তরাল ডাউনলোড অপসারণ 1-এ সীমাবদ্ধ করুন ( #10458 )।
  • ভিডিও:
    • ডলবি ভিশনের বিকল্প ডিকোডার ব্যবহার করে দেখুন যদি ডিসপ্লে সমর্থন না করে। ( #9794 )।
  • শ্রুতি:
    • একই সময়ে একাধিক প্লেয়ার রিলিজ করার সময় OutOfMemory ত্রুটি এড়াতে AudioTrack দৃষ্টান্ত প্রকাশের জন্য SingleThreadExecutor ব্যবহার করুন ( #10057 )।
    • অডিওট্র্যাক অফলোড অবস্থার জন্য AudioOffloadListener.onExperimentalOffloadedPlayback যোগ করে। ( #134 )।
    • AudioTrackBufferSizeProvider একটি সর্বজনীন ইন্টারফেস করুন।
    • পছন্দের অডিও আউটপুট ডিভাইস সেট করতে ExoPlayer.setPreferredAudioDevice যোগ করুন ( #135 )।
    • androidx.media3.exoplayer.audio.AudioProcessor এর নাম পরিবর্তন করে androidx.media3.common.audio.AudioProcessor করুন।
    • সমস্ত অ্যান্ড্রয়েড সংস্করণে ( #10701 ) যথাক্রমে 7.1 এবং 7.1.4 চ্যানেল মাস্কে 8-চ্যানেল এবং 12-চ্যানেল অডিও ম্যাপ করুন।
  • মেটাডেটা:
    • MetadataRenderer এখন মেটাডেটা উপলব্ধ হওয়ার সাথে সাথে রেন্ডার করার জন্য কনফিগার করা যেতে পারে। MetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean) দিয়ে একটি উদাহরণ তৈরি করুন রেন্ডারার মেটাডেটা প্রথম দিকে আউটপুট করবে নাকি প্লেয়ার পজিশনের সাথে সিঙ্ক করবে।
  • DRM:
    • অ্যান্ড্রয়েড 13 ক্লিয়ারকি বাস্তবায়নে একটি বাগ নিয়ে কাজ করুন যা একটি অ-খালি কিন্তু অবৈধ লাইসেন্স URL প্রদান করে।
    • setMediaDrmSession failed: session not opened ত্রুটি (যেমন Widevine থেকে ClearKey)।
  • পাঠ্য:
    • CEA-608: ফিল্ড 2-এ পরিষেবা সুইচ কমান্ডগুলি সঠিকভাবে পরিচালনা করা হয়েছে তা নিশ্চিত করুন ( #10666 )।
  • ড্যাশ:
    • ম্যানিফেস্ট ( #10460 ) থেকে EventStream.presentationTimeOffset পার্স করুন।
  • UI:
    • TrackSelectionDialogBuilder ( #10429 ) এ প্রিসেট হিসাবে প্লেয়ারের বর্তমান ওভাররাইড ব্যবহার করুন।
  • সেশন:
    • কিছুর জন্য অ্যাসিঙ্ক্রোনাস রেজোলিউশনের ( #85 ) প্রয়োজন হলেও কমান্ডগুলি সর্বদা সঠিক ক্রমে চালানো হয় তা নিশ্চিত করুন।
    • DefaultMediaNotificationProvider দৃষ্টান্ত তৈরি করতে DefaultMediaNotificationProvider.Builder যোগ করুন। নির্মাতা বিজ্ঞপ্তি আইডি, বিজ্ঞপ্তি চ্যানেল আইডি এবং প্রদানকারীর দ্বারা ব্যবহৃত বিজ্ঞপ্তি চ্যানেলের নাম কনফিগার করতে পারে। এছাড়াও, বিজ্ঞপ্তি ছোট আইকন সেট করতে DefaultMediaNotificationProvider.setSmallIcon(int) পদ্ধতি যোগ করুন। ( #104 )।
    • নিশ্চিত করুন MediaController.release() এর আগে পাঠানো কমান্ডগুলি বাদ দেওয়া হয় না ( #99 )।
    • SimpleBitmapLoader file:// URIs ( #108 ) থেকে বিটম্যাপ লোড করতে পারে।
    • এমন দাবি ঠিক করুন যা MediaController একটি নির্দিষ্ট সময়ের মধ্যে বিজ্ঞাপন খুঁজতে বাধা দেয় ( #122 )।
    • প্লেব্যাক শেষ হয়ে গেলে, MediaSessionService ফোরগ্রাউন্ড থেকে বন্ধ হয়ে যায় এবং সর্বশেষ প্লে করা মিডিয়া আইটেমটির প্লেব্যাক পুনরায় চালু করার জন্য একটি বিজ্ঞপ্তি দেখানো হয় ( #112 )।
    • বিরতির জন্য একটি মুলতুবি অভিপ্রায় সহ একটি অগ্রভাগের পরিষেবা শুরু করবেন না ( #167 )।
    • API 26 এবং API 27-এ DefaultNotificationProvider দ্বারা তৈরি বিজ্ঞপ্তির সাথে যুক্ত 'ব্যাজ' ম্যানুয়ালি লুকান (ব্যাজটি API 28+ এ স্বয়ংক্রিয়ভাবে লুকানো হয়) ( #131 )।
    • বাগ ঠিক করুন যেখানে একটি লিগ্যাসি MediaSession থেকে একটি Media3 MediaController-এর সাথে দ্বিতীয় বাইন্ডার সংযোগের কারণে IllegalStateExceptions ( #49 ) হয়।
  • RTSP:
    • H263 খণ্ডিত প্যাকেট হ্যান্ডলিং যোগ করুন ( #119 )।
    • MP4A-LATM ( #162 ) এর জন্য সমর্থন যোগ করুন।
  • আইএমএ:
    • IMA SDK বিজ্ঞাপন লোড করার সময় আটকে যায় এমন ক্ষেত্রে পরিচালনা করতে বিজ্ঞাপনের তথ্য লোড করার সময়সীমা যোগ করুন ( #10510 )।
    • বিষয়বস্তুর শেষ পর্যন্ত খোঁজার সময় মিড-রোল বিজ্ঞাপনগুলি এড়িয়ে যাওয়া প্রতিরোধ করুন ( #10685 )।
    • সার্ভার-সাইড সন্নিবেশিত বিজ্ঞাপন সহ লাইভ স্ট্রিমগুলির জন্য উইন্ডোর সময়কাল সঠিকভাবে গণনা করুন, উদাহরণস্বরূপ IMA DAI ( #10764 )।
  • FFmpeg এক্সটেনশন:
    • NDK 23.1.7779620 এবং তার উপরে ( #9933 ) এর সাথে FFmpeg লাইব্রেরি লিঙ্ক করতে নতুন প্রয়োজনীয় পতাকা যুক্ত করুন।
  • AV1 এক্সটেনশন:
    • সর্বশেষ অ্যান্ড্রয়েড স্টুডিও রিলিজের ( #9933 ) সাথে অসঙ্গতি এড়াতে CMake সংস্করণ আপডেট করুন।
  • কাস্ট এক্সটেনশন:
    • একটি MediaController ( #142 ) দিয়ে প্লেব্যাক নিয়ন্ত্রণ করার সময় CastPlayer সনাক্ত করতে সক্ষম হতে getDeviceInfo() প্রয়োগ করুন।
  • ট্রান্সফরমার:
    • যখন একটি আউটপুট নমুনা তৈরি করা খুব ধীর তা সনাক্ত করতে muxer ওয়াচডগ টাইমার যোগ করুন৷
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Transformer.Builder.setOutputMimeType(String) সরান। এই বৈশিষ্ট্য সরানো হয়েছে. ডিফল্ট মুক্সার ব্যবহার করা হলে MIME প্রকারটি সর্বদা MP4 হবে।

সংস্করণ 1.0.0-beta02

জুলাই 21, 2022

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

এই রিলিজটি ExoPlayer 2.18.1 রিলিজের সাথে মিলে যায়।

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

সংস্করণ 1.0.0-beta01

16 জুন, 2022

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

এটি ExoPlayer 2.18.0 রিলিজের সাথে মিলে যায়।

  • মূল গ্রন্থাগার:
    • MediaMetricsManager এর মাধ্যমে Android প্ল্যাটফর্ম ডায়াগনস্টিকসের জন্য সমর্থন সক্ষম করুন৷ ExoPlayer প্লেব্যাক ইভেন্ট এবং কর্মক্ষমতা ডেটা প্ল্যাটফর্মে ফরোয়ার্ড করবে, যা ডিভাইসে সিস্টেম কর্মক্ষমতা এবং ডিবাগিং তথ্য প্রদান করতে সাহায্য করে। ডিভাইসের ব্যবহারকারীর দ্বারা ব্যবহার এবং ডায়াগনস্টিক ডেটা ভাগ করা সক্ষম হলে এই ডেটা Google দ্বারা সংগ্রহ করা যেতে পারে৷ অ্যাপগুলি ExoPlayer.Builder.setUsePlatformDiagnostics(false) দিয়ে ExoPlayer-এর জন্য প্ল্যাটফর্ম ডায়াগনস্টিকসে অবদান রাখা থেকে অপ্ট-আউট করতে পারে।
    • MergingMediaSource ব্যবহার করার সময় ট্র্যাকগুলি প্রায়ই রিসেট করা হয় এমন বাগ ঠিক করুন, উদাহরণস্বরূপ যখন সাইড-লোড করা সাবটাইটেল এবং নির্বাচিত সাবটাইটেল মিড-প্লেব্যাক ( #10248 ) পরিবর্তন করা হয়।
    • API 29 এবং 30-এ 5G-NSA নেটওয়ার্কের ধরন সনাক্ত করা বন্ধ করুন৷ এই প্লেব্যাকগুলি একটি 4G নেটওয়ার্ক ধরে নেবে৷
    • MediaSource.Factory.setDrmSessionManagerProvider এবং MediaSource.Factory.setLoadErrorHandlingPolicynull পাস করার অনুমতি দিন। প্রয়োজনে DefaultDrmSessionManagerProvider এবং DefaultLoadErrorHandlingPolicy এর উদাহরণগুলি স্পষ্টভাবে পাস করা যেতে পারে।
    • সঠিক LocalConfiguration জানা না থাকলে মিডিয়া প্লে করার জন্য প্রয়োজনীয় মেটাডেটা উপস্থাপন করতে MediaItem.RequestMetadata যোগ করুন। এছাড়াও MediaMetadata.mediaUrl মুছে ফেলুন কারণ এটি এখন RequestMetadata তে অন্তর্ভুক্ত।
    • খেলোয়াড়দের একটি আইটেম সেট করার অনুমতি দিতে সক্ষম করতে Player.Command.COMMAND_SET_MEDIA_ITEM যোগ করুন।
  • ট্র্যাক নির্বাচন:
    • TrackSelectionOverrides ক্লাসকে TrackSelectionParameters এ সমতল করুন এবং TrackSelectionOverride শীর্ষ স্তরের শ্রেণীতে উন্নীত করুন।
    • TracksInfo ইনফোকে Tracks এবং TracksInfo.TrackGroupInfo ইনফোকে Tracks.Group পুনঃনামকরণ করুন। Player.getCurrentTracksInfo এবং Player.Listener.onTracksInfoChanged এর নামও Player.getCurrentTracks এবং Player.Listener.onTracksChanged করা হয়েছে। এর মধ্যে রয়েছে Player.Listener.onTracksChanged পদ্ধতির নাম 'আন-অপ্রত্যাশিত', কিন্তু বিভিন্ন ধরনের প্যারামিটার সহ।
    • DefaultTrackSelector.buildUponParameters এবং DefaultTrackSelector.Parameters.buildUpon পরিবর্তন করুন DefaultTrackSelector.ParametersBuilder এর পরিবর্তে DefaultTrackSelector.Parameters.Builder ফেরত দিন।
    • DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities যোগ করুন যা ডিফল্টরূপে সক্ষম। সক্রিয় করা হলে, DefaultTrackSelector এমন অডিও ট্র্যাক পছন্দ করবে যার চ্যানেলের সংখ্যা ডিভাইসের আউটপুট ক্ষমতার বেশি নয়। হ্যান্ডহেল্ড ডিভাইসে, DefaultTrackSelector মাল্টিচ্যানেল অডিও ফরম্যাটের চেয়ে স্টেরিও/মনো পছন্দ করবে, যদি না মাল্টিচ্যানেল ফর্ম্যাটটি স্থানিক (Android 12L+) বা ডলবি চারপাশের সাউন্ড ফর্ম্যাট না হয়। উপরন্তু, অডিও স্থানিককরণকে সমর্থন করে এমন ডিভাইসগুলিতে, DefaultTrackSelector স্প্যাটিলাইজার বৈশিষ্ট্যগুলির পরিবর্তনের জন্য নিরীক্ষণ করবে এবং এর উপর একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে। একটি television UI মোড সহ ডিভাইসগুলিকে এই সীমাবদ্ধতাগুলি থেকে বাদ দেওয়া হয়েছে এবং সর্বোচ্চ চ্যানেল গণনা সহ বিন্যাসটিকে অগ্রাধিকার দেওয়া হবে৷ এই বৈশিষ্ট্যটি সক্ষম করার জন্য, DefaultTrackSelector দৃষ্টান্ত একটি Context দিয়ে তৈরি করা আবশ্যক।
  • ভিডিও:
    • DummySurface নাম পরিবর্তন করে PlaceholderSurface করুন।
    • MediaCodecVideoRenderer.getCodecMaxInputSize এ AV1 সমর্থন যোগ করুন।
  • শ্রুতি:
    • LG AC3 অডিও ডিকোডার বিজ্ঞাপন অ-মানক MIME প্রকার ব্যবহার করুন৷
    • API <21-এ ধীরগতির ART যাচাইকরণ রোধ করতে android.media.AudioAttributes থেকে AudioAttributes.getAudioAttributesV21() এর রিটার্ন টাইপটিকে একটি নতুন AudioAttributesV21 র্যাপার ক্লাসে পরিবর্তন করুন।
    • প্ল্যাটফর্ম (API 29+) জিজ্ঞাসা করুন বা অডিও পাসথ্রু-এর জন্য অডিও এনকোডিং চ্যানেল গণনা অনুমান করুন যখন ফর্ম্যাট অডিও চ্যানেল গণনা সেট করা নেই, যা HLS খণ্ডহীন প্রস্তুতি ( 10204 ) এর সাথে ঘটে।
    • চ্যানেল মাস্ক AudioFormat.CHANNEL_OUT_7POINT1POINT4 দিয়ে AudioTrack কনফিগার করুন যদি ডিকোডার 12টি চ্যানেল PCM অডিও ( #10322 .
  • ডিআরএম
    • বিন্যাস পরিবর্তন ( 10274 ) এর পরে অবিলম্বে খোঁজার সময় DRM সেশনটি সর্বদা সঠিকভাবে আপডেট করা হয়েছে তা নিশ্চিত করুন।
  • পাঠ্য:
    • Player.getCurrentCues() পরিবর্তন করুন List<Cue> এর পরিবর্তে CueGroup ফেরত দিতে।
    • SSA: OutlineColour শৈলী সেটিং সমর্থন করুন যখন BorderStyle == 3 (অর্থাৎ OutlineColour কিউর পটভূমি সেট করে) ( #8435 )।
    • CEA-708: একাধিক পরিষেবা ব্লকে ডেটা পার্স করুন এবং বর্তমানে নির্বাচিত পরিষেবা নম্বরের সাথে যুক্ত নয় এমন ব্লকগুলিকে উপেক্ষা করুন।
    • RawCcExtractor সরান, যা শুধুমাত্র একটি Google-অভ্যন্তরীণ সাবটাইটেল বিন্যাস পরিচালনা করতে ব্যবহৃত হয়েছিল।
  • নিষ্কাশনকারী:
    • AVI ( #2092 ) এর জন্য সমর্থন যোগ করুন।
    • ম্যাট্রোস্কা: অপাস ট্র্যাকের জন্য DiscardPadding পার্স করুন।
    • MP4: esds বক্স থেকে বিটরেট পার্স করুন।
    • ওগ: ডুপ্লিকেট ওপাস আইডি এবং মন্তব্য শিরোনাম ( #10038 ) অনুমতি দিন।
  • UI:
    • useController=false ( #9605 ) ব্যবহার করার ক্ষেত্রে PlayerView এ সেট করা OnClickListener এ ইভেন্টের ডেলিভারি ঠিক করুন। এছাড়াও সমস্ত ভিউ কনফিগারেশনের জন্য OnLongClickListener এ ইভেন্টের ডেলিভারি ঠিক করুন।
    • ACTION_UP এর আগে একটি ক্লিক ( #9861 ) হিসাবে PlayerView এর সীমানা থেকে বেরিয়ে আসা স্পর্শ ইভেন্টগুলির একটি ক্রমকে ভুলভাবে চিকিত্সা করা ঠিক করুন।
    • PlayerView অ্যাক্সেসিবিলিটি সমস্যাটি ঠিক করুন যেখানে ট্যাপ করা নিয়ন্ত্রণগুলি লুকানোর পরিবর্তে প্লেব্যাককে টগল করতে পারে ( #8627 )।
    • ExoPlayer এর পরিবর্তে Player ইন্টারফেসের সাথে কাজ করতে TrackSelectionView এবং TrackSelectionDialogBuilder পুনরায় লিখুন। এটি ভিউগুলিকে অন্যান্য Player বাস্তবায়নের সাথে ব্যবহার করার অনুমতি দেয় এবং UI মডিউল থেকে ExoPlayer মডিউলে নির্ভরতা সরিয়ে দেয়। এটি একটি ব্রেকিং পরিবর্তন.
    • PlayerView ট্র্যাক সিলেক্টরে জোর করে টেক্সট ট্র্যাক দেখাবেন না এবং "কোনটিই" নির্বাচন করা না থাকলে একটি উপযুক্ত বাধ্যতামূলক পাঠ্য ট্র্যাক নির্বাচন করুন ( #9432 )।
  • ড্যাশ:
    • ডিটিএস AudioChannelConfiguration উপাদান থেকে চ্যানেল গণনা পার্স করুন। এটি ডিটিএস স্ট্রীমের জন্য অডিও পাসথ্রু পুনরায় সক্ষম করে ( #10159 )।
    • DashMediaSource.Factory.setCompositeSequenceableLoaderFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
  • HLS:
    • প্লেলিস্ট CODECS অ্যাট্রিবিউটে অডিও কোডেক ( #10065 ) না থাকলে খণ্ডিত প্রস্তুতিতে পতন।
    • HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory , HlsMediaSource.Factory.setPlaylistParserFactory , এবং HlsMediaSource.Factory.setPlaylistTrackerFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory , DefaultHlsPlaylistParserFactory , অথবা DefaultHlsPlaylistTracker.FACTORY এর একটি রেফারেন্স প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে৷
  • মসৃণ স্ট্রিমিং:
    • SsMediaSource.Factory.setCompositeSequenceableLoaderFactorynull পাস করার অনুমতি দিন। DefaultCompositeSequenceableLoaderFactory এর উদাহরণ প্রয়োজন হলে স্পষ্টভাবে পাস করা যেতে পারে।
  • RTSP:
    • H263 ( #63 ) এর জন্য RTP রিডার যোগ করুন।
    • MPEG4 ( #35 ) এর জন্য RTP রিডার যোগ করুন।
    • HEVC ( #36 ) এর জন্য RTP রিডার যোগ করুন।
    • AMR এর জন্য RTP রিডার যোগ করুন। বর্তমানে শুধুমাত্র মনো-চ্যানেল, নন-ইন্টারলিভড AMR স্ট্রীম সমর্থিত। যৌগিক AMR RTP পেলোড সমর্থিত নয়। ( #46 )
    • VP8 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
    • WAV ( #56 ) এর জন্য RTP রিডার যোগ করুন।
    • RTSP মৌলিক অনুমোদন হেডার ঠিক করুন। ( #9544 )।
    • বাধ্যতামূলক SDP ক্ষেত্রগুলি পরীক্ষা করা বন্ধ করুন কারণ ExoPlayer-এর তাদের প্রয়োজন নেই ( #10049 )।
    • RTSP টাইমিং ( #10165 ) পার্স করার সময় চেক করা ব্যতিক্রম ছুঁড়ে দিন।
    • VP9 ( #47 ) এর জন্য RTP রিডার যোগ করুন।
    • OPUS ( #53 ) এর জন্য RTP রিডার যোগ করুন।
  • তথ্য সূত্র:
    • DummyDataSource থেকে PlaceholderDataSource নামকরণ করুন।
    • OkHttp ব্যাহত হ্যান্ডলিং ওয়ার্কআউন্ড।
  • সেশন:
    • অনুরোধের অ্যাসিঙ্ক্রোনাস রেজোলিউশনের অনুমতি দিতে MediaSession.MediaItemFiller কে MediaSession.Callback.onAddMediaItems দিয়ে প্রতিস্থাপন করুন।
    • MediaController যখন একটি লিগ্যাসি মিডিয়া সেশনে সংযোগ করে তখন setMediaItems(s) পদ্ধতি সমর্থন করে।
    • MediaController.setMediaUri এবং MediaSession.Callback.onSetMediaUri সরান। MediaController.setMediaItem এবং MediaSession.Callback.onAddMediaItems ব্যবহার করে একই কার্যকারিতা অর্জন করা যেতে পারে।
    • ফরওয়ার্ড লিগ্যাসি MediaController onSetMediaUri এর পরিবর্তে MediaSession.Callback.onAddMediaItems এ মিডিয়া চালাতে কল করে।
    • বিজ্ঞপ্তির কাস্টমাইজেশন প্রদান করতে MediaNotification.Provider এবং DefaultMediaNotificationProvider যোগ করুন।
    • আর্টওয়ার্ক ছবি ডাউনলোড করার জন্য BitmapLoader এবং SimpleBitmapLoader যোগ করুন।
    • উত্তরাধিকার সেশনের সাথে পিছনের সামঞ্জস্য প্রদান করতে MediaSession.setCustomLayout() যোগ করুন।
    • লিগ্যাসি সেশনের সাথে বৈশিষ্ট্য সমতা প্রদান করতে MediaSession.setSessionExtras() যোগ করুন।
    • MediaSession.MediaSessionCallback কে MediaSession.Callback , MediaLibrarySession.MediaLibrarySessionCallbackMediaLibrarySession.Callback এবং MediaSession.Builder.setSessionCallbacksetCallback করুন।
    • MediaControllerImplLegacy ( #59 ) এ NPE ঠিক করুন।
    • টাইমলাইন পরিবর্তনের উপর সেশন অবস্থানের তথ্য আপডেট করুন ( #51 )।
    • কন্ট্রোলার ( #74 ) রিলিজ করার পরে MediaControllerImplBase এ NPE ঠিক করুন।
  • বিজ্ঞাপন প্লেব্যাক / IMA:
    • মিডিয়া রেটিং কাউন্সিলের (MRC) সুপারিশের সাথে সারিবদ্ধ হতে প্রতি 100ms থেকে প্রতি 200ms-এ বিজ্ঞাপন ভোটের হার কমিয়ে দিন।
  • FFmpeg এক্সটেনশন:
    • একটি CMake বাগ এড়াতে CMake সংস্করণ 3.21.0+ এ আপডেট করুন যার ফলে AndroidStudio-এর গ্রেডেল সিঙ্ক ব্যর্থ হয় ( #9933 )।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray) সরান। পরিবর্তে Player.Listener.onTracksChanged(Tracks) ব্যবহার করুন।
    • Player.getCurrentTrackGroups এবং Player.getCurrentTrackSelections সরান। পরিবর্তে Player.getCurrentTracks ব্যবহার করুন। এছাড়াও আপনি ExoPlayer.getCurrentTrackGroups এবং ExoPlayer.getCurrentTrackSelections ব্যবহার করা চালিয়ে যেতে পারেন, যদিও এই পদ্ধতিগুলি অবহেলিত থাকে৷
    • DownloadHelper DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT এবং DEFAULT_TRACK_SELECTOR_PARAMETERS ধ্রুবকগুলি সরান৷ সম্ভব হলে এর পরিবর্তে getDefaultTrackSelectorParameters(Context) ব্যবহার করুন এবং অন্যথায় DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
    • কনস্ট্রাক্টর DefaultTrackSelector(ExoTrackSelection.Factory) সরান। পরিবর্তে DefaultTrackSelector(Context, ExoTrackSelection.Factory) ব্যবহার করুন।
    • Transformer.Builder.setContext সরান। এর পরিবর্তে Context Transformer.Builder কনস্ট্রাক্টরের কাছে পাঠানো উচিত।

সংস্করণ 1.0.0-alpha03

14 মার্চ, 2022

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

এটি ExoPlayer 2.17.1 রিলিজের সাথে মিলে যায়।

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

সংস্করণ 1.0.0-alpha02

2 মার্চ, 2022

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

এটি ExoPlayer 2.17.0 রিলিজের সাথে মিলে যায়।

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

সংস্করণ 1.0.0-alpha01

27 অক্টোবর, 2021

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

নতুন বৈশিষ্ট

Media3 হল ExoPlayer সহ মিডিয়া সাপোর্ট লাইব্রেরির জন্য নতুন হোম। প্রথম আলফাতে মিডিয়া ব্যবহারের ক্ষেত্রে প্রয়োগ করার জন্য লাইব্রেরির প্রাথমিক, কার্যকরী বাস্তবায়ন রয়েছে, যার মধ্যে রয়েছে:

  • ExoPlayer, Android এর জন্য একটি অ্যাপ্লিকেশন-স্তরের মিডিয়া প্লেয়ার যা কাস্টমাইজ করা এবং প্রসারিত করা সহজ।
  • প্লেব্যাক প্রকাশ এবং নিয়ন্ত্রণের জন্য মিডিয়া সেশন কার্যকারিতা। এই নতুন সেশন মডিউলটি এক্সোপ্লেয়ার হিসাবে একই Player ইন্টারফেস ব্যবহার করে।
  • মিডিয়া প্লেব্যাক ব্যবহারকারী ইন্টারফেস নির্মাণের জন্য UI উপাদান।
  • ExoPlayer-এর সাথে ব্যবহারের জন্য অন্যান্য লাইব্রেরিতে মডিউল মোড়ানো কার্যকারিতা, উদাহরণস্বরূপ, IMA SDK-এর মাধ্যমে বিজ্ঞাপন সন্নিবেশ।

আরও তথ্যের জন্য, Media3 GitHub প্রকল্পটি দেখুন।

ExoPlayer পূর্বে একটি পৃথক ExoPlayer GitHub প্রকল্পে হোস্ট করা হয়েছিল। Media3 এর প্যাকেজের নাম androidx.media3.exoplayer । আমরা কিছু সময়ের জন্য ExoPlayer GitHub প্রজেক্ট রক্ষণাবেক্ষণ এবং প্রকাশ করার পরিকল্পনা করছি যাতে অ্যাপগুলিকে Media3 এ স্থানান্তরিত করার জন্য সময় দেওয়া যায়। Media3-এ সমস্ত ExoPlayer মডিউলের প্রতিস্থাপন রয়েছে, লিগ্যাসি মিডিয়া2 এবং মিডিয়াসেসন এক্সটেনশনগুলি ছাড়া, যেগুলি নতুন media3-session মডিউল দ্বারা প্রতিস্থাপিত হয়েছে। এটি একটি অ্যাডাপ্টার/সংযোগকারী ক্লাস ব্যবহার করার প্রয়োজন ছাড়াই প্লেয়ার এবং মিডিয়া সেশনগুলির মধ্যে সরাসরি একীকরণ প্রদান করে।