Media3
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 16 tháng 2 năm 2023 | - | 1.0.0-rc01 | - | - |
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. Đọc nội dung Kho lưu trữ Maven của Googleđể biết thêm thông tin.
Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle
cho ứng dụng hoặc mô-đun của mình:
Groovy
dependencies { def media3_version = "1.0.0" // For media playback using ExoPlayer implementation "androidx.media3:media3-exoplayer:$media3_version" // For DASH playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-dash:$media3_version" // For HLS playback support with ExoPlayer implementation "androidx.media3:media3-exoplayer-hls:$media3_version" // For 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" // 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-rc01
Ngày 16 tháng 2 năm 2023
Phát hành androidx.media3:media3-*:1.0.0-rc01
.
Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.
Bản phát hành này tương ứng với phiên bản ExoPlayer 2.18.3.
- Thư viện Core:
- Chỉnh sửa logic sắp xếp bộ giải mã của trình kết xuất để duy trì các lựa chọn ưu tiên của
MediaCodecSelector
, ngay cả khi bộ giải mã báo cáo có thể không phát được nội dung nghe nhìn một cách hiệu quả. Ví dụ: với bộ chọn mặc định, bộ giải mã phần cứng chỉ hỗ trợ chức năng sẽ được ưu tiên hơn bộ giải mã phần mềm hỗ trợ đầy đủ định dạng (#10604). - Thêm
ExoPlayer.Builder.setPlaybackLooper
để đặt một luồng phát lại có sẵn cho một thực thể ExoPlayer mới. - Cho phép xoá các trình trợ giúp trình quản lý tải xuống (#10776).
- Thêm tham số vào
BasePlayer.seekTo
để cũng cho biết lệnh được dùng để tìm kiếm. - Sử dụng giao diện khi tải các đối tượng có thể vẽ trên API 21 trở lên (#220).
- Thêm
ConcatenatingMediaSource2
để cho phép kết hợp nhiều mục nội dung nghe nhìn vào một cửa sổ (#247).
- Chỉnh sửa logic sắp xếp bộ giải mã của trình kết xuất để duy trì các lựa chọn ưu tiên của
- Công cụ trích xuất:
- Gửi
ParserException
thay vìNullPointerException
nếu bảng mẫu (stbl) thiếu phần mô tả mẫu bắt buộc (stsd) khi phân tích cú pháp các nguyên tử trak. - Bỏ qua chính xác các mẫu khi tìm kiếm trực tiếp ở khung đồng bộ hoá trong fMP4 (#10941).
- Gửi
- Âm thanh:
- Sử dụng tốc độ bit định dạng âm thanh nén để tính dung lượng bộ nhớ đệm tối thiểu cho
AudioTrack
trong các lượt phát trực tiếp (truyền qua).
- Sử dụng tốc độ bit định dạng âm thanh nén để tính dung lượng bộ nhớ đệm tối thiểu cho
- Văn bản:
- Sửa
TextRenderer
chuyển chỉ mục (âm) không hợp lệ đếnSubtitle.getEventTime
nếu tệp phụ đề không chứa chú thích. - SubRip: Thêm hỗ trợ cho các tệp UTF-16 nếu các tệp đó bắt đầu bằng dấu thứ tự byte.
- Sửa
- Siêu dữ liệu:
- Phân tích cú pháp nhiều giá trị được phân tách bằng giá trị rỗng trên các khung ID3, như được ID3 phiên bản 2.4 cho phép.
- Thêm
MediaMetadata.mediaType
để biểu thị loại nội dung hoặc loại thư mục được siêu dữ liệu mô tả. - Thêm
MediaMetadata.isBrowsable
để thay thế choMediaMetadata.folderType
. Loại thư mục sẽ không được dùng trong bản phát hành tiếp theo.
- DASH (Truyền phát thích ứng động qua HTTP):
- Thêm phân tích cú pháp đầy đủ cho các bộ điều chỉnh hình ảnh, bao gồm cả số lượng thẻ thông tin (#3752).
- Giao diện người dùng:
- Sửa
PlayerView.setControllerVisibilityListener(PlayerControlView.VisibilityListener)
không dùng nữa để đảm bảo các thay đổi về chế độ hiển thị được truyền đến trình nghe đã đăng ký (#229). - Sửa thứ tự của các nút điều khiển trình phát ở giữa trong
PlayerView
khi dùng bố cục từ phải sang trái (RTL) (#227).
- Sửa
- Phiên:
- Thêm
SimpleBasePlayer
trừu tượng để giúp triển khai giao diệnPlayer
cho các trình phát tuỳ chỉnh. - Thêm phương thức hỗ trợ để chuyển đổi mã phiên của nền tảng thành Media3
SessionToken
(#171). - Sử dụng
onMediaMetadataChanged
để kích hoạt bản cập nhật của phiên nội dung nghe nhìn trên nền tảng (#219). - Thêm phiên nội dung nghe nhìn làm đối số của
getMediaButtons()
trongDefaultMediaNotificationProvider
và sử dụng danh sách không thể thay đổi để đảm bảo rõ ràng (#216). - Thêm trình nghe gọi lại
onSetMediaItems
để cung cấp phương thức sửa đổi/đặt danh sáchMediaItem
, bắt đầu chỉ mục và vị trí theo phiên trước khi đặt vào Trình phát (#156). - Tránh dùng tính năng phát hiện thao tác nhấn đúp cho các sự kiện của nút nội dung nghe nhìn không phải Bluetooth (#233).
- Giúp
QueueTimeline
hoạt động mạnh mẽ hơn trong trường hợp trạng thái phiên cũ không rõ ràng (#241).
- Thêm
- Siêu dữ liệu:
- Phân tích cú pháp nhiều giá trị được phân tách bằng giá trị rỗng trên các khung ID3, như được ID3 phiên bản 2.4 cho phép.
- Thêm
MediaMetadata.mediaType
để biểu thị loại nội dung hoặc loại thư mục được siêu dữ liệu mô tả. - Thêm
MediaMetadata.isBrowsable
để thay thế choMediaMetadata.folderType
. Loại thư mục sẽ không được dùng trong bản phát hành tiếp theo.
- Tiện ích truyền:
- Chuyển phiên bản Cast SDK lên phiên bản 21.2.0.
- Tiện ích IMA:
- Xoá trình nghe của trình phát thuộc
ImaServerSideAdInsertionMediaSource
trên luồng ứng dụng để tránh các vấn đề về luồng. - Thêm một thuộc tính
focusSkipButtonWhenAvailable
vàoImaServerSideAdInsertionMediaSource.AdsLoader.Builder
để yêu cầu tập trung vào nút bỏ qua trên các thiết bị TV và đặt thuộc tính này là true theo mặc định. - Thêm một phương thức
focusSkipButton()
vàoImaServerSideAdInsertionMediaSource.AdsLoader
để yêu cầu tập trung vào nút bỏ qua theo lập trình. - Chuyển SDK IMA lên phiên bản 3.29.0.
- Xoá trình nghe của trình phát thuộc
- Ứng dụng minh hoạ:
- Yêu cầu quyền gửi thông báo cho thông báo tải xuống trong thời gian chạy (#10884).
Phiên bản 1.0.0-beta03
Ngày 22 tháng 11 năm 2022
Phát hành androidx.media3:media3-*:1.0.0-beta03
.
Phiên bản 1.0.0-beta03 bao gồm các thay đổi sau.
Bản phát hành này tương ứng với phiên bản ExoPlayer 2.18.2.
- Thư viện Core:
- Thêm
ExoPlayer.isTunnelingEnabled
để kiểm tra xem tính năng tạo đường hầm có đang bật cho các bản nhạc hiện được chọn hay không (#2518). - Thêm
WrappingMediaSource
để đơn giản hoá việc gói mộtMediaSource
duy nhất (#7279). - Loại bỏ vùng đệm phụ trước khi hành động phát bị treo do không đủ bộ nhớ.
- Đóng khối Tracing "doSomeWork" khi bật chế độ giảm tải.
- Dùng các lệnh tìm kiếm nhanh trong
PlaybackStatsListener
(#180) để khắc phục vấn đề khi theo dõi phiên. - Gửi lệnh gọi lại
onMediaItemTransition
bị thiếu khi gọiseekToNext
hoặcseekToPrevious
trong danh sách phát một mục duy nhất (#10667). - Thêm
Player.getSurfaceSize
trả về kích thước của nền tảng hiển thị video. - Sửa lỗi xoá trình nghe trong quá trình phát hành trình phát có thể gây ra
IllegalStateException
(#10758).
- Thêm
- Tạo:
- Thực thi
compileSdkVersion
tối thiểu để tránh lỗi biên dịch (#10684). - Tránh phát hành khối khi được đưa vào một bản dựng gradle khác.
- Thực thi
- Chọn bản nhạc:
- Ưu tiên các bản nhạc khác thay vì Dolby Vision nếu màn hình không hỗ trợ Dolby Vision. (#8944).
- Nội dung đã tải xuống:
- Video:
- Dùng thử bộ giải mã thay thế cho Dolby Vision nếu màn hình không hỗ trợ Dolby Vision. (#9794).
- Âm thanh:
- Dùng
SingleThreadExecutor
để phát hành thực thểAudioTrack
nhằm tránh lỗi OutOfMemory khi phát hành nhiều trình phát cùng một lúc (#10057). - Thêm
AudioOffloadListener.onExperimentalOffloadedPlayback
cho trạng thái giảm tải AudioTrack. (#134). - Đặt
AudioTrackBufferSizeProvider
làm giao diện công khai. - Thêm
ExoPlayer.setPreferredAudioDevice
để thiết lập thiết bị đầu ra âm thanh ưu tiên (#135). - Đổi tên
androidx.media3.exoplayer.audio.AudioProcessor
thànhandroidx.media3.common.audio.AudioProcessor
. - Liên kết âm thanh 8 kênh và 12 kênh với mặt nạ kênh 7.1 và 7.1.4 tương ứng trên mọi phiên bản Android (#10701).
- Dùng
- Siêu dữ liệu:
- Bạn hiện có thể định cấu hình
MetadataRenderer
để kết xuất siêu dữ liệu ngay khi có. Tạo một thực thể vớiMetadataRenderer(MetadataOutput, Looper, MetadataDecoderFactory, boolean)
để chỉ định xem trình kết xuất sẽ xuất siêu dữ liệu sớm hay đồng bộ với vị trí trình phát.
- Bạn hiện có thể định cấu hình
- DRM (Quản lý bản quyền nội dung số):
- Tìm cách sửa lỗi trong quá trình triển khai Android 13 ClearKey có trả về một URL giấy phép không trống nhưng không hợp lệ.
- Sửa lỗi
setMediaDrmSession failed: session not opened
khi chuyển đổi giữa các giao thức DRM trong một danh sách phát (ví dụ: Widevine sang ClearKey).
- Văn bản:
- CEA-608: Đảm bảo các lệnh chuyển đổi dịch vụ trên trường 2 được xử lý chính xác (#10666).
- DASH (Truyền phát thích ứng động qua HTTP):
- Phân tích cú pháp
EventStream.presentationTimeOffset
từ các tệp kê khai (#10460).
- Phân tích cú pháp
- Giao diện người dùng:
- Sử dụng cơ chế ghi đè hiện tại của trình phát làm giá trị đặt trước trong
TrackSelectionDialogBuilder
(#10429).
- Sử dụng cơ chế ghi đè hiện tại của trình phát làm giá trị đặt trước trong
- Phiên:
- Đảm bảo các lệnh luôn được thực thi theo đúng thứ tự ngay cả khi một số lệnh yêu cầu độ phân giải không đồng bộ (#85).
- Thêm
DefaultMediaNotificationProvider.Builder
để tạo các thực thểDefaultMediaNotificationProvider
. Trình tạo có thể định cấu hình mã thông báo, mã kênh thông báo và tên kênh thông báo mà nhà cung cấp sử dụng. Ngoài ra, hãy thêm phương thứcDefaultMediaNotificationProvider.setSmallIcon(int)
để thiết lập biểu tượng thông báo nhỏ. (#104). - Đảm bảo các lệnh được gửi trước
MediaController.release()
không bị xoá (#99). SimpleBitmapLoader
có thể tải bitmap từ các URIfile://
(#108).- Sửa câu nhận định ngăn
MediaController
tìm kiếm quảng cáo trong một khoảng thời gian (#122). - Khi quá trình phát kết thúc,
MediaSessionService
sẽ dừng trên nền trước và một thông báo sẽ hiển thị để bắt đầu phát lại mục nội dung nghe nhìn đã phát gần đây nhất (#112). - Không bắt đầu dịch vụ trên nền trước với ý định tạm dừng đang chờ xử lý (#167).
- Ẩn "huy hiệu" theo cách thủ công được liên kết với thông báo do
DefaultNotificationProvider
tạo trên API 26 và API 27 (huy hiệu sẽ tự động ẩn trên API 28 trở lên) (#131). - Sửa lỗi kết nối liên kết thứ hai từ MediaSession cũ với Media3 MediaController gây ra IllegalStateExceptions (#49).
- RTSP (Giao thức truyền tin thời gian thực):
- IMA:
- Thêm thời gian chờ để tải thông tin quảng cáo nhằm xử lý các trường hợp SDK IMA bị treo khi tải quảng cáo (#10510).
- Ngăn việc bỏ qua quảng cáo trong video khi chuyển đến cuối nội dung (#10685).
- Tính toán chính xác thời lượng của các buổi phát trực tiếp có quảng cáo được chèn phía máy chủ, ví dụ: DAI (Chèn quảng cáo động) IMA (#10764).
- Tiện ích FFmpeg:
- Thêm các cờ mới bắt buộc để liên kết thư viện FFmpeg với NDK 23.1.7779620 trở lên (#9933).
- Tiện ích AV1:
- Cập nhật phiên bản CMake để tránh tình trạng không tương thích với các bản phát hành Android Studio mới nhất (#9933).
- Tiện ích truyền (cast):
- Triển khai
getDeviceInfo()
để có thể xác địnhCastPlayer
khi kiểm soát hoạt động phát bằngMediaController
(#142).
- Triển khai
- Bộ chuyển đổi:
- Thêm bộ đếm giờ phòng vệ kết hợp để phát hiện thời điểm tạo mẫu đầu ra quá chậm.
- Xoá các biểu tượng không dùng nữa:
- Xoá
Transformer.Builder.setOutputMimeType(String)
. Tính năng này đã bị xoá. Loại MIME sẽ luôn là MP4 khi sử dụng trình kết hợp mặc định.
- Xoá
Phiên bản 1.0.0-beta02
Ngày 21 tháng 7 năm 2022
Phát hành androidx.media3:media3-*:1.0.0-beta02
.
Phiên bản 1.0.0-beta02 bao gồm các thay đổi sau.
Bản phát hành này tương ứng với phiên bản ExoPlayer 2.18.1.
- Thư viện Core:
- Đảm bảo việc thay đổi
ShuffleOrder
vớiExoPlayer.setShuffleOrder
sẽ dẫn đến lệnh gọi đếnPlayer.Listener#onTimelineChanged
bằngreason=Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
(#9889). - Đối với nội dung nghe nhìn liên tục, chỉ đưa các bản nhạc đã chọn vào vị trí vùng đệm (#10361).
- Cho phép trình ghi nhật ký tuỳ chỉnh cho mọi đầu ra nhật ký ExoPlayer (#9752).
- Khắc phục lỗi triển khai
setDataSourceFactory
trongDefaultMediaSourceFactory
không hoạt động trong một số trường hợp (#116).
- Đảm bảo việc thay đổi
- Công cụ trích xuất:
- DASH (Truyền phát thích ứng động qua HTTP):
- Phân tích cú pháp URL giấy phép ClearKey từ các tệp kê khai (#10246).
- Giao diện người dùng:
- Đảm bảo TalkBack thông báo tuỳ chọn tốc độ hiện đang hoạt động trong trình đơn bộ điều khiển chế độ phát (#10298).
- RTSP (Giao thức truyền tin thời gian thực):
- Thêm xử lý gói phân tách VP8 (#110).
- Tiện ích Leanback:
- Theo dõi các thay đổi đối với
playWhenReady
trongLeanbackAdapter
(10420).
- Theo dõi các thay đổi đối với
- Truyền:
Phiên bản 1.0.0-beta01
Ngày 16 tháng 6 năm 2022
Phát hành androidx.media3:media3-*:1.0.0-beta01
.
Phiên bản 1.0.0-beta01 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.18.0.
- Thư viện Core:
- Bật tính năng hỗ trợ cho việc chẩn đoán nền tảng Android thông qua
MediaMetricsManager
. ExoPlayer sẽ chuyển tiếp các sự kiện phát và dữ liệu về hiệu suất đến nền tảng, qua đó cung cấp hiệu suất của hệ thống và thông tin gỡ lỗi trên thiết bị. Google cũng có thể thu thập dữ liệu này nếu người dùng thiết bị đã bật chia sẻ dữ liệu sử dụng và chẩn đoán. Ứng dụng có thể chọn không tham gia chẩn đoán nền tảng cho ExoPlayer bằngExoPlayer.Builder.setUsePlatformDiagnostics(false)
. - Sửa lỗi các bản nhạc được đặt lại quá thường xuyên khi sử dụng
MergingMediaSource
, chẳng hạn như khi tải các phụ đề bên cạnh và thay đổi phụ đề đã chọn khi phát lại (#10248). - Dừng phát hiện loại mạng 5G-NSA trên API 29 và 30. Các lượt phát này sẽ giả định mạng 4G.
- Không cho phép truyền
null
vàoMediaSource.Factory.setDrmSessionManagerProvider
vàMediaSource.Factory.setLoadErrorHandlingPolicy
. Nếu được yêu cầu, hệ thống có thể truyền các bản sao củaDefaultDrmSessionManagerProvider
vàDefaultLoadErrorHandlingPolicy
một cách rõ ràng. - Thêm
MediaItem.RequestMetadata
để đại diện cho siêu dữ liệu cần thiết khi phát nội dung nghe nhìn mà không biết chính xácLocalConfiguration
. Đồng thời xoáMediaMetadata.mediaUrl
vì hiện có trongRequestMetadata
. - Thêm
Player.Command.COMMAND_SET_MEDIA_ITEM
để cho phép người chơi thiết lập một mục duy nhất.
- Bật tính năng hỗ trợ cho việc chẩn đoán nền tảng Android thông qua
- Chọn bản nhạc:
- Làm phẳng lớp
TrackSelectionOverrides
thànhTrackSelectionParameters
, và quảng báTrackSelectionOverride
lên lớp cao cấp nhất. - Đổi tên
TracksInfo
thànhTracks
vàTracksInfo.TrackGroupInfo
thànhTracks.Group
.Player.getCurrentTracksInfo
vàPlayer.Listener.onTracksInfoChanged
cũng đã được đổi tên thànhPlayer.getCurrentTracks
vàPlayer.Listener.onTracksChanged
. Cách này bao gồm cả việc "ngừng sử dụng" tên phương thứcPlayer.Listener.onTracksChanged
, nhưng sử dụng các loại tham số khác. - Thay đổi
DefaultTrackSelector.buildUponParameters
vàDefaultTrackSelector.Parameters.buildUpon
để trả vềDefaultTrackSelector.Parameters.Builder
thay vìDefaultTrackSelector.ParametersBuilder
không dùng nữa. - Thêm
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
được bật theo mặc định. Khi được bật,DefaultTrackSelector
sẽ ưu tiên các bản âm thanh có số kênh không vượt quá khả năng đầu ra của thiết bị. Trên thiết bị cầm tay,DefaultTrackSelector
sẽ ưu tiên định dạng âm thanh nổi/đơn âm thay vì định dạng âm thanh đa kênh, trừ trường hợp định dạng đa kênh có thể là Âm thanh không gian (Android 12L trở lên) hoặc là định dạng âm thanh vòm Dolby. Ngoài ra, trên các thiết bị hỗ trợ việc tạo không gian âm thanh,DefaultTrackSelector
sẽ theo dõi những thay đổi trong Thuộc tính của âm thanh không gian và kích hoạt lựa chọn mới cho các bản nhạc. Các thiết bị có Chế độ giao diện người dùngtelevision
sẽ bị loại trừ khỏi những hạn chế này và định dạng có số kênh cao nhất sẽ được ưu tiên. Để bật tính năng này, bản saoDefaultTrackSelector
phải được tạo bằngContext
.
- Làm phẳng lớp
- Video:
- Đổi tên
DummySurface
thànhPlaceholderSurface
. - Thêm tuỳ chọn hỗ trợ AV1 vào
MediaCodecVideoRenderer.getCodecMaxInputSize
.
- Đổi tên
- Âm thanh:
- Sử dụng bộ giải mã âm thanh LG AC3 quảng cáo loại MIME không chuẩn.
- Thay đổi loại trả về của
AudioAttributes.getAudioAttributesV21()
từandroid.media.AudioAttributes
thành lớp trình bao bọcAudioAttributesV21
mới để ngăn việc xác minh ART chậm trên API < 21. - Truy vấn nền tảng (API 29 trở lên) hoặc giả sử số kênh mã hoá âm thanh để truyền âm thanh khi số kênh âm thanh của định dạng không được thiết lập, việc này xảy ra với quá trình chuẩn bị phân đoạn HLS (10204).
- Định cấu hình
AudioTrack
bằng mặt nạ kênhAudioFormat.CHANNEL_OUT_7POINT1POINT4
nếu bộ giải mã xuất ra âm thanh PCM 12 kênh (#10322).
- DRM (Quản lý bản quyền nội dung số):
- Đảm bảo phiên DRM luôn được cập nhật chính xác khi tìm kiếm ngay sau khi thay đổi định dạng (10274).
- Văn bản:
- Thay đổi
Player.getCurrentCues()
để trả vềCueGroup
thay vìList<Cue>
. - SSA: Hỗ trợ chế độ cài đặt kiểu
OutlineColour
khiBorderStyle == 3
(tức làOutlineColour
đặt nền của tín hiệu) (#8435). - CEA-708: Phân tích cú pháp dữ liệu thành nhiều khối dịch vụ và bỏ qua các khối không liên quan đến số dịch vụ hiện được chọn.
- Xoá
RawCcExtractor
chỉ được dùng để xử lý định dạng phụ đề nội bộ của Google.
- Thay đổi
- Công cụ trích xuất:
- Giao diện người dùng:
- Khắc phục việc phân phối sự kiện tới
OnClickListener
được đặt vàoPlayerView
trong trường hợpuseController=false
(#9605). Ngoài ra, hãy khắc phục việc phân phối sự kiện đếnOnLongClickListener
cho tất cả các cấu hình chế độ xem. - Sửa lỗi xử lý không chính xác một chuỗi các sự kiện chạm thoát ra khỏi giới hạn của
PlayerView
trướcACTION_UP
dưới dạng một lượt nhấp (#9861). - Khắc phục vấn đề về khả năng tiếp cận
PlayerView
, trong đó thao tác nhấn có thể chuyển đổi chế độ phát thay vì ẩn các nút điều khiển (#8627). - Viết lại
TrackSelectionView
vàTrackSelectionDialogBuilder
để hoạt động được với giao diệnPlayer
thay vìExoPlayer
. Điều này cho phép chế độ xem được sử dụng cùng với các hoạt động triển khaiPlayer
khác, đồng thời loại bỏ phần phụ thuộc khỏi mô-đun giao diện người dùng sang mô-đun ExoPlayer. Đây là một thay đổi có thể gây lỗi. - Không hiển thị các đoạn văn bản bắt buộc trong bộ chọn bản nhạc
PlayerView
và giữ một đoạn văn bản bắt buộc phù hợp được chọn nếu bạn chọn "Không có" (#9432).
- Khắc phục việc phân phối sự kiện tới
- DASH (Truyền phát thích ứng động qua HTTP):
- Phân tích cú pháp số kênh từ các phần tử DTS
AudioChannelConfiguration
. Thao tác này sẽ bật lại tính năng truyền âm thanh cho các luồng DTS (#10159). - Không cho phép truyền
null
đếnDashMediaSource.Factory.setCompositeSequenceableLoaderFactory
. Bạn có thể chuyển các thực thể củaDefaultCompositeSequenceableLoaderFactory
một cách rõ ràng nếu cần.
- Phân tích cú pháp số kênh từ các phần tử DTS
- HLS (Phát trực tuyến dựa trên HTTP):
- Dự phòng cho việc chuẩn bị theo từng đoạn nếu thuộc tính CODECS (bộ mã hoá và giải mã) của danh sách phát không chứa bộ mã hoá và giải mã âm thanh (#10065).
- Không cho phép truyền
null
đếnHlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
,HlsMediaSource.Factory.setPlaylistParserFactory
vàHlsMediaSource.Factory.setPlaylistTrackerFactory
. Hệ thống có thể chuyển các bản sao củaDefaultCompositeSequenceableLoaderFactory
,DefaultHlsPlaylistParserFactory
hoặc tệp tham chiếu đếnDefaultHlsPlaylistTracker.FACTORY
một cách rõ ràng nếu cần thiết.
- Phát trực tuyến mượt mà:
- Không cho phép truyền
null
đếnSsMediaSource.Factory.setCompositeSequenceableLoaderFactory
. Bạn có thể chuyển các thực thể củaDefaultCompositeSequenceableLoaderFactory
một cách rõ ràng nếu cần.
- Không cho phép truyền
- RTSP (Giao thức truyền tin thời gian thực):
- Thêm trình đọc RTP cho H263 (#63).
- Thêm trình đọc RTP cho MPEG4 (#35).
- Thêm trình đọc RTP cho HEVC (#36).
- Thêm trình đọc RTP cho AMR. Hiện tại, Google chỉ hỗ trợ luồng AMR đơn kênh, không xen kẽ. Không hỗ trợ tải trọng AMR RTP tổng hợp. (#46)
- Thêm trình đọc RTP cho VP8 (#47).
- Thêm trình đọc RTP cho WAV (#56).
- Sửa tiêu đề uỷ quyền cơ bản RTSP. (#9544).
- Dừng kiểm tra các trường SDP bắt buộc vì ExoPlayer không cần các trường này (#10049).
- Gửi ngoại lệ đã đánh dấu khi phân tích cú pháp thời gian RTSP (#10165).
- Thêm trình đọc RTP cho VP9 (#47).
- Thêm trình đọc RTP cho OPUS (#53).
- Nguồn dữ liệu:
- Đổi tên
DummyDataSource
thànhPlaceholderDataSource
. - Giải quyết việc xử lý gián đoạn OkHttp.
- Đổi tên
- Phiên:
- Thay thế
MediaSession.MediaItemFiller
bằngMediaSession.Callback.onAddMediaItems
để cho phép xử lý các yêu cầu không đồng bộ. - Hỗ trợ các phương thức
setMediaItems(s)
khiMediaController
kết nối với một phiên nội dung nghe nhìn cũ. - Xóa
MediaController.setMediaUri
vàMediaSession.Callback.onSetMediaUri
. Bạn có thể sử dụng cùng một chức năng bằng cách sử dụngMediaController.setMediaItem
vàMediaSession.Callback.onAddMediaItems
. - Chuyển tiếp cuộc gọi
MediaController
cũ để phát nội dung nghe nhìn đếnMediaSession.Callback.onAddMediaItems
thay vìonSetMediaUri
. - Thêm
MediaNotification.Provider
vàDefaultMediaNotificationProvider
để tuỳ chỉnh thông báo. - Thêm
BitmapLoader
vàSimpleBitmapLoader
để tải hình ảnh nghệ thuật xuống. - Thêm
MediaSession.setCustomLayout()
để cung cấp khả năng tương thích ngược với phiên cũ. - Thêm
MediaSession.setSessionExtras()
để cung cấp tính năng tương đương với phiên cũ. - Đổi tên
MediaSession.MediaSessionCallback
thànhMediaSession.Callback
,MediaLibrarySession.MediaLibrarySessionCallback
thànhMediaLibrarySession.Callback
vàMediaSession.Builder.setSessionCallback
thànhsetCallback
. - Khắc phục NPE trong
MediaControllerImplLegacy
(#59). - Cập nhật thông tin vị trí của phiên trên tiến trình thay đổi(#51).
- Khắc phục NPE trong
MediaControllerImplBase
sau khi phát hành bộ điều khiển (#74).
- Thay thế
- Phát quảng cáo / IMA:
- Giảm tốc độ thăm dò quảng cáo từ 100 mili giây xuống còn 200 mili giây để phù hợp với đề xuất của Hội đồng đánh giá phương tiện (MRC).
- Tiện ích FFmpeg:
- Cập nhật phiên bản CMake lên
3.21.0+
để tránh lỗi CMake khiến quá trình đồng bộ hoá gradle của AndroidStudio không thành công (#9933).
- Cập nhật phiên bản CMake lên
- Xoá các biểu tượng không dùng nữa:
- Xoá
Player.Listener.onTracksChanged(TrackGroupArray, TrackSelectionArray)
. Sử dụngPlayer.Listener.onTracksChanged(Tracks)
thay thế. - Xoá
Player.getCurrentTrackGroups
vàPlayer.getCurrentTrackSelections
. Thay vào đó, hãy sử dụngPlayer.getCurrentTracks
. Bạn cũng có thể tiếp tục sử dụngExoPlayer.getCurrentTrackGroups
vàExoPlayer.getCurrentTrackSelections
, mặc dù các phương thức này không còn được dùng nữa. - Xóa hằng số
DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
vàDEFAULT_TRACK_SELECTOR_PARAMETERS
. Ưu tiên sử dụnggetDefaultTrackSelectorParameters(Context)
khi có thể, nếu không hãy dùngDEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
. - Xóa hàm dựng
DefaultTrackSelector(ExoTrackSelection.Factory)
. Thay vào đó, hãy sử dụngDefaultTrackSelector(Context, ExoTrackSelection.Factory)
. - Xoá
Transformer.Builder.setContext
.Context
phải được truyền vào hàm dựngTransformer.Builder
.
- Xoá
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:
- Sửa 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.setTrackId
vàMediaItem.SubtitleConfiguration.Builder.setId
để ưu tiên trườngSubtitleConfiguration
và quay lại giá trịFactory
nếu trường này không được thiết lập (#10016).
- Sửa lỗi tương tác của
- 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ủaDefaultRenderersFactory
ghi đèbuildVideoRenderers()
hoặcbuildAudioRenderers()
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
choMediaMetadata.station
vàMediaMetadata.genre
để truy cập vào ứng dụng quaPlayer.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ố quaMediaCodec
. (#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ànhqueuedInputBufferCount
. - Đặt
SimpleExoPlayer.renderers
ở chế độ riêng tư. Bạn có thể truy cập trình kết xuất thông quaExoPlayer.getRenderer
. - Cập nhật một số giá trị
AnalyticsListener.EventFlags
không đổi để khớp với các giá trị trongPlayer.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.
- Thêm phương thức được bảo vệ
- 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 bản nhạc 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 bản nhạc 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
trongTrackGroupArray
. Luôn có thể phân biệtTrackGroup
bằng cách đặt mộtid
trong hàm khởi tạoTrackGroup
. 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 trường hợp không đủ băng thông mạng, ngay cả khi hoạt động 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ềnAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
thay vìnull
. - Cho phép tuỳ chỉnh cách tính dung lượng bộ nhớ đệm
AudioTrack
bằng cách chènAudioTrackBufferSizeProvider
vàoDefaultAudioSink
. (#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:
- Văn bản:
- DRM (Quản lý bản quyền nội dung số):
- Xoá
playbackLooper
khỏiDrmSessionManager.(pre)acquireSession
. Khi một ứng dụng sử dụngDrmSessionManager
trong mộtMediaSource
tuỳ chỉnh,playbackLooper
cần được truyền vàoDrmSessionManager.setPlayer
.
- Xoá
- Phát quảng cáo / IMA:
- Thêm tuỳ chọn hỗ trợ cho công nghệ Chèn quảng cáo động (DAI) IMA (#8213).
- Thêm phương thức vào
AdPlaybackState
để cho phép đặt lại nhóm quảng cáo sao cho 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:
- 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
main
làC.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).
- 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
- 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ụ đề kết hợp (không được khai báo trong danh sách phát chính), thì bạn phải thêm các bản phụ đề đó vào danh sách phát chính để có thể phát, hoặc tắt chế độ chuẩn bị phát trực tiếp nội dung trong danh sách phát đa phương tiện (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).
- Tự động điền chính xác
- 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).
- Cung cấp một API máy khách để ghi đè
- 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 tuỳ 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ọisetClearMediaItemsOnStop(false)
trên trình kết nối.
- Theo mặc định,
- Tiện ích truyền (cast):
- 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).
- Cho
- 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ủaplay-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ớiIllegalArgumentException
khi tạoPendingIntent
(#9528).
- Nâng cấp tiện ích Truyền để phụ thuộc vào
- Xoá các biểu tượng không dùng nữa:
- Xoá
Player.EventListener
. Sử dụngPlayer.Listener
. - Xoá
MediaSourceFactory#setDrmSessionManager
,MediaSourceFactory#setDrmHttpDataSourceFactory
vàMediaSourceFactory#setDrmUserAgent
. Sử dụngMediaSourceFactory#setDrmSessionManagerProvider
. - Xoá
MediaSourceFactory#setStreamKeys
. Sử dụngMediaItem.Builder#setStreamKeys
. - Xoá
MediaSourceFactory#createMediaSource(Uri)
. Sử dụngMediaSourceFactory#createMediaSource(MediaItem)
. - Xóa
setTag
khỏiDashMediaSource
,HlsMediaSource
vàSsMediaSource
. Sử dụngMediaItem.Builder#setTag
. - Xoá
DashMediaSource#setLivePresentationDelayMs(long, boolean)
. Sử dụngMediaItem.Builder#setLiveConfiguration
vàMediaItem.LiveConfiguration.Builder#setTargetOffsetMs
để ghi đè tệp kê khai hoặcDashMediaSource#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
ActionFile
vàActionFileUpgradeUtil
. Dùng ExoPlayer 2.16.1 hoặc các phiên bản trước đó để sử dụngActionFileUpgradeUtil
nhằm hợp nhất các tệp thao tác cũ vàoDefaultDownloadIndex
. - Xoá
ProgressiveMediaSource#setExtractorsFactory
. Sử dụng hàm constructorProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
. - Xóa
ProgressiveMediaSource.Factory#setTag
vàProgressiveMediaSource.Factory#setCustomCacheKey
. Sử dụngMediaItem.Builder#setTag
vàMediaItem.Builder#setCustomCacheKey
. - Xoá các hàm constructor
DefaultRenderersFactory(Context, @ExtensionRendererMode int)
vàDefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
. Sử dụng hàm constructorDefaultRenderersFactory(Context)
,DefaultRenderersFactory#setExtensionRendererMode
vàDefaultRenderersFactory#setAllowedVideoJoiningTimeMs
. - Xóa tất cả hàm constructor
CronetDataSource
công khai. Sử dụngCronetDataSource.Factory
.
- Xoá
- Chỉ thay đổi
IntDefs
sau thành@Target(TYPE_USE)
. Thay đổi này có thể làm gián đoạn quá trình biên dịch các trường hợp sử dụng trong Kotlin. Bạn có thể khắc phục lỗi này bằng cách di chuyển phần chú giải để chú thích loại (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
(trong góicom.google.android.exoplayer2.ext.flac
)@FlacExtractor.Flags
(trong góicom.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 10 năm 2021
Phát hành androidx.media3:media3-*:1.0.0-alpha01
.
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 nghe nhìn cấp ứng dụng dành cho Android, có thể dễ dàng tuỳ 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.