public void Close() { isRunning = false; clientToggle.interactable = true; videoPlayer?.Stop(); amsClient?.Dispose(); amsClient = null; if (display.texture != null) { var tex = display.texture; display.texture = null; UnityEngine.Object.Destroy(tex); } }
public void Connect( AssetType assetType, string signalingUrl, string streamId, int videoWidth, int videoHeight, int videoBitrate) { isRunning = true; if (!clientToggle.isOn) { return; } clientToggle.interactable = false; RenderTexture tex = null; //if (display.texture != null) //{ // tex = (RenderTexture)display.texture; // display.texture = null; // UnityEngine.Object.Destroy(tex); //} if (clientType == ClientType.Publisher) { tex = new RenderTexture(videoWidth, videoHeight, 24, RenderTextureFormat.BGRA32); var cb = tex.colorBuffer; videoPlayer.targetTexture = tex; videoPlayer.Play(); display.texture = tex; } else if (assetType == AssetType.AMS) { tex = new RenderTexture(videoWidth, videoHeight, 16, RenderTextureFormat.ARGB32); var cb = tex.colorBuffer; display.texture = tex; } switch (assetType) { case AssetType.AMS: amsClient = new AMSUnitySDKClient(); break; case AssetType.Unity: amsClient = new UnityWebRTCTest(); break; } amsClient.OnOpen.AddListener(() => OnOpen.Invoke()); amsClient.OnClose.AddListener(() => OnClose.Invoke()); amsClient.OnLogEvent.AddListener((name, msg) => AddLog(LogLevel.Log, name, msg)); amsClient.OnWarningEvent.AddListener((name, msg) => AddLog(LogLevel.Warning, name, msg)); amsClient.OnErrorEvent.AddListener((name, msg) => AddLog(LogLevel.Error, name, msg)); amsClient.OnDataChannelOpen.AddListener(onDataChannelOpen); amsClient.Connect(signalingUrl, clientType, streamId, videoWidth, videoHeight, videoBitrate, tex); if (clientType == ClientType.Player) { amsClient.OnVideoTrack.AddListener(texture => { display.texture = texture; }); } }