기억저장고

[RenderStreaming] 랜더스트리밍 Brodcast로 Connect ID 각각 설정하는방법 본문

Unity

[RenderStreaming] 랜더스트리밍 Brodcast로 Connect ID 각각 설정하는방법

기억해조 2022. 11. 2. 16:48

스트리밍 Brodcast로  Connect ID 각각 설정하는방법

1. WebApp 수정 
1-1. WebApp 원본 파일 다운로드 
https://github.com/Unity-Technologies/UnityRenderStreaming

1-2. 파일위치 확인
*Broadcast html/js 파일위치
C:\Users\chaelin\Documents\WebApp\client\public\receiver
(WebApp - client - public - receiver)

1-3. connectID 값 지정스크립트 작성


**(WebApp - client - public - receiver - index.html)
body 태그안에 아래 코드 추가 

 <input id="myConnectId" type="number" min="0" max="4096">

 

**(WebApp - client - public - receiver - main.js)
async function setupRenderStreaming() 함수내용 변경

  let myConnectID =document.getElementById('myConnectId').value;//수정내용
  await renderstreaming.createConnection(myConnectID);//myConnectID변수 추가



1-4. WebApp 빌드

(npm install은 한번만 해도됨)

- 방법1. 빌드파일 안만들고 동작

cd C:\Users\chaelin\Desktop\MyWebsocket\WebApp
npm install
npm run build
npm run start -- --websocket



-방법2. 빌드파일 만들고 따로 동작

cd C:\Users\chaelin\Desktop\MyWebsocket\WebApp
npm install
npm run build
npm run pack

 

~~~생성된 WebServer.exe파일 실행 ~~~

cd C:\Users\chaelin\Desktop\MyWebsocket\WebApp
.\webserver.exe -w

참고: WebServer 커스텀 제작방법 문서

https://docs.unity3d.com/Packages/com.unity.renderstreaming@3.1/manual/customize-webapp.html

 

Customize web application | Unity Render Streaming | 3.1.0-exp.4

Customize web application Implementing the Web Application The web application source code can be found in the WebApp folder on GitHub. You can clone the repository using the command below: git clone https://github.com/Unity-Technologies/UnityRenderStreami

docs.unity3d.com

 

 



2. 유니티 샘플씬 수정
2-1. 유니티실행파일 실행시, 받은 어규먼트 값으로 ConnectID, URL 설정하기

  private IEnumerator AssetLoadProcess() 
    {
        string[] arguments = Environment.GetCommandLineArgs();
       

        if (arguments.Length >= 2)
        {
            string url = arguments[1];
            string connectionID = arguments[2];

            brodcastSample.StartBroadCast(url, connectionID);
            wsClient.StartWsClient(url);
        }
        else 
        {
            Debug.Log("<color=red>ERROR</color>" + arguments.Length);
            for (int i=0;i<arguments.Length;i++) 
            {
                Debug.Log($"argument: {arguments[i]}");
            }

        }

        yield return null;
    }



2-2. BrodcastSample.cs의 StartBroadCast(string url) 함수변경 

    public void StartBroadCast(string url, string connectID) 
        {
            if (renderStreaming.runOnAwake)
                return;

            GetComponent<Broadcast>().myConnectID = connectID;//Connect ID 커스텀 설정

            RenderStreamingSettings.SignalingAddress = url;

            renderStreaming.Run(
                hardwareEncoder: RenderStreamingSettings.EnableHWCodec,
                signaling: RenderStreamingSettings.Signaling);

            inputReceiver.OnStartedChannel += OnStartedChannel;
        }



2-3. Brodcast.cs의 OnOffer(SignalingEventData data) 함수변경

        public void OnOffer(SignalingEventData data)
        {
            if (data.connectionId != myConnectID) //들어오는 ConnectID랑 내가 설장한 ConnectID랑 다르면 실행 안되게 함
            {
                return;
            }
            data.connectionId = myConnectID;//커스텀 커넥트 아이디 수정 -->사실 의미없음


            if (connectionIds.Contains(data.connectionId))
            {
                Debug.Log($"Already answered this connectionId : {data.connectionId}");
                return;
            }
            connectionIds.Add(data.connectionId);

            foreach (var source in streams.OfType<IStreamSender>())
            {
                AddSender(data.connectionId, source);
            }
            foreach (var channel in streams.OfType<IDataChannel>().Where(c => c.IsLocal))
            {
                AddChannel(data.connectionId, channel);
            }
            SendAnswer(data.connectionId);
        }

 

--

RenderStreaming 도큐먼트 사이트에는 Brodcast의 ConnectID값 설정하는 방법이 안나와있다.

 

그래서 connectID를 따로 설정할 수 있는 Bidirectional.html 로 하려고 했는데 마우스 Input관련해서 해결할 수 없어서 포럼에 물어봤었다. 

 

원하는답변이 와서 정말정말 고마웠음..

https://forum.unity.com/threads/is-there-a-way-to-change-bidirectional-html-to-unidirectional.1345613/#post-8521457

 

Is there a way to change Bidirectional.html to unidirectional?

hello I want to change Bidirectional.scene,Bidirectional.html to unidirectional. Originally I was going to use Broadcast.scene, but I had to create a...

forum.unity.com

 

--

선명하게 내보내는법

코덱 Defualt 로 설정하면 전체화면 시 깨지고, 물체를 움직였을때 잔상도 남는다 

 

그래서 Video/VP9 profile id=0 로 코덱을 변경해주면 선명하게 나오고 잔상도 남지 않는다.

Comments