mirror of
https://github.com/samsonjs/media.git
synced 2026-04-23 14:15:48 +00:00
Add DRM protected content to the Cast demo APP
Allows testing DRM-protected content in the receiver app. Includes the DRM-related data to the media items, but does not add support for DRM content in the local player yet. PiperOrigin-RevId: 229932329
This commit is contained in:
parent
310925ca12
commit
6a55fda66d
2 changed files with 44 additions and 11 deletions
|
|
@ -15,10 +15,14 @@
|
|||
*/
|
||||
package com.google.android.exoplayer2.castdemo;
|
||||
|
||||
import android.net.Uri;
|
||||
import android.support.annotation.Nullable;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/** Utility methods and constants for the Cast demo application. */
|
||||
/* package */ final class DemoUtil {
|
||||
|
|
@ -32,6 +36,16 @@ import java.util.List;
|
|||
public final String name;
|
||||
/** The mime type of the sample media content. */
|
||||
public final String mimeType;
|
||||
/**
|
||||
* The {@link UUID} of the DRM scheme that protects the content, or null if the content is not
|
||||
* DRM-protected.
|
||||
*/
|
||||
@Nullable public final UUID drmSchemeUuid;
|
||||
/**
|
||||
* The url from which players should obtain DRM licenses, or null if the content is not
|
||||
* DRM-protected.
|
||||
*/
|
||||
@Nullable public final Uri licenseServerUri;
|
||||
|
||||
/**
|
||||
* @param uri See {@link #uri}.
|
||||
|
|
@ -39,9 +53,21 @@ import java.util.List;
|
|||
* @param mimeType See {@link #mimeType}.
|
||||
*/
|
||||
public Sample(String uri, String name, String mimeType) {
|
||||
this(uri, name, mimeType, /* drmSchemeUuid= */ null, /* licenseServerUriString= */ null);
|
||||
}
|
||||
|
||||
public Sample(
|
||||
String uri,
|
||||
String name,
|
||||
String mimeType,
|
||||
@Nullable UUID drmSchemeUuid,
|
||||
@Nullable String licenseServerUriString) {
|
||||
this.uri = uri;
|
||||
this.name = name;
|
||||
this.mimeType = mimeType;
|
||||
this.drmSchemeUuid = drmSchemeUuid;
|
||||
this.licenseServerUri =
|
||||
licenseServerUriString != null ? Uri.parse(licenseServerUriString) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -65,22 +91,23 @@ import java.util.List;
|
|||
samples.add(
|
||||
new Sample(
|
||||
"https://storage.googleapis.com/wvmedia/clear/h264/tears/tears.mpd",
|
||||
"DASH (clear,MP4,H264)",
|
||||
"Clear DASH: Tears",
|
||||
MIME_TYPE_DASH));
|
||||
samples.add(
|
||||
new Sample(
|
||||
"https://commondatastorage.googleapis.com/gtv-videos-bucket/CastVideos/"
|
||||
+ "hls/TearsOfSteel.m3u8",
|
||||
"Tears of Steel (HLS)",
|
||||
"Clear HLS: Tears of Steel",
|
||||
MIME_TYPE_HLS));
|
||||
samples.add(
|
||||
new Sample(
|
||||
"https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3"
|
||||
+ "/bipbop_4x3_variant.m3u8",
|
||||
"HLS Basic (TS)",
|
||||
"Clear HLS: Basic 4x3",
|
||||
MIME_TYPE_HLS));
|
||||
samples.add(
|
||||
new Sample("https://html5demos.com/assets/dizzy.mp4", "Dizzy (MP4)", MIME_TYPE_VIDEO_MP4));
|
||||
new Sample(
|
||||
"https://html5demos.com/assets/dizzy.mp4", "Clear MP4: Dizzy", MIME_TYPE_VIDEO_MP4));
|
||||
SAMPLES = Collections.unmodifiableList(samples);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ import com.google.android.gms.cast.CastMediaControlIntent;
|
|||
import com.google.android.gms.cast.framework.CastButtonFactory;
|
||||
import com.google.android.gms.cast.framework.CastContext;
|
||||
import com.google.android.gms.dynamite.DynamiteModule;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* An activity that plays video using {@link SimpleExoPlayer} and supports casting using ExoPlayer's
|
||||
|
|
@ -182,13 +183,18 @@ public class MainActivity extends AppCompatActivity
|
|||
sampleList.setOnItemClickListener(
|
||||
(parent, view, position, id) -> {
|
||||
DemoUtil.Sample sample = DemoUtil.SAMPLES.get(position);
|
||||
playerManager.addItem(
|
||||
mediaItemBuilder
|
||||
.clear()
|
||||
.setMedia(sample.uri)
|
||||
.setTitle(sample.name)
|
||||
.setMimeType(sample.mimeType)
|
||||
.build());
|
||||
mediaItemBuilder
|
||||
.clear()
|
||||
.setMedia(sample.uri)
|
||||
.setTitle(sample.name)
|
||||
.setMimeType(sample.mimeType);
|
||||
if (sample.drmSchemeUuid != null) {
|
||||
mediaItemBuilder.setDrmSchemes(
|
||||
Collections.singletonList(
|
||||
new MediaItem.DrmScheme(
|
||||
sample.drmSchemeUuid, new MediaItem.UriBundle(sample.licenseServerUri))));
|
||||
}
|
||||
playerManager.addItem(mediaItemBuilder.build());
|
||||
mediaQueueListAdapter.notifyItemInserted(playerManager.getMediaQueueSize() - 1);
|
||||
});
|
||||
return dialogList;
|
||||
|
|
|
|||
Loading…
Reference in a new issue