diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java index a1a78e91d7..cf76c988ae 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java @@ -126,11 +126,14 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { if (mediaItem.mediaMetadata.trackNumber != null) { metadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, mediaItem.mediaMetadata.trackNumber); } - + String contentUrl = mediaItem.localConfiguration.uri.toString(); + String contentId = + mediaItem.mediaId.equals(MediaItem.DEFAULT_MEDIA_ID) ? contentUrl : mediaItem.mediaId; MediaInfo mediaInfo = - new MediaInfo.Builder(mediaItem.localConfiguration.uri.toString()) + new MediaInfo.Builder(contentId) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setContentType(mediaItem.localConfiguration.mimeType) + .setContentUrl(contentUrl) .setMetadata(metadata) .setCustomData(getCustomData(mediaItem)) .build(); diff --git a/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java b/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java index 1092ecd8da..e4b9771a8a 100644 --- a/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java +++ b/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java @@ -50,6 +50,7 @@ public class DefaultMediaItemConverterTest { MediaItem.Builder builder = new MediaItem.Builder(); MediaItem item = builder + .setMediaId("fooBar") .setUri(Uri.parse("http://example.com")) .setMediaMetadata(MediaMetadata.EMPTY) .setMimeType(MimeTypes.APPLICATION_MPD) @@ -66,4 +67,45 @@ public class DefaultMediaItemConverterTest { assertThat(reconstructedItem).isEqualTo(item); } + + @Test + public void toMediaQueueItem_nonDefaultMediaId_usedAsContentId() { + MediaItem.Builder builder = new MediaItem.Builder(); + MediaItem item = + builder + .setMediaId("fooBar") + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + DefaultMediaItemConverter converter = new DefaultMediaItemConverter(); + MediaQueueItem queueItem = converter.toMediaQueueItem(item); + + assertThat(queueItem.getMedia().getContentId()).isEqualTo("fooBar"); + } + + @Test + public void toMediaQueueItem_defaultMediaId_uriAsContentId() { + DefaultMediaItemConverter converter = new DefaultMediaItemConverter(); + MediaItem mediaItem = + new MediaItem.Builder() + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + MediaQueueItem queueItem = converter.toMediaQueueItem(mediaItem); + + assertThat(queueItem.getMedia().getContentId()).isEqualTo("http://example.com"); + + MediaItem secondMediaItem = + new MediaItem.Builder() + .setMediaId(MediaItem.DEFAULT_MEDIA_ID) + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + MediaQueueItem secondQueueItem = converter.toMediaQueueItem(secondMediaItem); + + assertThat(secondQueueItem.getMedia().getContentId()).isEqualTo("http://example.com"); + } }