개발 중에 홀로렌즈의 화면을 PC로 봐야 할 일이 생겼다.
흔히 말하는 미러링인데 다행히도 홀로렌즈는 자체적으로 미러링 API를 제공한다.
디바이스 포털도 있고 지원하는 API 목록도 이렇게 많다.
나를 포함해 이 글을 읽는 사람들이 아직 홀로렌즈와 친하지 않다고 생각하고 디바이스 포털부터 알아보자.
디바이스 포털은 간단히 말해 PC에서 홀로렌즈 디바이스를 이것저것 건들수 있도록 뚫어둔 통로다.
홀로렌즈를 USB를 통해 PC에 연결하고 127.0.0.1:10080으로 접속하면
이런 화면이 나타나며 포털 계정 생성 및 인증서 다운로드가 가능하다.
여기서 만드는 계정은 추후 해당 홀로렌즈의 API를 사용할 때 계속 사용하게 되니 잘 기억해두자.
이후로는 접속 시 계정 정보를 요구하게 되고 입력하게 되면
이렇게 포털 화면으로 넘어온다.
API 목록에서 제공하는 대부분의 기능은 여기서도 확인이 가능하며 홀로렌즈 설정도 일부 변경 가능하다.
홀로렌즈가 있는 분이라면 직접 확인해보길 바란다.
포털 확인은 이쯤 하고 본론으로 들어가 미러링을 해보자.
우리가 주목해야 할 부분은 API 목록 중 혼합현실 스트리밍 부분이다.
위 사이트에서 보기 귀찮으면 아래를 보자.
여러 가지옵션도 있고 화질 선택도 가능하다.
나는 홀로렌즈 2이므로 아래 추가 옵션까지 선택 가능하다.
사용 예시는 아래와 같다.
https://[WiFi 내 IPv4]/api/holographic/stream/live.mp4?holo=true&pv=true&mic=false&loopback=false&RenderFromCamera=false
[WiFi 내 IPv4]는 홀로렌즈에서 WiFi 연결 후 속성에 들어가면 확인 가능하다. 아니면 PC에서 디바이스 포탈을 통해서도 확인 가능하다.
디바이스 포털을 통해 알아낸다면 포털에서 Networking에 들어가 우측을 보면 IP들이 있다. USB라 적힌 부분은 USB가 연결되어 있을 때만 사용 가능한 IP이다. 192.168.~~ IP를 찾자.
홀로렌즈에서 확인하고 싶다면 WiFi -> 속성에 들어가면 확인 가능하다. PC가 윈도우라면 들어가는 방법은 거의 흡사하다.
이제 PC를 홀로렌즈가 연결된 WiFi에 연결하자.
현 상태에선 USB 직접 연결을 통한 IP 호출, 또는 같은 WiFi 내에서 IP 호출을 통해야만 API 이용이 가능하다.
같은 망 내 유선으로도 이용하고 싶다면 포트 포워딩을 이용해야 하는데 그건 아래 후술 하겠다.
사실 그게 이 글의 이유다.
위에 예시 URL에 이를 반영하면
https://192.168.0.2/api/holographic/stream/live.mp4?holo=true&pv=true&mic=false&loopback=false&RenderFromCamera=false
이런 형태가 된다.
환경이 제대로 구성되어있고 홀로렌즈가 가동 중이라면 브라우저에서 해당 URL에 접속해보자.
HTML Video 태그를 통해 몇 초의 지연시간은 있지만 현재 홀로렌즈가 보고 있는 화면이 브라우저에 나타나는 것을 확인할 수 있다.
다만 그냥 이렇게 브라우저를 통해 보기만 할 거라면 위 URL로도 상관없지만 다른 곳에서 원활히 활용하려면 해주어야 할 작업이 2개 더 있다.
현재 API를 사용하려고 하면 2가지 절차를 지나야 한다.
안전하지 않은 연결 경고와 계정 정보 입력 과정을 거쳐야만 API의 이용이 가능한데 브라우저에서 사용한다면 직접 넘겨주면 되니 아무 문제없지만 다른 곳에서 활용한다면 이 절차를 생략해줄 필요가 있다.
먼저 안전하지 않은 연결 경고는 인증서를 PC에 설치해주는 것으로 생략할 수 있다.
인증서는 디바이스 포털에서 받을 수 있다.
이렇게 다운로드한 인증서를 PC에 설치해주면 해당 PC에서는 경고문이 나타나지 않는다.
여기를 참고하자.
두 번째로 계정 정보 입력 과정은 URL에 포함하면 생략할 수 있다.
https://[id]:[password]@192.168.0.2/api/holographic/stream/live.mp4?holo=true&pv=true&mic=false&loopback=false&RenderFromCamera=false
비록 아이디와 비밀번호가 그대로 노출된다는 단점이 있지만 어차피 홀로렌즈와 같은 망에서만 접속이 가능하니 폐쇄된 환경에서만 활용하자.
이렇게 환경 세팅을 끝마치면 해당 PC에서 미러링 시도 시 아무 절차 없이 미러링이 가능해진다.
단, 이렇게 미러링을 했을 때 주의사항이 하나 있는데, 한 대의 PC에 여러 홀로렌즈의 동시 미러링은 가능하지만 반대는 불가능하다.
홀로렌즈 미러링 API를 다른 PC에서 호출하면 기존에 미러링 중인 PC에서의 미러링은 종료된다.
마지막으로 동일한 WiFi 접속 상태에서만 가능한 환경을 조금만 확대시켜 보자.
예를 들어 모뎀에서 유선으로 연결하여 사용하고 있는 PC가 있고 공유기를 통해 생성된 WiFi망에 홀로렌즈가 연결되어 있다고 하자. 이 경우 유선 PC는 홀로렌즈와 같은 망이지만 같은 WiFi가 아니어서 192.168.~~ IP에 접속할 수 없어 미러링이 불가능하다.
이 경우 포트 포워딩을 통하면 외부에서도 접근이 가능하다.
포트 포워딩 전반의 설명을 적자면 너무 글이 길어지니 외부 글을 참고하자
포트 포워딩 준비가 끝났다는 가정 하에 공유기 설정에서 다음과 같이 설정하자.
현재 사용 중인 공유기가 ipTIME이므로 ipTIME 기준으로 설명하자면
공유기에서 외부 IP 주소를 확인하고 (예시 123.456.789.012)
포트 포워드 설정으로 들어가 아래와 같이 규칙을 추가해준다.
규칙 이름, 외부 포트는 편한 값을 입력하면 된다.
127.0.0.1:10080이 USB 디바이스 포털 접속 경로라 기억하기 쉽게 10081로 외부 포트를 지정하였다.
내부 IP주소는 위에서 같은 WiFi에 접속했을 때 API 호출 시 사용했던 주소를 넣으면 된다.
프로토콜은 TCP, 내부 포트는 443으로 하자. https를 통하므로 443으로 해야 한다.
이렇게 저장 후 PC의 WiFi를 연결 해제하고 유선으로 옮긴 뒤 기존 192.168.0.4로 사용하던 IP를 [외부 IP 주소]:10080으로 변경하면 같은 WiFi가 아니어도 미러링이 가능함을 볼 수 있다.