From dab1353aadd4a093d29e1d418f012d42964e9d50 Mon Sep 17 00:00:00 2001 From: bachinger Date: Tue, 16 May 2023 12:06:03 +0100 Subject: [PATCH] Enable live DASH stream for IMA DAI This change enables the IMA extension to play live DASH streams with DAI support. Samples streams can be found and played in the main demo app. Issue: google/ExoPlayer#10912 #minor-release PiperOrigin-RevId: 532407708 --- RELEASENOTES.md | 4 +++ demos/main/src/main/assets/media.exolist.json | 26 +++++++++---------- .../ImaServerSideAdInsertionUriBuilder.java | 4 --- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index c458968479..eff2bba439 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -6,6 +6,10 @@ * Add `Player.replaceMediaItem(s)` as a shortcut to adding and removing items at the same position ([#8046](https://github.com/google/ExoPlayer/issues/8046)). +* IMA extension: + * Enable multi-period live DASH streams for DAI. Please note that the + current implementation does not yet support seeking in live streams + ([#10912](https://github.com/google/ExoPlayer/issues/10912)). * Session: * Add `androidx.media3.session.MediaButtonReceiver` to enable apps to implement playback resumption with media button events sent by, for diff --git a/demos/main/src/main/assets/media.exolist.json b/demos/main/src/main/assets/media.exolist.json index ac7b5ce749..3acef825d1 100644 --- a/demos/main/src/main/assets/media.exolist.json +++ b/demos/main/src/main/assets/media.exolist.json @@ -406,6 +406,18 @@ "name": "DASH VOD: Tears of Steel (11 periods, pre/mid/post), 2/5/2 ads [5/10s]", "uri": "ssai://dai.google.com/?contentSourceId=2559737&videoId=tos-dash&format=0&adsId=1" }, + { + "name": "DASH live: Tears of Steel (mid), 3 ads each [10 s]", + "uri": "ssai://dai.google.com/?assetKey=jNVjPZwzSkyeGiaNQTPqiQ&format=0&adsId=1" + }, + { + "name": "DASH live: New Tears of Steel (mid), 3 ads each [10 s]", + "uri": "ssai://dai.google.com/?assetKey=PSzZMzAkSXCmlJOWDmRj8Q&format=0&adsId=12" + }, + { + "name": "DASH live: Unencrypted stream with 30s ad breaks every minute", + "uri": "ssai://dai.google.com/?assetKey=0ndl1dJcRmKDUPxTRjvdog&format=0&adsId=21" + }, { "name": "Playlist: No ads - HLS VOD: Demo (skippable pre/post) - No ads", "playlist": [ @@ -434,20 +446,6 @@ } ] }, - { - "name": "Playlist: No ads - HLS Live: Big Buck Bunny (mid) - No ads", - "playlist": [ - { - "uri": "https://html5demos.com/assets/dizzy.mp4" - }, - { - "uri": "ssai://dai.google.com/?assetKey=sN_IYUG8STe1ZzhIIE_ksA&format=2&adsId=3" - }, - { - "uri": "https://html5demos.com/assets/dizzy.mp4" - } - ] - }, { "name": "Playlist: No ads - DASH VOD: Tears of Steel (11 periods, pre/mid/post) - No ads", "playlist": [ diff --git a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionUriBuilder.java b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionUriBuilder.java index 6a20ed5b5b..2342d6acea 100644 --- a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionUriBuilder.java +++ b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionUriBuilder.java @@ -381,10 +381,6 @@ public final class ImaServerSideAdInsertionUriBuilder { if (streamActivityMonitorId != null) { streamRequest.setStreamActivityMonitorId(streamActivityMonitorId); } - checkState( - streamRequest.getFormat() != StreamFormat.DASH - || TextUtils.isEmpty(streamRequest.getAssetKey()), - "DASH live streams are not supported yet."); return streamRequest; } }