Media3

Thư viện hỗ trợ cho các trường hợp sử dụng nội dung đa phương tiện.
Bản cập nhật mới nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 14 tháng 3 năm 2022 - - - 1.0.0-alpha03

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Media3, bạn phải thêm kho lưu trữ Google Maven vào dự án. Hãy đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm phần phụ thuộc cho cấu phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun:

Groovy

dependencies {
    val media3_version = "1.0.0-alpha03"

    // 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 RTSP playback support with ExoPlayer
    implementation "androidx.media3:media3-exoplayer-rtsp:$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"

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

Kotlin

dependencies {
    val media3_version = "1.0.0-alpha03"

    // 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 RTSP playback support with ExoPlayer
    implementation("androidx.media3:media3-exoplayer-rtsp:$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")

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

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Phản hồi của bạn giúp cải thiện Jetpack. Bạn có thể sử dụng trình theo dõi vấn đề Media3 để tìm câu trả lời cho các thắc mắc, lỗi đã biết cũng như yêu cầu tính năng, đồng thời để báo cáo lỗi mới.

Phiên bản 1.0.0

Phiên bản 1.0.0-alpha03

Ngày 14 tháng 3 năm 2022

Phát hành androidx.media3:media3-*:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Phiên bản này tương ứng với phiên bản ExoPlayer 2.17.1.

  • Âm thanh:
    • Khắc phục lỗi kiểm tra chất lượng âm thanh của Dolby Atmos (E-AC3-JOC) trong HLS.
  • Công cụ trích xuất:
    • FMP4: Khắc phục vấn đề trong đó siêu dữ liệu mẫu emsg có thể được xuất theo thứ tự không chính xác đối với các luồng chứa cả nguyên tử emsg v0 và v1 (#9996).
  • Văn bản:
    • Sửa lỗi tương tác của SingleSampleMediaSource.Factory.setTrackIdMediaItem.SubtitleConfiguration.Builder.setId để ưu tiên trường SubtitleConfiguration và quay lại giá trị Factory nếu trường này không được cài đặt (#10016).
  • Phát quảng cáo:
    • Khắc phục sự cố âm thanh chạy ngầm giữa các khoảng thời gian quảng cáo trong luồng SSAI trực tiếp.

Phiên bản 1.0.0-alpha02

Ngày 2 tháng 3 năm 2022

Phát hành androidx.media3:media3-*:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Phiên bản này tương ứng với phiên bản ExoPlayer 2.17.0.

  • Thư viện Core:
    • Thêm phương thức được bảo vệ DefaultRenderersFactory.getCodecAdapterFactory() để các lớp con của DefaultRenderersFactory ghi đè buildVideoRenderers() hoặc buildAudioRenderers() có thể truy cập vào nhà máy trình chuyển đổi mã hoá/giải mã (codec adapter factory) rồi truyền vào các thực thể MediaCodecRenderer được tạo.
    • Lần lượt phát hành các trường tiêu đề ICY name, genre cho MediaMetadata.stationMediaMetadata.genre để truy cập vào ứng dụng qua Player.Listener.onMediaMetadataChanged() (#9677).
    • Xoá các khoá rỗng khỏi DefaultHttpDataSource#getResponseHeaders.
    • Ngủ rồi thử lại khi không tạo được phiên bản MediaCodec. Cách này hoạt động đối với lỗi xảy ra trên một số thiết bị khi chuyển đổi nền tảng từ một bộ mã hoá và giải mã bảo mật sang một bộ mã hoá và giải mã khác (#8696).
    • Thêm MediaCodecAdapter.getMetrics() để cho phép người dùng lấy dữ liệu về chỉ số qua MediaCodec. (#9766).
    • Khắc phục độ phân giải phần phụ thuộc Maven (#8353).
    • Tắt tính năng tự động điều chỉnh tốc độ đối với lượt phát trực tiếp không có tính năng độ trễ thấp hay yêu cầu người dùng đặt tốc độ (#9329).
    • Đổi tên DecoderCounters#inputBufferCount thành queuedInputBufferCount.
    • Đặt SimpleExoPlayer.renderers ở chế độ riêng tư. Bạn có thể truy cập trình kết xuất thông qua ExoPlayer.getRenderer.
    • Cập nhật một số giá trị AnalyticsListener.EventFlags không đổi để khớp với các giá trị trong Player.EventFlags.
    • Phân tách AnalyticsCollector thành một giao diện và phương thức triển khai mặc định để cho phép R8 loại bỏ nếu ứng dụng không cần.
  • Chọn bản nội dung:
    • Hỗ trợ gắn cờ vai trò video ưu tiên trong việc lựa chọn nội dung đa phương tiện (#9402).
    • Cập nhật logic lựa chọn nội dung video để cân nhắc các loại MIME và cờ vai trò ưu tiên khi chọn nhiều video để điều chỉnh cho phù hợp (#9519).
    • Cập nhật logic lựa chọn bản video và âm thanh để chỉ chọn những định dạng cho các lựa chọn thích ứng có cùng bộ giải mã và hỗ trợ phần cứng (#9565).
    • Cập nhật logic lựa chọn nội dung video để ưu tiên các bộ mã hoá và giải mã hiệu quả hơn nếu nhiều bộ mã hoá và giải mã được bộ giải mã chính, tăng tốc nhờ phần cứng hỗ trợ (#4835).
    • Ưu tiên các tuỳ chọn nội dung âm thanh (ví dụ: bản âm thanh "mặc định" hoặc một nội dung đa phương tiện khớp với ngôn ngữ bản địa của hệ thống) thay vì giới hạn lựa chọn nội dung đa phương tiện kỹ thuật (ví dụ: loại MIME ưu tiên hoặc số lượng kênh tối đa).
    • Khắc phục lỗi chọn nội dung đa phương tiện mà việc ghi đè một nhóm bản nội dung không tắt các nhóm bản nội dung khác cùng loại (#9675).
    • Khắc phục lỗi chọn nội dung đa phương tiện mà việc kết hợp ghi đè nội dung rỗng và không rỗng được áp dụng không đúng cách (#9649).
    • Cấm sao chép TrackGroup trong TrackGroupArray. Luôn có thể phân biệt TrackGroup bằng cách đặt một id trong hàm khởi tạo TrackGroup. Việc này giúp khắc phục sự cố ngừng hoạt động khi tiếp tục phát sau khi chạy ngầm ứng dụng với cơ chế ghi đè bản nội dung đang được phát (#9718).
    • Sửa đổi logic trong AdaptiveTrackSelection để cho phép tăng chất lượng trong khi không đủ băng thông mạng ngay cả khi quá trình phát đã rất gần thời điểm phát trực tiếp (live edge) (#9784).
  • Video:
    • Sửa logic bộ giải mã dự phòng cho Dolby Vision để sử dụng bộ giải mã H264/H265 tương thích nếu cần.
  • Âm thanh:
    • Sửa logic bộ giải mã dự phòng cho Dolby Atmos (E-AC3-JOC) để sử dụng bộ giải mã E-AC3 tương thích nếu cần.
    • Thay đổi các API AudioCapabilities để yêu cầu truyền AudioCapabilities.DEFAULT_AUDIO_CAPABILITIES thay vì null.
    • Cho phép tùy chỉnh cách tính kích thước bộ nhớ đệm AudioTrack bằng cách chèn AudioTrackBufferSizeProvider vào DefaultAudioSink. (#8891).
    • Thử tạo lại AudioTrack nếu dung lượng bộ nhớ đệm được yêu cầu lớn hơn 1 MB. (#9712).
  • Công cụ trích xuất:
    • WAV: Thêm tùy chọn hỗ trợ khi phát định dạng tệp RF64 (#9543).
    • Khắc phục vấn đề phân tích cú pháp không chính xác đối với các đơn vị H.265 SPS NAL (#9719).
    • Phân tích cú pháp bình luận Vorbis (bao gồm cả METADATA_BLOCK_PICTURE) trong các tệp Ogg Opus và Ogg Vorbis.
  • Văn bản:
    • Thêm trường MediaItem.SubtitleConfiguration.id mà được truyền vào trường Format.id của bản phụ đề được tạo từ cấu hình (#9673).
    • Thêm tùy chọn hỗ trợ cơ bản cho phụ đề WebVTT trong vùng chứa Matroska (#9886).
    • Ngăn Cea708Decoder đọc nhiều hơn kích thước đã khai báo của một khối dịch vụ.
  • DRM (Quản lý bản quyền nội dung số):
    • Xóa playbackLooper khỏi DrmSessionManager.(pre)acquireSession. Khi một ứng dụng sử dụng DrmSessionManager trong một MediaSource tuỳ chỉnh, playbackLooper cần được truyền vào DrmSessionManager.setPlayer.
  • Phát quảng cáo / IMA:
    • Thêm tùy chọn hỗ trợ cho Chèn quảng cáo động IMA (DAI) (#8213).
    • Thêm phương thức vào AdPlaybackState, cho phép đặt lại nhóm quảng cáo để có thể phát lại (#9615).
    • Áp dụng tốc độ phát 1,0 trong khi phát quảng cáo (#9018).
    • Khắc phục lỗi một nhóm quảng cáo không tải được dẫn đến việc phát lại ngay lập tức (#9929).
  • Giao diện người dùng:
    • Chỉnh sửa màu của các số trongStyledPlayerView cho nút tua lại và tua nhanh khi sử dụng một số giao diện nhất định (#9765).
    • Dịch đúng các chuỗi tốc độ phát (#9811).
  • DASH (Truyền phát thích ứng động qua HTTP):
    • Thêm các thuộc tính thiết yếu và bổ sung được phân tích cú pháp vào Representation (#9579).
    • Hỗ trợ vai trò theo dõi forced-subtitle (#9727).
    • Ngừng diễn giải vai trò theo dõi của mainC.SELECTION_FLAG_DEFAULT.
    • Chỉnh sửa logic loại trừ URL cơ sở cho các tệp kê khai không khai báo vùng chứa tên DVB (#9856).
    • Hỗ trợ các URL MPD.Location tương đối (#9939).
  • HLS (Phát trực tuyến dựa trên HTTP):
    • Tự động điền chính xác Format.label khi chỉ phát âm thanh dựa trên giao thức HLS (#9608).
    • Mặc định sử dụng thông tin đa biến trong danh sách phát cho việc phát nội dung đa phương tiện (chunkless preparation) để cải thiện thời gian khởi động. Nếu việc truyền và nhận dữ liệu có chứa các bản phụ của nhiều nội dung đa phương tiện mà không được khai báo trong danh sách phát chính, thì thêm các nội dung đa phương tiện đó vào danh sách phát chính để có thể phát lại hoặc tắt thực hiện thao tác chunkless preparation bằng HlsMediaSource.Factory.setAllowChunklessPreparation(false).
    • Hỗ trợ tua tới chính xác khung hình chính trong HLS (#2882).
  • RTSP (Giao thức truyền tin thời gian thực):
    • Cung cấp một API máy khách để ghi đè SocketFactory dùng cho mọi kết nối máy chủ (#9606).
    • Ưu tiên phương thức xác thực DIGEST hơn BASIC nếu có cả hai (#9800).
    • Xử lý khi không có thời gian của nội dung đa phương tiện phát qua giao thức RTSP (#9775).
    • Bỏ qua các giá trị tiêu đề RTP-Info không hợp lệ (#9619).
  • Bộ chuyển đổi:
    • Tăng phiên bản API tối thiểu bắt buộc lên 21.
    • TransformationException hiện được dùng để mô tả lỗi xảy ra trong quá trình chuyển đổi.
    • Thêm TransformationRequest để chỉ định các tùy chọn chuyển đổi.
    • Cho phép đăng ký nhiều trình nghe (event listener).
    • Sửa lỗi Bộ chuyển đổi bị kẹt khi đọc một phần đầu ra bộ mã hoá và giải mã.
    • Sửa lỗi NPE tiềm ẩn trong Transformer.getProgress khi phát hành các khai báo ngoại lệ cho chương trình kết hợp nội dung đa phương tiện.
    • Thêm ứng dụng minh hoạ áp dụng chuyển đổi.
  • Phần mở rộng MediaSession:
    • Theo mặc định, MediaSessionConnector hiện sẽ xoá danh sách phát đã dừng. Các ứng dụng muốn giữ lại danh sách phát có thể gọi setClearMediaItemsOnStop(false) trên trình kết nối.
  • Tiện ích truyền (cast):
    • Khắc phục lỗi ngăn CastPlayer gọi đúng onIsPlayingChanged (#9792).
    • Hỗ trợ siêu dữ liệu âm thanh bao gồm hình minh hoạ với DefaultMediaItemConverter (#9663).
  • Tiện ích FFmpeg:
    • Cho build_ffmpeg.sh phụ thuộc vào tập công cụ quản lý tệp nhị phân LLVM thay vì GNU (#9933).
  • Khả năng tương thích với Android 12:
    • Nâng cấp tiện ích Truyền để phụ thuộc vào com.google.android.gms:play-services-cast-framework:20.1.0. Các phiên bản trước đó của play-services-cast-framework không tương thích với các ứng dụng dành cho Android 12 và sẽ gặp sự cố với IllegalArgumentException khi tạo PendingIntent (#9528).
  • Xoá các biểu tượng không dùng nữa:
    • Xoá Player.EventLister. Sử dụng Player.Listener.
    • Xoá MediaSourceFactory#setDrmSessionManager, MediaSourceFactory#setDrmHttpDataSourceFactoryMediaSourceFactory#setDrmUserAgent. Sử dụng MediaSourceFactory#setDrmSessionManagerProvider.
    • Xoá MediaSourceFactory#setStreamKeys. Sử dụng MediaItem.Builder#setStreamKeys.
    • Xoá MediaSourceFactory#createMediaSource(Uri). Sử dụng MediaSourceFactory#createMediaSource(MediaItem).
    • Xóa setTag khỏi DashMediaSource, HlsMediaSourceSsMediaSource. Sử dụng MediaItem.Builder#setTag.
    • Xoá DashMediaSource#setLivePresentationDelayMs(long, boolean). Sử dụng MediaItem.Builder#setLiveConfigurationMediaItem.LiveConfiguration.Builder#setTargetOffsetMs để ghi đè tệp kê khai hoặc DashMediaSource#setFallbackTargetLiveOffsetMs để cung cấp giá trị dự phòng.
    • Xoá (Simple)ExoPlayer.setThrowsWhenUsingWrongThread. Bắt buộc phải thực thi luồng này.
    • Xóa ActionFileActionFileUpgradeUtil. Dùng ExoPlayer 2.16.1 hoặc các phiên bản trước đó để sử dụng ActionFileUpgradeUtil nhằm hợp nhất các tệp thao tác cũ vào DefaultDownloadIndex.
    • Xoá ProgressiveMediaSource#setExtractorsFactory. Sử dụng hàm constructor ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory).
    • Xóa ProgressiveMediaSource.Factory#setTagProgressiveMediaSource.Factory#setCustomCacheKey. Sử dụng MediaItem.Builder#setTagMediaItem.Builder#setCustomCacheKey.
    • Xoá các hàm constructor DefaultRenderersFactory(Context, @ExtensionRendererMode int)DefaultRenderersFactory(Context, @ExtensionRendererMode int, long). Sử dụng hàm constructor DefaultRenderersFactory(Context), DefaultRenderersFactory#setExtensionRendererModeDefaultRenderersFactory#setAllowedVideoJoiningTimeMs.
    • Xóa tất cả hàm constructor CronetDataSource công khai. Sử dụng CronetDataSource.Factory.
  • Chỉ thay đổi IntDefs sau thành @Target(TYPE_USE). Thay đổi này có thể phá vỡ việc biên dịch sử dụng trong Kotlin. Lỗi này có thể khắc phục bằng cách di chuyển phần chú giải để chú thích loạiInt ).
    • @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 (trong gói com.google.android.exoplayer2.ext.flac )
    • @FlacExtractor.Flags (trong gói com.google.android.exoplayer2.extractor.flac)
    • @FragmentedMp4Extractor.Flags
    • @HlsMediaPlaylist.PlaylistType
    • @HttpDataSourceException.Type
    • @IllegalClippingException.Reason
    • @IllegalMergeException.Reason
    • @LoadErrorHandlingPolicy.FallbackType
    • @MatroskaExtractor.Flags
    • @Mp3Extractor.Flags
    • @Mp4Extractor.Flags
    • @NotificationUtil.Importance
    • @PlaybackException.FieldNumber
    • @PlayerNotificationManager.Priority
    • @PlayerNotificationManager.Visibility
    • @PlayerView.ShowBuffering
    • @Renderer.State
    • @RendererCapabilities.AdaptiveSupport
    • @RendererCapabilities.Capabilities
    • @RendererCapabilities.DecoderSupport
    • @RendererCapabilities.FormatSupport
    • @RendererCapabilities.HardwareAccelerationSupport
    • @RendererCapabilities.TunnelingSupport
    • @SampleStream.ReadDataResult
    • @SampleStream.ReadFlags
    • @StyledPlayerView.ShowBuffering
    • @SubtitleView.ViewType
    • @TextAnnotation.Position
    • @TextEmphasisSpan.MarkFill
    • @TextEmphasisSpan.MarkShape
    • @Track.Transformation
    • @TrackOutput.SampleDataPart
    • @Transformer.ProgressState
    • @TsExtractor.Mode
    • @TsPayloadReader.Flags
    • @WebvttCssStyle.FontSizeUnit

Phiên bản 1.0.0-alpha01

Ngày 27 tháng Mười, 2021

androidx.media3:media3-*:1.0.0-alpha01 đã phát hành. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

Media3 là nơi lưu trữ mới các thư viện hỗ trợ nội dung đa phương tiện, bao gồm ExoPlayer. Phiên bản alpha đầu tiên bao gồm những phương thức triển khai sớm và đầy đủ chức năng của các thư viện để triển khai các trường hợp sử dụng nội dung đa phương tiện, bao gồm:

  • ExoPlayer là trình phát nội dung đa phương tiện cấp ứng dụng dành cho Android, có thể dễ dàng tùy chỉnh và mở rộng.
  • Chức năng tương tác trình phát nội dung đa phương tiện (media session) để hiển thị và kiểm soát phát lại. Mô-đun mới của chức năng này sử dụng giao diện Player giống như ExoPlayer.
  • Các thành phần giao diện người dùng để xây dựng giao diện người dùng phát lại nội dung đa phương tiện.
  • Các mô-đun gói chức năng trong các thư viện khác để sử dụng với ExoPlayer, ví dụ: chèn quảng cáo thông qua SDK IMA.

Để biết thêm thông tin, hãy xem dự án GitHub Media3.

Trước đây, ExoPlayer đã được lưu trữ trong một dự án GitHub ExoPlayer riêng biệt. Trong Media3, tên gói là androidx.media3.exoplayer. Chúng tôi dự định tiếp tục duy trì và phát hành dự án GitHub ExoPlayer trong một thời gian để các ứng dụng có thời gian chuyển sang Media3. Media3 có các lựa chọn thay thế cho tất cả các mô-đun ExoPlayer, ngoại trừ các tiện ích media2 và mediasession cũ. Các tiện ích này được thay thế bằng mô-đun media3-session mới. Điều này giúp tích hợp trực tiếp giữa trình phát và các media session mà không cần phải sử dụng lớp chuyển đổi/trình kết nối.