Media3
最新の更新 | 安定版リリース | リリース候補版 | ベータ版リリース | アルファ版リリース |
---|---|---|---|---|
2022 年 3 月 9 日 | - | - | - | 1.0.0-alpha02 |
依存関係の宣言
Media3 への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。
アプリまたはモジュールの build.gradle
ファイルに、必要なアーティファクトの依存関係を追加します。
Groovy
dependencies { val media3_version = "1.0.0-alpha02" // 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-alpha02" // 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") }
依存関係について詳しくは、ビルド依存関係の追加をご覧ください。
フィードバック
お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。Media3 Issue Tracker を使用すると、質問への回答、既知の問題、機能リクエストを見つけたり、新しい問題を報告したりできます。
バージョン 1.0.0
バージョン 1.0.0-alpha03
2022 年 3 月 14 日
androidx.media3:media3-*:1.0.0-alpha03
がリリースされました。バージョン 1.0.0-alpha03 に含まれる commit については、こちらをご覧ください。
これは ExoPlayer 2.17.1 リリースに対応しています。
- オーディオ:
- HLS でのドルビー アトモス(E-AC3-JOC)の音声機能に関するエラーを修正しました。
- エクストラクタ:
- FMP4: v0 と v1 の両方の emsg アトムスを含むストリームに対して、emsg サンプル メタデータが誤った順序で出力される問題を修正しました(#9996)。
- テキスト:
SubtitleConfiguration
フィールドの優先順位を設定し、Factory
値が設定されていない場合はその値に戻すために、SingleSampleMediaSource.Factory.setTrackId
とMediaItem.SubtitleConfiguration.Builder.setId
のインタラクションを修正しました(#10016)。
- 広告再生:
- ライブ HLS SSAI ストリームの広告期間における音声アンダーランを修正しました。
バージョン 1.0.0-alpha02
2022 年 3 月 2 日
androidx.media3:media3-*:1.0.0-alpha02
がリリースされました。バージョン 1.0.0-alpha02 に含まれる commit については、こちらをご覧ください。
これは 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
インスタンスの作成に失敗した場合、スリープと再試行を行います。これにより、サーフェスを安全なコーデックから別のコーデックに切り替えたときに一部のデバイスで発生する問題を回避できます(#8696)。MediaCodecAdapter.getMetrics()
を追加して、ユーザーがMediaCodec
から指標データを取得できるようにしました(#9766)。- Maven の依存関係の解決を修正しました(#8353)。
- 低レイテンシ機能がないライブ ストリームや、速度設定のユーザー リクエストがないライブ ストリームについて、自動速度調整を無効にしました(#9329)。
DecoderCounters#inputBufferCount
からqueuedInputBufferCount
に名前を変更しました。SimpleExoPlayer.renderers
を非公開にしました。レンダラにはExoPlayer.getRenderer
を介してアクセスできます。Player.EventFlags
の値と一致するように、一部のAnalyticsListener.EventFlags
定数値を更新しました。AnalyticsCollector
をインターフェースとデフォルトの実装に分割し、アプリで必要ない場合は R8 によって削除されるようにしました。
- 保護されたメソッド
- トラック選択:
- トラック選択での優先動画ロールフラグをサポートしました(#9402)。
- 複数の動画トラックを選択する際に優先する MIME タイプとロールフラグが考慮されるように、動画トラック選択ロジックを更新しました(#9519)。
- デコーダとハードウェアのサポートレベルが同じである自動選択形式のみを選択するように、動画と音声のトラック選択ロジックを更新しました(#9565)。
- プライマリのハードウェア アクセラレーテッド デコーダで複数のコーデックがサポートされている場合は、より効率的なコーデックを優先するように、動画トラック選択ロジックを更新しました(#4835)。
- 技術的なトラック選択の制約(優先 MIME タイプ、最大チャンネル数など)よりも、音声コンテンツの設定(「デフォルト」の音声トラック、システム ロケール言語に一致するトラックなど)を優先します。
- あるトラック グループをオーバーライドしても同じタイプの他のトラック グループが無効にならないという、トラック選択の問題を修正しました(#9675)。
- 空でないトラックと空のトラックのオーバーライドが混在していると正しく適用されないという、トラック選択の問題を修正しました(#9649)。
TrackGroupArray
内のTrackGroup
の重複を禁止しました。TrackGroup
コンストラクタでid
を設定することで、TrackGroup
が常に区別できるようになります。これにより、アクティブなトラックのオーバーライドでアプリをバックグラウンド化した後に再生を再開するとクラッシュする問題が修正されます(#9718)。- 再生がライブエッジに非常に近い場合でも、十分なネットワーク帯域幅があれば品質を向上させられるように、
AdaptiveTrackSelection
のロジックを修正しました(#9784)。
- 動画:
- 必要に応じて互換性のある H264/H265 デコーダを使用するように、ドルビー ビジョンのデコーダ フォールバック ロジックを修正しました。
- オーディオ:
- 必要に応じて互換性のある E-AC3 デコーダを使用するように、ドルビー アトモス(E-AC3-JOC)のデコーダ フォールバック ロジックを修正しました。
null
ではなくAudioCapabilities.DEFAULT_AUDIO_CAPABILITIES
を明示的に渡すことが必須になるように、AudioCapabilities
API を変更しました。AudioTrackBufferSizeProvider
をDefaultAudioSink
に挿入することで、AudioTrack
バッファサイズの計算をカスタマイズできるようにしました(#8891)。- リクエストされたバッファサイズが 1 MB を超える場合は、
AudioTrack
の作成を再試行します(#9712)。
- エクストラクタ:
- テキスト:
- DRM:
DrmSessionManager.(pre)acquireSession
からplaybackLooper
を削除しました。カスタムのMediaSource
でアプリがDrmSessionManager
を使用している場合は、代わりにplaybackLooper
をDrmSessionManager.setPlayer
に渡す必要があります。
- 広告の再生 / IMA:
- IMA ダイナミック広告挿入(DAI)のサポートを追加しました(#8213)。
- 広告グループをリセットしてもう一度再生できるように、
AdPlaybackState
にメソッドを追加しました(#9615)。 - 広告の再生時、再生速度 1.0 を強制適用します(#9018)。
- 広告グループの読み込みに失敗するとすぐに再生がリセットされる問題を修正しました(#9929)。
- UI:
- DASH:
- HLS:
- RTSP:
- Transformer:
- 必要な最小 API バージョンを 21 に増やしました。
TransformationException
は、変換中に発生するエラーの記述に使用されるようになりました。- 変換オプションを指定するための
TransformationRequest
を追加しました。 - 複数のリスナーを登録できるようになりました。
- コーデック出力が部分的に読み取られたときに Transformer が停止する問題を修正しました。
- muxer スローを解放するときに
Transformer.getProgress
で発生する可能性がある NPE を修正しました。 - 変換を適用するためのデモアプリを追加しました。
- MediaSession 拡張機能:
- デフォルトで、停止時に
MediaSessionConnector
がプレイリストを消去するようになりました。プレイリストを保持する必要があるアプリは、コネクタでsetClearMediaItemsOnStop(false)
を呼び出すことができます。
- デフォルトで、停止時に
- Cast 拡張機能:
- FFmpeg 拡張機能:
build_ffmpeg.sh
が GNU ではなく LLVM の bin utils に依存するようになりました(#9933)。
- Android 12 の互換性:
com.google.android.gms:play-services-cast-framework:20.1.0
に依存するように Cast 拡張機能をアップグレードしました。以前のバージョンのplay-services-cast-framework
は Android 12 をターゲットとするアプリに対応しておらず、PendingIntent
の作成時にIllegalArgumentException
でクラッシュします(#9528)。
- サポートが終了したシンボルを削除しました。
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 に含まれる commit については、こちらをご覧ください。
新機能
Media3 は、ExoPlayer を含むメディア サポート ライブラリの新しいホームです。最初のアルファ版には、メディアのユースケースを実装するためのライブラリの機能の初期実装が含まれています。
- カスタマイズと拡張が簡単な Android 用のアプリレベルのメディア プレーヤーである ExoPlayer。
- 再生を公開して制御するためのメディア セッション機能。この新しいセッション モジュールは、ExoPlayer と同じ
Player
インターフェースを使用します。 - メディア再生のユーザー インターフェースを作成するための UI コンポーネント。
- IMA SDK による広告の挿入など、ExoPlayer で使用する他のライブラリの機能をラップするモジュール。
詳しくは、Media3 GitHub プロジェクトをご覧ください。
ExoPlayer は、以前は別の ExoPlayer GitHub プロジェクトでホストされていました。Media3 のパッケージ名は androidx.media3.exoplayer
です。しばらくの間、ExoPlayer GitHub プロジェクトの維持とリリースを続け、アプリが Media3 に移行できるようにする予定です。Media3 には、ExoPlayer のすべてのモジュールの置き換えが用意されています。ただし、以前の media2 と mediasession 拡張機能は新しい media3-session
モジュールに置き換えられています。これにより、アダプターやコネクタのクラスを使用する必要なく、プレーヤーとメディア セッションを直接統合できます。