에픽게임즈는 Google이 WebRTC 버전에서 공개한 취약성을 알고 있으며, EOS SDK에 미치는 영향과 향후 단계에 대해 조사하고 있습니다. 자세한 내용은 여기를 참고하세요.
여기서는 픽셀 스트리밍 시스템의 여러 부분에 노출되는 설명, 세팅, 명령줄 파라미터를 설명합니다.
지원 그래픽 하드웨어
픽셀 스트리밍 플러그인을 사용하는 언리얼 엔진 애플리케이션을 실행하는 컴퓨터는 하드웨어 가속 비디오 인코딩(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 프록시 서버 호스트 |
|
시그널링 서버 호스트 |
|
매치메이커 서버 호스트 |
|
언리얼 엔진 콘솔 명령
Encoder 명령은 픽셀 스트리밍 플러그인이 언리얼 엔진에서 렌더링된 프레임을 비디오 이미지로 인코딩하는 방식을 제어합니다. Streamer 명령은 픽셀 스트리밍 플러그인이 그 이미지를 WebRTC 프록시를 통해 전송하는 방식을 제어합니다.
명령 | 설명 |
---|---|
Encoder.AverageBitrate |
인코더의 목표 비트 전송률을 (대역폭 제한을 감안한 감소 전) Mbps 단위로 결정합니다. |
Encoder.MaxBitrate |
허용되는 최대 비트 전송률의 (WebRTC 프록시 서버가 보고한 값을 무시한) Mbps 단위 값입니다. |
Encoder.TargetSize |
인코더의 목표 해상도 크기로, 형식은 |
Encoder.UseBackBufferSize |
인코더가 Encoder.TargetSize 에 설정된 커스텀 크기가 아닌 백 버퍼 크기(, 즉 렌더링된 게임 뷰포트 크기)를 사용하도록 만듭니다. |
Encoder.SaveVideoToFile |
인코딩된 비디오를 언리얼 엔진 애플리케이션 작업 디렉터리 내 EncodedVideoFile.h264 라는 파일로 저장합니다. |
Streamer.PrioritiseQuality |
비트 전송률이 낮은 연결에 엔진이 자동으로 프레임 속도를 낮춥니다. 네트워크 상황이 나쁜 경우 각 비디오 프레임의 표시 퀄리티를 유지하기 위해 초당 프레임 수를 낮춥니다 (대기 시간이 증가합니다). |
Streamer.LowBitrate |
네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최저 비트 전송률 Kbps 단위입니다. |
Streamer.HighBitrate |
네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최대 비트 전송률 Kbps 단위입니다. |
Streamer.MinFPS |
네트워크 상황에 퀄리티를 맞출 때 스트리머가 허용할 최저 초당 프레임 수입니다. |
Streamer.BitrateReduction |
스트리머가 지터링 처리를 위해 WebRTC 가 보고한 비트 전송률을 얼마나 낮출지를 퍼센티지로 결정합니다. |
언리얼 엔진 명령줄 파라미터
언리얼 엔진 애플리케이션을 실행할 때 명령줄에 설정하는 프로퍼티입니다.
파라미터 | 설명 |
---|---|
-AllowPixelStreamingCommands |
플레이어 웹 페이지가 |
-AudioMixer |
언리얼 엔진이 오디오에 소프트웨어 믹싱을 강제 사용하여 픽셀 스트리밍 플러그인이 오디오를 캡처할 수 있도록 합니다. |
-PixelStreamingIP=<value> |
언리얼 엔진이 WebRTC 프록시 서버의 연결을 수신 대기하는 IP 주소를 지정합니다. |
-PixelStreamingPort=<value> |
WebRTC 프록시 서버가 수신 대기할 언리얼 엔진 애플리케이션과의 통신 포트입니다. |
-PixelStreamingKeyFilter="<value>" |
WebRTC 프록시가 언리얼 엔진으로 중계하는 플레이어 웹 페이지의 입력 중 필터로 걸러낼 키보드 키 목록을 쉼표로 구분한 목록입니다. 사용자가 브라우저에서 여기 지정된 키 중 하나를 누르면, 그 이벤트는 언리얼 엔진의 입력 컨트롤러에 중계되지 않습니다. |
-PixelStreamingReceiveStringMaxLength |
언리얼 엔진 애플리케이션이 시그널링 및 웹 서버에서 받는 메시지 최대 길이를 바이트 단위로 설정합니다. |
-RenderOffScreen |
언리얼 엔진 애플리케이션을 headless, 즉 로컬 컴퓨터에서 렌더링이 보이지 않게 실행합니다. 애플리케이션에 아무런 창이 표시되지 않으며, 전체 화면 렌더링되지 않습니다. |
-NvEncFrameRateNum=<value> |
지정한 경우 기본 인코더 프레임 속도를 덮어씁니다. |
-NvEncMaxEncodeWidth=<value> |
인코더가 인코딩할 수 있는 프레임 최대 너비입니다. |
-NvEncMaxEncodeHeight=<value> |
인코더가 인코딩할 수 있는 프레임 최대 높이입니다. |
-NvEncAverageBitRate=<value> |
If specified, overrides the encoder's default average bitrate. |
-NvEncH264ConfigLevel=<value> |
H.264 압축 레벨을 5.2 또는 5.1 중에서 결정합니다. 이 파라미터가 설정되지 않으면, 인코더는 레벨 5.2 를 사용하며, 3840x2160 (4K) 와 같은 고해상도 인코딩이 가능합니다.
그보다 작은 해상도로 인코딩하는 경우, 레벨 5.1 로 전환하면 대역폭을 조금 절약할 수 있습니다. 그러기 위해서는 이 파라미터를 |
시그널링 서버 구성 파라미터
이 파라미터를 설정할 수 있는 방법은 두 가지입니다.
- 명령줄에서,
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 주소를 지정합니다. 값은 스트링 형식이어야 하며, JSON 구성 파일로 파라미터를 제공할 때도 마찬가지입니다. 항상 큰따옴표로 묶어야 하며, 스트링 안의 큰따옴표는 위와 같이 백슬래시로 이스케이프 캐릭터를 붙여줘야 합니다. |
HomepageFile |
특정 URL 을 요청하지 않은 연결 클라이언트 브라우저에 서버가 제공할 기본 페이지의 파일명입니다. |
AdditionalRoutes |
시그널링 및 웹 서버가 제공할 부가 폴더를 지정합니다. |
LogToFile |
시그널링 및 웹 서버가 로그 메시지를 ./logs 폴더의 파일에 기록할지 여부를 결정합니다. |
UseHttps |
시그널링 서버가 httpsPort 에서만 HTTPS 연결을 받도록 하려면 이 파라미터를 true 로 설정하세요. |
httpsPort |
HTTPS 연결을 수신 대기할 포트입니다. UseHttps 활성화 시에만 사용하세요. |
UseMatchmaker |
시그널링 및 웹 서버가 현재 상태를 매치메이커 서버에 전송할지 여부입니다. 클라이언트 브라우저가 현재 사용 중이지 않은 시그널링 서버 및 WebRTC 프록시 서버를 찾는 데 도움이 됩니다. |
matchmakerAddress |
시그널링 및 웹 서버가 연결해야 하는 매치메이커 서버 IP 주소입니다. |
matchmakerPort |
매치메이커 서버가 시그널링 및 웹 서버에서 오는 메시지를 수신 대기할 포트입니다. |
configFile |
시그널링 서버가 위의 프로퍼티 값을 검색할 때 사용할 구성 파일 경로와 이름을 지정합니다. 명령줄에서만 설정할 수 있습니다. |
WebRTC 프록시 서버 명령줄 파라미터
WebRTC 프록시 서버의 동작 방식 구성은 WebRTCProxy_x64_<build>.exe
파일을 실행할 때 명령줄에 다음과 같은 파라미터를 제공하면 됩니다.
참고로 위의 시그널링 및 웹 서버나 아래 매치메이커 서버와 달리, 이 파라미터는 같은 폴더의 .bat 파일 끝에 추가해도 작동하지 않습니다.
파라미터 | 설명 |
---|---|
-Cirrus=<value> |
WebRTC 프록시 서버가 시그널링 및 웹 서버와 통신하기 위해 연결하는 IP 주소와 포트입니다.
기본값은 |
-UE4=<value> |
WebRTC 프록시 서버가 언리얼 엔진 애플리케이션과 통신할 때 연결하는 IP 주소 및 포트입니다. |
-PlanB |
WebRTC 프록시 서버가 PlanB SDP 시맨틱을 사용하도록 전환합니다. |
-LocalTime |
로그 메시지의 타임스탬프에 UTC 가 아닌 로컬 시간을 출력합니다. |
매치메이커 서버 명령줄 파라미터
run.bat
파일 또는 node.exe matchmaker.js
를 실행하여 매치메이커 서버를 시작할 때 명령줄에 붙일 수 있는 파라미터입니다.
파라미터 | 설명 |
---|---|
--httpPort <value> |
매치메이커가 클라이언트의 HTTP 연결을 수신 대기할 포트 번호를 설정합니다. |
--matchmakerPort <value> |
Cirrus 시그널링 서버에서 들어오는 메시지를 매치메이커가 수신 대기할 포트 번호를 설정합니다. |