277 lines
6.4 KiB
C#
277 lines
6.4 KiB
C#
![]() |
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.Networking;
|
||
|
using System.Security.Cryptography;
|
||
|
using System.Text;
|
||
|
using Newtonsoft.Json;
|
||
|
using RenderHeads.Media.AVProVideo;
|
||
|
|
||
|
public class VideoPlayerUrlTool : MonoBehaviour
|
||
|
{
|
||
|
public static VideoPlayerUrlTool instance;
|
||
|
private string LiveStreamurl = "https://openapi.lechange.cn/openapi/getLiveStreamInfo";
|
||
|
private string liveListurl = "http://139.224.250.209:18801/api/get_live_list"; //https://openapi.lechange.cn/openapi/liveList
|
||
|
private string tokenurl = "http://139.224.250.209:18801/api/get_token"; // https://openapi.lechange.cn/openapi/accessToken
|
||
|
private LCToken token;
|
||
|
private string appID = "lc82079017516e4e87";
|
||
|
private string appSecret = "91bf33ef0de14dc4b3c36c466e02f5";
|
||
|
private long time;
|
||
|
private string nonce;
|
||
|
private string SIGN_TEMPLATE;
|
||
|
private string sign;
|
||
|
string tokenjsonData="";
|
||
|
private string toKenData;
|
||
|
private LCLiveListData listData;
|
||
|
public LClives[] LClive;
|
||
|
public UMPTool[] videos;
|
||
|
|
||
|
private void Awake()
|
||
|
{
|
||
|
instance = this;
|
||
|
}
|
||
|
|
||
|
void Start()
|
||
|
{
|
||
|
StartCoroutine(ToKenPost());
|
||
|
}
|
||
|
|
||
|
|
||
|
public static string Encrypt(string input)
|
||
|
{
|
||
|
if (string.IsNullOrEmpty(input)) return string.Empty;
|
||
|
|
||
|
using (MD5 md5 = MD5.Create())
|
||
|
{
|
||
|
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
|
||
|
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
||
|
|
||
|
StringBuilder sb = new StringBuilder();
|
||
|
for (int i = 0; i < hashBytes.Length; i++)
|
||
|
{
|
||
|
sb.Append(hashBytes[i].ToString("x2")); // 小写十六进制
|
||
|
}
|
||
|
return sb.ToString();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
IEnumerator ToKenPost(){
|
||
|
|
||
|
UnityWebRequest uwr = new UnityWebRequest(tokenurl, "POST");
|
||
|
uwr.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(tokenjsonData));
|
||
|
uwr.downloadHandler = new DownloadHandlerBuffer();
|
||
|
|
||
|
//如果有请求头,根据具体字段要求设置
|
||
|
uwr.SetRequestHeader("Content-Type", "application/json");
|
||
|
uwr.SetRequestHeader("app-version", "V1");
|
||
|
|
||
|
yield return uwr.SendWebRequest();
|
||
|
toKenData = JsonConvert.DeserializeObject<Ftoken>(uwr.downloadHandler.text).result.data.accessToken;
|
||
|
|
||
|
if (uwr.isHttpError || uwr.isNetworkError)
|
||
|
{
|
||
|
Debug.LogError("Login Error: " + uwr.error);
|
||
|
}
|
||
|
|
||
|
StartCoroutine(FlvPost());
|
||
|
}
|
||
|
|
||
|
IEnumerator FlvPost(){
|
||
|
FGetlivelist getlivelist = new FGetlivelist();
|
||
|
|
||
|
getlivelist.token = toKenData;
|
||
|
getlivelist.queryRange = "1-99";
|
||
|
|
||
|
|
||
|
string listjsonData = JsonConvert.SerializeObject(getlivelist);
|
||
|
|
||
|
UnityWebRequest uwr = new UnityWebRequest(liveListurl, "POST");
|
||
|
uwr.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(listjsonData));
|
||
|
uwr.downloadHandler = new DownloadHandlerBuffer();
|
||
|
|
||
|
//如果有请求头,根据具体字段要求设置
|
||
|
uwr.SetRequestHeader("Content-Type", "application/json");
|
||
|
uwr.SetRequestHeader("app-version", "V1");
|
||
|
|
||
|
yield return uwr.SendWebRequest();
|
||
|
|
||
|
LCLiveListData flv = JsonConvert.DeserializeObject<LCLiveListData>(uwr.downloadHandler.text);
|
||
|
LClive = flv.result.data.lives;
|
||
|
|
||
|
for (int i = 0; i < videos.Length; i++)
|
||
|
{
|
||
|
for (int j = 0; j < LClive.Length; j++)
|
||
|
{
|
||
|
if (LClive[j].deviceId == videos[i].deviceId && LClive[j].channelId == videos[i].channelId)
|
||
|
{
|
||
|
videos[i].GetComponent<UMPTool>().mediaPlayer
|
||
|
.OpenMedia(new MediaPath(LClive[j].streams[0].hls, MediaPathType.AbsolutePathOrURL));
|
||
|
|
||
|
// videos[i].GetComponent<UMPTool>().mediaPath =
|
||
|
// new MediaPath(LClive[j].streams[0].hls, MediaPathType.AbsolutePathOrURL);
|
||
|
videos[i].Init();
|
||
|
continue;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
UMPController.Inst.UMPPlayer("页面一(首页)");
|
||
|
|
||
|
if (uwr.isHttpError || uwr.isNetworkError)
|
||
|
{
|
||
|
Debug.LogError("Login Error: " + uwr.error);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
class LCSystem {
|
||
|
public string ver;
|
||
|
public string appId;
|
||
|
public string sign;
|
||
|
public long time;
|
||
|
public string nonce;
|
||
|
}
|
||
|
|
||
|
class LCGetToken{
|
||
|
public LCSystem system;
|
||
|
public string id;
|
||
|
public string[] param;
|
||
|
}
|
||
|
|
||
|
class lCresultData
|
||
|
{
|
||
|
public int expireTime;
|
||
|
public string accessToken;
|
||
|
}
|
||
|
|
||
|
class lCresult
|
||
|
{
|
||
|
public string msg;
|
||
|
public string code;
|
||
|
public lCresultData data;
|
||
|
}
|
||
|
|
||
|
class LCToken
|
||
|
{
|
||
|
public lCresult result;
|
||
|
public string id;
|
||
|
}
|
||
|
|
||
|
class LCLiveListParam{
|
||
|
public string token;
|
||
|
public string queryRange;
|
||
|
}
|
||
|
|
||
|
class LCLiveList
|
||
|
{
|
||
|
public LCSystem system;
|
||
|
public string id;
|
||
|
public LCLiveListParam param;
|
||
|
}
|
||
|
|
||
|
public class LCsteam
|
||
|
{
|
||
|
public string coverUrl;
|
||
|
public int streamId;
|
||
|
public string hls;
|
||
|
}
|
||
|
|
||
|
public class LCjob
|
||
|
{
|
||
|
public string period;
|
||
|
public bool status;
|
||
|
}
|
||
|
|
||
|
public class LClives
|
||
|
{
|
||
|
public int liveType;
|
||
|
public int coverUpdate;
|
||
|
public LCsteam[] streams;
|
||
|
public string liveToken;
|
||
|
public LCjob[] job;
|
||
|
public string deviceId;
|
||
|
public int liveStatus;
|
||
|
public string channelId;
|
||
|
}
|
||
|
|
||
|
class LCLiveresultData
|
||
|
{
|
||
|
public LClives[] lives;
|
||
|
public int count;
|
||
|
}
|
||
|
|
||
|
class LCliveResult
|
||
|
{
|
||
|
public string msg;
|
||
|
public string code;
|
||
|
public LCLiveresultData data;
|
||
|
}
|
||
|
|
||
|
class LCLiveListData
|
||
|
{
|
||
|
public LCliveResult result;
|
||
|
public string id;
|
||
|
}
|
||
|
|
||
|
class LCLiveStreamParam
|
||
|
{
|
||
|
public string deviceId;
|
||
|
public string channelId;
|
||
|
public string token;
|
||
|
}
|
||
|
|
||
|
class LCLiveStream
|
||
|
{
|
||
|
public LCSystem system;
|
||
|
public string id;
|
||
|
public LCLiveStreamParam param;
|
||
|
}
|
||
|
|
||
|
class LCFlvresult
|
||
|
{
|
||
|
public string msg;
|
||
|
public string code;
|
||
|
public LCFlvdata data;
|
||
|
}
|
||
|
|
||
|
class LCFlvdata
|
||
|
{
|
||
|
public string deviceId;
|
||
|
public string channelId;
|
||
|
public string flv;
|
||
|
public string flvHD;
|
||
|
}
|
||
|
|
||
|
class LCFlv
|
||
|
{
|
||
|
public LCFlvresult result;
|
||
|
public string id;
|
||
|
}
|
||
|
|
||
|
class Fdata
|
||
|
{
|
||
|
public string expireTime;
|
||
|
public string accessToken;
|
||
|
}
|
||
|
|
||
|
class Fresult
|
||
|
{
|
||
|
public string msg;
|
||
|
public string code;
|
||
|
public Fdata data;
|
||
|
}
|
||
|
|
||
|
class Ftoken
|
||
|
{
|
||
|
public Fresult result;
|
||
|
public string id;
|
||
|
}
|
||
|
|
||
|
class FGetlivelist
|
||
|
{
|
||
|
public string token;
|
||
|
public string queryRange;
|
||
|
}
|