픽셀 스트리밍 레퍼런스

픽셀 스트리밍 시스템 구성 요소의 지원 브라우저, 네트워킹 포트, 구성 옵션입니다.

Windows
MacOS
Linux

여기서는 픽셀 스트리밍 시스템의 여러 부분에 노출되는 설명, 세팅, 명령줄 파라미터를 설명합니다.

지원 그래픽 하드웨어

픽셀 스트리밍 플러그인을 사용하는 언리얼 엔진 응용 프로그램을 실행하는 컴퓨터는 하드웨어 가속 비디오 인코딩(NVENC)을 지원하는 NVIDIA GPU 하드웨어를 사용해야 합니다. NVIDIA 의 지원 장치표(영문) 를 참조하세요.

픽셀 스트리밍 플러그인을 사용하려 할 때 Failed to load NvEncode dll (NvEncode dll 로드 실패)와 같은 오류 메시지가 나오면, GPU 가 NVENC 를 지원하지 않을 가능성이 높습니다.

지원 운영 체제

픽셀 스트리밍 플러그인, WebRTC 프록시 서버, 시그널링 및 웹 서버는 Windows 8 및 Windows 10 에서 테스트를 마쳤습니다.

Windows 7 를 포함한 다른 운영 체제에서는 테스트하지 않았습니다.

지원 클라이언트 브라우저

픽셀 스트리밍 재생은 WebRTC 프로토골을 지원하는 최신 웹브라우저에서 작동합니다. 예를 들어 별도의 구성 없이도 다음 브라우저 최신 버전에서는 작동하는 것으로 테스트를 마쳤습니다.

  • Google Chrome (데스크톱 및 모바일)

  • Mozilla Firefox (데스크톱 및 모바일)

  • Apple Safari (데스크톱 및 모바일)

Microsoft Edge, Opera 와 같은 다른 브라우저는 애드온 또는 플러그인이 필요할 수 있으며, 모든 시스템에서 작동하지 않을 수 있습니다.

기본 네트워크 포트

픽셀 스트리밍 시스템 구성 요소가 통신에 사용하는 기본 포트는 아래와 같습니다. 호스트에서 각 컴포넌트가 실행되는 포트가 열렸는지 확인해야 합니다.

컴포넌트

포트

언리얼 엔진 및 WebRTC 프록시 서버 호스트

  • 8124 - 응용 프로그램과 WebRTC 프록시 서버 사이 모든 통신 포트입니다.
    이 값을 변경하려면, 언리얼 엔진 응용 프로그램 패키지를 시작할 때 -PixelStreamingPort 명령줄 파라미터 WebRTC 프록시 서버의 -UE4Port 파라미터 둘 다 설정하세요.

시그널링 서버 호스트

  • 80 - 클라이언트의 모든 HTTP 요청 포트입니다.
    이 값을 변경하려면, 시그널링 서버의 --httpPort 파라미터를 설정하세요.

  • 443 - 시그널링 서버를 HTTPS 모드로 실행할 때, 클라이언트에서 오는 모든 HTTPS 요청 포트입니다.
    이 값을 변경하려면, 시그널링 서버의 --httpsPort 파라미터를 설정하세요.

  • 8888 - WebRTC 프록시 서버에서 오는 모든 연결 요청 포트입니다.
    이 값을 변경하려면, 시그널링 서버의 --proxyPort 파라미터 WebRTC 프록시 서버의 -Cirrus 파라미터 둘 다 설정하세요.

매치메이커 서버 호스트

  • 90 - 클라이언트의 모든 HTTP 요청 포트입니다.
    이 값을 변경하려면 매치메이커 서버에 --httpPort 파라미터를 사용합니다.

  • 9999 - 시그널링 서버가 전송하는 모든 메시지 포트입니다.
    이 값을 변경하려면 매치메이커 서버의 --matchmakerPort 파라미터 시그널링 서버의 --matchmakerPort 파라미터 둘 다 설정하세요.

언리얼 엔진 콘솔 명령

Encoder 명령은 픽셀 스트리밍 플러그인이 언리얼 엔진에서 렌더링된 프레임을 비디오 이미지로 인코딩하는 방식을 제어합니다. Streamer 명령은 픽셀 스트리밍 플러그인이 그 이미지를 WebRTC 프록시를 통해 전송하는 방식을 제어합니다.

명령

설명

Encoder.AverageBitrate

인코더의 목표 비트 전송률을 (대역폭 제한을 감안한 감소 전) Mbps 단위로 결정합니다.

Encoder.MaxBitrate

허용되는 최대 비트 전송률의 (WebRTC 프록시 서버가 보고한 값을 무시한) Mbps 단위 값입니다.

Encoder.TargetSize

인코더의 목표 해상도 크기로, 형식은 <너비>x<높이> 입니다.
스트림이 이 사용자 정의 크기를 사용하도록 하기 위해 Encoder.UseBackBufferSIze 도 false 로 설정합니다.

Encoder.UseBackBufferSize

인코더가 Encoder.TargetSize 에 설정된 커스텀 크기가 아닌 백 버퍼 크기(, 즉 렌더링된 게임 뷰포트 크기)를 사용하도록 만듭니다.

Encoder.SaveVideoToFile

인코딩된 비디오를 언리얼 엔진 응용 프로그램 작업 디렉터리 내 EncodedVideoFile.h264 라는 파일로 저장합니다.
언리얼 엔진 Shipping 빌드가 아닌 Development 빌드에서만 작동합니다.

Streamer.PrioritiseQuality

비트 전송률이 낮은 연결에 엔진이 자동으로 프레임 속도를 낮춥니다. 네트워크 상황이 나쁜 경우 각 비디오 프레임의 표시 퀄리티를 유지하기 위해 초당 프레임 수를 낮춥니다 (대기 시간이 증가합니다).

Streamer.LowBitrate

네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최저 비트 전송률 Kbps 단위입니다.

Streamer.HighBitrate

네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최대 비트 전송률 Kbps 단위입니다.

Streamer.MinFPS

네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최저 초당 프레임 수입니다.

Streamer.BitrateReduction

스트리머가 지터링 처리를 위해 WebRTC 가 보고한 비트 전송률을 얼마나 낮출지를 퍼센티지로 결정합니다.

언리얼 엔진 명령줄 파라미터

언리얼 엔진 응용 프로그램을 실행할 때 명령줄에 설정하는 프로퍼티입니다.

파라미터

설명

-AllowPixelStreamingCommands

플레이어 웹 페이지가 emitCommand() 함수를 사용하여 원격에서 언리얼 엔진에 콘솔 명령을 실행할지 여부를 결정합니다. 보안에 영향을 줄 수 있는 옵션이므로, 주의해서 사용하세요.

-AudioMixer

언리얼 엔진이 오디오에 소프트웨어 믹싱을 강제 사용하여 픽셀 스트리밍 플러그인이 오디오를 캡처할 수 있도록 합니다.
이 파라미터는 응용 프로그램에서 오디오를 캡처하여 브라우저에 스트리밍하려면 필수입니다.

-PixelStreamingIP=<value>

언리얼 엔진이 WebRTC 프록시 서버의 연결을 수신 대기하는 IP 주소를 지정합니다.
기본값은 0.0.0.0 로, 내부 IP 주소 전부를 포함합니다 (보통 로컬 머신의 자체 IP 주소 및 127.0.0.1 입니다).

-PixelStreamingPort=<value>

언리얼 엔진과 WebRTC 프록시 서버 사이 통신에 사용되는 포트입니다.
기본값은 8124 입니다.

-PixelStreamingKeyFilter="<value>"

WebRTC 프록시가 언리얼 엔진으로 중계하는 플레이어 웹 페이지의 입력 중 필터로 걸러낼 키보드 키 목록을 쉼표로 구분한 목록입니다. 사용자가 브라우저에서 여기 지정된 키 중 하나를 누르면, 그 이벤트는 언리얼 엔진의 입력 컨트롤러에 중계되지 않습니다.
예를 들어 -PixelStreamingKeyFilter="F1..F12,W,A,S,D" 필터는 F1-F12 전부와 이동 키를 걸러냅니다.

-RenderOffScreen

언리얼 엔진 응용 프로그램을 headless, 즉 로컬 컴퓨터에서 렌더링이 보이지 않게 실행합니다. 응용 프로그램에 아무런 창이 표시되지 않으며, 전체 화면 렌더링되지 않습니다.
이 파라미터는 -ForceRes 와 함께 사용하여 언리얼 엔진이 주 표시 장치의 해상도에 따라 해상도를 자동 조정하지 않도록 할 수 있습니다.
이 파라미터를 생략하면, 언리얼 엔진 응용 프로그램 창은 정상 렌더링됩니다. 이 응용 프로그램 창이 최소화되는 경우, 픽셀 스트리밍 비디오 및 입력 캡처는 작동을 멈춥니다. 그래서 언리얼 엔진 응용 프로그램을 실행하는 컴퓨터에서 렌더링되는 출력을 로컬에서 볼 수 있어야 하는 경우가 아니면, 이 파라미터는 항상 포함할 것을 권장합니다.

-NvEncFrameRateNum=<value>

지정한 경우 기본 인코더 프레임 속도를 덮어씁니다.
기본값은 t.MaxFPS 에 일치하도록 설정됩니다.

-NvEncMaxEncodeWidth=<value>

인코더가 인코딩할 수 있는 프레임 최대 너비입니다.
기본값은 3840 입니다.

-NvEncMaxEncodeHeight=<value>

인코더가 인코딩할 수 있는 프레임 최대 높이입니다.
기본값은 2160 입니다.

-NvEncAverageBitRate=<value>

If specified, overrides the encoder's default average bitrate.

-NvEncH264ConfigLevel=<value>

이 파라미터를 NV_ENC_LEVEL_H264_52 로 설정하여 인코더가 H.264 level 5.2 를 사용하도록 만듭니다. 설정하지 않으면 인코더는 H.264 level 5.1 을 사용합니다.
이렇게 하면 인코더의 성능이 향상되는데, 3840x2160 (4K) 같은 고해상도 비디오 제작 처리에 필수일 수 있습니다. H.264 레벨 관련 자세한 정보는 이 페이지(영문) 를 참조하세요.
언리얼 엔진 응용 프로그램이 Failed to initialize NvEncoder (NvEncoder 초기화 실패)라 하는 경우, 고해상도 출력물 작업 중이었다면 이 옵션을 활성화해야 할 수 있습니다.

시그널링 서버 구성 파라미터

이 파라미터를 설정할 수 있는 방법은 두 가지입니다.

  • 명령줄에서, run.bat 또는 node cirrus.js 를 사용하여 시그널링 및 웹 서버를 시작할 때입니다. 이 경우 각 파라미터 이름에 -- (대시 두 개)와 한 칸 띄운 뒤 값을 설정합니다. 예를 들어 --httpPort 81 입니다.

  • 구성 파일에서 입니다. 기본적으로 시그널링 및 웹 서버 (cirrus.js) 는 같은 폴더의 config.json 파일을 찾습니다. 이 경우 각 파라미터와 원하는 값을 파일에 정의된 JSON 오브젝트 형태의 키-값 짝으로 설정합니다. 시그널링 및 웹 서버를 이미 시작한 적이 있다면, Engine/Source/Programs/PixelStreaming/WebServers/SignallingWebServer/config.json 파일의 파라미터를 예제로 참고해 볼 수 있습니다.

파라미터

설명

publicIp

시그널링 및 웹 서버를 실행하는 컴퓨터의 공개 IP 입니다.

httpPort

시그널링 및 웹 서버가 클라이언트 브라우저와의 HTTP 연결에 사용하는 포트입니다.

proxyPort

시그널링 및 웹 서버가 WebRTC 프록시 서버에서 오는 연결을 수신 대기하는 포트입니다.

peerConnectionOptions

WebRTC 프록시 서버와 브라우저가 자신의 외부 IP 주소를 알 필요가 있을 때 쿼리할 STUN 및 TURN 서버가 있는 경우 그 호스트명 또는 IP 주소를 지정합니다.
STUN 및 TURN 서버 관련 자세한 내용은 호스팅 및 네트워킹 가이드 문서를 참조하세요.
이 파라미터는 WebRTC 프록시 서버나 브라우저가 연결했으면 하는 서버 URL 을 나열하는 스트링이어야 합니다. 형식은 다음과 같습니다.
"{ \"iceServers\": [{\"urls\": [<url1>,<url2>,<url3>,...]}] }"
예:
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\"]}] }"
또는
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\",\"turn:34.250.222.95:19312\"]}] }"
언리얼 엔진에 포함된 TURN 서버 구현은 사용자명과 비밀번호가 필요한데, 다음과 같습니다.
"{\"iceServers\":[{\"urls\":[\"stun: 34.250.222.95:19302\",\"turn: 34.250.222.95:19312\"],\"username\":\"<TURN_Username>\",\"credential\":\"<TURN_Password>\"}]}"
로그인 정보 관련해서는 STUN 및 TURN 구현마다 다를 수 있습니다.

값은 스트링 형식이어야 하며, JSON 구성 파일로 파라미터를 제공할 때도 마찬가지입니다. 항상 큰따옴표로 묶어야 하며, 스트링 안의 큰따옴표는 위와 같이 백슬래시로 이스케이프 캐릭터를 붙여줘야 합니다.

HomepageFile

특정 URL 을 요청하지 않은 연결 클라이언트 브라우저에 서버가 제공할 기본 페이지의 파일명입니다.
기본값은 player.htm 입니다.

AdditionalRoutes

시그널링 및 웹 서버가 제공할 부가 폴더를 지정합니다.
이 파라미터는 JSON 오브젝트여야 합니다. 즉 명령줄이 아닌 JSON 구성 파일로만 제공할 수 있습니다.
각 키는 URL 의 일부이고, 각 키의 값은 서버가 요청 클라이언트에 제공할 로컬 경로인 오브젝트여야 합니다. 예를 들어 다음과 같이 설정한 경우:
"AdditionalRoutes" = { "/myfolder", "C:\some_local_path" }
클라이언트가 http://server-name/myfolder/index.html 을 요청하면 서버는 C:\some_local_path\index.html 라는 이름의 파일을 제공합니다.

LogToFile

시그널링 및 웹 서버가 로그 메시지를 ./logs 폴더의 파일에 기록할지 여부를 결정합니다.
기본값은 true 입니다.

UseHttps

시그널링 서버가 httpsPort 에서만 HTTPS 연결을 받도록 하려면 이 파라미터를 true 로 설정하세요.
시그널링 및 웹 서버의 루트 폴더 아래 certificates 폴더에 client-key.pemclient-cert.pem 파일도 넣어야 합니다.

httpsPort

HTTPS 연결을 수신 대기할 포트입니다. UseHttps 활성화 시에만 사용하세요.
기본값은 443 입니다.

UseMatchmaker

시그널링 및 웹 서버가 현재 상태를 매치메이커 서버에 전송할지 여부입니다. 클라이언트 브라우저가 현재 사용 중이지 않은 시그널링 서버 및 WebRTC 프록시 서버를 찾는 데 도움이 됩니다.

matchmakerAddress

시그널링 및 웹 서버가 연결해야 하는 매치메이커 서버 IP 주소입니다.

matchmakerPort

매치메이커 서버가 시그널링 및 웹 서버에서 오는 메시지를 수신 대기할 포트입니다.

configFile

시그널링 서버가 위의 프로퍼티 값을 검색할 때 사용할 구성 파일 경로와 이름을 지정합니다. 명령줄에서만 설정할 수 있습니다.

WebRTC 프록시 서버 명령줄 파라미터

WebRTC 프록시 서버의 동작 방식 구성은 WebRTCProxy_x64_<build>.exe 파일을 실행할 때 명령줄에 다음과 같은 파라미터를 제공하면 됩니다.

참고로 위의 시그널링 및 웹 서버나 아래 매치메이커 서버와 달리, 이 파라미터는 같은 폴더의 .bat 파일 끝에 추가해도 작동하지 않습니다.

파라미터

설명

-Cirrus=<value>

WebRTC 프록시 서버가 연결하는 시그널링 서버의 IP 주소입니다.
기본값은 127.0.0.1:8888 입니다.

-UE4Port=<value>

WebRTC 프록시 서버가 로컬 호스트에 실행 중인 언리얼 엔진 응용 프로그램과 통신할 때 연결하는 포트입니다.
기본값은 8124 입니다.

-PlanB

WebRTC 프록시 서버가 PlanB SDP 시맨틱을 사용하도록 전환합니다.

-LocalTime

로그 메시지의 타임스탬프에 UTC 가 아닌 로컬 시간을 출력합니다.

매치메이커 서버 명령줄 파라미터

run.bat 파일 또는 node.exe matchmaker.js 를 실행하여 매치메이커 서버를 시작할 때 명령줄에 붙일 수 있는 파라미터입니다.

파라미터

설명

--httpPort <value>

매치메이커가 클라이언트의 HTTP 연결을 수신 대기할 포트 번호를 설정합니다.
기본값은 90 입니다.

--matchmakerPort <value>

Cirrus 시그널링 서버에서 들어오는 메시지를 매치메이커가 수신 대기할 포트 번호를 설정합니다.
기본값은 9999 입니다.

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼