|
|
|
|
@ -6,7 +6,6 @@ import android.net.Uri; |
|
|
|
|
import com.fongmi.android.tv.App; |
|
|
|
|
import com.fongmi.android.tv.bean.Result; |
|
|
|
|
import com.github.catvod.crawler.SpiderDebug; |
|
|
|
|
import com.google.android.exoplayer2.C; |
|
|
|
|
import com.google.android.exoplayer2.DefaultRenderersFactory; |
|
|
|
|
import com.google.android.exoplayer2.ExoPlayer; |
|
|
|
|
import com.google.android.exoplayer2.MediaItem; |
|
|
|
|
@ -20,8 +19,10 @@ import com.google.android.exoplayer2.upstream.DefaultDataSource; |
|
|
|
|
import com.google.android.exoplayer2.upstream.DefaultHttpDataSource; |
|
|
|
|
import com.google.android.exoplayer2.upstream.HttpDataSource; |
|
|
|
|
import com.google.android.exoplayer2.util.MimeTypes; |
|
|
|
|
import com.google.common.collect.ImmutableList; |
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.Collections; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
public class ExoUtil { |
|
|
|
|
@ -44,18 +45,25 @@ public class ExoUtil { |
|
|
|
|
return getSource(headers, url, null); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static MediaSource getSource(Map<String, String> headers, String url, MediaItem.SubtitleConfiguration config) { |
|
|
|
|
private static MediaSource getSource(Map<String, String> headers, String url, List<MediaItem.SubtitleConfiguration> config) { |
|
|
|
|
SpiderDebug.log(url); |
|
|
|
|
Uri videoUri = Uri.parse(url); |
|
|
|
|
DataSource.Factory factory = getFactory(headers, url); |
|
|
|
|
MediaItem.Builder builder = new MediaItem.Builder().setUri(videoUri); |
|
|
|
|
if (url.contains("php") || url.contains("m3u8")) builder.setMimeType(MimeTypes.APPLICATION_M3U8); |
|
|
|
|
if (config != null) builder.setSubtitleConfigurations(ImmutableList.of(config)); |
|
|
|
|
if (config.size() > 0) builder.setSubtitleConfigurations(config); |
|
|
|
|
return new DefaultMediaSourceFactory(factory).createMediaSource(builder.build()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static MediaItem.SubtitleConfiguration getConfig(Result result) { |
|
|
|
|
return result.getSub().isEmpty() ? null : new MediaItem.SubtitleConfiguration.Builder(Uri.parse(result.getSub())).setLabel("Spider").setMimeType(MimeTypes.APPLICATION_SUBRIP).setSelectionFlags(C.SELECTION_FLAG_DEFAULT).build(); |
|
|
|
|
private static List<MediaItem.SubtitleConfiguration> getConfig(Result result) { |
|
|
|
|
if (result.getSub().isEmpty()) return Collections.emptyList(); |
|
|
|
|
List<MediaItem.SubtitleConfiguration> items = new ArrayList<>(); |
|
|
|
|
String[] subs = result.getSub().split("\\$\\$\\$"); |
|
|
|
|
for (String sub : subs) { |
|
|
|
|
String[] divide = sub.split("#"); |
|
|
|
|
items.add(new MediaItem.SubtitleConfiguration.Builder(Uri.parse(divide[2])).setLabel(divide[0]).setMimeType(divide[1]).build()); |
|
|
|
|
} |
|
|
|
|
return items; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static DataSource.Factory getFactory(Map<String, String> headers, String url) { |
|
|
|
|
|