Support zlive for live

pull/123/head
FongMi 3 years ago
parent 38c717d6b3
commit c69eefb152
  1. 2
      app/build.gradle
  2. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 4
      app/src/main/java/com/fongmi/android/tv/bean/Channel.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/model/LiveViewModel.java
  5. 55
      app/src/main/java/com/fongmi/android/tv/player/source/ZLive.java
  6. 1
      settings.gradle
  7. 1
      zlive/.gitignore
  8. 16
      zlive/build.gradle
  9. 2
      zlive/src/main/AndroidManifest.xml
  10. 13
      zlive/src/main/java/com/east/android/zlive/ZLive.java

@ -57,6 +57,7 @@ android {
dependencies {
implementation project(':drpy')
implementation project(':zlive')
implementation project(':catvod')
implementation project(':forcetech')
implementation project(':ijkplayer')
@ -79,6 +80,7 @@ dependencies {
implementation 'com.guolindev.permissionx:permissionx:1.7.1'
implementation 'com.squareup.okhttp3:okhttp:5.0.0-alpha.10'
implementation 'me.jessyan:autosize:1.2.1'
implementation 'net.java.dev.jna:jna:5.12.1'
implementation 'org.greenrobot:eventbus:3.3.1'
implementation 'org.nanohttpd:nanohttpd:2.3.1'
implementation 'org.apache.commons:commons-compress:1.20'

@ -31,6 +31,7 @@ import com.fongmi.android.tv.net.Callback;
import com.fongmi.android.tv.net.OkHttp;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.source.Force;
import com.fongmi.android.tv.player.source.ZLive;
import com.fongmi.android.tv.ui.custom.CustomKeyDownLive;
import com.fongmi.android.tv.ui.custom.CustomLiveListView;
import com.fongmi.android.tv.ui.custom.TrackSelectionDialog;
@ -699,6 +700,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
super.onDestroy();
mPlayers.release();
Force.get().stop();
ZLive.get().stop();
App.removeCallbacks(mR1, mR2, mR3, mR4, mR5, mR6);
}
}

@ -212,6 +212,10 @@ public class Channel {
return getScheme().startsWith("p") || getScheme().equals("mitv");
}
public boolean isZLive() {
return getScheme().startsWith("zlive");
}
public Map<String, String> getHeaders() {
HashMap<String, String> map = new HashMap<>();
if (getUa().isEmpty()) return map;

@ -7,6 +7,7 @@ import com.fongmi.android.tv.api.LiveParser;
import com.fongmi.android.tv.bean.Channel;
import com.fongmi.android.tv.bean.Live;
import com.fongmi.android.tv.player.source.Force;
import com.fongmi.android.tv.player.source.ZLive;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
@ -33,6 +34,7 @@ public class LiveViewModel extends ViewModel {
execute(() -> {
String url = item.getUrls().get(item.getLine());
if (item.isForce()) item.setUrl(Force.get().fetch(url));
if (item.isZLive()) item.setUrl(ZLive.get().fetch(url));
else item.setUrl(url);
return item;
});

@ -0,0 +1,55 @@
package com.fongmi.android.tv.player.source;
import com.fongmi.android.tv.net.OkHttp;
import com.fongmi.android.tv.utils.FileUtil;
public class ZLive {
private final String BASE = "http://127.0.0.1:6677/stream/";
private boolean init;
private static class Loader {
static volatile ZLive INSTANCE = new ZLive();
}
public static ZLive get() {
return Loader.INSTANCE;
}
public void init() {
com.east.android.zlive.ZLive.INSTANCE.OnLiveStart(6677);
init = true;
}
private String getLive(String uuid) {
return BASE + "live?uuid=" + uuid;
}
private String getOpen(String uuid) {
return BASE + "open?uuid=" + uuid;
}
public String fetch(String url) {
try {
if (!init) init();
String[] split = url.split("/");
String server = split[2];
String uuid = split[3];
String param = "&group=5850&mac=00:00:00:00:00:00&dir=";
String result = getLive(uuid) + "&server=" + server + param + FileUtil.getCachePath();
OkHttp.newCall(getOpen(uuid)).execute();
return result;
} catch (Exception e) {
e.printStackTrace();
return url;
}
}
public void stop() {
try {
if (init) com.east.android.zlive.ZLive.INSTANCE.OnLiveStop();
} catch (Throwable e) {
e.printStackTrace();
}
}
}

@ -16,6 +16,7 @@ dependencyResolutionManagement {
}
include ':app'
include ':drpy'
include ':zlive'
include ':tvbus'
include ':catvod'
include ':pyramid'

1
zlive/.gitignore vendored

@ -0,0 +1 @@
/build

@ -0,0 +1,16 @@
plugins {
id 'com.android.library'
}
android {
compileSdk 33
defaultConfig {
minSdk 21
targetSdk 29
}
}
dependencies {
api 'net.java.dev.jna:jna:5.12.1'
}

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.east.android.zlive" />

@ -0,0 +1,13 @@
package com.east.android.zlive;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface ZLive extends Library {
ZLive INSTANCE = Native.load("core", ZLive.class);
void OnLiveStart(long port);
void OnLiveStop();
}
Loading…
Cancel
Save