게임 스트리밍 비트레이트, 높으면 무조건 좋을까?

게임 스트리밍 비트레이트는 높을수록 무조건 좋은 설정이 아닙니다. 비트레이트가 화질과 지연에 어떤 영향을 주는지, 네트워크 환경에 맞는 적정값을 찾는 방법을 정리해봅니다.

게임 스트리밍 설정을 보다 보면 비트레이트라는 항목이 거의 항상 있습니다.

Artemis에서도 비트레이트 설정 아래에 이런 취지의 설명이 붙어 있습니다.

비트레이트가 낮으면 화질이 저하되고, 높으면 지연이 발생할 수 있다.

처음 보면 단순합니다.

그렇다면 화질이 좋으려면 비트레이트를 계속 높이면 되는 것 아닐까?

그런데 실제 게임 스트리밍에서는 그렇지 않습니다.

비트레이트는 높을수록 무조건 좋은 값이라기보다는 현재 해상도와 프레임, 사용하는 코덱, 네트워크 환경이 감당할 수 있는 범위 안에서 적당한 값을 찾는 설정에 가깝습니다.

비트레이트가 무엇일까?

간단하게 생각하면 비트레이트는

게임 화면을 1초 동안 얼마나 많은 데이터로 전송할 것인가

를 정하는 값입니다.

예를 들어 20Mbps라면 대략 초당 20메가비트 정도의 영상 데이터를 전송하는 것을 목표로 한다는 의미입니다.

게임 스트리밍에서는 PC에서 만들어진 화면을 그대로 전송하는 것이 아닙니다.

대략적으로 보면

게임 화면 생성 → 영상 압축 → 네트워크 전송 → 휴대기기에서 압축 해제 → 화면 표시

과정을 계속 반복합니다.

여기에서 비트레이트는 영상 압축 단계와 네트워크 전송량에 직접 관계되는 설정입니다.

비트레이트가 너무 낮으면 왜 화질이 떨어질까?

같은 1920×1080, 60fps 영상이라도 사용할 수 있는 데이터 양이 적으면 압축 과정에서 더 많은 정보를 버려야 합니다.

그래서 낮은 비트레이트에서는 가만히 있는 화면보다 움직임이 많은 화면에서 차이가 더 잘 보입니다.

예를 들면 레이싱 게임에서 빠르게 지나가는 도로와 배경, 잔디나 나뭇잎이 많은 장면, 많은 효과가 동시에 나타나는 전투 장면 같은 경우입니다.

화면 전체가 계속 달라지기 때문에 같은 데이터 양으로 표현하기가 어려워집니다.

이때 비트레이트가 부족하면

화면이 뭉개져 보이거나, 작은 블록 형태의 압축 흔적이 보이고, 세밀한 부분이 사라지거나 흐릿하게 보일 수 있습니다.

결국 낮은 비트레이트는 네트워크 부담은 줄여주지만 화질을 희생하게 됩니다.

그렇다면 비트레이트를 최대한 높이면 될까?

여기에서 조금 헷갈리는 부분이 있습니다.

비트레이트를 높였다고 해서 그 자체만으로 반드시 큰 지연이 생기는 것은 아닙니다.

네트워크와 클라이언트가 충분히 여유가 있다면 비트레이트를 어느 정도 높여도 체감 지연 변화가 거의 없을 수도 있습니다.

문제는 현재 네트워크가 안정적으로 처리할 수 있는 수준에 가까워지거나 넘어갔을 때입니다.

예를 들어 실제로 안정적으로 사용할 수 있는 대역폭이 30Mbps 정도인 환경에서 게임 스트리밍도 30Mbps 가까이 사용하려고 한다면 여유 공간이 거의 없어집니다.

이 상태에서 순간적으로 다른 데이터 전송이 발생하거나 Wi-Fi 상태가 나빠지면 패킷이 늦게 도착하거나 일부가 손실될 수 있습니다.

그 결과 영상이 끊기거나 프레임이 건너뛰고, 화면 반응이 늦어지는 것처럼 느껴질 수 있습니다.

Moonlight 문서에서도 네트워크로 인한 프레임 드롭이 발생하면 연결이 불안정하거나 설정한 비트레이트를 네트워크가 감당하지 못하는 경우를 확인하도록 설명하고 있습니다.

높은 비트레이트에서 지연이 생기는 이유

게임 스트리밍에서 중요한 것은 단순히 인터넷 속도 측정 결과 하나가 아닙니다.

안정적인 대역폭과 지터, 패킷 손실, 네트워크 여유를 같이 봐야 합니다.

비트레이트를 네트워크 한계 가까이 올리면 데이터가 한꺼번에 밀리는 상황이 생길 수 있습니다.

공유기나 네트워크 장비 내부에서 전송을 기다리는 데이터가 쌓이면 화면 데이터가 늦게 전달될 수 있고, 무선 상태가 좋지 않으면 패킷 손실과 지터도 증가할 수 있습니다.

특히 게임 스트리밍은 동영상 감상과 조금 다릅니다.

유튜브나 넷플릭스는 어느 정도 데이터를 미리 받아 버퍼에 저장할 수 있지만, 게임은 내가 버튼을 누른 뒤 변화한 화면을 최대한 빨리 보여줘야 합니다.

그래서 화질을 위해 많은 데이터를 보내는 것도 중요하지만 그 데이터를 제시간에 보내는 것이 더 중요합니다.

네트워크만 문제가 되는 것은 아니다

비트레이트를 지나치게 높였을 때 확인해야 하는 것은 네트워크뿐만이 아닙니다.

영상을 받는 기기의 하드웨어 디코더도 해당 비트레이트의 영상을 계속 처리해야 합니다.

Moonlight 개발 문서에서도 클라이언트의 하드웨어 디코더가 실제로 처리할 수 있는 비트레이트에 한계가 있을 수 있고, 해상도와 프레임, 비트레이트에 따라 디코딩 지연이 달라질 수 있다고 설명하고 있습니다.

즉 PC와 네트워크가 충분히 빠르더라도 클라이언트 기기가 처리하기 어려운 설정이라면 좋은 결과가 나오지 않을 수 있습니다.

어느 순간부터는 화질 차이도 작아진다

비트레이트를 5Mbps에서 20Mbps로 올렸을 때와 50Mbps에서 65Mbps로 올렸을 때의 화질 차이가 항상 같은 것은 아닙니다.

처음에는 비트레이트를 높일수록 압축 흔적이 빠르게 줄어듭니다.

하지만 어느 정도 충분한 데이터가 확보되면 그 이후부터는 비트레이트를 더 높여도 눈으로 느끼는 화질 차이가 점점 작아질 수 있습니다.

반면 네트워크가 처리해야 하는 데이터 양은 계속 증가합니다.

그래서 비트레이트를 올릴 때는

화질 개선량과 네트워크 부담이 서로 균형을 이루는 구간

을 찾는 것이 중요합니다.

해상도와 FPS가 올라가면 필요한 비트레이트도 달라진다

비트레이트 값만 따로 생각하기도 어렵습니다.

720p 60fps와 1080p 60fps가 같은 비트레이트를 사용한다면 일반적으로 1080p 쪽이 한 프레임에 표현해야 하는 픽셀이 더 많습니다.

같은 1080p라도 30fps보다 60fps가 1초 동안 처리해야 하는 화면 수가 많습니다.

따라서 해상도나 FPS를 올렸다면 비트레이트도 어느 정도 같이 올라가는 것이 자연스럽습니다.

Moonlight 계열 클라이언트에서도 기본 비트레이트가 해상도와 FPS에 따라 달라지도록 되어 있습니다. 예를 들어 Moonlight Embedded 문서에서는 1080p 60fps의 기본값으로 20Mbps를 사용한다고 설명합니다.

Artemis에서도 해상도와 FPS를 변경하면 비트레이트 기본값이 달라지는 이유가 여기에 있습니다.

코덱에 따라서도 필요한 비트레이트는 달라진다

H.264, HEVC(H.265), AV1처럼 사용하는 코덱도 영향을 줍니다.

코덱마다 같은 화질을 표현하는 압축 효율이 다르기 때문에 단순히

1080p60 = 무조건 몇 Mbps

라고 하나의 숫자로 정하기는 어렵습니다.

같은 비트레이트에서도 코덱에 따라 보이는 화질이 다를 수 있고, 반대로 새로운 코덱은 클라이언트의 디코딩 성능을 더 요구할 수도 있습니다.

결국 해상도, FPS, 코덱, 네트워크, 클라이언트 기기를 같이 봐야 합니다.

저는 기본값에서 조금씩 올려봅니다

이전에 작성한 Artemis 초기 설정 글에서는 처음 사용할 때 너무 많은 설정을 한꺼번에 바꾸지 않고 기본값을 기준으로 시작하는 것을 추천했습니다.

비트레이트도 비슷합니다.

예를 들어 제가 사용하는 1080p 60fps 환경에서는 기본값을 확인하고, 네트워크 상태가 충분히 안정적이라면 5Mbps 정도씩 올려보는 방식으로 사용합니다.

중요한 것은 숫자를 최대한 크게 만드는 것이 아닙니다.

조금 올렸을 때 화질이 좋아지고 끊김이나 지연 변화가 없다면 그대로 사용하면 됩니다.

반대로 화질 차이는 잘 모르겠는데 네트워크 드롭이나 순간적인 끊김이 생기기 시작한다면 다시 낮추는 것이 낫습니다.

특히 외부 네트워크에서는 집 안에서 사용할 때보다 상황이 계속 달라질 수 있기 때문에 약간의 여유를 두는 편이 좋습니다.

Moonlight도 외부 스트리밍에서는 다른 네트워크 트래픽을 위한 여유를 남기도록 연결 속도보다 낮은 비트레이트를 권장하고 있습니다.

결국 가장 높은 값이 아니라 안정적인 값

Artemis의 설명에 있는

비트레이트가 낮으면 화질이 저하되고, 비트레이트가 높으면 지연이 발생할 수 있다

라는 문장은 짧지만 꽤 중요한 의미를 가지고 있습니다.

다만 조금 더 정확하게 표현하면

낮으면 압축으로 인한 화질 저하가 커지고, 너무 높아서 네트워크나 클라이언트의 처리 범위를 넘어가면 지연과 끊김이 발생할 수 있다

정도로 이해하면 좋을 것 같습니다.

게임 스트리밍에서는 화질도 중요하지만 버튼을 누르고 바로 반응하는 느낌이 더 중요할 때가 많습니다.

그래서 저는 비트레이트를 최고값으로 맞추기보다는

화질이 충분하면서도 네트워크 드롭이나 지연이 생기지 않는 가장 높은 안정 구간

을 찾는 것이 가장 좋은 설정 방법이라고 생각합니다.

아무튼 숫자가 높다고 항상 좋은 설정은 아닌 것 같습니다.

게임 스트리밍에서는 결국 많이 보내는 것보다 필요한 만큼 안정적으로 보내는 것이 더 중요합니다.

[게임스트리밍] Apollo, 설치 후 초기 설정[5편]

[게임스트리밍] Apollo, 아르테미스 문라이트 설치 후 초기 설정[6편]

댓글 남기기