자기가 즐기는 게임을, 혹은 자신이 PC로 뭔가 하고 있는 내용을 다른 사람들과 공유하고 싶어하는 분들이 요즘 부쩍 많아진 것 같은데요, 여러분들이 보시기엔 어떠신가요?

예전 같으면 사진과 글로 이뤄졌을 디자인 관련 강좌를 이제는 자신의 화면을 영상으로 송출해서 시청자들과 실시간으로 의견을 주고 받아가며 수업을 하기도 하고, 

또 게임을 예로 들어보면, 오프라인으로 만나야만 게임에 대한 특별한 노하우, 스킬을 상대방에게 배울 수 있었는데, 이제는 집에서 자신의 게임 스트리밍 화면을 통해 문제점을 지적 받고 노하우를 배울 수 있게 되었거든요.

이처럼 실시간 스트리밍이라는 것은 더이상 각 분야의 BJ들이나 컨텐츠 크리에이터처럼 소위 전문가들에게만 국한된 것이 아닌, 누구나 쉽게 그리고 편하게 이용할 수 있는 기능이 되었습니다.

오늘은 바로 이 실시간 스트리밍에 관해서 만약 내가 직접 스트리밍을 하려 한다면, 어떤 과정을 거치고, 또 쾌적한 스트리밍을 위해서는 어떤 하드웨어 조건이 갖춰져야 하는지에 관해 이야기 드리려 합니다.

평소 스트리밍에 관심이 많으셨거나 혹은 잘 몰라서 해볼 엄두조차 못 내셨던 분들이라면, 이번 내용을 잘 참고하시고, 실시간 스트리밍에 직접 한번 도전해보시면 좋을 것 같습니다. 그럼 시작해보도록 하겠습니다.


실시간 스트리밍, 그거 왜 하는데?

글쎄요? 이유라면 굉장히 다양 하겠죠?

누군가에게 내가 알고 있는 지식을 나누기 위해서 일수도 있겠고, 어떤 사실이나 상황을 대중들과 소통하거나 공유하고 싶어서 일수도 있겠고, 내가 하는 게임을 친구들에게 자랑하고 싶어서 할 수도 있고, 혹은 학업이나 과제를 해결함에 있어 부족한 부분을 도움 받고 싶어서 일수도 있겠죠?


실시간 스트리밍 어떻게 하면 좋을까?

실시간 스트리밍에 관해서는 다양한 플랫폼이 존재합니다. 여러분들이 PC 또는 모바일로 어떤 영상 컨텐츠를 보고 있다면, 해당 영상 컨텐츠를 제공하는 상당수의 플랫폼이 실시간 스트리밍을 기능을 지원합니다. (물론 멜론이나 넷플릭스처럼 방대한 양의 컨텐츠를 한 방향으로만 스트리밍 되는 경우는 제외하고 말이지요)

대표적으로는 Youtube, 아프리카 TV 그리고 트위치 등이 있는데, 가장 많은 사람들이 이용하는 무료 영상 송출 소프트웨어 기반에, Youtube 플랫폼을 기준으로 간단하게 설명 드리도록 하겠습니다.

obs_download.jpg


우선 OBS를 다운받아 설치합니다. 이는 방송 송출을 위한 전용 소프트웨어로 XSplit와 같은 부분 유/무료 소프트웨어와 달리 완전한 무료 입니다. 해당 1) 소프트웨어를 설치해 스트리밍 하려는 2) 화면의 품질을 설정한 뒤, 내가 영상을 송출하고자 하는 3) 플랫폼과 연결시켜주면 됩니다.

obs_setup_streamkey.jpg


일단 Youtube 플랫폼을 이용할 것이므로, Youtbue를 선택하고 관련 스트림 키를 Youtube 스튜디오에서 확인 후 이곳에 입력해줍니다. 이 설정 만으로 내 Youtube 채널과 OBS 송출 소스가 서로 매치되는 셈이죠.

obs_setup2.jpg


영상 송출을 위한 출력 해상도 및 프레임을 설정해줍니다. 해상도나 비트레이트 그리고 프레임 등 모두 다 높으면 높을수록 화질이 좋고 품질이 좋은 영상이 송출되지만, 시스템 자원을 너무 많이 소모 시킨다는 단점도 있습니다.

또한 PC를 제외하고도 스마트폰이나 태블릿으로 영상을 보는 사람들도 많기 때문에 현실적인 부분을 고려하여 최소 720p30 혹은 1080p30 정도로 설정하여 영상을 내보내는 것이 무난해 보이는데, 이 부분은 여러분들의 하드웨어 자원과, 또 스트리밍을 받을 분들의 상황을 고려해서 결정하는 것이 적절하다 하겠습니다. (개인적으로는 1080p30fps 정도가 무난하지 않을까 싶습니다)

obs_setup_encode2.jpg


이 작은 옵션에 우리는 주목해야 합니다. 사실 오늘 주제에 가장 가까운 부분이기도 하고, 이 부분을 어떻게 설정하느냐에 따라 실시간 스트리밍이 쾌적해질수도, 혹은 불편해질 수도 있기 때문입니다.

일단 시스템에 그래픽 카드를 장착한 분들이라면 (NVIDIA NVENC H.264) 그래픽 카드를 통해 인코딩하는 방법을 추천 드립니다. 특히 게임처럼 CPU 자원을 어느 정도 잡아먹는 경우, 스트리밍 인코딩까지 CPU로 처리하면 상당한 부담이 걸릴 수 있기 때문에 그래픽 카드로 처리하는게 좀 더 쾌적한 스트리밍이 가능한 방법이라 할 수 있겠습니다.

start_broad.jpg


모든 설정이 완료되면, 왼쪽의 노란색 테두리 영역의 소스 목록에서 디스플레이 캡쳐나 다른 다양한 방식 중 한가지를 선택하여 내가 내보내고자 하는 게임 또는 소프트웨어를 지정해주고, 오른쪽의 노란색 테두리의 제어 영역에서 방송 시작을 하거나, 또는 실시간이 아닐 시, 방송 녹화를 눌러주면 됩니다~ 쉽죠?


실시간 스트리밍에 대한 CPU 점유율 살펴보기

녹화라면 몰라도 실시간 스트리밍을 진행할 경우에는 원활한 스트리밍 진행을 위해서 특히 더 CPU 점유율을 신경 써줘야 할 필요가 있는데요,

실시간 스트리밍 처리 시, 해당 소프트웨어들이 시스템 자원을 얼마나 소모하는지 살펴보기 위해서 그 어떤 스트리밍 관련 설정 없이 순수하게 게임만을 먼저 플레이 해보고, 그 후에 실시간 스트리밍을 진행하면서 같은 게임을 플레이 할 때 CPU 점유율이 어떻게 변하는지 살펴보는 것으로 간접 체험 해보도록 하겠습니다.

 여기서는 CPU 인코딩을 사용하지 않고, VGA 인코딩을 사용했으며, 아래 보이는 점유율 차이가 순수하게 실시간 스트리밍을 위한 작업 시 더 발생되는 CPU 점유율 차이라고 보시면 될 것 같습니다. (허나 사용하는 시스템 환경에 따라 CPU 점유율 편차가 있을 수 있는 부분이니 참고 바랍니다)

screen_lobby.jpg


배틀 그라운드를 실행하여 메뉴 화면에서 대기중일때의 CPU 점유율의 모습입니다. 보시면 아주 간혹 순간적으로 30%를 찍은 부분을 제외하고는 어지간하면 30%가 안되는 CPU 점유율을 보여주고 있습니다.

굳이 평균으로 어림 잡아본다면, 대략 27~28% 정도 되지 않을까 싶네요.

screen_lobby_obs.jpg


이번에는 실시간 스트리밍을 진행하면서 같은 메뉴 화면 대기 구간에서의 CPU 점유율을 기록한 사진입니다. 아까와 큰 차이는 아니지만, 반대의 상황이 생겼네요. 아주 간혹 순간적으로 30%를 찍은 부분을 제외하고는 어지간하면 30%를 넘어가는 CPU 점유율을 보여주고 있습니다. 이 또한 굳이 평균으로 어림 잡아본다면, 33~34% 정도 되지 않을까 싶네요.

compare1.jpg


위는 앞서 보여드린 CPU 점유율 차이를 해당 부분만 겹쳐서 좀 더 보기 쉽게 만든 것으로, 작게는 5% 많게는 7% 정도의 CPU 점유율 차이를 보이는 것을 알 수 있습니다. (또한 살짝 엿보이는 게임 내 메뉴 화면 실시간 프레임도 스트리밍을 하기 전과 후에 차이가 좀 있는걸 알 수 있습니다)

screen3.jpg


다시 순수 게임만 실행했던 조건으로 돌아와서 이번에는 매치 실행 후, 대기 장소에 입장한 순간부터 1분간 시간을 흘려 보낸 뒤에 CPU 점유율 상황을 캡처해봤습니다. 그 결과 메뉴 화면에 있을 때 보다 약 12~13% 가량 더 높아진 CPU 점유율을 확인 할 수 있었습니다.

최소 40% 이상의 점유율을 보여주고 있고, 순간적이긴 하나 50% 점유율을 넘어선 구간도 한번 볼 수 있었네요.

10세대 코어 i7-10700KF 프로세서는 8코어 16스레드 이므로, 16스레드를 기준으로 평균 42~43% 정도의 점유율을 보인다면, 약 6.7코어 정도 소모하는 상황이라고 볼 수 있는데, 게임 외에도 자잘하게 사용되는 스레드 자원도 있을 테니 배틀 그라운드는 최소 6코어 정도는 써먹는 게임이라고 봐야겠습니다. (교전을 하거나 차량을 타는 등 뭔가 액션이 빈번하게 발생되는 순간적으로 스레드는 좀 더 잡아먹게 되니… 최소 6코어 정도는)

usage.jpg


이번에는 같은 조건으로 실시간 스트리밍을 진행하면서 매치 실행 후 대기 장소에서 1분간 시간을 흘려 보낸 뒤에 점유율 상황을 캡처해봤습니다. 여기서는 순간 60%까지 올라가는 점유율도 보이긴 했지만 그건 로딩 초반이니까 제쳐 둔다 하더라도 50% 점유율을 넘어서는 구간들이 좀 여럿 보이긴 하네요.

평균적으로 보면 약 48% 정도는 되지 않을까 싶은데, 50% 안쪽의 점유율이라 무난해 보이지만, 문제는 여기서 교전이나 특정 액션이 발생될 때 순간 치솟는 점유율이 지금보다는 더 높아질 거라는 점이 아닐까 싶습니다.

compare2.jpg


마찬가지로 두 CPU 점유율 차이를 좀 더 쉽게 비교할 수 있도록 겹쳐둔 자료 입니다. 메뉴화면에 가만히 있을때와 마찬가지로 인 게임에서도 좀 더 증가한 CPU 점유율을 볼 수 있습니다. 비슷한 수준으로 차이가 나는것 같네요~


CPU 점유율과 쾌적한 방송, 게임 플레이의 관계

듀얼-코어 보다는 쿼드-코어가 더 좋고, 또 쿼드-코어 보다는 옥타-코어가 더 좋다고 생각하는 이유는 지금 우리가 사용하는 상당수의 프로그램들이 과거와 달리 다수의 코어와 스레드를 지원하기 때문입니다.

아무리 코어와 스레드가 많아도 내가 사용하려는 소프트웨어가 싱글 혹은 듀얼 스레드 정도만 지원한다고 하면, 그 많은 남은 코어와 스레드는 잉여 자원이 되어버리거든요. (물론 여기서는 CPU의 남는 자원을 바탕으로 더 높은 성능으로 보태준다거나 하는 기술적인 면은 고려하지 않겠습니다)

screen2.jpg


다행인건 지금 우리가 쓰는 대부분의 프로그램이 다수의 코어와 스레드를 활용할 수 있다는 것이고, 넉넉한 코어와 스레드 덕분에 이러한 게임을 하면서도 동시에 자원적으로 여유를 남겨 필요한 또 다른 작업(이를 테면 실시간 스트리밍과 같은)을 수행함에 있어 쾌적한 환경을 계속 유지 할 수 있도록 해준다는 점 입니다.

만약 이 과정에서 CPU 자원이 부족해 진다면, 정상적인 컨디션으로 CPU가 제 성능을 다 내기 어려워지고, 그것은 곧 우리가 직접적으로 불편한 체감(?)을 얻게 되지요. 때문에 CPU 점유율은 쾌적한 게임 플레이 및 방송이나 스트리밍에서 중요하게 생각해야할 요소 중 하나라 할 수 있습니다.

CPU 점유율이 너무 높아도 쾌적한 게임 플레이나 실시간 스트리밍에 영향을 줄 수 있다, 이 정도로 기억해주시면 될 것 같습니다.


실시간 스트리밍 하는데, 필요한 하드웨어 수준은?

이것도 천차만별인데, 우선 게임으로 스트리밍을 하려는 경우는 6코어~8코어를 지원하는 게임이 많아진 요즘 (혹은 그 이상을 지원하는 게임도 있죠) 6코어 기반의 프로세서로는 실시간 스트리밍까지 쾌적하게 소화하기에는 살짝 무리가 있다고 판단됩니다.

물론 게임에 따라 다를 수 있고, 또 인코딩 작업을 VGA에게 맡기면 되기 때문에 불가능한 건 아니지만, 쾌적한 실시간 스트리밍을 위해서는 약간 더 CPU 자원에 여유가 있는게 좋습니다. 때문에 8코어 기반의 프로세서나 혹은 그 이상의 코어와 스레드를 지원하는 프로세서가 좀 더 좋지 않을까 생각되네요.

물론 게임이 아닌, 가벼운 소프트웨어나 단순 화면 스트리밍 수준이라면 6코어 정도의 프로세서로도 충분히 쾌적하게 가능할 것으로 보입니다. 이 경우에는 굳이 그래픽 카드가 없어도 내장 그래픽과 CPU 자원만으로 충분히 쾌적하게 진행 가능하기도 합니다.


VGA가 인코딩 한다면, 고성능 CPU는 필요 없지 않을까?

위에서도 언급을 했지만, 게임을 주제로 실시간 스트리밍을 하고자 한다면, 영상 인코딩을 그래픽 카드로 처리하는 것이 좋습니다. CPU 보다 효율이 더 좋기 때문인데요, 

그래서 배틀 그라운드 낙하 직 후에 초반 파밍 구간에서 약 3분 분량으로 간단하게 테스트 해봤습니다.

cpu123.jpg


위에서 가장 점유율이 높은 (CPU인코딩) 부분이 CPU로 인코딩을 처리하면서 캐릭터가 파밍을 활발하게 할 때고, 중간 (CPU 인코딩2) 단계가 CPU로 처리하면서 캐릭터가 가만히 있을 때이며, 가장 낮은 (VGA 인코딩) 점유율을 보인 단계가 VGA로 인코딩 처리하면서 게임을 플레이 할 때의 CPU 점유율 현황을 나타낸 것입니다.

그래픽 카드로 인코딩 처리 하면서 게임을 하는 것이 CPU 점유율에 부담을 안주는 방향이라는 점을 알 수 있지만, 대신 게임 성능은 좀 떨어질 수 있습니다. 말이 나온김에 게임 성능이 떨어질 수 있다는 부분에 대해서도 살펴보도록 하죠.

graph.jpg


위는 실시간 스트리밍 없이 순수하게 게임을 플레이 했을 때의 프레임 결과를 포함해 VGA로 인코딩을 처리했을 때와 CPU에 인코딩을 처리 했을 때의 결과를 모두 포함시킨 자료 입니다.

순수한 게임 성능으로는 평균 약 171 프레임 정도 되는데, 이걸 실시간 스트리밍 처리하면서 인코딩을 VGA에게 맡겼더니 평균 152 프레임으로 약 20프레임 정도 하락했습니다. 하지만 VGA 자원을 살리겠다고 CPU로 인코딩을 맡기게 되면 평균 146 프레임으로 좀 더 하락하게 되죠.

따라서 게임으로 실시간 스트리밍을 하고자 한다면 그래픽 카드가 인코딩을 담당하는게 좀 더 유리하다고 생각되는데요, 다만, 이것도 그래픽 카드의 성능에 따라 효율이 달라질 여지가 있어서 최종적으로 뭐가 더 유리 할지는 각자의 시스템 상황에 따라 좀 더 고민 해봐야 하지 않을까 싶네요.

중요한 건, 앞서 실시간 스트리밍을 진행 할 때 확인되었던 CPU 점유율 차이는 생각보다 크지 않았지만, 실제로 게임 플레이에는 적지 않은 영향을 끼쳤다는 점 입니다.

물론 VGA에게 인코딩 처리를 맡겼기 때문에 아무래도 직접적인 성능 하락은 피할 수 없는 부분이긴 하지만, 그것과는 별개로 일정 부분 CPU 역시 실시간 스트리밍 작업을 위해 점유된 리소스가 있는 만큼 전체적으로 성능 하락이 일어났다고 볼 수 있기 때문에 좀 더 넉넉한 자원을 가진 프로세서를 선택하는 것이 원활한 실시간 스트리밍을 위해 유리하다 하겠습니다. (물론 게임 스트리밍을 하겠다면, 그래픽 카드도 고사양으로~)


쾌적한 스트리밍을 위해서는 하드웨어도 좋아야

어떤 스트리밍을 하고자 하는가에 따라 요구되는 시스템 사양이 얼마든지 낮아질 수도, 높아질 수도 있습니다. 다만 상당수 많은 분들이 게임을 주제로 스트리밍을 하고 있고, 또 하고자 하기 때문에 이런 부분을 고려 했을 때 평균 이상의 고성능 하드웨어가 필요하지 않나 생각되네요.

그래픽 카드가 부족하면 그냥 게임 플레이가 좀 불편해지는 수준에서 끝날 문제지만, (물론 시청자 성향에 따라서는 이 부분을 불편하게 생각할 수도 있겠죠?) 프로세서 자원이 부족하면 게임 플레이 뿐만 아니라 스트리밍까지 모두 불편해지는 상황이 올 수 있기 때문에 신중히 고민하고 좋은 프로세서를 선택해야 한다고 생각합니다.

10th_cpu.jpg


원활한 실시간 스트리밍, 분명 많은 코어와 스레드를 지원하는 프로세서가 도움이 됩니다. 그러나 같은 코어와 스레드를 지원한다 하더라도 내가 공유하고자 하는 컨텐츠가 무엇인지 여기에 따라서 프로세서의 선택은 갈릴 수 있겠죠. 왜냐? 가격에서 차이가 있으니까요.

실시간 스트리밍으로 보여주고 싶은 내용이 랜더링이라면 랜더링 성능이 더 좋은 프로세서를 쓰면 되고, 디자인 강좌라면 디자인 강좌에 더 효율적인 프로세서를 쓰면 되며, 게임이라면 게임 성능이 더 잘나오는 프로세서를 쓰면 됩니다.

만약 그 성능이 다 비슷하고 고만고만 하다면 그땐 가격이 더 저렴한 제품을 선택하는 방법도 있겠죠? 평소 스트리밍에 관심이 있었거나, 한번쯤 호기심이 생긴다 하시는 분은 업그레이드니, 프로세서니 하는 것들 신경 쓰지 마시고 지금 바로 시도해보세요!

해보시고 스트리밍 퀄리티가 맘에 들지 않는다거나 좀 더 부드럽게 진행하고 싶다는 욕심이 생긴다면, 그때 준비하셔도 됩니다. 원하는 소프트웨어나 게임 성능이 잘 나오고, 실시간 스트리밍도 잘 받쳐줄 수 있는 프로세서와 새로운 시스템을 말입니다.

감사합니다.