pull/137/head
FongMi 3 years ago
parent d8da402721
commit 956d84d459
  1. 10
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  2. 33
      app/src/main/java/com/fongmi/android/tv/bean/Drm.java
  3. 14
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java

@ -37,8 +37,6 @@ public class Channel {
private String referer;
@SerializedName("header")
private JsonElement header;
@SerializedName("drm")
private Drm drm;
private boolean selected;
private Group group;
@ -133,14 +131,6 @@ public class Channel {
this.header = header;
}
public Drm getDrm() {
return drm;
}
public void setDrm(Drm drm) {
this.drm = drm;
}
public Group getGroup() {
return group;
}

@ -1,33 +0,0 @@
package com.fongmi.android.tv.bean;
import androidx.media3.common.C;
import androidx.media3.common.MediaItem;
import com.google.gson.annotations.SerializedName;
import java.nio.charset.StandardCharsets;
public class Drm {
@SerializedName("licenseType")
private String licenseType;
@SerializedName("licenseKey")
private String licenseKey;
public Drm(String licenseType, String licenseKey) {
this.licenseType = licenseType;
this.licenseKey = licenseKey;
}
public String getLicenseType() {
return licenseType;
}
public String getLicenseKey() {
return licenseKey;
}
public MediaItem.DrmConfiguration get() {
return new MediaItem.DrmConfiguration.Builder(C.CLEARKEY_UUID).setKeySetId(getLicenseKey().getBytes(StandardCharsets.UTF_8)).build();
}
}

@ -37,7 +37,6 @@ import androidx.media3.ui.CaptionStyleCompat;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Drm;
import com.fongmi.android.tv.bean.Result;
import com.fongmi.android.tv.bean.Sub;
import com.fongmi.android.tv.utils.Sniffer;
@ -99,28 +98,27 @@ public class ExoUtil {
}
public static MediaSource getSource(Result result, int errorCode) {
return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), null, errorCode);
return getSource(result.getHeaders(), result.getRealUrl(), result.getFormat(), result.getSubs(), errorCode);
}
public static MediaSource getSource(Channel channel, int errorCode) {
return getSource(channel.getHeaders(), channel.getUrl(), null, Collections.emptyList(), channel.getDrm(), errorCode);
return getSource(channel.getHeaders(), channel.getUrl(), null, Collections.emptyList(), errorCode);
}
public static MediaSource getSource(Map<String, String> headers, String url, int errorCode) {
return getSource(headers, url, null, Collections.emptyList(), null, errorCode);
return getSource(headers, url, null, Collections.emptyList(), errorCode);
}
private static MediaSource getSource(Map<String, String> headers, String url, String format, List<Sub> subs, Drm drm, int errorCode) {
private static MediaSource getSource(Map<String, String> headers, String url, String format, List<Sub> subs, int errorCode) {
Uri uri = Uri.parse(url.trim().replace("\\", ""));
String mimeType = getMimeType(format, errorCode);
if (uri.getUserInfo() != null) headers.put(HttpHeaders.AUTHORIZATION, "Basic " + Util.base64(uri.getUserInfo()));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs, drm));
return new DefaultMediaSourceFactory(getDataSourceFactory(headers), getExtractorsFactory()).createMediaSource(getMediaItem(uri, mimeType, subs));
}
private static MediaItem getMediaItem(Uri uri, String mimeType, List<Sub> subs, Drm drm) {
private static MediaItem getMediaItem(Uri uri, String mimeType, List<Sub> subs) {
MediaItem.Builder builder = new MediaItem.Builder().setUri(uri);
if (subs.size() > 0) builder.setSubtitleConfigurations(getSubtitles(subs));
if (drm != null) builder.setDrmConfiguration(drm.get());
builder.setAllowChunklessPreparation(Players.isHard());
if (mimeType != null) builder.setMimeType(mimeType);
builder.setAds(Sniffer.getRegex(uri));

Loading…
Cancel
Save