Media3
最近更新时间 | 稳定版 | 候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2022 年 6 月 16 日 | - | - | 1.0.0-beta01 | - |
声明依赖项
如需添加 Media3 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
Groovy
dependencies { val media3_version = "1.0.0-beta01" // 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-beta01" // 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") }
如需详细了解依赖项,请参阅添加 build 依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。您可以使用 Media3 问题跟踪器查找问题的答案、已知问题和功能请求,以及提交新问题。
版本 1.0.0
版本 1.0.0-beta01
2022 年 6 月 16 日
发布了 androidx.media3:media3-*:1.0.0-beta01
。版本 1.0.0-beta01 中包含这些提交内容。
这与 ExoPlayer 2.18.0 版本相对应。
- 核心库:
- 通过
MediaMetricsManager
启用了对 Android 平台诊断信息的支持。ExoPlayer 会将播放事件和性能数据转发到平台,这有助于在设备上提供系统性能和调试信息。如果设备用户启用了使用情况和诊断信息数据分享功能,Google 可能也会收集上述数据。应用可以选择不通过ExoPlayer.Builder.setUsePlatformDiagnostics(false)
为 ExoPlayer 提供平台诊断信息。 - 修复了使用
MergingMediaSource
时轨道重置太频繁的 bug,例如旁加载字幕和播放过程中更改所选字幕时 (#10248)。 - 停止在 API 29 和 30 上检测 5G-NSA 网络类型。这些播放将假设使用 4G 网络。
- 禁止将
null
传递给MediaSource.Factory.setDrmSessionManagerProvider
和MediaSource.Factory.setLoadErrorHandlingPolicy
。如果需要,可以显式传递DefaultDrmSessionManagerProvider
和DefaultLoadErrorHandlingPolicy
的实例。 - 添加了
MediaItem.RequestMetadata
来表示在确切LocalConfiguration
未知的情况下播放媒体所需的元数据。此外,还移除了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
。 - 更改了
DefaultTrackSelector.buildUponParameters
和DefaultTrackSelector.Parameters.buildUpon
以返回DefaultTrackSelector.Parameters.Builder
,而不是已废弃的DefaultTrackSelector.ParametersBuilder
。 - 添加了
DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities
(默认处于启用状态)。启用后,DefaultTrackSelector
会优先选用声道数不超过设备输出功能的音轨。在手持设备上,DefaultTrackSelector
会优先选用立体声/单声道,而非多声道音频格式,除非该多声道格式可以空间化(Android 12L 及更高版本)或属于杜比环绕声格式。此外,在支持音频空间化的设备上,DefaultTrackSelector
将监控空间化程序属性的变化,并在出现这些变化时触发新的音轨选择。具有television
界面模式的设备不受这些限制的约束,系统会优先选用声道数最多的格式。如需启用此功能,必须使用Context
构建DefaultTrackSelector
实例。
- 已将
- 视频:
- 已将
DummySurface
重命名为PlaceholderSurface
。 - 为
MediaCodecVideoRenderer.getCodecMaxInputSize
添加了 AV1 支持。
- 已将
- 音频:
- 使用宣传非标准 MIME 类型的 LG AC3 音频解码器。
- 将
AudioAttributes.getAudioAttributesV21()
的返回类型从android.media.AudioAttributes
更改为新的AudioAttributesV21
封装容器类,以防止在级别低于 21 的 API 上 ART 验证速度变慢。 - 查询平台(级别为 29 及以上的 API)或在未设置格式声道数的情况(在 HLS 无块准备时发生)下,假设音频直通的音频编码声道数 (10204)。
- 如果解码器输出 12 声道 PCM 音频,请使用声道 掩码
AudioFormat.CHANNEL_OUT_7POINT1POINT4
配置AudioTrack
(#10322)。
- DRM
- 确保格式更改后始终能够立即正确更新 DRM 会话 (10274)。
- 文本:
- 更改了
Player.getCurrentCues()
以返回CueGroup
,而不是List<Cue>
。 - SSA:支持
BorderStyle == 3
(即OutlineColour
设置 cue 文件的背景)时的OutlineColour
样式设置 (#8435)。 - CEA-708:将数据解析为多个服务块,并忽略与当前所选服务编号无关的块。
- 移除了仅用于处理 Google 内部字幕格式的
RawCcExtractor
。
- 更改了
- 提取器:
- Matroska:解析了 Opus 轨道的
DiscardPadding
。 - MP4:解析了
esds
框中的比特率。 - Ogg:允许重复的 Opus ID 和注释标头 (#10038)。
- Matroska:解析了 Opus 轨道的
- 界面:
- 修复了
useController=false
时将事件传递给PlayerView
上设置的OnClickListener
的问题 (#9605)。此外,还修复了针对所有视图配置将事件传递给OnLongClickListener
的问题。 - 修复了将
ACTION_UP
之前退出PlayerView
边界的一系列触摸事件错误处理为点击的问题 (#9861)。 - 修复了点按操作可能会切换播放,而不是隐藏控件的
PlayerView
无障碍功能问题 (#8627)。 - 重写了
TrackSelectionView
和TrackSelectionDialogBuilder
,以使用Player
接口(而不是ExoPlayer
)。这样做将允许视图与其他Player
实现一起使用,并移除界面模块对 ExoPlayer 模块的依赖关系。这是一项重大变更。 - 不在
PlayerView
轨道选择器中显示强制文字轨道;如果选择了“None”,则保留一个合适的强制文字轨道 (#9432)。
- 修复了
- DASH:
- 解析了 DTS
AudioChannelConfiguration
元素中的声道数。这会为 DTS 流重新启用音频直通 (#10159)。 - 禁止将
null
传递给DashMediaSource.Factory.setCompositeSequenceableLoaderFactory
。如果需要,可以显式传递DefaultCompositeSequenceableLoaderFactory
的实例。
- 解析了 DTS
- HLS:
- 如果播放列表 CODECS 属性不包含音频编解码器,则回退到分块准备 (#10065)。
- 禁止将
null
传递给HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory
、HlsMediaSource.Factory.setPlaylistParserFactory
和HlsMediaSource.Factory.setPlaylistTrackerFactory
。如果需要,可以显式传递DefaultCompositeSequenceableLoaderFactory
、DefaultHlsPlaylistParserFactory
或对DefaultHlsPlaylistTracker.FACTORY
的引用。
- 流畅的流式传输:
- 禁止将
null
传递给SsMediaSource.Factory.setCompositeSequenceableLoaderFactory
。如果需要,可以显式传递DefaultCompositeSequenceableLoaderFactory
的实例。
- 禁止将
- RTSP:
- 添加了适用于 MPEG4 的 RTP 读取器 (#35)。
- 添加了适用于 HEVC 的 RTP 读取器 (#36)。
- 添加了适用于 AMR 的 RTP 读取器。目前仅支持单声道非交错 AMR 流。不支持复合 AMR RTP 载荷 (#46)。
- 添加了适用于 VP8 的 RTP 读取器 (#47)。
- 添加了适用于 WAV 的 RTP 读取器 (#56)。
- 修复了 RTSP 基本授权标头。(#9544)。
- 停止检查必填 SDP 字段,因为 ExoPlayer 不需要这些字段 (#10049)。
- 解析 RTSP 时间时会抛出受检异常 (#10165)。
- 添加了适用于 VP9 的 RTP 读取器 (#47)。
- 添加了适用于 OPUS 的 RTP 读取器 (#53)。
- 数据源:
- 已将
DummyDataSource
重命名为PlaceholderDataSource
。 - 添加了 OkHttp 中断处理的解决方法。
- 已将
- 会话:
- 将
MediaSession.MediaItemFiller
替换为MediaSession.Callback.onAddMediaItems
,以允许异步解析请求。 - 当
MediaController
连接到旧版媒体会话时,支持setMediaItems(s)
方法。 - 移除了
MediaController.setMediaUri
和MediaSession.Callback.onSetMediaUri
。使用MediaController.setMediaItem
和MediaSession.Callback.onAddMediaItems
可实现相同的功能。 - 转发旧版
MediaController
调用,以便将媒体播放到MediaSession.Callback.onAddMediaItems
(而非onSetMediaUri
)。 - 添加了
MediaNotification.Provider
和DefaultMediaNotificationProvider
,以支持通知自定义。 - 添加了
BitmapLoader
和SimpleBitmapLoader
,用于下载海报图片。 - 添加了
MediaSession.setCustomLayout()
,以向后兼容旧版会话。 - 添加了
MediaSession.setSessionExtras()
,以提供与旧版会话相当的功能。 - 已将
MediaSession.MediaSessionCallback
重命名为MediaSession.Callback
,并将MediaLibrarySession.MediaLibrarySessionCallback
重命名为MediaLibrarySession.Callback
,将MediaSession.Builder.setSessionCallback
重命名为setCallback
。 - 修复了
MediaControllerImplLegacy
中的 NPE (#59)。 - 在时间轴发生更改时更新了会话位置 (#51)。
- 修复了释放控制器后
MediaControllerImplBase
中的 NPE (#74)。
- 将
- 广告播放/IMA:
- 将广告轮询频率从每 100 毫秒减少到每 200 毫秒,以便与美国媒体评定委员会 (MRC) 建议保持一致。
- FFmpeg 扩展程序:
- 将 CMake 版本更新为
3.21.0+
,以避免 CMake bug 导致 Android Studio 的 Gradle 同步失败 (#9933)。
- 将 CMake 版本更新为
- 移除已废弃的符号:
- 移除了
Player.Listener.onTracksChanged
。请改用Player.Listener.onTracksInfoChanged
。 - 移除了
Player.getCurrentTrackGroups
和Player.getCurrentTrackSelections
。请改用Player.getCurrentTracksInfo
。您也可以继续使用ExoPlayer.getCurrentTrackGroups
和ExoPlayer.getCurrentTrackSelections
,尽管这些方法已废弃。 - 移除了
DownloadHelper
DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT
和DEFAULT_TRACK_SELECTOR_PARAMETERS
常量。请尽可能改用getDefaultTrackSelectorParameters(Context)
,或者请使用DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT
。 - 移除了构造函数
DefaultTrackSelector(ExoTrackSelection.Factory)
。 请改用DefaultTrackSelector(Context, ExoTrackSelection.Factory)
。 - 移除了
Transformer.Builder.setContext
。请改为将Context
传递给Transformer.Builder
构造函数。
- 移除了
版本 1.0.0-alpha03
2022 年 3 月 14 日
发布了 androidx.media3:media3-*:1.0.0-alpha03
。版本 1.0.0-alpha03 中包含这些提交内容。
这与 ExoPlayer 2.17.1 版本相对应。
- 音频:
- 修复了 HLS 中杜比全景声 (E-AC3-JOC) 音频检查功能的错误。
- 提取器:
- FMP4:修复了包含 v0 和 v1 emsg 全景声的数据流 emsg 示例元数据可能会以错误的顺序输出的问题 (#9996)。
- 文本:
- 修复了
SingleSampleMediaSource.Factory.setTrackId
和MediaItem.SubtitleConfiguration.Builder.setId
的互动以优先处理SubtitleConfiguration
字段,如果未设置,回退到Factory
值 (#10016)。
- 修复了
- 广告播放:
- 修复了直播 HLS SSAI 数据流中广告时段之间的音频欠载问题。
版本 1.0.0-alpha02
2022 年 3 月 2 日
发布了 androidx.media3:media3-*:1.0.0-alpha02
。版本 1.0.0-alpha02 中包含这些提交内容。
这与 ExoPlayer 2.17.0 版本相对应。
- 核心库:
- 添加了受保护的方法
DefaultRenderersFactory.getCodecAdapterFactory()
,这样,替换buildVideoRenderers()
或buildAudioRenderers()
的DefaultRenderersFactory
子类就可以访问编解码器适配器工厂,并将其传递给它们创建的MediaCodecRenderer
实例。 - 将 ICY 标头字段
name
和genre
分别传播到MediaMetadata.station
和MediaMetadata.genre
,以便它们通过Player.Listener.onMediaMetadataChanged()
到达应用 (#9677)。 - 从
DefaultHttpDataSource#getResponseHeaders
中移除了 null 键。 - 在创建
MediaCodec
实例失败时会休眠并重试。这可解决在将 Surface 从一个安全的编解码器切换到另一个编解码器时,某些设备上会出现的问题 (#8696)。 - 添加了
MediaCodecAdapter.getMetrics()
以允许用户从MediaCodec
获取指标数据。(#9766)。 - 修复了 Maven 依赖项解析 (#8353)。
- 如果直播既没有低延迟功能也没收到要设置速度的用户请求,则停用直播的自动速度调整功能 (#9329)。
- 已将
DecoderCounters#inputBufferCount
重命名为queuedInputBufferCount
。 - 将
SimpleExoPlayer.renderers
设为了不公开。可通过ExoPlayer.getRenderer
访问渲染程序。 - 更新了一些
AnalyticsListener.EventFlags
常量值,以与Player.EventFlags
中的值匹配。 - 将
AnalyticsCollector
拆分为一个接口和默认实现,以允许它在不为应用所需时由 R8 去掉。
- 添加了受保护的方法
- 轨道选择:
- 支持在轨道选择中使用首选视频角色标记 (#9402)。
- 将视频轨道选择逻辑更新为:在选择多个视频轨道用于自适应调整时,考虑首选的 MIME 类型和角色标记 (#9519)。
- 将视频和音频轨道选择逻辑更新为:仅为解码器和硬件支持的级别相同的自适应选择项选择格式 (#9565)。
- 将视频轨道选择逻辑更新为:如果主要的硬件加速解码器支持多个编解码器,则优先选用效率较高的编解码器 (#4835)。
- 相较于技术轨道选择约束(例如,首选的 MIME 类型或频道数量上限),优先选用音频内容偏好设置(例如,“默认”音轨或某个与系统语言区域的语言相匹配的轨道)。
- 修复了以下轨道选择问题:替换一个轨道组不会停用同一类型的其他轨道组 (#9675)。
- 修复了以下轨道选择问题:同时存在非空和空轨道替换时无法正确应用 (#9649)。
- 禁止
TrackGroupArray
中有重复的TrackGroup
。始终可通过在TrackGroup
构造函数中设置id
而使TrackGroup
可区分开。这修复了以下问题:通过活跃轨道替换使应用转入后台再继续播放时会发生崩溃 (#9718)。 - 修正了
AdaptiveTrackSelection
中的逻辑,在网络带宽足够的情况下允许提高质量,即使播放质量已非常接近当时的极限时也是如此 (#9784)。
- 视频:
- 修复了杜比视界的解码器回退逻辑,以在需要时使用兼容的 H264/H265 解码器。
- 音频:
- 提取器:
- 文本:
- DRM:
- 从
DrmSessionManager.(pre)acquireSession
中移除了playbackLooper
。 当自定义的MediaSource
中的应用使用DrmSessionManager
时,需要改为将playbackLooper
传递给DrmSessionManager.setPlayer
。
- 从
- 广告播放/IMA:
- 添加了对 IMA 动态广告插播 (DAI) 的支持 (#8213)。
- 向
AdPlaybackState
中添加了一个允许重置广告组的方法,以便广告组可以再次播放 (#9615)。 - 在广告播放期间强制保持 1.0 的播放速度 (#9018)。
- 修复了以下问题:未能加载广告组导致播放立即重置 (#9929)。
- 界面:
- DASH:
- HLS:
- RTSP:
- 转换器:
- 将要求的最低 API 版本提高到 21。
TransformationException
现已用于描述转换期间发生的错误。- 添加了
TransformationRequest
以指定转换选项。 - 允许注册多个监听器。
- 修复了当读取了部分编解码器输出内容时转换器卡住的问题。
- 修复了在释放多路复用器抛出项时
Transformer.getProgress
中潜在的 NPE 问题。 - 添加了用于应用转换的演示版应用。
- MediaSession 扩展程序:
- 默认情况下,
MediaSessionConnector
现会在停止时清除播放列表。希望保留播放列表的应用可以在连接器上调用setClearMediaItemsOnStop(false)
。
- 默认情况下,
- Cast 扩展程序:
- FFmpeg 扩展程序:
- 让
build_ffmpeg.sh
依赖于 LLVM(而非 GNU)的 bin utils (#9933)。
- 让
- Android 12 兼容性:
- 将 Cast 扩展程序升级为依赖于
com.google.android.gms:play-services-cast-framework:20.1.0
。早期版本的play-services-cast-framework
与以 Android 12 为目标平台的应用不兼容,会在创建PendingIntent
时崩溃并产生IllegalArgumentException
(#9528)。
- 将 Cast 扩展程序升级为依赖于
- 移除已废弃的符号:
- 移除了
Player.EventLister
。改用Player.Listener
。 - 移除了
MediaSourceFactory#setDrmSessionManager
、MediaSourceFactory#setDrmHttpDataSourceFactory
和MediaSourceFactory#setDrmUserAgent
。改用MediaSourceFactory#setDrmSessionManagerProvider
。 - 移除了
MediaSourceFactory#setStreamKeys
。改用MediaItem.Builder#setStreamKeys
。 - 移除了
MediaSourceFactory#createMediaSource(Uri)
。改用MediaSourceFactory#createMediaSource(MediaItem)
。 - 从
DashMediaSource
、HlsMediaSource
和SsMediaSource
中移除了setTag
。改用MediaItem.Builder#setTag
。 - 移除了
DashMediaSource#setLivePresentationDelayMs(long, boolean)
。使用MediaItem.Builder#setLiveConfiguration
和MediaItem.LiveConfiguration.Builder#setTargetOffsetMs
替换清单,或使用DashMediaSource#setFallbackTargetLiveOffsetMs
提供回退值。 - 移除了
(Simple)ExoPlayer.setThrowsWhenUsingWrongThread
。无法再选择停用线程强制执行。 - 移除了
ActionFile
和ActionFileUpgradeUtil
。使用 ExoPlayer 2.16.1 或更低版本,以利用ActionFileUpgradeUtil
将旧版操作文件合并到DefaultDownloadIndex
中。 - 移除了
ProgressiveMediaSource#setExtractorsFactory
。改用ProgressiveMediaSource.Factory(DataSource.Factory, ExtractorsFactory)
构造函数。 - 移除了
ProgressiveMediaSource.Factory#setTag
和ProgressiveMediaSource.Factory#setCustomCacheKey
。改用MediaItem.Builder#setTag
和MediaItem.Builder#setCustomCacheKey
。 - 移除了
DefaultRenderersFactory(Context, @ExtensionRendererMode int)
和DefaultRenderersFactory(Context, @ExtensionRendererMode int, long)
构造函数。改用DefaultRenderersFactory(Context)
构造函数、DefaultRenderersFactory#setExtensionRendererMode
和DefaultRenderersFactory#setAllowedVideoJoiningTimeMs
。 - 移除了所有公开的
CronetDataSource
构造函数。改用CronetDataSource.Factory
。
- 移除了
- 将以下
IntDefs
更改为仅限@Target(TYPE_USE)
。这可能会破坏相应 Kotlin 代码的编译,解决方法是将注解更改为对类型 (Int
) 进行注解。@AacAudioObjectType
@Ac3Util.SyncFrameInfo.StreamType
@AdLoadException.Type
@AdtsExtractor.Flags
@AmrExtractor.Flags
@AspectRatioFrameLayout.ResizeMode
@AudioFocusManager.PlayerCommand
@AudioSink.SinkFormatSupport
@BinarySearchSeeker.TimestampSearchResult.Type
@BufferReplacementMode
@C.BufferFlags
@C.ColorRange
@C.ColorSpace
@C.ColorTransfer
@C.CryptoMode
@C.Encoding
@C.PcmEncoding
@C.Projection
@C.SelectionReason
@C.StereoMode
@C.VideoOutputMode
@CacheDataSource.Flags
@CaptionStyleCompat.EdgeType
@DataSpec.Flags
@DataSpec.HttpMethods
@DecoderDiscardReasons
@DecoderReuseResult
@DefaultAudioSink.OutputMode
@DefaultDrmSessionManager.Mode
@DefaultTrackSelector.SelectionEligibility
@DefaultTsPayloadReaderFactory.Flags
@EGLSurfaceTexture.SecureMode
@EbmlProcessor.ElementType
@ExoMediaDrm.KeyRequest.RequestType
@ExtensionRendererMode
@Extractor.ReadResult
@FileTypes.Type
@FlacExtractor.Flags
(在com.google.android.exoplayer2.ext.flac
软件包中)@FlacExtractor.Flags
(在com.google.android.exoplayer2.extractor.flac
软件包中)@FragmentedMp4Extractor.Flags
@HlsMediaPlaylist.PlaylistType
@HttpDataSourceException.Type
@IllegalClippingException.Reason
@IllegalMergeException.Reason
@LoadErrorHandlingPolicy.FallbackType
@MatroskaExtractor.Flags
@Mp3Extractor.Flags
@Mp4Extractor.Flags
@NotificationUtil.Importance
@PlaybackException.FieldNumber
@PlayerNotificationManager.Priority
@PlayerNotificationManager.Visibility
@PlayerView.ShowBuffering
@Renderer.State
@RendererCapabilities.AdaptiveSupport
@RendererCapabilities.Capabilities
@RendererCapabilities.DecoderSupport
@RendererCapabilities.FormatSupport
@RendererCapabilities.HardwareAccelerationSupport
@RendererCapabilities.TunnelingSupport
@SampleStream.ReadDataResult
@SampleStream.ReadFlags
@StyledPlayerView.ShowBuffering
@SubtitleView.ViewType
@TextAnnotation.Position
@TextEmphasisSpan.MarkFill
@TextEmphasisSpan.MarkShape
@Track.Transformation
@TrackOutput.SampleDataPart
@Transformer.ProgressState
@TsExtractor.Mode
@TsPayloadReader.Flags
@WebvttCssStyle.FontSizeUnit
版本 1.0.0-alpha01
2021 年 10 月 27 日
发布了 androidx.media3:media3-*:1.0.0-alpha01
。版本 1.0.0-alpha01 中包含这些提交内容。
新功能
Media3 是面向媒体支持库(包括 ExoPlayer)的新平台。首个 Alpha 版包含用于实现媒体用例的库的早期功能实现,包括:
- ExoPlayer - 一种适用于 Android 的应用级媒体播放器,可轻松自定义和扩展。
- 用于公开和控制播放的媒体会话功能。这一新的会话模块使用与 ExoPlayer 相同的
Player
接口。 - 用于构建媒体播放界面的界面组件。
- 其他库中用于 ExoPlayer 的模块封装功能,例如通过 IMA SDK 插入广告。
如需了解详情,请参阅 Media3 GitHub 项目。
之前,ExoPlayer 托管在单独的 ExoPlayer GitHub 项目中。在 Media3 中,其软件包名称为 androidx.media3.exoplayer
。我们计划在一段时间内继续维护和发布 ExoPlayer GitHub 项目,以便让应用有时间迁移到 Media3。Media3 取代了所有 ExoPlayer 模块,但旧版 media2 和 mediasession 扩展程序除外,后者已被新的 media3-session
模块取代。这可以实现播放器和媒体会话之间的直接集成,而无需使用适配器/连接器类。