Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
                });
            }
        }