瀏覽代碼

修改获取监控播放地址的方法

Void_F 6 月之前
父節點
當前提交
92667c80d2

+ 1 - 1
Assets/AVProVideo/Demos/Scenes/Demo_MediaPlayer.unity

@@ -6664,7 +6664,7 @@ MonoBehaviour:
   _mediaReference: {fileID: 11400000, guid: 7b8a48f17a76b0d449f396690db75ebf, type: 2}
   _mediaPath:
     _pathType: 0
-    _path: http://10.123.10.18:18088/rtp/34020000001180000002_34020000001310000001/hls.m3u8
+    _path: http://10.123.10.18:18088/rtp/34020000001180000001_34020000001310000005/hls.m3u8
   _fallbackMediaHints:
     transparency: 0
     alphaPacking: 0

文件差異過大導致無法顯示
+ 98 - 1
Assets/Scene 1.unity


+ 6 - 0
Assets/Scripts/HttpGetData.cs

@@ -172,6 +172,12 @@ public enum ObsCtrlType
     zoomout,
 }
 
+[Serializable]
+public class ObsPlayUrlData
+{
+    public string hls;
+}
+
 
 #region B08
 

+ 31 - 9
Assets/Scripts/HttpHelper.cs

@@ -419,7 +419,9 @@ public class HttpHelper : MonoBehaviour
                         // }
                         // else
                         // {
-                        obsData.url = ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId);
+                        //obsData.url = await GetObsUrl(serverObsDatas.list[i].deviceId,serverObsDatas.list[i].channelId);
+                        //Debug.Log("!!!:"+obsData.url);
+                        //obsData.url = ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId);
                         //}
                         obsData.type = obsType.BuYuanObs;
                         obsData.deviceId = serverObsDatas.list[i].deviceId;
@@ -492,14 +494,8 @@ public class HttpHelper : MonoBehaviour
                         {
                             obsData.targetName = value;
                         }
-                        // if (i > 0)
-                        // {
-                        //     obsData.url =
-                        //         "http://www.chatgpt918.top:9080/rtp/34020000001180000001_34020000001310000001/hls.m3u8";
-                        // }
-                        // else
-                        // {
-                        obsData.url = ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId);
+                        //obsData.url = await GetObsUrl(serverObsDatas.list[i].deviceId,serverObsDatas.list[i].channelId);
+                        //ServerAddress.ObsSeverM3U8Address + string.Format("/rtp/{0}_{1}/hls.m3u8", serverObsDatas.list[i].deviceId, serverObsDatas.list[i].channelId);
                         //}
                         obsData.type = obsType.TaoKouObs;
                         obsData.deviceId = serverObsDatas.list[i].deviceId;
@@ -536,6 +532,32 @@ public class HttpHelper : MonoBehaviour
         }
     }
 
+     public async Task<string> GetObsUrl(string deviceId,string channelId)
+     {
+         string result = "";
+         string cmdUrl = ServerAddress.API_PlayStart;
+         cmdUrl += $"/{deviceId}/{channelId}";
+         Debug.Log($"send:{cmdUrl}");
+         UnityWebRequest requestData = UnityWebRequest.Get(cmdUrl);
+         await requestData.SendWebRequest();
+         if (requestData.result != UnityWebRequest.Result.Success)
+         {
+             Debug.LogWarning($"获取监控播放地址不成功,原因:返request不成功:" + requestData.downloadHandler.text);
+         }
+         else
+         {
+             Debug.Log(requestData.downloadHandler.text);
+             JObject jsonObject = JObject.Parse(requestData.downloadHandler.text);
+             // 提取data字段的值
+             JToken dataToken = jsonObject["data"];
+             ObsPlayUrlData urlData = JsonConvert.DeserializeObject<ObsPlayUrlData>(dataToken.ToString());
+             result = urlData.hls;
+             Debug.Log("获取到监控播放路径:"+result);
+         }
+         requestData.Dispose();
+         return result;
+     }
+
     public async Task InitYZTData3()
     {
         bool successInternet = true;

+ 1 - 1
Assets/Scripts/UI/Data/ObsData.cs

@@ -16,7 +16,7 @@ public enum obsType
 public class ObsData
 {
    public string name;
-   public string url;
+   //public string url;
    public string targetName;
    public obsType type;
    public Transform targetTransform;

+ 5 - 2
Assets/Scripts/UI/Tools/ObsPlayerPanel.cs

@@ -126,10 +126,13 @@ public class ObsPlayerPanel : MonoBehaviour
         this.gameObject.SetActive(false);
     }
     
-    public void SetObsData(ObsData _data)
+    public async void SetObsData(ObsData _data)
     {
         _targetName = _data.targetName;
-        obsPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL, _data.url, true);
+        
+        string playUrl = await HttpHelper._Instance.GetObsUrl(_data.deviceId, _data.channelId);
+        
+        obsPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL,playUrl, true);
         obsPlayer.Play();
         currentChannelId = _data.channelId;
         currentDeviceId = _data.deviceId;

部分文件因文件數量過多而無法顯示