ExoPlayer, FMP4 kapsayıcı biçimiyle SmoothStreaming'i destekler. Medya akışları Para kazanma özelliği devre dışı bırakılmalıdır; diğer bir deyişle, video, ses ve metin ayrı ayrı tanımlanmalıdır. SmoothStreaming manifestindeki StreamIndex öğeleri. İçerikteki ses ve video örnek biçimleri de desteklenmelidir (bkz. örnek biçimler bölümüne bakın).
Özellik | Destekleniyor | Yorumlar |
---|---|---|
Kapsayıcılar | ||
FMP4 | EVET | Yalnızca devre dışı bırakılan akışlar |
Altyazılar | ||
TTML | EVET | FMP4'e yerleştirilmiş |
İçerik koruması | ||
PlayReady SL2000 | EVET | Yalnızca Android TV |
Canlı oynatma | ||
Düzenli canlı oynatma | EVET | |
Ortak Medya İstemci Verileri (CMCD) | EVET | Entegrasyon Kılavuzu |
MediaItem'i Kullanma
SmoothStreaming akışı oynatmak için SmoothStreaming modülünü kullanabilirsiniz.
Kotlin
implementation("androidx.media3:media3-exoplayer-smoothstreaming:1.4.1")
Eski
implementation "androidx.media3:media3-exoplayer-smoothstreaming:1.4.1"
Ardından SmoothStreaming manifest URI'si için MediaItem
oluşturup aktarabilirsiniz.
gönderir.
Kotlin
// Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(ssUri)) // Prepare the player. player.prepare()
Java
// Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media item to be played. player.setMediaItem(MediaItem.fromUri(ssUri)); // Prepare the player. player.prepare();
URI'niz .ism/Manifest
ile bitmiyorsa şunu iletebilirsiniz:
Açıkça belirtmek için MimeTypes.APPLICATION_SS
- setMimeType
/ MediaItem.Builder
içeriğin türünü belirtin.
ExoPlayer, 2022'de bu oyunda tanımlanan temsiller arasında otomatik olarak manifestosunu oluşturduk.
SsMediaSource'u kullanma
Daha fazla özelleştirme seçeneği için SsMediaSource
oluşturup iletebilirsiniz
doğrudan oynatıcıya gönderilir.MediaItem
Kotlin
// Create a data source factory. val dataSourceFactory: DataSource.Factory = DefaultHttpDataSource.Factory() // Create a SmoothStreaming media source pointing to a manifest uri. val mediaSource: MediaSource = SsMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(ssUri)) // Create a player instance. val player = ExoPlayer.Builder(context).build() // Set the media source to be played. player.setMediaSource(mediaSource) // Prepare the player. player.prepare()
Java
// Create a data source factory. DataSource.Factory dataSourceFactory = new DefaultHttpDataSource.Factory(); // Create a SmoothStreaming media source pointing to a manifest uri. MediaSource mediaSource = new SsMediaSource.Factory(dataSourceFactory).createMediaSource(MediaItem.fromUri(ssUri)); // Create a player instance. ExoPlayer player = new ExoPlayer.Builder(context).build(); // Set the media source to be played. player.setMediaSource(mediaSource); // Prepare the player. player.prepare();
Manifest dosyasına erişme
Player.getCurrentManifest
öğesini çağırarak geçerli manifesti alabilirsiniz.
SmoothStreaming için döndürülen nesneyi SsManifest
hedefine yayınlamanız gerekir. İlgili içeriği oluşturmak için kullanılan
Player.Listener
için onTimelineChanged
geri çağırması her zaman
manifest yüklendi. Bu durum yalnızca seç-izle içeriklerde ve
bunu, canlı içeriklerde de yapabilirsiniz. Aşağıdaki kod snippet'i bir uygulamanın,
manifest dosyası her yüklendiğinde bir işlem yapabilir.
Kotlin
player.addListener( object : Player.Listener { override fun onTimelineChanged(timeline: Timeline, @TimelineChangeReason reason: Int) { val manifest = player.currentManifest if (manifest is SsManifest) { // Do something with the manifest. } } } )
Java
player.addListener( new Player.Listener() { @Override public void onTimelineChanged( Timeline timeline, @Player.TimelineChangeReason int reason) { Object manifest = player.getCurrentManifest(); if (manifest != null) { SsManifest ssManifest = (SsManifest) manifest; // Do something with the manifest. } } });
Oynatmayı özelleştirme
ExoPlayer, oynatma deneyimini kendi tercihinize göre uyarlamanız için çeşitli yöntemler sunar. iyi bir fikir olabilir. Örnekler için Özelleştirme sayfasına göz atın.