Photo by Vinicius "amnx" Amano / Unsplash

오큘러스 퀘스트2로 PC에 있는 영상 복사 없이 스트리밍으로 보는 법(skybox필요없음, 외부에서도 재생가능)

BoniK's WORKS 2021년 7월 5일

오큘러스 퀘스트 동영상 플레이어들의 단점

오큘러스 퀘스트2를 사서 제일 많이 쓰는게 동영상 기능인데 PC나 NAS에 있는 영상을 일일히 복사해서 보는건 시간도 오래 걸리고 오큘러스 퀘스트2의 내장용량이 적기 때문에 (64GB, 256GB) 파일 전송, 관리가 상당히 귀찮습니다.

그래서 PC나 NAS에 있는 영상을 스트리밍으로 봐야 하는데 오큘러스 퀘스트2의 영상플레이어 어플들이 상당히 별로입니다. 특히 네트워크 기능은 KODI같은 어플에 비교하면 쓰레기 수준입니다.

  • SKYBOX : 유료 12000~18000원. 자막 가능. 내부 네트워크 스트리밍 가능.
  • DeoVR : 무료. 자막 불가능. 구버전은 웹VR이 FTP, Webdav로 가능하지만 신버전은 deovr 규격으로 http가 작성되어야 가능.(또 바뀌었을 수도 있음)
  • KODI(사이드로더) : 사이드로더를 이용해 KODI를 설치하면 막강한 KODI의 기능들을 사용할 수 있지만 제일 중요한 VR영상 재생이 안됨.

KODI를 제외한 모든 플레이어들이 외부 네트워크로 스트리밍을 할 수 없다는 단점이 있습니다. 내부 네트워크도 유료 어플인 SKYBOX정도나 되야 그나마 지원합니다.

해결 방법

그나마 다행인 건 오큘러스 퀘스트2의 웹브라우저에서 웹VR을 지원하기 때문에 브라우저에서도 스트리밍 영상을 볼 수 있다는 겁니다.

위와같은 식으로 PC에 있는 파일리스트가 나오는 웹페이지를 구성하면 오큘러스 브라우저에서 스트리밍으로 영상을 볼 수 있습니다. 다만 이렇게 만들려면 FTP+웹페이지 형태로 구현하든지 WebDAV를 이용하면 됩니다. 개념만 알면 컴퓨터를 잘 아시는 분들은 혼자서도 잘 만들겠지만 컴퓨터를 잘 모르시는 분들은 쉽지 않을 수도 있습니다.

그래서 잘 모르시는 분들을 위해 WebDAV서버를 간단히 돌릴 수 있는 스크립트(.bat)를 만들었습니다.

스크립트 소개 및 다운로드

PC(윈도우10, 윈도우 서버)에서 간단하게 WebDAV서버를 돌릴 수 있는 스크립트입니다. IIS에서도 WebDAV를 지원하지만 파이썬 바이너리인 wsgidav를 이용하면 더 쉽게 WebDAV서버를 구성할 수 있어서 wsgidav를 이용했습니다.

WebDAV서버.zip

위 스크립트 파일을 다른 곳에 올리시면 안됩니다.

(2021.07.25 가상 네트워크 쓰는 사람도 내부 아이피 제대로 찾을 수 있게 일부 스크립트 수정해서 다시 올렸습니다. 일반적인 네트워크 사용하는 분들은 별 차이 없습니다. 복잡한 네트워크 사용하시는 분들은 내부네트워크 직접 찾으셔야 할 겁니다. cmd에서 ipconfig /all 한 후에 IPv4부분 찾아보세요.)

스크립트는 위 링크를 이용해 다운로드 받으면 됩니다.

압축을 풀면 파일이 나오는데 스크립트는 6개의 .bat파일로 이루어져 있습니다. 하나로 만들려다가 몇 가지 이유로 나눠서 작성했습니다.

스크립트 사용방법

컴맹도 할 수 있을 정도로 만들었기 때문에 사용법은 어렵지 않습니다. 00부터 순서대로 실행하면 됩니다. 스크립트에도 설명이 한글로 나와 있으니 잘 읽어보고 따라하면 됩니다.

스크립트 실행순서

00.Install_Wsgidav.bat
  →실행하면 wsgidav설치 파일을 다운 받을 수 있습니다. wsgidav를 C:\wsgidav 경로에 설치하고 스크립트 파일들을 C:\wsgidav 폴더에 복사합니다. 복사 후에 01부터 순서대로 실행하면 됩니다.

01.IP_Check.bat
  →실행하면 자동으로 IP주소를 찾아서 config.ini파일에 작성합니다.

02.FireWall(관리자 권한).bat
  →관리자 권한으로 실행해야 합니다. WebDAV서버로 사용할 포트를 선택하고 방화벽 규칙에 추가합니다. 무슨 포트를 해야할지 모르면 그냥 7777로 하면 됩니다.

03.Select_Folder.bat
  →WebDAV서버로 돌릴 폴더의 경로를 입력하면 config.ini파일에 작성해 줍니다.

04.make_webdav_user.bat
  →WebDAV서버 접속시에 사용할 계정을 만듭니다. USER명과 비밀번호를 입력하면 user.yaml 파일을 작성합니다.

05.Start_webdav.bat
  →WebDAV서버를 구동하고 확인을 위한 웹페이지를 띄웁니다. 외부에서 접속하려면 공유기에서 포트포워딩을 해야합니다.

05까지 실행해서 서버를 구동했으면 이제 PC에서 할 작업은 없습니다. 오큘러스 퀘스트2의 웹브라우저로 접속하고 user이름, 비번을 입력하면 스트리밍 영상을 볼 수 있습니다.

환경파일 작성 예 (config.ini파일, user.yaml)

이 파일들은 스크립트가 자동으로 작성하지만 필요하다면 직접 수정해도 괜찮습니다.

<config.ini 파일 작성 예>

[내부 아이피]
LocalIP=192.168.0.6

[외부 아이피]
PublicIP=123.123.123.123

[Webdav 포트]
Port=7777

[Webdav로 접속할 폴더]
Target_Path=C:\VR_Video


yaml파일을 수정할 때 띄어쓰기수(스페이스바 입력 수)가 달라지거나 tab으로 바꿔 입력하면 작동하지 않을 수 있습니다. (wsgidav는 파이썬 어플입니다.)

<user.yaml 파일 작성예>

http_authenticator:
   domain_controller: null  # Same as wsgidav.dc.simple_dc.SimpleDomainController
   accept_basic: true  # Pass false to prevent sending clear text passwords
   accept_digest: true
   default_to_digest: true

simple_dc:
   user_mapping:
       "*":
           "user":
               password: "abc123"
       "/pub": true

위와 같이 입력되어 있으면 제대로 작동할 것 입니다.

포트포워딩 : 외부 네트워크에서 접속하기 위해

http://내부아이피:포트 로는 접속이 되는데 http://외부아이피:포트 로는 접속이 안된다면 중간 어딘가가 가로막혀 있는 것입니다. 대부분의 경우 공유기나 통신사 모뎀의 포트포워딩 설정이 안되어 있어서 그렇습니다.

IPTIME공유기 포트포워딩 방법 예

PC의 내부아이피가 192.168.0.6, WebDAV 포트가 7777이라 가정했을 때 외부접속을 위해서는 공유기의 포트포워딩 설정에서 TCP 7777포트로 들어온 신호를 192.168.0.6:7777로 전달하도록 포트포워딩하면 됩니다.

오류 발생시 추가 확인

다음과 같은 경우에는 제대로 안될 수 있습니다.

  • wsgidav를 설치한 경로가 아닌 다른 경로에서 스크립트( .bat파일)를 실행한 경우
  • 관리자 권한이 없는 윈도우 계정으로 스크립트를 실행한 경우
  • 한국어가 아닌 다른 언어의 윈도우를 사용하는 경우 (이 스크립트는 한국어 윈도우를 기준으로 작성했습니다.)
  • 공유기의 방화벽이 Webdav포트를 막고 있는 경우 외부 접속이 안됨
     이 때는 방화벽도 열고, 포트포워딩도 해야합니다.
  • 공유기의 포트포워딩 설정을 제대로 못한 경우
  • 회사나 기숙사와 같은 내부 네트워크에 속해 있어 포트가 막힌 경우
  • 이 때, 열려 있는 다른 포트를 이용하거나 다른 방법(프록시, VPN 등)을 추가로 사용해야 합니다.
    아래 링크의 사이트에서 포트가 열려 있는지 확인할 수 있습니다.
      https://www.yougetsignal.com/tools/open-ports/
  • 통신사 모뎀이 포트를 막고 있는 경우
     이 때, 통신사 모뎀마다 관리자화면 접속 방법이 다르며, 불가능한 경우도 있습니다. 관리자 화면 접속이 불가능하면 열려있는 다른 포트를 이용하면 됩니다. 열려 있는 포트가 없으면 다른 방법(프록시, VPN 등)을 알아봐야 합니다.
  • 스크립트를 수정하면서 인코딩이 바뀐 경우 (ansi, utf-8 등의 인코딩을 변경하면 한글 폴더를 읽지 못하거나 한글이 깨지거나 스크립트가 제대로 작동하지 않을 수 있습니다.)
  • 일반적인 네트워크 구성이 아닌 상태 (VPN, 프록시, 홀펀칭 등)에서 스크립트를 실행한 경우

[2022.01.14 추가] - rclone 사용자 아니면 볼 필요 없음

rclone 쓰시는 분들은 wsgidav설치할 필요없이 rclone serve명령어로 webdav서버 구성할 수 있습니다.

명령어 예는 아래와 같습니다. 방화벽 및 포트포워딩은 본인이 알아서...

01. GoogleShared라는 리모트를 webdav 서버로 (접속 ID:bonik 암호:bonik)

rclone serve webdav GoogleShared: --addr 0.0.0.0:7777 --user bonik --pass bonik

02. GoogleShared 라는 리모트를 webdav 서버로 (접속 ID:bonik 암호:bonik, rclone 이rclone.conf 파일을 못찾을 경우 직접 지정)

rclone serve webdav GoogleShared: --addr 0.0.0.0:7777 --user bonik --pass bonik --config "C:\Users\사용자명\AppData\Roaming\rclone\rclone.conf"

03. T:\Video 로컬 폴더를 webdav 서버로 (접속 ID:bonik 암호:bonik)

rclone serve webdav T:\Video --addr 0.0.0.0:7777 --user bonik --pass bonik

rclone.conf 위치 직접 지정에 관한 추가 설명

rclone은 버전 및 사용자별로 rclone.conf 파일의 경로가 다를 수 있음

C:\Users\사용자명\.config\rclone\rclone.conf
C:\Users\사용자명\AppData\Roaming\rclone\rclone.conf

rclone config를 실행한 계정과 rclone mountrclone serve를 실행하는 계정이 다를 경우(하나는 user, 다른 하나는 administrator, system 등) rclone.conf파일의 경로를 직접 지정해줘야함.

mountserve실행시 다음 옵션으로 rclone.conf파일 위치 지정

--config "C:\Users\사용자명\AppData\Roaming\rclone\rclone.conf"

rclone.conf 파일 위치 알아내는 명령

rclone config file


#동영상 스트리밍 #webdav #오큘러스2 #오큘러스퀘스트 #오큘러스퀘스트2 #wsgidav

태그

BoniK

협업, 작업의뢰, 레슨 및 기타 문의 : mail@bonik.me