মিডিয়া3

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

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

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

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

Groovy

dependencies {
    def media3_version = "1.4.1"

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

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

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

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

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

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

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

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

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

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

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

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

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

Kotlin

dependencies {
    val media3_version = "1.4.1"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

সংস্করণ 1.5

সংস্করণ 1.5.0

নভেম্বর 27, 2024

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

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

সংস্করণ 1.5.0-rc02

নভেম্বর 19, 2024

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

সংস্করণ 1.5.0-rc01

13 নভেম্বর, 2024

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

সংস্করণ 1.5.0-beta01

30 অক্টোবর, 2024

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

সংস্করণ 1.5.0-alpha01

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

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

সংস্করণ 1.4.0

সংস্করণ 1.4.1

আগস্ট 27, 2024

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

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

সংস্করণ 1.4.0

25 জুলাই, 2024

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

  • সাধারণ গ্রন্থাগার:
    • নো-অপ সিক কলগুলিকে উপেক্ষা করার পরিবর্তে সুরক্ষিত BasePlayer.seekTo() এবং SimpleBasePlayer.handleSeek() পদ্ধতিতে ফরওয়ার্ড করুন। আপনি যদি একটি কাস্টম প্লেয়ারে এই পদ্ধতিগুলি প্রয়োগ করেন, তাহলে আপনাকে mediaItemIndex == C.INDEX_UNSET এর সাথে এই অতিরিক্ত কলগুলি পরিচালনা করতে হতে পারে।
    • উন্নত জাভা 8 ডিসুগারিং ( #1312 ) এর উপর কম্পাইল নির্ভরতা সরান।
    • নিশ্চিত করুন যে সময়কাল MediaItem.Builder.setImageDurationMs() এ পাস করা হয়েছে তা একটি নন-ইমেজ MediaItem জন্য উপেক্ষা করা হয়েছে (ডকুমেন্টেড হিসাবে)।
    • Format দৃষ্টান্ত সম্পর্কে অ্যাপ-প্রদত্ত কাস্টম তথ্য সঞ্চয় করতে Format.customData যোগ করুন।
  • এক্সো প্লেয়ার:
    • BasePreloadManager যোগ করুন যা তাদের rankingData দ্বারা সংজ্ঞায়িত অগ্রাধিকারের উপর ভিত্তি করে একাধিক উত্সের জন্য প্রিলোডিং সমন্বয় করে। কাস্টমাইজেশন এই ক্লাস প্রসারিত করা সম্ভব. DefaultPreloadManager যোগ করুন যা মেমরিতে উত্সগুলির মিডিয়া নমুনাগুলিকে প্রিলোড করতে PreloadMediaSource ব্যবহার করে এবং একটি পূর্ণসংখ্যা rankingData ব্যবহার করে যা UI-তে একটি আইটেমের সূচক নির্দেশ করে৷
    • একাধিক প্লেয়ারকে সমর্থন করার জন্য LoadControl বাস্তবায়ন সক্ষম করতে LoadControl বেশিরভাগ পদ্ধতিতে PlayerId যোগ করুন।
    • Buffer.isDecodeOnly() এবং C.BUFFER_FLAG_DECODE_ONLY সরান। রেন্ডারার এবং ডিকোডাররা টাইমস্ট্যাম্পের উপর ভিত্তি করে বাফারগুলি এড়িয়ে যাওয়ার সিদ্ধান্ত নেবে বলে এই পতাকা সেট করার দরকার নেই৷ একটি নমুনা দেখানো হবে কিনা তা নির্ধারণ করতে কাস্টম Renderer বাস্তবায়নের বাফার সময় অন্তত BaseRenderer.getLastResetPositionUs() কিনা তা পরীক্ষা করা উচিত। কাস্টম SimpleDecoder বাস্তবায়ন যদি প্রয়োজন হয় তাহলে isAtLeastOutputStartTimeUs() চেক করতে পারে বা অন্য বাফারগুলিকে এড়িয়ে যেতে DecoderOutputBuffer.shouldBeSkipped দিয়ে চিহ্নিত করতে পারে।
    • TargetPreloadStatusControl.getTargetPreloadStatus(T) দ্বারা একটি নাল মান ফেরত দেওয়ার অনুমতি দিন যাতে প্রদত্ত rankingData সাথে একটি MediaSource প্রিলোড না করা যায়।
    • 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 (এবং SubtitleDecoderFactory এর পরিবর্তে SubtitleParser.Factory ) বাস্তবায়ন করতে তাদের আপডেট করতে হবে।
    • PGS: আক্ষরিক রঙের মান ( #1367 ) এর পরিবর্তে, একটি রঙ সূচক হিসাবে 0 সমাধান করতে রান-দৈর্ঘ্য ডিকোডিং ঠিক করুন।
    • CEA-708: rowLock মান উপেক্ষা করুন। CEA-708-E S-2023 স্পেক বলে যে rowLock এবং columnLock উভয়কেই সত্য বলে ধরে নেওয়া উচিত, স্ট্রীমে উপস্থিত মান নির্বিশেষে ( columnLock সমর্থন বাস্তবায়িত হয় না, তাই এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
      • এটি মূলত 1.3.0-alpha01 রিলিজ নোটে অন্তর্ভুক্ত ছিল, কিন্তু পরিবর্তনটি ভুলবশত 1.3.0-rc01 রিলিজের আগে ফিরিয়ে দেওয়া হয়েছিল। এটি এখন স্থির করা হয়েছে, তাই পরিবর্তনটি আবার বর্তমান।
    • CEA-708: ExoPlayer-এর 'সেট পেন লোকেশন' কমান্ড ( #1315 ) এর নিষ্পাপ হ্যান্ডলিং দ্বারা ডুপ্লিকেট নতুন লাইন যোগ করা এড়িয়ে চলুন।
    • LegacySubtitleUtil থেকে একটি IllegalArgumentException ঠিক করুন যখন WebVTT সাবটাইটেল নমুনায় কোন চিহ্ন থাকে না, যেমন একটি DASH স্ট্রীমের অংশ হিসাবে ( #1516 )।
  • মেটাডেটা:
    • ID3 সাজানোর ট্যাগ থেকে MP4 এর ম্যাপিং ঠিক করুন। পূর্বে 'অ্যালবাম সর্ট' ( soal ), 'শিল্পী সাজানো' ( soar ) এবং 'অ্যালবাম আর্টিস্ট সর্ট' ( soaa ) MP4 ট্যাগগুলি TSO2 , TSOA এবং TSOP ID3 ট্যাগে ( #1302 ) ভুলভাবে ম্যাপ করা হয়েছিল৷
    • মান এক বাইটের বেশি হলে MP4 (/iTunes) নিউমেরিক gnre (genre) এবং tmpo (টেম্পো) ট্যাগের রিডিং ঠিক করুন।
    • ID3 TCON ফ্রেম MediaMetadata.genre ( #1305 ) এ প্রচার করুন।
  • ছবি:
    • নন-স্কোয়ার ড্যাশ থাম্বনেইল গ্রিডের জন্য সমর্থন যোগ করুন ( #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() যুক্ত করুন যা মিডিয়া 3 নিয়ামককে অ-মারাত্মক ত্রুটিগুলি প্রেরণের অনুমতি দেয়। বিজ্ঞপ্তি নিয়ামক ব্যবহার করার সময় ( মিডিয়াসেশন PlaybackState MediaSession.getMediaNotificationControllerInfo()
    • কোনও নির্দিষ্ট নিয়ামকের কাছ থেকে প্লেয়ার ইন্টারঅ্যাকশনগুলির একটি সিরিজ শেষ হলে সেশনগুলি অবহিত করার জন্য MediaSession.Callback.onPlayerInteractionFinished() যুক্ত করুন।
    • SessionError যুক্ত করুন এবং ত্রুটি কোডের পরিবর্তে SessionResult এবং LibraryResult এটি ব্যবহার করুন ত্রুটি সম্পর্কে আরও তথ্য সরবরাহ করতে এবং যদি সম্ভব হয় তবে কীভাবে ত্রুটিটি সমাধান করবেন সে সম্পর্কে আরও তথ্য সরবরাহ করতে।
    • মিডিয়া সেশন প্রকাশের অ্যাপ্লিকেশনগুলির সাথে মিথস্ক্রিয়া পরীক্ষা করতে ব্যবহার করা যেতে পারে মিডিয়া 3 কন্ট্রোলার টেস্ট অ্যাপের জন্য কোডটি প্রকাশ করুন।
    • মিডিয়া 3 এর MediaSession[Builder].setSessionExtras() এ মিডিয়া 1 কন্ট্রোলারের PlaybackStateCompat.getExtras() এ পাস করা অতিরিক্তগুলি প্রচার করুন।
    • প্ল্যাটফর্ম সেশনে এবং থেকে মারাত্মক এবং অ-মারাত্মক ত্রুটিগুলি মানচিত্র করুন। একটি PlaybackException PlaybackStateCompat মারাত্মক ত্রুটি অবস্থায় ম্যাপ করা হয়। মিডিয়াসেশন সহ মিডিয়া বিজ্ঞপ্তি নিয়ামককে প্রেরণ করা একটি SessionError MediaSession.sendError(ControllerInfo, SessionError) PlaybackStateCompat একটি অ-মারাত্মক ত্রুটিতে ম্যাপ করা হয়েছে যার অর্থ ত্রুটি কোড এবং বার্তা সেট করা আছে তবে প্ল্যাটফর্ম সেশনের অবস্থাটি STATE_ERROR থেকে আলাদা রয়েছে।
    • বৈশ্বিক সেশন ক্রিয়াকলাপকে ওভাররাইড করার জন্য সেশন ক্রিয়াকলাপকে নিয়ন্ত্রণকারী প্রতি সেট করার অনুমতি দিন। সেশন ক্রিয়াকলাপটি সংযোগের সময় কন্ট্রোলারের জন্য ConnectionResult AcceptedResultBuilder.setSessionActivivty(PendingIntent) যেতে পারে একবার সংযুক্ত হয়ে গেলে, সেশন ক্রিয়াকলাপটি MediaSession.setSessionActivity(ControllerInfo, PendingIntent) দিয়ে আপডেট করা যেতে পারে।
    • MediaLibrarySession.Callback কলগুলির ত্রুটির প্রতিলিপি উন্নত করুন। ত্রুটির প্রকারটি বেছে নেওয়ার জন্য বা ডিফল্টরূপে ত্রুটিযুক্ত প্রতিরূপের বাইরে অপ্ট-ইনগ আউট করার জন্য ত্রুটি প্রতিরূপটি এখন MediaLibrarySession.Builder.setLibraryErrorReplicationMode() ব্যবহার করে কনফিগার করা যেতে পারে।
  • UI:
    • ExoPlayer ( #1144 ) এর সাথে সংযুক্ত থাকাকালীন PlayerView চিত্র প্রদর্শন সমর্থন যুক্ত করুন।
    • গ্লোবাল ওভাররাইডস ( #1200 ) এর পরিবর্তে PlayerView উদাহরণ প্রতি বিভিন্ন অঙ্কনযোগ্যদের অনুমতি দেওয়ার জন্য এক্সএমএল বৈশিষ্ট্যের মাধ্যমে PlayerControlView বিভিন্ন আইকনগুলির কাস্টমাইজেশন যুক্ত করুন।
    • এপিআই 34 ( #1237 ) এর একটি রচনা AndroidView ভিতরে SurfaceView ব্যবহার করার সময় স্ট্রেচড/ক্রপযুক্ত ভিডিওর কারণ হিসাবে একটি প্ল্যাটফর্ম বাগের চারপাশে কাজ করুন।
  • ডাউনলোড:
    • নিশ্চিত করুন যে DownloadHelper অপ্রকাশিত Renderer দৃষ্টান্তগুলি ফাঁস করে না, যার ফলে শেষ পর্যন্ত একটি অ্যাপ্লিকেশন IllegalStateException: Too many receivers, total of 1000, registered for pid ( #1224 ) এর জন্য নিবন্ধিত।
  • ক্রোনেট এক্সটেনশন:
    • CronetDataSource -এ SocketTimeoutException ঠিক করুন। ক্রোনেটের কয়েকটি সংস্করণে, কলব্যাক দ্বারা সরবরাহিত অনুরোধটি সর্বদা এক নয়। এটি কলব্যাকটি সম্পূর্ণ না করে এবং সময় দেওয়ার জন্য অনুরোধ করে (https://issuetracker.google.com/328442628)।
  • HLS এক্সটেনশন:
    • বাগটি ঠিক করুন যেখানে ইএমএসজি নমুনাগুলি বিচ্ছিন্নতার জন্য অপেক্ষা করা মুলতুবি থাকা নমুনাগুলি HlsSampleStreamWrapper একটি ভুল অফসেট সহ একটি IndexOutOfBoundsException বা একটি IllegalArgumentException ( #1002 ) তৈরি করে।
    • বাগটি ঠিক করুন যেখানে অ-প্রাথমিক প্লেলিস্টগুলি এলএল-এইচএলএস স্ট্রিমগুলির জন্য পুনরায় লোড করতে থাকে ( #1240 )।
    • বাগটি ফিক্স করুন যেখানে ইনিশিয়ালাইজেশন বিভাগগুলির সাথে এইচএলএসের জন্য সিএমসিডি সক্ষম করার ফলে Source Error এবং IllegalArgumentException ঘটে।
    • লাইভ প্লেব্যাক ( #1240 ) চলাকালীন অ-প্রাথমিক প্লে প্লেলিস্টগুলি রিফ্রেশ করা হয় না যেখানে বাগটি ফিক্স করুন।
    • এইচএলএস লাইভ স্ট্রিমগুলির জন্য সিএমসিডি সক্ষম করার যেখানে ArrayIndexOutOfBoundsException ( #1395 ) এর কারণে সিএমসিডি সক্ষম করা বাগটি ঠিক করুন।
  • ড্যাশ এক্সটেনশন:
    • বাগটি ঠিক করুন যেখানে একটি বহু-কালীন লাইভ স্ট্রিম পুনরায় প্রস্তুত করা একটি IndexOutOfBoundsException ( #1329 ) নিক্ষেপ করতে পারে।
    • dashif:Laurl লাইসেন্স ইউআরএল ( #1345 )।
  • কাস্ট এক্সটেনশন:
    • মিডিয়া 3 মিডিয়া আইটেমের ( #1255 ) শিল্পীর কাছে MediaQueueItem অ্যালবামের শিরোনাম রূপান্তরিত করে এমন বাগটি ঠিক করুন।
  • পরীক্ষা উপযোগিতা:
    • onInit() এবং FakeRenderer onRelease() প্রয়োগ করুন।
    • TestPlayerRunHelper.runUntil()/playUntil() পরিবর্তন করুন ননফ্যাটাল ত্রুটিগুলিতে ব্যর্থ হওয়ার পদ্ধতিগুলি (যেমন যারা AnalyticsListener.onVideoCodecError() ) তে রিপোর্ট করা হয়েছে। এই আচরণটি অক্ষম করতে নতুন TestPlayerRunHelper.run(player).ignoringNonFatalErrors().untilXXX()
  • ডেমো অ্যাপ:
    • সংক্ষিপ্ত ফর্ম ডেমো অ্যাপে DefaultPreloadManager ব্যবহার করুন।
    • কমান্ড লাইন ( #1266 ) থেকে Intent যুক্তি সহ পুনরাবৃত্তি মোড সেট করার অনুমতি দিন।
    • ডিভাইস দ্বারা সমর্থিত হলে HttpEngineDataSource হিসাবে HttpDataSource হিসাবে ব্যবহার করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • CronetDataSourceFactory সরান। পরিবর্তে CronetDataSource.Factory ব্যবহার করুন।
    • কিছু DataSpec কনস্ট্রাক্টর সরান। পরিবর্তে DataSpec.Builder ব্যবহার করুন।
    • DefaultHttpDataSource , OkHttpDataSource এবং CronetDataSource থেকে setContentTypePredicate(Predicate) পদ্ধতি সরান। পরিবর্তে প্রতিটি XXXDataSource.Factory এ সমতুল্য পদ্ধতি ব্যবহার করুন।
    • OkHttpDataSource কনস্ট্রাক্টর এবং OkHttpDataSourceFactory সরান। পরিবর্তে OkHttpDataSource.Factory ব্যবহার করুন।
    • PlayerMessage.setHandler(Handler) সরান। পরিবর্তে setLooper(Looper) ব্যবহার করুন।
    • Timeline.Window.isLive ফিল্ড সরান। পরিবর্তে isLive() পদ্ধতিটি ব্যবহার করুন।
    • DefaultHttpDataSource কনস্ট্রাক্টরগুলি সরান। পরিবর্তে DefaultHttpDataSource.Factory ব্যবহার করুন।
    • DashMediaSource.DEFAULT_LIVE_PRESENTATION_DELAY_MS সরান। পরিবর্তে DashMediaSource.DEFAULT_FALLBACK_TARGET_LIVE_OFFSET_MS ব্যবহার করুন।
    • MediaCodecInfo.isSeamlessAdaptationSupported(Format, Format, boolean) সরান। পরিবর্তে MediaCodecInfo.canReuseCodec(Format, Format) ব্যবহার করুন।
    • DrmSessionManager.DUMMY এবং getDummyDrmSessionManager() পদ্ধতি সরান। পরিবর্তে DrmSessionManager.DRM_UNSUPPORTED ব্যবহার করুন।
    • AnalyticsListener.onAudioInputFormatChanged(EventTime, Format) , AnalyticsListener.onVideoInputFormatChanged(EventTime, Format) , AudioRendererEventListener.onAudioInputFormatChanged(Format) , সরান, সরান, VideoRendererEventListener.onVideoInputFormatChanged(Format) । পরিবর্তে DecoderReuseEvaluation নেয় এমন ওভারলোডগুলি ব্যবহার করুন।
    • RendererSupport.FormatSupport intdef এবং FORMAT_HANDLED , FORMAT_EXCEEDS_CAPABILITIES , FORMAT_UNSUPPORTED_DRM , FORMAT_UNSUPPORTED_SUBTYPE , FORMAT_UNSUPPORTED_TYPE টাইপ কনস্ট্যান্টগুলি সরান। এর পরিবর্তে androidx.media3.common.C এ সমতুল্য INTDEF এবং ধ্রুবকগুলি ব্যবহার করুন (যেমন C.FORMAT_HANDLED )।
    • Bundleable ইন্টারফেস সরান। এর মধ্যে রয়েছে সমস্ত Bundleable.Creator<Foo> CREATOR ধ্রুবক ক্ষেত্রগুলি অপসারণ করা। কলারদের পরিবর্তে প্রতিটি প্রকারের Bundle toBundle() এবং static Foo fromBundle(Bundle) পদ্ধতিগুলি।

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

10 জুলাই, 2024

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

সংস্করণ 1.4.0-BETA01

জুন 26, 2024

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

সংস্করণ 1.4.0-আলফা 02

জুন 07, 2024

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

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

এপ্রিল 17, 2024

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

সংস্করণ 1.3.0

সংস্করণ 1.3.1

11 এপ্রিল, 2024

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

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

সংস্করণ 1.3.0

6 মার্চ, 2024

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

  • সাধারণ গ্রন্থাগার:
    • android.resource://package/[type/]name কাঁচা রিসোর্স ইউআরআইগুলির জন্য সমর্থন প্রয়োগ করুন যেখানে package বর্তমান অ্যাপ্লিকেশনটির প্যাকেজের চেয়ে আলাদা। এটি সর্বদা কাজ করার জন্য নথিভুক্ত করা হয়েছে, তবে এখন পর্যন্ত সঠিকভাবে প্রয়োগ করা হয়নি।
    • অ্যাপ্লিকেশন কোড দ্বারা সেট করা মাইম প্রকারগুলি স্বাভাবিক করুন বা মিডিয়া থেকে সম্পূর্ণ নিম্ন-কেস হতে পড়ুন।
    • AdPlaybackState একক Uri পরিবর্তে সম্পূর্ণ MediaItem সাথে বিজ্ঞাপনগুলি সংজ্ঞায়িত করুন।
    • minSdk 19 (অ্যান্ড্রয়েড কিটকাট) এ বাড়ান। এটি অন্যান্য সমস্ত অ্যান্ড্রয়েডএক্স লাইব্রেরির সাথে একত্রিত , এবং আমাদের অ্যান্ড্রয়েডএক্স নির্ভরতার সর্বশেষ সংস্করণগুলিতে আপগ্রেড করার জন্য আমাদের প্রয়োজন।
    • MediaMetadata.Builder.populate(MediaMetadata)artworkUri এবং artworkData উভয়কেই জনপ্রিয় করুন যখন তাদের মধ্যে কমপক্ষে একটি নাল ( #964 ) হয়।
  • এক্সো প্লেয়ার:
    • PreloadMediaSource এবং PreloadMediaPeriod যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে প্লেব্যাকের আগে একটি নির্দিষ্ট শুরুর অবস্থানে একটি সামগ্রী মিডিয়া উত্স প্রিলোড করতে দেয়। PreloadMediaSource Timeline পাওয়ার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার, প্রদত্ত শুরুর অবস্থানে পিরিয়ড প্রস্তুত এবং ক্যাশে, ট্র্যাকগুলি নির্বাচন করা এবং সময়ের জন্য মিডিয়া ডেটা লোড করার জন্য সামগ্রী মিডিয়া উত্স প্রস্তুত করার যত্ন নেয়। অ্যাপ্লিকেশনগুলি PreloadMediaSource.PreloadControl প্রয়োগ করে প্রিলোড অগ্রগতি নিয়ন্ত্রণ করে এবং প্লেব্যাকের জন্য প্লেয়ারকে প্রিলোড উত্সটি সেট করে।
    • ExoPlayer.setImageOutput যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে ImageRenderer.ImageOutput সেট করতে দেয়।
    • DefaultRenderersFactory এখন নাল ImageOutput এবং ImageDecoder.Factory.DEFAULT সহ ডিফল্টরূপে প্লেয়ারকে একটি ImageRenderer সরবরাহ করে।
    • Player.Listener.onPositionDiscontinuity
    • নিষ্কাশনের সময় সাবটাইটেলগুলি পার্স করার জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন। আপনি এটি MediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ব্যবহার করে এটি সক্ষম করতে পারেন।
    • PreloadMediaSource সহ অভিযোজিত মিডিয়া উত্সগুলিকে সমর্থন করুন।
    • HttpEngineDataSource , HttpDataSource httpengine এপিআই ব্যবহার করে প্রয়োগ করুন।
    • সাবক্লাসিং CompositeSequenceableLoader প্রতিরোধ করুন। এই উপাদানটি পূর্বে এক্সটেনসিবল করা হয়েছিল তবে লাইব্রেরির মধ্যে কখনও সাবক্লাস করা হয়নি। ডেকরেটর প্যাটার্ন ব্যবহার করে একটি উদাহরণ মোড়ানো এবং একটি কাস্টম CompositeSequenceableLoaderFactory প্রয়োগ করে কাস্টমাইজেশনগুলি করা যেতে পারে।
    • সমস্যাটি ঠিক করুন যেখানে একই সময়ে পুনরাবৃত্তি করার ফলে এই আইটেমটি থেকে মেটাডেটা সাফ হয়ে যায় ( #1007 )।
    • BundledChunkExtractor.Factory এবং DefaultHlsExtractorFactory setSubtitleParserFactory এবং পাস null অস্বীকার করার জন্য experimentalSetSubtitleParserFactory পদ্ধতিগুলির নামকরণ করুন। পার্সিং আচরণ নিয়ন্ত্রণের জন্য নতুন experimentalParseSubtitlesDuringExtraction(boolean) পদ্ধতিগুলি ব্যবহার করুন।
    • SubtitleParser.Factory কাস্টমাইজ করার জন্য সমর্থন যুক্ত করুন at এক্সট্রাকশন চলাকালীন ব্যবহৃত ফ্যাক্টরি। এটি MediaSource.Factory.setSubtitleParserFactory() দিয়ে অর্জন করা যেতে পারে।
    • MergingMediaSource থেকে উত্পন্ন সমস্ত Format.id ক্ষেত্রগুলিতে উত্স উপসর্গ যুক্ত করুন। এটি কোন উত্সটি একটি Format তৈরি করেছে তা সনাক্ত করতে সহায়তা করে ( #883 )।
    • কাস্টম কমন মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) কী নামগুলি কেবল হাইফেন ( #1028 ) এর জন্য এটি সংশোধন করে কী নামগুলি বৈধ করার জন্য ব্যবহৃত রেজেক্সটি ঠিক করুন।
    • ডাবল-এনকোডিং সিএমসিডি ক্যোয়ারী প্যারামিটারগুলি ( #1075 ) বন্ধ করুন।
  • ট্রান্সফরমার:
    • এইচ .265/এইচইভিসি এসইএফ স্লো মোশন ভিডিওগুলি সমতল করার জন্য সমর্থন যুক্ত করুন।
    • ট্রান্সমাক্সিংয়ের গতি বাড়ান, বিশেষত 'ভিডিও সরান' সম্পাদনাগুলির জন্য।
    • আউটপুট ফাইলটি কোনও ভিডিও ফ্রেমে শুরু হয় তা নিশ্চিত করতে API যুক্ত করুন। এটি প্লেয়ার বাস্তবায়নের সাথে ট্রিমিং অপারেশনগুলির আউটপুটকে আরও সামঞ্জস্যপূর্ণ করে তুলতে পারে যা প্রথম ভিডিও ফ্রেমটি উপস্থাপনা টাইমস্ট্যাম্প ( #829 ) না হওয়া পর্যন্ত দেখায় না।
    • একক সম্পদ এমপি 4 ট্রিম অপারেশন অনুকূলকরণের জন্য সমর্থন যুক্ত করুন।
    • আউটপুট ফাইলে কোনও ভিডিও ফ্রেমের প্রথম টাইমস্ট্যাম্প রয়েছে তা নিশ্চিত করতে সহায়তা যুক্ত করুন। আইওএস ভিত্তিক প্লেয়ারগুলিতে কালো ফ্রেম দিয়ে শুরু হওয়া আউটপুট ফাইলগুলি ফিক্স করে ( #829 )।
  • ট্র্যাক নির্বাচন:
    • চিত্র ট্র্যাক নির্বাচন সক্ষম করতে DefaultTrackSelector.selectImageTrack যুক্ত করুন।
    • TrackSelectionParameters.isPrioritizeImageOverVideoEnabled যুক্ত করুন is ডিফল্ট মানটি false যার অর্থ একটি ভিডিও ট্র্যাক নির্বাচন করা অগ্রাধিকার দেওয়া হয়।
  • নিষ্কাশনকারী:
    • ColorInfo.colorSpace , ColorInfo.colorTransfer এবং ColorInfo.colorRange মান ( #692 ) পুনরুদ্ধার করতে এমপি 4 এক্সট্র্যাক্টরে অতিরিক্ত এভি 1 সি পার্সিং যুক্ত করুন।
    • এমপি 3: একটি Info শিরোনাম ( Xing হেডারের সিবিআর সমতুল্য) সহ ফাইলগুলির জন্য ধ্রুবক বিট্রেট (সিবিআর) ব্যবহার করুন। পূর্বে আমরা Info শিরোনাম থেকে সিক টেবিলটি ব্যবহার করেছি, তবে এর ফলে আমরা এটি উপেক্ষা করে এবং ফাইলটি সিবিআর বলে ধরে নিই তার চেয়ে কম সুনির্দিষ্ট সন্ধান করতে পারে।
    • এমপিইজি 2-টিএস: ডিটিএস, ডিটিএস-এলবিআর এবং ডিটিএস যুক্ত করুন: এক্স প্রোফাইল 2 সমর্থন ( #275 )।
    • টিএস বর্ণনাকারীদের কাছ থেকে অডিও প্রকারগুলি বের করুন এবং তাদের পতাকাগুলিতে ম্যাপ করুন, ব্যবহারকারীদের আরও ভাল-অবহিত অডিও ট্র্যাক নির্বাচনগুলি ( #973 ) করার অনুমতি দেয়।
  • অডিও:
    • মসৃণ ভলিউম র‌্যাম্পের সাথে অ্যালগরিদম এড়িয়ে যাওয়া নীরবতা উন্নত করুন; ন্যূনতম নীরবতা এবং আরও প্রাকৃতিক নীরবতার সময়কাল ধরে রাখা ( #7423 )।
    • এড়িয়ে যাওয়া নীরবতা আরও নির্ধারিতভাবে রিপোর্ট করুন ( #1035 )।
  • ভিডিও:
    • MediaCodecVideoRenderer কনস্ট্রাক্টর পরিবর্তন করুন যা একটি VideoFrameProcessor.Factory নেয় Fact ফ্যাক্টরি আর্গুমেন্ট গ্রহণ করে এবং এটি একটি কনস্ট্রাক্টর দিয়ে প্রতিস্থাপন করুন যা একটি VideoSinkProvider যুক্তি নেয়। অ্যাপ্লিকেশনগুলি MediaCodecVideoRenderer VideoFrameProcessor.Factory কাস্টম VideoFrameProcessor.Factory ইনজেকশন করতে চায় CompositingVideoSinkProvider
  • পাঠ্য:
    • সমাধানের জন্য বিটম্যাপ সংকেতগুলির সিরিয়ালাইজেশন ঠিক করুন Tried to marshall a Parcel that contained Binder objects DefaultExtractorsFactory.setTextTrackTranscodingEnabled ( #836 ) ব্যবহার করার সময় বাইন্ডার অবজেক্টের ত্রুটি রয়েছে।
    • সিইএ -708: rowLock মান উপেক্ষা করুন। সিইএ -708-ই এস -2023 স্পেসে বলা হয়েছে যে স্ট্রিমের উপস্থিত মানগুলি নির্বিশেষে rowLock এবং columnLock উভয়কেই সত্য বলে ধরে নেওয়া উচিত ( columnLock সমর্থন প্রয়োগ করা হয়নি, সুতরাং এটি কার্যকরভাবে সর্বদা মিথ্যা বলে ধরে নেওয়া হয়)।
  • ছবি:
    • ড্যাশ থাম্বনেইলগুলির জন্য সমর্থন যুক্ত করুন। গ্রিড চিত্রগুলি ক্রপযুক্ত এবং পৃথক থাম্বনেইলগুলি তাদের উপস্থাপনার সময়গুলির কাছাকাছি ImageOutput সরবরাহ করা হয়।
  • DRM:
    • ডিফল্টরূপে অবিলম্বে ডিআরএম সামগ্রীতে 'ক্লিয়ার লিড' আনক্রিপ্ট করা নমুনাগুলি খেলুন, এমনকি পরবর্তী এনক্রিপ্ট করা নমুনাগুলির কীগুলি এখনও প্রস্তুত না হলেও। প্লেব্যাকের অবস্থানটি এনক্রিপ্ট করা নমুনাগুলিতে পৌঁছানোর সময় কীগুলি এখনও প্রস্তুত না থাকলে এটি মিড-প্লেব্যাক স্টলগুলির দিকে নিয়ে যেতে পারে (তবে পূর্বে প্লেব্যাক এই মুহুর্তে মোটেও শুরু হত না)। এই আচরণটি MediaItem.DrmConfiguration.Builder.setPlayClearContentWithoutKey বা DefaultDrmSessionManager.Builder.setPlayClearSamplesWithoutKeys উইথআউটকেইস দিয়ে অক্ষম করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • উপযুক্ত ফাইল এক্সটেনশন ছাড়াই ড্যাশ এবং এইচএলএস বিজ্ঞাপনগুলি যেখানে প্লে করা যায় না সেখানে সমস্যাটি ঠিক করুন।
  • অধিবেশন:
    • টিভি অ্যাপ্লিকেশনগুলির জন্য ডাবল-ক্লিক সনাক্তকরণ অক্ষম করুন ( #962 )।
    • সমস্যাটি সমাধান করুন যেখানে MediaItem.RequestMetadata কেবল নন-নাল অতিরিক্ত সহ মিডিয়া কন্ট্রোলার এবং সেশনের মধ্যে সংক্রমণিত হয় না।
    • MediaLibrarySession.Builder কনস্ট্রাক্টর যুক্ত করুন যা কেবলমাত্র MediaLibraryService পরিবর্তে একটি Context নেয়।
  • HLS এক্সটেনশন:
    • প্যাকেজ-বেসরকারী দৃশ্যমানতায় HlsMediaPeriod হ্রাস করুন। এই ধরণের এইচএলএস প্যাকেজের বাইরে থেকে সরাসরি নির্ভর করা উচিত নয়।
    • সমাধান করুন আরও দক্ষতার সাথে একটি বিভাগ শুরু করার চেষ্টা করে ( #1031 )।
  • ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
    • এমআইডিআই ডিকোডার: সিসেক্স ইভেন্ট বার্তাগুলি উপেক্ষা করুন ( #710 )।
  • পরীক্ষা উপযোগিতা:
    • TestPlayerRunHelper.playUntilPosition প্লেব্যাক বিরতি দেবেন না। পরীক্ষাটি প্লেব্যাককে একটি খেলার অবস্থায় রাখে, তবে পরীক্ষাটি দৃ ser ়তা এবং আরও ক্রিয়া যুক্ত করতে সক্ষম না হওয়া পর্যন্ত অগ্রগতি স্থগিত করে।
  • ডেমো অ্যাপ:
    • শর্ট-ফর্ম সামগ্রী ব্যবহারের ক্ষেত্রে PreloadMediaSource ব্যবহারের ডেমো করতে একটি শর্টফর্ম ডেমো মডিউল যুক্ত করুন।

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

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

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

সংস্করণ 1.3.0-BETA01

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

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

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

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

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

সংস্করণ 1.2.0

সংস্করণ 1.2.1

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

  • এক্সো প্লেয়ার:
    • ইস্যু ঠিক করুন min/maxOffset ম্যানুয়াল LiveConfiguration.min/maxOffset বাইরে চায়।
    • ইস্যু করুন যে ওপাস এবং ভোর্বিস চ্যানেল লেআউটগুলি 3, 5, 6, 7 এবং 8 চ্যানেলের ( #8396 ) এর জন্য ভুল।
    • একটি লাইভ স্ট্রিমে শূন্য করার পরে ট্র্যাক নির্বাচনগুলি যেখানে ভুলভাবে স্ট্রিমটি তার ডিফল্ট অবস্থানে ( #9347 ) শুরু করতে দিন সেখানে ট্র্যাক নির্বাচনগুলি ঠিক করুন।
    • CmcdData.Factory নতুন দৃষ্টান্তগুলি যেখানে অংশের উত্স থেকে bufferedDurationUs জন্য নেতিবাচক মানগুলি গ্রহণ করছে, সেই সমস্যাটি সমাধান করুন, যার ফলে একটি IllegalArgumentException ( #888 ) তৈরি হয়েছিল।
  • ট্রান্সফরমার:
    • এমন কোনও সমস্যা নিয়ে কাজ করুন যেখানে উচ্চ অপারেটিং হার নির্ধারণের কারণে এনকোডার কনফিগারেশনের সময় নিক্ষেপ করবে।
  • নিষ্কাশনকারী:
    • মার্ক মাধ্যমিক (প্লেযোগ্য) এইচইভিসি ট্র্যাকগুলি জেপিইজি মোশন ফটোগুলিতে ROLE_FLAG_ALTERNATE হিসাবে তাদের উচ্চতর রেজোলিউশনের কারণে প্লেব্যাকের জন্য স্বয়ংক্রিয়ভাবে নির্বাচিত হওয়া রোধ করতে পারে।
    • টিএস এইচ 264 স্ট্রিমগুলির জন্য ভুল কীফ্রেম সনাক্তকরণ ঠিক করুন ( #864 )।
    • 47721 সেকেন্ডের চেয়ে দীর্ঘ ( #855 ) টিএস স্ট্রিমগুলির সময়কাল অনুমান করুন।
  • অডিও:
    • একাধিকবার ( #712 ) বলা হয় যখন SilenceSkippingAudioProcessor জন্য EOS এর হ্যান্ডলিং ঠিক করুন।
  • ভিডিও:
    • Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with Google TV, and Lenovo M10 FHD Plus that causes 60fps AVC streams to be marked as unsupported ( #693 ).
  • মেটাডেটা:
    • বাগটি ফিক্স করুন যেখানে MediaMetadata কেবল উচ্চ-কেস কীগুলি ( #876 ) দিয়ে ভোর্বিস মন্তব্য থেকে জনবহুল ছিল।
    • খুব বড় আইডি 3 ফ্রেমগুলি পার্স করার সময় OutOfMemoryError ধরুন, যার অর্থ প্লেব্যাক পুরোপুরি ব্যর্থ হওয়ার পরিবর্তে ট্যাগ তথ্য ছাড়াই চালিয়ে যেতে পারে।
  • DRM:
    • স্পিউরিয়াস ক্লিয়ারকি https://default.url লাইসেন্স ইউআরএল এর জন্য এপিআই 33+ এর জন্য ওয়ার্কআরাউন্ড প্রসারিত করুন (পূর্বে কেবলমাত্র এপিআই 33 এ প্রয়োগ করা ওয়ার্কআউটআউন্ডটি ঠিক প্রয়োগ করা হয়েছে) ( #837 )।
    • প্লেয়ারটির সাথে সংযুক্ত কোনও পৃষ্ঠ ছাড়াই এনক্রিপ্ট করা থেকে কনক্রিপ্ট করা থেকে স্যুইচ করার সময় ERROR_DRM_SESSION_NOT_OPENED করুন। ত্রুটিটি পরিষ্কার সামগ্রী খেলতে ভুলভাবে একটি সুরক্ষিত ডিকোডার ব্যবহার করার কারণে হয়েছিল।
  • অধিবেশন:
    • MediaMetadata.extras এবং MediaMetadata.extras MediaMetadataCompat #756 , #802 ) এ MediaMetadataCompat কাস্টম কী এবং মানগুলি রাখুন।
    • লিগ্যাসি কন্ট্রোলারদের জন্য ব্রডকাস্টিং notifyChildrenChanged ফিক্স করুন ( #644 )।
    • একটি বাগ ঠিক করুন যেখানে বিজ্ঞপ্তিটির টাইমার যখন কোনও প্রতিবন্ধী setWhen জন্য নেতিবাচক সময় নির্ধারণ করা কিছু ডিভাইসে ক্র্যাশ ঘটায় ( #903 )।
    • যখন প্রথম বিজ্ঞপ্তি আপডেটের জন্য অনুরোধ করা হয় ( #917 ) যখন মিডিয়া বিজ্ঞপ্তি কন্ট্রোলার সংযোগ শেষ না করে তখন IllegalStateException ঠিক করুন।
  • UI:
    • ইস্যু ঠিক করুন যেখানে বটমশিটডিয়ালোগফ্র্যাগমেন্টে ( #511 ) উপাদান ডিজাইনের সাথে ব্যবহার করার সময় ফরোয়ার্ড এবং রিওয়াইন্ড বোতামগুলি দৃশ্যমান হয় না।
    • PlayerControlView দ্রুত ফরোয়ার্ড বোতামের সংখ্যাগুলি ভুলভাবে চিহ্নিত করা হয়েছিল ( #547 ) সমস্যাটি সমাধান করুন।
  • ড্যাশ এক্সটেনশন:
    • ড্যাশ ম্যানিফেস্টে ডলবির জন্য 5 এর চ্যানেল গণনা হিসাবে "F800" পার্স ( #688 )।
  • ডিকোডার এক্সটেনশনস (এফএফএমপিইজি, ভিপি 9, এভি 1, এমআইডিআই ইত্যাদি):
    • এমআইডিআই: সমস্যাটি সমাধান করুন যেখানে ফরোয়ার্ড সন্ধান করা প্রোগ্রাম পরিবর্তন ইভেন্টগুলি ( #704 ) এড়িয়ে যান।
    • এফএফএমপিইজি 6.0 এ স্থানান্তর করুন এবং এনডিকে r26b ( #707 , #867 ) এ সমর্থন করেছেন।
  • কাস্ট এক্সটেনশন:
    • কাস্ট ডিভাইসে ( #708 ) মিডিয়া লোড করার সময় অ্যাপ্লিকেশনটি ক্রাশ না করার জন্য একটি Timeline তৈরি স্যানিটাইজ করুন।

সংস্করণ 1.2.0

15 নভেম্বর, 2023

  • সাধারণ গ্রন্থাগার:
    • Log.Logger ইন্টারফেসের পদ্ধতিগুলিতে একটি @Nullable Throwable প্যারামিটার যুক্ত করুন। এই পদ্ধতিগুলির message প্যারামিটারে আর লগকে দেওয়া Throwable সম্পর্কে কোনও তথ্য নেই Log.{d,i,w,e}() পদ্ধতিগুলি, সুতরাং বাস্তবায়নগুলি যদি ইচ্ছা হলে এই তথ্যটি ম্যানুয়ালি সংযোজন করতে হবে (সম্ভবত Logger.appendThrowableString(String, Throwable) )।
    • কোটলিন সামঞ্জস্যতার সমস্যাটি ঠিক করুন যেখানে বাতিলযোগ্য জেনেরিক টাইপ প্যারামিটার এবং বাতিলযোগ্য অ্যারে উপাদান প্রকারগুলি বাতিলযোগ্য হিসাবে সনাক্ত করা যায় না। উদাহরণগুলি হ'ল TrackSelectorResult এবং SimpleDecoder পদ্ধতি পরামিতি ( #6792 )।
    • প্লেব্যাক অস্থায়ীভাবে দমন করা হলে (যেমন ক্ষণস্থায়ী অডিও ফোকাস ক্ষতির কারণে) একটি "প্লে" বোতামটি দেখানোর জন্য Util.shouldShowPlayButton ডিফল্ট ইউআই এবং বিজ্ঞপ্তি আচরণ পরিবর্তন করুন uld লিগ্যাসি আচরণটি PlayerView.setShowPlayButtonIfPlaybackIsSuppressed(false) বা MediaSession.Builder.setShowPlayButtonIfPlaybackIsSuppressed(false) ( #11213 ) ব্যবহার করে বজায় রাখা যেতে পারে।
    • আপগ্রেড androidx.annotation:annotation-experimental 1.3.1 এ।
    • Player ইন্টারফেসে ExoPlayer.setAudioAttributes সরান।
  • এক্সো প্লেয়ার:
    • কেবলমাত্র ডিকোড-কেবলমাত্র নমুনাগুলি সঠিকভাবে সনাক্ত না করার কারণে এসি 4 স্ট্রিমগুলিতে সমস্যাগুলি সন্ধান করুন ( #11000 )।
    • অনুপযুক্ত অডিও আউটপুট ডিভাইসগুলিতে প্লেব্যাকের দমন যোগ করুন (যেমন ওয়েয়ার ওএস ডিভাইসে অন্তর্নির্মিত স্পিকার) যখন এই বৈশিষ্ট্যটি ExoPlayer.Builder.setSuppressPlaybackOnUnsuitableOutput আউটপুটটির মাধ্যমে সক্ষম করা হয়। প্লেব্যাক দমন কারণটি Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT হিসাবে আপডেট করা হবে Play উপযুক্ত আউটপুট সংযুক্ত থাকলে দমন কারণটি সরানো হবে।
    • MediaSource.canUpdateMediaItem এবং MediaSource.updateMediaItem যোগ করুন MediaItem আপডেটগুলি Player.replaceMediaItem(s) মাধ্যমে তৈরির পরে গ্রহণের জন্য।
    • Player.replaceMediaItem(s) ( #33 , #9978 ) এর মাধ্যমে লাইব্রেরি দ্বারা সরবরাহিত সমস্ত MediaSource ক্লাসের জন্য MediaItem আপডেটের অনুমতি দিন।
    • MimeTypes.TEXT_EXOPLAYER_CUES থেকে MimeTypes.APPLICATION_MEDIA3_CUES 3_কুইস করুন।
    • PngExtractor যুক্ত করুন যা একটি নমুনা হিসাবে TrackOutput একটি সম্পূর্ণ পিএনজি ফাইল প্রেরণ করে এবং পড়তে পারে।
    • SequenceableLoader.continueLoading(long) ইন্টারফেসে SequenceableLoader ইন্টারফেসে SequenceableLoader.continueLoading(LoadingInfo loadingInfo) বাড়ান। LoadingInfo বিদ্যমান playbackPositionUs ছাড়াও playbackSpeed এবং lastRebufferRealtimeMs সহ অতিরিক্ত পরামিতি রয়েছে।
    • ChunkSource.getNextChunk(long, long, List, ChunkHolder) বৃদ্ধি করুন ChunkSource ইন্টারফেসে ChunkSource.getNextChunk(LoadingInfo, long, List, ChunkHolder)
    • সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) লগিংয়ে অতিরিক্ত ক্ষেত্র যুক্ত করুন: বাফার স্টারভেশন ( bs ), ডেডলাইন ( dl ), প্লেব্যাক রেট ( pr ) এবং স্টার্টআপ ( su ) ( #8699 )।
    • লুমা এবং ক্রোমা বিটডেপথকে ColorInfo যুক্ত করুন ( #491 )।
    • সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) লগিংয়ে অতিরিক্ত ক্ষেত্র যুক্ত করুন: পরবর্তী অবজেক্ট রিকোয়েস্ট ( nor ) এবং পরবর্তী পরিসীমা অনুরোধ ( nrr ) ( #8699 )।
    • ক্যোয়ারী প্যারামিটারগুলি ( #553 ) ব্যবহার করে সাধারণ মিডিয়া ক্লায়েন্ট ডেটা (সিএমসিডি) ডেটা প্রেরণ করতে কার্যকারিতা যুক্ত করুন।
    • ExperimentalBandwidthMeter ( #612 ) ConcurrentModificationException ঠিক করুন।
    • CompositeMediaSource.getMediaTimeForChildMediaTime MediaPeriodId প্যারামিটার যুক্ত করুন।
    • ConcatenatingMediaSource2 2 ( #11226 ) এ ClippingMediaSource (এবং পিরিয়ড/উইন্ডো টাইম অফসেট সহ অন্যান্য উত্সগুলি) সমর্থন করুন।
    • একটি MediaPeriodId যুক্তি পেতে BaseRenderer.onStreamChanged() পরিবর্তন করুন।
  • ট্রান্সফরমার:
    • চিত্র ইনপুটগুলির জন্য পার্স এক্সিফ রোটেশন ডেটা।
    • TransformationRequest.HdrMode টীকাটি প্রকার এবং এর সাথে সম্পর্কিত ধ্রুবকগুলি সরান। এর পরিবর্তে Composition.HdrMode এবং এর সাথে সম্পর্কিত ধ্রুবকগুলি ব্যবহার করুন।
    • ঘূর্ণন সমস্যাগুলি ঠিক করতে OverlaySettings সহজ করুন।
    • TimestampIterator SampleConsumer.queueInputBitmap frameRate এবং durationUs পরামিতি পরিবর্তিত হয়েছে।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector.Parameters.allowAudioNonSeamlessAdaptiveness যুক্ত করুন। অ-সামুদ্রিকবিহীন অভিযোজনকে স্পষ্টভাবে মঞ্জুরি দিতে বা বাতিল করতে allowaudiononsaseasteaptivey ডিফল্টটি true বর্তমান আচরণে থাকে।
  • নিষ্কাশনকারী:
    • এমপিইজি-টিএস: নিশ্চিত করুন যে শেষ ফ্রেমটি স্যাম্পল কাতারে ( #7909 ) একটি স্ট্রিমের শেষ অ্যাক্সেস ইউনিটটি পাস করে রেন্ডার করা হয়েছে।
    • rotationDegrees নির্ধারণ করার সময় টাইপো ঠিক করুন। projectionPosePitch projectionPoseRoll ( #461 ) এ পরিবর্তিত হয়েছে।
    • এই ধারণাটি সরান যে Extractor উদাহরণগুলি সরাসরি instanceof দিয়ে পরিদর্শন করা যেতে পারে। আপনি যদি কোনও Extractor বাস্তবায়নের বিবরণে রানটাইম অ্যাক্সেস চান তবে আপনাকে প্রথমে Extractor.getUnderlyingInstance কল করতে হবে get
    • BmpExtractor যুক্ত করুন।
    • WebpExtractor যুক্ত করুন।
    • HeifExtractor যুক্ত করুন।
    • Mp4Extractor কুইকটাইম ক্লাসিক সমর্থন যুক্ত করুন।
  • অডিও:
    • এমপি 4 এবং ম্যাট্রোস্কায় 24/32-বিট বিগ-এন্ডিয়ান পিসিএম এবং এমপি 4 এ lpcm জন্য পার্স পিসিএম এনকোডিংয়ের জন্য সমর্থন যুক্ত করুন।
    • এমপি 4 এ ভোর্বিস অডিও আহরণের জন্য সমর্থন যুক্ত করুন।
    • AudioSink.getFormatOffloadSupport(Format) DefaultAudioOffloadSupportProvider এটি নতুন AudioOffloadSupport ফিরিয়ে দেয় যা isFormatSupported , isGaplessSupported এবং isSpeedChangeSupported রয়েছে।
    • AudioSink.setOffloadMode() যুক্ত করুন যার মাধ্যমে অডিও সিঙ্কের অফলোড কনফিগারেশনটি কনফিগার করা আছে। ডিফল্ট হ'ল AudioSink.OFFLOAD_MODE_DISABLED
    • TrackSelectionParameters setAudioOffloadPreference মাধ্যমে অফলোড সক্ষম করা যেতে পারে। যদি সেট পছন্দটি সক্ষম করতে হয় তবে ডিভাইসটি ফর্ম্যাটটির জন্য অফলোডকে সমর্থন করে এবং ট্র্যাক নির্বাচনটি একটি একক অডিও ট্র্যাক, তবে অডিও অফলোড সক্ষম করা হবে।
    • যদি audioOffloadModePreference AUDIO_OFFLOAD_MODE_PREFERENCE_REQUIRED সেট করা থাকে, তবে DefaultTrackSelector কেবল একটি অডিও ট্র্যাক নির্বাচন করবে এবং কেবলমাত্র যদি সেই ট্র্যাকের ফর্ম্যাটটি অফলোডে সমর্থিত হয়। যদি কোনও অডিও ট্র্যাক অফলোডে সমর্থিত না হয় তবে কোনও ট্র্যাক নির্বাচন করা হবে না।
    • ট্র্যাক ট্রানজিশনের পরে প্লেব্যাক পজিশন ইস্যুর কারণে প্রাক-এপিআই স্তর 33 যখন অফলোডের জন্য গ্যাপলেস সমর্থন অক্ষম করা।
    • DefaultRenderersFactory.buildAudioSink পদ্ধতি স্বাক্ষর থেকে প্যারামিটার enableOffload সরান।
    • পদ্ধতি DefaultAudioSink.Builder.setOffloadMode সরান।
    • INTDEF মান DefaultAudioSink.OffloadMode.OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED করুন।
    • অফলোড প্লেব্যাকের সময় ওপাস গ্যাপলেস মেটাডেটার জন্য সমর্থন যুক্ত করুন।
    • প্রথম লিখতে ব্যর্থ হলে ( #627 ) অফলোড অক্ষম করে রেন্ডারার পুনরুদ্ধারের অনুমতি দিন।
    • অডিও-কেবলমাত্র অডিওলড প্লেব্যাকের জন্য ডিফল্টরূপে অফলোড শিডিয়ুলিং সক্ষম করুন।
    • ExoPlayer.experimentalSetOffloadSchedulingEnabled মুছুন AudioOffloadListener.onExperimentalOffloadSchedulingEnabledChanged
    • onExperimentalSleepingForOffloadChanged onSleepingForOffloadChanged এবং onExperimentalOffloadedPlayback onOffloadedPlayback হিসাবে নামকরণ করা হয়েছে।
    • একটি অভ্যন্তরীণ AudioOffloadPreferences ক্লাসে অডিও অডিও অফলোড মোড সম্পর্কিত TrackSelectionParameters ইন্টারফেস এবং সংজ্ঞাগুলি সরান।
    • AnalyticsListener , AudioRendererEventListener এবং AudioSink.Listener onAudioTrackInitialized এবং onAudioTrackReleased কলব্যাকগুলি যুক্ত করুন।
    • ফিক্স ডিটিএস এক্সপ্রেস অডিও বাফার আন্ডারফ্লো ইস্যু ( #650 )।
    • E-AC3-JOC এর জন্য ক্ষমতাগুলি চেক করুন যেখানে বাগটি ঠিক করুন একটি IllegalArgumentException ( #677 ) ছুড়ে দেয়।
  • ভিডিও:
    • MediaCodecVideoRenderer একটি কাস্টম VideoFrameProcessor.Factory ব্যবহার করার অনুমতি দিন।
    • অডিও স্ট্রিমটি নেতিবাচক টাইমস্ট্যাম্পগুলি ( #291 ) দিয়ে শুরু হলে প্রথম ফ্রেমটি রেন্ডার করা যায় না এমন বাগটি ঠিক করুন।
  • পাঠ্য:
    • ExoplayerCuesDecoder সরান। sampleMimeType = application/x-media3-cues সহ পাঠ্য ট্র্যাকগুলি এখন SubtitleDecoder উদাহরণের প্রয়োজন ছাড়াই সরাসরি TextRenderer দ্বারা পরিচালিত হয়।
  • মেটাডেটা:
    • MetadataDecoder.decode আর "ডিকোড-কেবল" নমুনার জন্য আর ডাকা হবে না কারণ বাস্তবায়ন অবশ্যই নাল ফিরে আসতে হবে।
  • প্রভাব:
    • টাইমস্ট্যাম্প দ্বারা বিটম্যাপ ইনপুটটি কুইউয়িং বিটম্যাপ ইনপুট VideoFrameProcessor.queueInputBitmap(Bitmap, Iterator<Long>) যুক্ত করুন।
    • VideoFrameProcessor.registerInputStream() rege অ্যাপ্লিকেশনগুলি অবশ্যই VideoFrameProcessor.Listener#onInputStreamRegistered() প্রয়োগ করতে হবে।
    • VideoFrameProcessor.queueInputBitmap TimestampIterator frameRate এবং durationUs প্যারামিটারগুলি পরিবর্তিত হয়েছে।
  • আইএমএ এক্সটেনশন:
    • প্লেলিস্টের প্রথম আইটেম নয় এমন একটি মাল্টি-পিরিয়ড ড্যাশ লাইভ স্ট্রিম যেখানে একটি ব্যতিক্রম ( #571 ) ছুঁড়ে ফেলতে পারে সেখানে বাগটি ঠিক করুন।
    • AdsLoader.destroy() কল করার আগে স্ট্রিম ম্যানেজারটি প্রকাশ করুন
    • ইমাম এসডিকে সংস্করণটি 3.31.0 এ বাম্প করুন।
  • অধিবেশন:
    • DefaultMediaNotificationProvider প্রোভাইডারে ( #167 ) FOREGROUND_SERVICE_IMMEDIATE বিজ্ঞপ্তিগুলি অগ্রভাগের পরিষেবা আচরণটি সেট করুন।
    • স্যামসুং ডিভাইসগুলিতে অবনমিত এপিআইয়ের সমস্যা এড়াতে কেবল android.media.session.MediaSession.setMediaButtonBroadcastReceiver() উপরে এপিআই 31 এর উপরে ব্যবহার করুন ( #167 )।
    • বিজ্ঞপ্তি এবং প্ল্যাটফর্ম সেশনটি পপুলেট করতে ব্যবহৃত কমান্ড এবং কাস্টম লেআউট সেট করতে মিডিয়া বিজ্ঞপ্তি নিয়ামককে প্রক্সি হিসাবে ব্যবহার করুন।
    • মিডিয়া বোতামের ইভেন্টগুলি রূপান্তর করুন যা MediaSessionService.onStartCommand() দ্বারা প্রাপ্ত মিডিয়া 3 এর মধ্যে তাদের প্ল্যাটফর্ম সেশনে রাউট করার পরিবর্তে এবং মিডিয়া 3 এ ফিরে আসে। এটির সাথে, কলার কন্ট্রোলার সর্বদা মিডিয়া বিজ্ঞপ্তি নিয়ামক এবং অ্যাপ্লিকেশনগুলি সহজেই সমস্ত সমর্থিত এপিআই স্তরে একইভাবে বিজ্ঞপ্তি থেকে আসা কলগুলি স্বীকৃতি দিতে পারে।
    • বাগটি ফিক্স করুন যেখানে MediaController.getCurrentPosition() অগ্রসর হচ্ছে না যখন কোনও উত্তরাধিকার MediaSessionCompat সাথে সংযুক্ত থাকে।
    • সুবিধার জন্য MediaLibrarySession.getSubscribedControllers(mediaId)
    • ওভাররাইড MediaLibrarySession.Callback.onSubscribe() যার জন্য কন্ট্রোলার সাবস্ক্রাইব করে তার পিতামাতার আইডির প্রাপ্যতা জোর দেওয়ার জন্য। যদি সফল হয় তবে সাবস্ক্রিপশনটি গৃহীত notifyChildrenChanged() এবং ব্রাউজারকে অবহিত করার জন্য অবিলম্বে ডাকা হয় ( #561 )।
    • স্বয়ংচালিত ওএসের জন্য সেশন ডেমো মডিউল যুক্ত করুন এবং অ্যান্ড্রয়েড অটোর জন্য সেশন ডেমো সক্ষম করুন।
    • মিডিয়া বিজ্ঞপ্তি নিয়ামকের জন্য COMMAND_GET_TIMELINE উপলভ্য না হলে ফ্রেমওয়ার্ক সেশনের সারি সেট করবেন না। ফ্রেমওয়ার্ক সেশন থেকে ক্লায়েন্ট কন্ট্রোলার হিসাবে অ্যান্ড্রয়েড অটো সহ, অ্যান্ড্রয়েড অটো এর ইউআইতে queue বোতামটি প্রদর্শিত হবে না ( #339 ) এর প্রভাব রয়েছে।
    • SimpleBitmapLoader পরিবর্তে ডিফল্টরূপে DataSourceBitmapLoader ব্যবহার করুন ( #271 , #327 )।
    • MediaSession.Callback.onMediaButtonEvent(Intent) যুক্ত করুন যা অ্যাপ্লিকেশনগুলিকে ডিফল্ট মিডিয়া বোতাম ইভেন্ট হ্যান্ডলিংকে ওভাররাইড করতে দেয়।
  • UI:
    • একজন Player.Listener যুক্ত করুন Player.PLAYBACK_SUPPRESSION_REASON_UNSUITABLE_AUDIO_OUTPUT যদি কোনও উপযুক্ত ডিভাইসটি কনফিগারযোগ্য সময়সীমার মধ্যে সংযুক্ত থাকে (ডিফল্ট 5 মিনিট) শ্রোতা প্লেব্যাকটি স্বতঃ-পুনর্বিবেচনা করবে।
  • ডাউনলোড:
    • অ্যান্ড্রয়েড 14 সামঞ্জস্যের জন্য DownloadService জন্য "ডেটা সিঙ্ক" ফোরগ্রাউন্ড পরিষেবা প্রকারটি ঘোষণা করুন। এই পরিষেবাটি ব্যবহার করার সময়, অ্যাপ্লিকেশনটিকে ম্যানিফেস্টে foregroundServiceType হিসাবে dataSync যুক্ত করতে হবে এবং FOREGROUND_SERVICE_DATA_SYNC অনুমতি ( #11239 ) যুক্ত করতে হবে।
  • HLS এক্সটেনশন:
    • সর্বশেষ লোড সমাপ্ত সময় ( #663 ) এর চেয়ে শেষ লোড শুরুর সময় থেকে গণনা করা একটি ব্যবধান সহ এইচএলএস লাইভ প্লেলিস্টকে রিফ্রেশ করুন।
  • ড্যাশ এক্সটেনশন:
    • বিভাগের টেম্পলেট ইউআরএলে একই ড্যাশ আইডেন্টিফায়ার একাধিক অনুমতি দিন।
    • নিষ্কাশনের সময় সাবটাইটেলগুলি পার্স করার জন্য পরীক্ষামূলক সমর্থন যুক্ত করুন। সাবটাইটেল বিভাগগুলির মধ্যে স্থানান্তরিত করার সময় ফ্লিকারিং সমাধান সহ ওভারল্যাপিং সাবটাইটেলগুলি মার্জ করার জন্য এটি আরও ভাল সমর্থন রয়েছে। আপনি এটি DashMediaSource.Factory.experimentalParseSubtitlesDuringExtraction() ( #288 ) ব্যবহার করে এটি সক্ষম করতে পারেন।
  • RTSP এক্সটেনশন:
    • টিসিপিতে ফিরে আসার সময় বা কিছু পরিস্থিতিতে ঝুলন্ত প্লেব্যাকের দিকে IndexOutOfBoundsException হতে পারে এমন একটি রেসের শর্তটি ঠিক করুন।
    • আরটিএসপি সেটআপে স্টেটটি পরীক্ষা করুন যখন RtspMediaPeriod লোডিং স্টেট ( #577 ) ফেরত দেয়।
    • Ignore custom Rtsp request methods in Options response public header ( #613 ).
    • Use RTSP Setup Response timeout value in time interval of sending keep-alive RTSP Options requests ( #662 ).
  • Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
    • Release the MIDI decoder module, which provides support for playback of standard MIDI files using the Jsyn library to synthesize audio.
    • Add DecoderOutputBuffer.shouldBeSkipped to directly mark output buffers that don't need to be presented. This is preferred over C.BUFFER_FLAG_DECODE_ONLY that will be deprecated.
    • Add Decoder.setOutputStartTimeUs and SimpleDecoder.isAtLeastOutputStartTimeUs to allow decoders to drop decode-only samples before the start time. This should be preferred to Buffer.isDecodeOnly that will be deprecated.
    • Fix bug publishing MIDI decoder artifact to Maven repository. The artifact is renamed to media3-exoplayer-midi ( #734 ).
  • লিনব্যাক এক্সটেনশন:
    • Fix bug where disabling a surface can cause an ArithmeticException in Leanback code ( #617 ).
  • পরীক্ষা উপযোগিতা:
    • Make TestExoPlayerBuilder and FakeClock compatible with Espresso UI tests and Compose UI tests. This fixes a bug where playback advances non-deterministically during Espresso or Compose view interactions.
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Remove TransformationRequest.Builder.setEnableRequestSdrToneMapping(boolean) and TransformationRequest.Builder.experimental_setEnableHdrEditing(boolean) . Use Composition.Builder.setHdrMode(int) and pass the Composition to Transformer.start(Composition, String) instead.
    • Remove deprecated DownloadNotificationHelper.buildProgressNotification method, use a non deprecated method that takes a notMetRequirements parameter instead.

Version 1.2.0-rc01

নভেম্বর 1, 2023

Use the 1.2.0 stable version .

Version 1.2.0-beta01

অক্টোবর 19, 2023

Use the 1.2.0 stable version .

Version 1.2.0-alpha02

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

Use the 1.2.0 stable version .

Version 1.2.0-alpha01

আগস্ট 17, 2023

Use the 1.2.0 stable version .

সংস্করণ 1.1.0

সংস্করণ 1.1.1

16 আগস্ট, 2023

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

সংস্করণ 1.1.0

5 জুলাই, 2023

  • সাধারণ গ্রন্থাগার:
    • অনুপযুক্ত অডিও রুটের জন্য দমন কারণ যোগ করুন এবং খুব দীর্ঘ চাপা কারণ পরিবর্তন করার জন্য প্রস্তুত হলে প্লে করুন। ( #15 )।
    • প্লেয়ারে কমান্ড যোগ করুন:
      • COMMAND_GET_METADATA
      • COMMAND_SET_PLAYLIST_METADATA
      • COMMAND_SET_DEVICE_VOLUME_WITH_FLAGS
      • COMMAND_ADJUST_DEVICE_VOLUME_WITH_FLAGS
    • প্লেয়ারে ওভারলোড করা পদ্ধতি যোগ করুন যা ব্যবহারকারীদের ভলিউম ফ্ল্যাগ নির্দিষ্ট করতে দেয়:
      • void setDeviceVolume(int, int)
      • void increaseDeviceVolume(int)
      • void decreaseDeviceVolume(int)
      • void setDeviceMuted(boolean, int)
    • DeviceInfo এর জন্য Builder যোগ করুন এবং বিদ্যমান কনস্ট্রাক্টরকে অবমূল্যায়ন করুন।
    • দূরবর্তী প্লেব্যাকের জন্য রাউটিং কন্ট্রোলার আইডি নির্দিষ্ট করতে DeviceInfo.routingControllerId যোগ করুন।
    • Player.replaceMediaItem(s) যোগ করুন একটি শর্টকাট হিসাবে একই অবস্থানে আইটেম যোগ এবং অপসারণ ( #8046 )।
  • এক্সো প্লেয়ার:
    • ExoPlayer-কে শুধুমাত্র ডিভাইসের ভলিউম পদ্ধতির নিয়ন্ত্রণ করার অনুমতি দিন যদি স্পষ্টভাবে অপ্ট ইন করা থাকে। এতে অ্যাক্সেস পেতে ExoPlayer.Builder.setDeviceVolumeControlEnabled ব্যবহার করুন:
      • getDeviceVolume()
      • isDeviceMuted()
      • setDeviceVolume(int) এবং setDeviceVolume(int, int)
      • increaseDeviceVolume(int) এবং increaseDeviceVolume(int, int)
      • decreaseDeviceVolume(int) এবং decreaseDeviceVolume(int, int)
    • 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 পদ্ধতিতে প্যারামিটার যোগ করুন shouldStartPlayback এবং onTracksSelected উচিত যা প্রাসঙ্গিক MediaPeriod সাথে এই পদ্ধতিগুলিকে সংযুক্ত করার অনুমতি দেয়।
    • একটি টাইমলাইন প্যারামিটার যোগ করে ServerSideAdInsertionMediaSource.setAdPlaybackStates(Map<Object, AdPlaybackState>) এর স্বাক্ষর পরিবর্তন করুন যা মানচিত্রে কী হিসাবে ব্যবহৃত UID-এর সাথে পিরিয়ড ধারণ করে। মাল্টি-পিরিয়ড লাইভ স্ট্রিমগুলির সাথে একযোগে সমস্যা এড়াতে এটি প্রয়োজন।
    • EventDispatcher.withParameters(int windowIndex, @Nullable MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) এবং BaseMediaSource.createEventDispatcher(..., long mediaTimeOffsetMs) বাতিল করুন। mediaTimeOffsetUs ছাড়া পদ্ধতির বৈকল্পিক পরিবর্তে কল করা যেতে পারে। মনে রাখবেন যে অবহেলিত ভেরিয়েন্টের জন্যও, অফসেটটি আর প্রেরক দ্বারা প্রেরিত MediaLoadData অবজেক্টের startTimeUs এবং endTimeUs এ যোগ করা হয় না।
    • ExoTrackSelection.blacklist নাম পরিবর্তন করে excludeTrack এবং isTrackExcludedisBlacklisted
    • খালি প্লেলিস্টে কল করা হলে ExoPlayer.setMediaItem(s) এবং addMediaItem(s) এর মধ্যে অসামঞ্জস্যপূর্ণ আচরণ ঠিক করুন৷
  • ট্রান্সফরমার:
    • Transformer.Builder.setMediaSourceFactory(MediaSource.Factory) সরান। পরিবর্তে ExoPlayerAssetLoader.Factory(MediaSource.Factory) এবং Transformer.Builder.setAssetLoaderFactory(AssetLoader.Factory) ব্যবহার করুন।
    • Transformer.startTransformation(MediaItem, ParcelFileDescriptor) সরান।
    • একটি বাগ ঠিক করুন যেখানে রূপান্তর আটকে যেতে পারে (মুক্সার টাইমআউটের দিকে নিয়ে যায়) যদি ভিডিও স্ট্রিমের সমাপ্তি মুহুর্তে সিগন্যাল করা হয় যখন একটি ইনপুট ফ্রেম প্রক্রিয়াকরণ মুলতুবি ছিল।
    • সমর্থন প্রসারিত করতে findDecoder/EncoderForFormat ইউটিলিটিগুলি ব্যবহার করার পরিবর্তে MediaCodecList এর মাধ্যমে কোডেক অনুসন্ধান করুন।
    • DefaultEncoderFactory বি-ফ্রেম কনফিগারেশন সরান কারণ এটি কিছু ডিভাইসে কাজ করে না।
  • ট্র্যাক নির্বাচন:
    • DefaultTrackSelector.Parameters.allowInvalidateSelectionsForRendererCapabilitiesChange যোগ করুন যা ডিফল্টরূপে অক্ষম থাকে। সক্রিয় করা হলে, রেন্ডারারের ক্ষমতা পরিবর্তিত হলে DefaultTrackSelector একটি নতুন ট্র্যাক নির্বাচন ট্রিগার করবে৷
  • নিষ্কাশনকারী:
    • Ogg: দীর্ঘ সময়ের ( #391 ) সাথে ফাইল খুঁজতে গিয়ে বাগ ফিক্স করুন।
    • FMP4: সমস্যাটি ঠিক করুন যেখানে TimestampAdjuster ইএমএসজি পরমাণু ( #356 ) থেকে মেটাডেটা নমুনা সময় সহ একটি ভুল টাইমস্ট্যাম্প অফসেট শুরু করে।
  • অডিও:
    • টানেলিং সক্ষম হলে এবং AudioProcessors সক্রিয় থাকাকালীন কিছু প্লেব্যাক ব্যর্থ হলে বাগ ঠিক করুন, যেমন ফাঁকহীন ছাঁটাইয়ের জন্য ( #10847 )।
    • সরাসরি প্লেব্যাকে (অফলোড) Ogg প্যাকেটে ওপাস ফ্রেমগুলিকে এনক্যাপসুলেট করুন।
    • Extrapolate current position during sleep with offload scheduling.
    • খেলোয়াড়ের জীবনচক্রের শেষে সংস্থানগুলি প্রকাশ করার জন্য Renderer.release() এবং AudioSink.release() যোগ করুন।
    • DefaultAudioSink এ অডিও ক্ষমতার পরিবর্তনগুলি শুনুন। DefaultAudioSink এর কনস্ট্রাক্টরে একটি প্রয়োজনীয় প্যারামিটার context যোগ করুন, যার সাহায্যে DefaultAudioSink AudioCapabilitiesReceiver এ শ্রোতা হিসাবে নিবন্ধন করবে এবং ক্ষমতা পরিবর্তনের সাথে জানানো হলে তার audioCapabilities বৈশিষ্ট্য আপডেট করবে।
    • AudioSink.Listener ইন্টারফেস এবং RendererCapabilities.Listener যা onRendererCapabilitiesChanged ইভেন্টগুলিতে ট্রিগার করে একটি নতুন ইন্টারফেস এ onAudioCapabilitiesChanged এ একটি নতুন ইভেন্টের মাধ্যমে অডিও ক্ষমতার পরিবর্তনগুলি প্রচার করুন৷
    • অডিও চ্যানেলে স্কেলিং/মিক্সিং প্রয়োগ করার জন্য ChannelMixingAudioProcessor যোগ করুন।
    • ডিকোডারে নতুন int মান DISCARD_REASON_AUDIO_BYPASS_POSSIBLE যোগ করুন DecoderDiscardReasons অডিও ক্ষমতা পরিবর্তনের পরে বাইপাস মোড সম্ভব হলে অডিও ডিকোডার বাতিল করার কারণ।
    • DTS Express এবং DTS:X ( #335 ) এর জন্য সরাসরি প্লেব্যাক সমর্থন যোগ করুন।
  • ভিডিও:
    • যখন রেন্ডারার অক্ষম থাকে তখন MediaCodecVideoRenderer 0 এর প্রস্থ এবং উচ্চতা সহ একটি VideoSize রিপোর্ট করুন৷ Player.Listener.onVideoSizeChanged সেই অনুযায়ী বলা হয় যখন Player.getVideoSize() পরিবর্তন হয়। এই পরিবর্তনের সাথে, MediaCodecVideoRenderer সাথে ExoPlayer-এর ভিডিওর আকার 0 এর প্রস্থ এবং উচ্চতা থাকে যখন Player.getCurrentTracks ভিডিও সমর্থন করে না, বা সমর্থিত ভিডিও ট্র্যাকের আকার এখনও নির্ধারণ করা হয়নি।
  • DRM:
    • DefaultDrmSession এ বেশ কয়েকটি অভ্যন্তরীণ-শুধু পদ্ধতির দৃশ্যমানতা হ্রাস করুন যেগুলি DRM প্যাকেজের বাইরে থেকে কল করার আশা করা হয় না:
      • void onMediaDrmEvent(int)
      • void provision()
      • void onProvisionCompleted()
      • onProvisionError(Exception, boolean)
  • মুক্সার:
    • একটি নতুন মুক্সার লাইব্রেরি যোগ করুন যা একটি MP4 কন্টেইনার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে।
  • আইএমএ এক্সটেনশন:
    • DAI-এর জন্য মাল্টি-পিরিয়ড লাইভ DASH স্ট্রিমগুলি সক্ষম করুন৷ অনুগ্রহ করে মনে রাখবেন যে বর্তমান বাস্তবায়ন এখনও লাইভ স্ট্রীম ( #10912 ) এ খোঁজা সমর্থন করে না।
    • লাইভ স্ট্রিমগুলিতে একটি নতুন বিজ্ঞাপন গোষ্ঠী সন্নিবেশিত করা হয়েছে এমন একটি বাগ ঠিক করুন কারণ পরপর টাইমলাইনে গণনা করা সামগ্রীর অবস্থান সামান্য পরিবর্তিত হয়।
  • অধিবেশন:
    • Add helper method MediaSession.getControllerForCurrentRequest to obtain information about the controller that is currently calling a Player method.
    • Add androidx.media3.session.MediaButtonReceiver to enable apps to implement playback resumption with media button events sent by, for example, a Bluetooth headset ( #167 ).
    • Add default implementation to MediaSession.Callback.onAddMediaItems to allow requested MediaItems to be passed onto Player if they have LocalConfiguration (eg URI) ( #282 ).
    • Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
    • Add default implementation to MediaSession.Callback.onAddMediaItems to allow requested MediaItems to be passed onto Player if they have LocalConfiguration (eg URI) ( #282 ).
    • Add "seek to previous" and "seek to next" command buttons on compact media notification view by default for Android 12 and below ( #410 ).
  • UI:
    • একটি প্লে/পজ বোতামের সাহায্যে কাস্টম UI উপাদানগুলি লিখতে Util পদ্ধতিগুলি যোগ করুন shouldShowPlayButton এবং handlePlayPauseButtonAction
  • RTSP এক্সটেনশন:
    • MPEG4-LATM-এর জন্য, ডিফল্ট প্রোফাইল-লেভেল-আইডি মান ব্যবহার করুন যদি ডিসক্রাইব রেসপন্স এসডিপি বার্তা ( #302 ) এ অনুপস্থিত থাকে।
    • RTSP সেশন থেকে আপেক্ষিক পাথ রেজোলিউশনের জন্য বেস Uri ব্যবহার করুন যদি DESCRIBE রেসপন্স হেডারে উপস্থিত থাকে ( #11160 )।
  • ড্যাশ এক্সটেনশন:
    • মাল্টি পিরিয়ড DASH স্ট্রীমগুলির জন্য MediaLoadData.startTimeMs এবং MediaLoadData.endTimeMs থেকে মিডিয়া টাইম অফসেট সরান৷
    • একটি বাগ ঠিক করুন যেখানে একটি মাল্টি-পিরিয়ড লাইভ ড্যাশ মিডিয়া সোর্স পুনরায় প্রস্তুত করার ফলে একটি IndexOutOfBoundsException ( #10838 ) তৈরি হয়।
  • HLS এক্সটেনশন:
    • HlsMediaSource.Factory.setTimestampAdjusterInitializationTimeoutMs(long) যোগ করুন লোডিং থ্রেডের TimestampAdjuster শুরু হওয়ার জন্য অপেক্ষা করার জন্য একটি সময়সীমা সেট করতে। যদি টাইমআউটের আগে আরম্ভ করা সম্পূর্ণ না হয়, তাহলে প্লেব্যাকের অন্তহীন স্টল এড়াতে একটি PlaybackException নিক্ষেপ করা হয়। টাইমআউট ডিফল্টরূপে শূন্য সেট করা হয় ( #323 )।
  • পরীক্ষা উপযোগিতা:
    • DataSourceContractTest এ URI স্কিমের ক্ষেত্রে অসংবেদনশীলতা পরীক্ষা করুন।
  • অপ্রচলিত চিহ্নগুলি সরান:
    • DefaultAudioSink কনস্ট্রাক্টর সরান, পরিবর্তে DefaultAudioSink.Builder ব্যবহার করুন।
    • HlsMasterPlaylist সরান, পরিবর্তে HlsMultivariantPlaylist ব্যবহার করুন।
    • Player.stop(boolean) সরান। Use Player.stop() and Player.clearMediaItems() (if reset is true ) instead.
    • Remove two deprecated SimpleCache constructors, use a non-deprecated constructor that takes a DatabaseProvider instead for better performance.
    • Remove DefaultBandwidthMeter constructor, use DefaultBandwidthMeter.Builder instead.
    • Remove DefaultDrmSessionManager constructors, use DefaultDrmSessionManager.Builder instead.
    • Remove two deprecated HttpDataSource.InvalidResponseCodeException constructors, use a non-deprecated constructor that accepts additional fields( cause , responseBody ) to enhance error logging.
    • Remove DownloadHelper.forProgressive , DownloadHelper.forHls , DownloadHelper.forDash , and DownloadHelper.forSmoothStreaming , use DownloadHelper.forMediaItem instead.
    • Remove deprecated DownloadService constructor, use a non deprecated constructor that includes the option to provide a channelDescriptionResourceId parameter.
    • Remove deprecated String constants for Charsets ( ASCII_NAME , UTF8_NAME , ISO88591_NAME , UTF16_NAME and UTF16LE_NAME ), use Kotlin Charsets from the kotlin.text package, the java.nio.charset.StandardCharsets or the com.google.common.base.Charsets instead.
    • Remove deprecated WorkManagerScheduler constructor, use a non deprecated constructor that includes the option to provide a Context parameter instead.
    • Remove the deprecated methods createVideoSampleFormat , createAudioSampleFormat , createContainerFormat , and createSampleFormat , which were used to instantiate the Format class. Instead use Format.Builder for creating instances of Format .
    • Remove the deprecated methods copyWithMaxInputSize , copyWithSubsampleOffsetUs , copyWithLabel , copyWithManifestFormatInfo , copyWithGaplessInfo , copyWithFrameRate , copyWithDrmInitData , copyWithMetadata , copyWithBitrate and copyWithVideoSize , use Format.buildUpon() and setter methods instead.
    • Remove deprecated ExoPlayer.retry() , use prepare() instead.
    • Remove deprecated zero-arg DefaultTrackSelector constructor, use DefaultTrackSelector(Context) instead.
    • Remove deprecated OfflineLicenseHelper constructor, use OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) instead.
    • Remove deprecated DownloadManager constructor, use the constructor that takes an Executor instead.
    • Remove deprecated Cue constructors, use Cue.Builder instead.
    • Remove deprecated OfflineLicenseHelper constructor, use OfflineLicenseHelper(DefaultDrmSessionManager, DrmSessionEventListener.EventDispatcher) instead.
    • Remove four deprecated AnalyticsListener methods:
      • onDecoderEnabled , use onAudioEnabled and/or onVideoEnabled instead.
      • onDecoderInitialized , use onAudioDecoderInitialized and/or onVideoDecoderInitialized instead.
      • onDecoderInputFormatChanged , use onAudioInputFormatChanged and/or onVideoInputFormatChanged instead.
      • onDecoderDisabled , use onAudioDisabled and/or onVideoDisabled instead.
    • Remove the deprecated Player.Listener.onSeekProcessed and AnalyticsListener.onSeekProcessed , use onPositionDiscontinuity with DISCONTINUITY_REASON_SEEK instead.
    • Remove ExoPlayer.setHandleWakeLock(boolean) , use setWakeMode(int) instead.
    • Remove deprecated DefaultLoadControl.Builder.createDefaultLoadControl() , use build() instead.
    • Remove deprecated MediaItem.PlaybackProperties , use MediaItem.LocalConfiguration instead. Deprecated field MediaItem.playbackProperties is now of type MediaItem.LocalConfiguration .

Version 1.1.0-rc01

জুন 21, 2023

Use the 1.1.0 stable version .

Version 1.1.0-beta01

7 জুন, 2023

Use the 1.1.0 stable version .

Version 1.1.0-alpha01

10 মে, 2023

Use the 1.1.0 stable version .

সংস্করণ 1.0.0

সংস্করণ 1.0.2

18 মে, 2023

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

This release corresponds to the ExoPlayer 2.18.7 release .

This release contains the following changes since the 1.0.1 release :

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

সংস্করণ 1.0.1

18 এপ্রিল, 2023

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

This release corresponds to the ExoPlayer 2.18.6 release .

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

সংস্করণ 1.0.0

22 মার্চ, 2023

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

This release corresponds to the ExoPlayer 2.18.5 release .

There are no changes since 1.0.0-rc02.

Version 1.0.0-rc02

2 মার্চ, 2023

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

This release corresponds to the ExoPlayer 2.18.4 release .

  • মূল গ্রন্থাগার:
    • 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 )।
  • অধিবেশন:
    • Fix a bug where notification play/pause button doesn't update with player state ( #192 ).
  • আইএমএ এক্সটেনশন:
    • একটি বাগ ঠিক করুন যা কোনো বিজ্ঞাপন ছাড়াই DAI স্ট্রিমগুলিকে শুরু হতে বাধা দেয় কারণ প্রথমটি (এবং শুধুমাত্র বিজ্ঞাপন ছাড়াই) LOADED ইভেন্টটি পাওয়া যায়নি৷

Version 1.0.0-rc01

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

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

This release corresponds to the ExoPlayer 2.18.3 release .

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

Version 1.0.0-beta03

নভেম্বর 22, 2022

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

This release corresponds to the ExoPlayer 2.18.2 release .

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

Version 1.0.0-beta02

জুলাই 21, 2022

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

This release corresponds to the ExoPlayer 2.18.1 release .

  • মূল গ্রন্থাগার:
    • নিশ্চিত করুন যে 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() সমর্থন করুন।

Version 1.0.0-beta01

16 জুন, 2022

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

This corresponds to the ExoPlayer 2.18.0 release .

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

Version 1.0.0-alpha03

14 মার্চ, 2022

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

This corresponds to the ExoPlayer 2.17.1 release .

  • অডিও:
    • Fix error checking audio capabilities for Dolby Atmos (E-AC3-JOC) in HLS.
  • নিষ্কাশনকারী:
    • FMP4: Fix issue where emsg sample metadata could be output in the wrong order for streams containing both v0 and v1 emsg atoms ( #9996 ).
  • পাঠ্য:
    • Fix the interaction of SingleSampleMediaSource.Factory.setTrackId and MediaItem.SubtitleConfiguration.Builder.setId to prioritise the SubtitleConfiguration field and fall back to the Factory value if it's not set ( #10016 ).
  • Ad playback:
    • Fix audio underruns between ad periods in live HLS SSAI streams.

Version 1.0.0-alpha02

2 মার্চ, 2022

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

This corresponds to the ExoPlayer 2.17.0 release .

  • Core Library:
    • Add protected method DefaultRenderersFactory.getCodecAdapterFactory() so that subclasses of DefaultRenderersFactory that override buildVideoRenderers() or buildAudioRenderers() can access the codec adapter factory and pass it to MediaCodecRenderer instances they create.
    • Propagate ICY header fields name and genre to MediaMetadata.station and MediaMetadata.genre respectively so that they reach the app via Player.Listener.onMediaMetadataChanged() ( #9677 ).
    • Remove null keys from DefaultHttpDataSource#getResponseHeaders .
    • Sleep and retry when creating a MediaCodec instance fails. This works around an issue that occurs on some devices when switching a surface from a secure codec to another codec ( #8696 ).
    • Add MediaCodecAdapter.getMetrics() to allow users obtain metrics data from MediaCodec . ( #9766 ).
    • Fix Maven dependency resolution ( #8353 ).
    • Disable automatic speed adjustment for live streams that neither have low-latency features nor a user request setting the speed ( #9329 ).
    • Rename DecoderCounters#inputBufferCount to queuedInputBufferCount .
    • Make SimpleExoPlayer.renderers private. Renderers can be accessed via ExoPlayer.getRenderer .
    • Updated some AnalyticsListener.EventFlags constant values to match values in Player.EventFlags .
    • Split AnalyticsCollector into an interface and default implementation to allow it to be stripped by R8 if an app doesn't need it.
  • ট্র্যাক নির্বাচন:
    • Support preferred video role flags in track selection ( #9402 ).
    • Update video track selection logic to take preferred MIME types and role flags into account when selecting multiple video tracks for adaptation ( #9519 ).
    • Update video and audio track selection logic to only choose formats for adaptive selections that have the same level of decoder and hardware support ( #9565 ).
    • Update video track selection logic to prefer more efficient codecs if multiple codecs are supported by primary, hardware-accelerated decoders ( #4835 ).
    • Prefer audio content preferences (for example, the "default" audio track or a track matching the system locale language) over technical track selection constraints (for example, preferred MIME type, or maximum channel count).
    • Fix track selection issue where overriding one track group did not disable other track groups of the same type ( #9675 ).
    • Fix track selection issue where a mixture of non-empty and empty track overrides is not applied correctly ( #9649 ).
    • Prohibit duplicate TrackGroup s in a TrackGroupArray . TrackGroup s can always be made distinguishable by setting an id in the TrackGroup constructor. This fixes a crash when resuming playback after backgrounding the app with an active track override ( #9718 ).
    • Amend logic in AdaptiveTrackSelection to allow a quality increase under sufficient network bandwidth even if playback is very close to the live edge ( #9784 ).
  • ভিডিও:
    • Fix decoder fallback logic for Dolby Vision to use a compatible H264/H265 decoder if needed.
  • অডিও:
    • Fix decoder fallback logic for Dolby Atmos (E-AC3-JOC) to use a compatible E-AC3 decoder if needed.
    • Change AudioCapabilities APIs to require passing explicitly AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES instead of null .
    • Allow customization of the AudioTrack buffer size calculation by injecting an AudioTrackBufferSizeProvider to DefaultAudioSink . ( #8891 ).
    • Retry AudioTrack creation if the requested buffer size was > 1MB. ( #9712 ).
  • নিষ্কাশনকারী:
    • WAV: Add support for RF64 streams ( #9543 ).
    • Fix incorrect parsing of H.265 SPS NAL units ( #9719 ).
    • Parse Vorbis Comments (including METADATA_BLOCK_PICTURE ) in Ogg Opus and Ogg Vorbis files.
  • পাঠ্য:
    • Add a MediaItem.SubtitleConfiguration.id field which is propagated to the Format.id field of the subtitle track created from the configuration ( #9673 ).
    • Add basic support for WebVTT subtitles in Matroska containers ( #9886 ).
    • Prevent Cea708Decoder from reading more than the declared size of a service block.
  • DRM:
    • Remove playbackLooper from DrmSessionManager.(pre)acquireSession . When a DrmSessionManager is used by an app in a custom MediaSource , the playbackLooper needs to be passed to DrmSessionManager.setPlayer instead.
  • বিজ্ঞাপন প্লেব্যাক / IMA:
    • Add support for IMA Dynamic Ad Insertion (DAI) ( #8213 ).
    • Add a method to AdPlaybackState to allow resetting an ad group so that it can be played again ( #9615 ).
    • Enforce playback speed of 1.0 during ad playback ( #9018 ).
    • Fix issue where an ad group that failed to load caused an immediate playback reset ( #9929 ).
  • UI:
    • Fix the color of the numbers in StyledPlayerView rewind and fastforward buttons when using certain themes ( #9765 ).
    • Correctly translate playback speed strings ( #9811 ).
  • ড্যাশ:
    • Add parsed essential and supplemental properties to the Representation ( #9579 ).
    • Support the forced-subtitle track role ( #9727 ).
    • Stop interpreting the main track role as C.SELECTION_FLAG_DEFAULT .
    • Fix base URL exclusion logic for manifests that do not declare the DVB namespace ( #9856 ).
    • Support relative MPD.Location URLs ( #9939 ).
  • HLS:
    • Correctly populate Format.label for audio only HLS streams ( #9608 ).
    • Use chunkless preparation by default to improve start up time. If your renditions contain muxed closed-caption tracks that are not declared in the master playlist, you should add them to the master playlist to be available for playback, or turn off chunkless preparation with HlsMediaSource.Factory.setAllowChunklessPreparation(false) .
    • Support key-frame accurate seeking in HLS ( #2882 ).
  • RTSP:
    • Provide a client API to override the SocketFactory used for any server connection ( #9606 ).
    • Prefer DIGEST authentication method over BASIC if both are present ( #9800 ).
    • Handle when RTSP track timing is not available ( #9775 ).
    • Ignore invalid RTP-Info header values ( #9619 ).
  • ট্রান্সফরমার:
    • Increase required min API version to 21.
    • TransformationException is now used to describe errors that occur during a transformation.
    • Add TransformationRequest for specifying the transformation options.
    • Allow multiple listeners to be registered.
    • Fix Transformer being stuck when the codec output is partially read.
    • Fix potential NPE in Transformer.getProgress when releasing the muxer throws.
    • Add a demo app for applying transformations.
  • MediaSession extension:
    • By default, MediaSessionConnector now clears the playlist on stop. Apps that want the playlist to be retained can call setClearMediaItemsOnStop(false) on the connector.
  • কাস্ট এক্সটেনশন:
    • Fix bug that prevented CastPlayer from calling onIsPlayingChanged correctly ( #9792 ).
    • Support audio metadata including artwork with DefaultMediaItemConverter ( #9663 ).
  • FFmpeg এক্সটেনশন:
    • Make build_ffmpeg.sh depend on LLVM's bin utils instead of GNU's ( #9933 ).
  • Android 12 compatibility:
    • Upgrade the Cast extension to depend on com.google.android.gms:play-services-cast-framework:20.1.0 . Earlier versions of play-services-cast-framework are not compatible with apps targeting Android 12, and will crash with an IllegalArgumentException when creating PendingIntent s ( #9528 ).
  • অপ্রচলিত চিহ্নগুলি সরান:
    • Remove Player.EventListener . Use Player.Listener instead.
    • Remove MediaSourceFactory#setDrmSessionManager , MediaSourceFactory#setDrmHttpDataSourceFactory , and MediaSourceFactory#setDrmUserAgent . Use MediaSourceFactory#setDrmSessionManagerProvider instead.
    • Remove MediaSourceFactory#setStreamKeys . Use MediaItem.Builder#setStreamKeys instead.
    • Remove MediaSourceFactory#createMediaSource(Uri) . Use MediaSourceFactory#createMediaSource(MediaItem) instead.
    • Remove setTag from DashMediaSource , HlsMediaSource and SsMediaSource . Use MediaItem.Builder#setTag instead.
    • Remove DashMediaSource#setLivePresentationDelayMs(long, boolean) . Use MediaItem.Builder#setLiveConfiguration and MediaItem.LiveConfiguration.Builder#setTargetOffsetMs to override the manifest, or DashMediaSource#setFallbackTargetLiveOffsetMs to provide a fallback value.
    • Remove (Simple)ExoPlayer.setThrowsWhenUsingWrongThread . Opting out of the thread enforcement is no longer possible.
    • Remove ActionFile and ActionFileUpgradeUtil . Use ExoPlayer 2.16.1 or before to use ActionFileUpgradeUtil to merge legacy action files into DefaultDownloadIndex .
    • Remove ProgressiveMediaSource#setExtractorsFactory . Use ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory) constructor instead.
    • Remove ProgressiveMediaSource.Factory#setTag and, and ProgressiveMediaSource.Factory#setCustomCacheKey . Use MediaItem.Builder#setTag and MediaItem.Builder#setCustomCacheKey instead.
    • Remove DefaultRenderersFactory(Context, @ExtensionRendererMode int) and DefaultRenderersFactory(Context, @ExtensionRendererMode int, long) constructors. Use the DefaultRenderersFactory(Context) constructor, DefaultRenderersFactory#setExtensionRendererMode , and DefaultRenderersFactory#setAllowedVideoJoiningTimeMs instead.
    • Remove all public CronetDataSource constructors. Use CronetDataSource.Factory instead.
  • Change the following IntDefs to @Target(TYPE_USE) only. This may break the compilation of usages in Kotlin, which can be fixed by moving the annotation to annotate the type ( Int ).
    • @AacAudioObjectType
    • @Ac3Util.SyncFrameInfo.StreamType
    • @AdLoadException.Type
    • @AdtsExtractor.Flags
    • @AmrExtractor.Flags
    • @AspectRatioFrameLayout.ResizeMode
    • @AudioFocusManager.PlayerCommand
    • @AudioSink.SinkFormatSupport
    • @BinarySearchSeeker.TimestampSearchResult.Type
    • @BufferReplacementMode
    • @C.BufferFlags
    • @C.ColorRange
    • @C.ColorSpace
    • @C.ColorTransfer
    • @C.CryptoMode
    • @C.Encoding
    • @C.PcmEncoding
    • @C.Projection
    • @C.SelectionReason
    • @C.StereoMode
    • @C.VideoOutputMode
    • @CacheDataSource.Flags
    • @CaptionStyleCompat.EdgeType
    • @DataSpec.Flags
    • @DataSpec.HttpMethods
    • @DecoderDiscardReasons
    • @DecoderReuseResult
    • @DefaultAudioSink.OutputMode
    • @DefaultDrmSessionManager.Mode
    • @DefaultTrackSelector.SelectionEligibility
    • @DefaultTsPayloadReaderFactory.Flags
    • @EGLSurfaceTexture.SecureMode
    • @EbmlProcessor.ElementType
    • @ExoMediaDrm.KeyRequest.RequestType
    • @ExtensionRendererMode
    • @Extractor.ReadResult
    • @FileTypes.Type
    • @FlacExtractor.Flags (in com.google.android.exoplayer2.ext.flac package)
    • @FlacExtractor.Flags (in com.google.android.exoplayer2.extractor.flac package)
    • @FragmentedMp4Extractor.Flags
    • @HlsMediaPlaylist.PlaylistType
    • @HttpDataSourceException.Type
    • @IllegalClippingException.Reason
    • @IllegalMergeException.Reason
    • @LoadErrorHandlingPolicy.FallbackType
    • @MatroskaExtractor.Flags
    • @Mp3Extractor.Flags
    • @Mp4Extractor.Flags
    • @NotificationUtil.Importance
    • @PlaybackException.FieldNumber
    • @PlayerNotificationManager.Priority
    • @PlayerNotificationManager.Visibility
    • @PlayerView.ShowBuffering
    • @Renderer.State
    • @RendererCapabilities.AdaptiveSupport
    • @RendererCapabilities.Capabilities
    • @RendererCapabilities.DecoderSupport
    • @RendererCapabilities.FormatSupport
    • @RendererCapabilities.HardwareAccelerationSupport
    • @RendererCapabilities.TunnelingSupport
    • @SampleStream.ReadDataResult
    • @SampleStream.ReadFlags
    • @StyledPlayerView.ShowBuffering
    • @SubtitleView.ViewType
    • @TextAnnotation.Position
    • @TextEmphasisSpan.MarkFill
    • @TextEmphasisSpan.MarkShape
    • @Track.Transformation
    • @TrackOutput.SampleDataPart
    • @Transformer.ProgressState
    • @TsExtractor.Mode
    • @TsPayloadReader.Flags
    • @WebvttCssStyle.FontSizeUnit

Version 1.0.0-alpha01

27 অক্টোবর, 2021

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

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

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

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

For more information, see the Media3 GitHub project .

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