OBS

1인미디어 시대, 게임방송, 나도 해볼까? part.4 : 비교와 결론

2018. 12. 16. 21:53

결론 및 종합

앞서 소개한 녹화 방식에 따라 차이를 비교해보기로 한다.

레인보우식스 시즈의 벤치마킹 기능을 이용했다. 그래픽 옵션은 프리셋 최상에, 텍스처는 Very High, 안티앨리어싱과 텍스처 필터링은 끈 상태로 진행했다. 인코딩은 6000kbps로 설정했다.

GPU는 소수연산에 효율적이기 때문에 그걸 강조하기 위해 전력소비도 비교해봤다. 전력소비는 소프트웨어 기반이기 때문에 정확하지 않을 수 있다.

게임 플레이

Time CPU [%] GPU [%] FPS [FPS] CPU Package Power [W] GPU Chip Power [W] Power Combined
max 61.3 100 157 62.268 149.082 206.956
min 20 87 90 46.378 123.465 174.619
avg 44.3 99.8421052631579 120.031578947368 54.7037263157894 135.544189473684 190.247915789474

CPU사용량은 최대 61%, 평균 44%이다.

FPS는 최대 157FPS, 최소 90FPS이고, 평균은 120FPS이다. 편차는 60FPS.

CPU와 GPU의 최대 전력소비량은 207W이다.

게임 플레이 + CPU 인코딩

Time CPU [%] GPU [%] FPS [FPS] CPU Package Power [W] GPU Chip Power [W] Power Combined
max 79.5 100 144 82.233 145.098 225.527
min 32.6 88 88 64.547 127.582 198.656
avg 60.3 98.7894736842105 112.252631578947 73.780 134.084557894737 207.864284210526

CPU사용량은 최대 80%, 평균 60%이다. 인코딩을 하지 않을 때에 비해 평균값은 16%차이, 최대는 19%가까이 차이난다.

FPS는 최대 144FPS, 최소 88FPS, 평균 112FPS이다. 녹화하지 않을 때보다 8FPS정도 떨어진다. 편차는 56FPS.

최대 전력소비는 225W이다. 18W차이이고, 10%가 늘어난 것이다.

게임 플레이 + GPU 인코딩

Time CPU [%] GPU [%] FPS [FPS] CPU Package Power [W] GPU Chip Power [W] Power Combined
max 88 100 141 66.048 143.406 200.306
min 18.7 87 88 50.234 128.52 182.815
avg 49.3631578947369 99.2210526315789 111.536842105263 56.3260315789474 135.858810526316 192.184842105263

CPU사용량은 최대 88%, 평균 49%이다.

FPS는 최대 141FPS, 최소 88FPS, 평균 111FPS이다. 프레임은 CPU인코딩에 비해 낮다. 편차는 53FPS.

최대 전력소비는 200W이다. 녹화하지 않을 때에 비해 오히려 줄어들었다.

뒤쪽에 그래프를 게시할 것인데, 녹화 때문에 프레임이 줄어드니 오히려 전력소비가 감소한 것으로 추측해 볼 수 있다.

게임 플레이 + NDI 전송

Time CPU [%] GPU [%] FPS [FPS] CPU Package Power [W] GPU Chip Power [W] Power Combined
max 51.6 100 147 80.255 145.574 215.345
min 13.7 90 94 32.769 131.828 169.890
avg 39.2178947368421 99 119.326315789474 54.938 139.662978947368 194.600694736842

CPU사용량은 최대 51%, 평균 39%이다. 평균값이 GPU인코딩과 별 차이 없다.

FPS는 최대 147FPS, 최소 94FPS, 평균 119FPS이다. 편차는 53FPS.

최대 전력소비는 215W이다. 다른 컴퓨터에서 인코딩을 해야 하니 결코 적은 수치는 아니다.

차트 비교하기

단순 게임 플레이

GPU사용량에 변화가 없이 안정적이다.

CPU사용량은 FPS에 따라 조금씩 변하고 있다. 13번째~41번째 스캔에서는 FPS에 따라 낮아지고, 거의 40%이하로 유지되고 있다.

CPU 인코딩

GPU사용량이 출렁이는 지점이 많다.

CPU사용량은 거의 60%대에서 변화한다. 갑자기 CPU 사용량이 떨어지는 지점은 인코딩 과부화로 영상 출력이 끊기는 부분이었다.

전체적인 FPS그래프가 인코딩을 하지 않을 때와 비슷하다.

GPU 인코딩

GPU 사용량이 출렁이는 지점이 많다. CPU 인코딩에 비해서는 적다.

65번째~75번째 스캔에서 CPU 사용량이 크게 증가한다. 위 표에서 GPU 인코딩 중의 CPU 사용량 최댓값이 88이어서 GPU 인코딩의 장점을 부각하지 못했다. 녹화 영상이나 게임 벤치마킹에서는 별 문제가 발견되지 않았다. 인코더가 불안정하거나 다른 프로세스가 갑자기 실행된 것일 수도 있다.

꼭짓점이 부드럽다고 해야할까, 전체적인 FPS 그래프가 좀 다르다.

NDI 인코딩

CPU 사용량이 다른 인코딩에 비해 안정적이다.

GPU 사용량은 자주 출렁인다. 하지만 다른 인코딩 방식처럼 크게 떨어지지 않는다.

결론

각각의 장단점이 있다. NDI는 리소스를 분산시킬 수 있지만 전체적으로는 가장 비효율적인 방법이다. 또한 좋은 네트워크 장비가 요구된다.

GPU는 전체적으로 CPU, GPU사용량에 큰 변화 없이 인코딩이 가능하다. 프레임 감소는 제일 크다.

CPU는 전력소비는 크지만, 대체로 안정적이다. FFmpeg라는 인코더가 안정적인 것도 있지만, CPU는 리소스 분배에 있어 비교적 여유롭기 때문이다.

1인미디어 시대, 게임방송, 나도 해볼까? part.1

1인미디어 시대, 게임방송, 나도 해볼까? part.2: OBS 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.3: CPU 인코딩 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.4 : 비교와 결론

1인미디어 시대, 게임방송, 나도 해볼까? part.3: 인코딩 설정

2018. 12. 1. 23:46

CPU인코딩

CPU 인코딩 설정은 아래와 같게 하면 된다. x264코덱은 FFmpeg 코덱으로 성능이 좋은 편이기 때문에 비트레이트만 설정해주면 된다.

Profile은 Twitch에서 Main, 또는 High를 권장한다. High는 리소스를 더 많이 사용하고, 디코더의 성능도 중요하기 때문에 시청자의 성능에 따라 버퍼링이 생길 수 있다.

Tune을 설정하면 인코딩에 bias를 주어서 영상의 종류에 따라 품질의 향상이 생길 수 있다. 보통 게임의 경우는 film이나 설정하지 않는 것을 추천한다.

x264 Options 항목은 FFmpeg Encoder의 Parameter를 바꿀 수 있다. Parameter는 CPU Usage Preset, Profile. Tune의 선택에 따라 최적의 값이 정해져 있다. 그렇기 때문에 구지 바꿀 필요는 없다.

자세한 사항은 FFmpeg 공식 홈페이지에서 확인할 수 있다.

GPU 인코딩

GPU로 코덱은 GPU 업체에서 코덱 라이브러리를 개발하여 배포하는 것이기 때문에 업체별로 다르다.

AMD의 GPU를 사용하기 때문에 AMD를 기준으로 설명할 것이다.

Encoder를 H264/AVC Encoder (AMD Advanced Media Framework)를 선택하면 AMD GPU로 인코딩을 할 수 있다.

Quality를 Speed로 설정할 경우 품질이 너무 낮아지기 때문에 Balance 이상으로 설정하는것이 좋다.

FFmpeg의 경우는 x264 Options 항목에서 사용자가 원하는 Parameter를 설정할 수 있었는데, View Mode를 Basic이 아닌 다른 설정을 선택하면 AMD도 다양한 Parameter를 지정할 수 있다.

FFmpeg 코덱은 현재 프레임과 바로 이전 프레임의 움직임 비교만 하는 것이 기본값이다. 하지만 AMD는 4개 이전의 프레임까지 비교하는것이 기본값이기 때문에 원하지 않는다면 고급 설정을 통해 줄일 수 있다. 위 사진에서 두번째 빨간 박스인 Maximum Reference Frames를 줄이면 된다.

WBAQ는 인지 특성을 고려하여 인코딩하는 것이다. 특정 상황에서 성능 향상이 있다.

Enforce HRD는 Encoding을 한 출력물이 올바른지 검사하는 HRD를 강제로 사용하도록 한다. 이 옵션을 끌 때는 오랫동안 영상을 Encoding하면서 문제가 없는지 확인할 필요가 있다.

OpenCL Transfer는 Frame을 Mapped Memory 대신 OpenCL을 통해 전송는 기능이다. GPU 메모리의 사용량이 많은 경우 OpenCL을 사용하는게 도움이 될 수 있다.

GPU로 녹화를 하고자 한다면 내장그래픽도사용이가능하다는 것을 고려해보면 좋다.보통은외장그래픽이추가되면내장그래픽이꺼진다. 그래서 바이오스에서 수동으로 사용가능하도록 설정해야 한다. 내장 그래픽은메인메모리를사용하기때문에 CPU, GPU 처리에 영향은없지만메모리가느려져성능하락이발생할수있다.

GPU는인코딩연산에특화되어있기때문에더적은전력소비, 더적은발열량으로인코딩이가능하다. 그러므로 녹화하려는장면이 CPU를주로사용하는지, GPU를사용하는지알기어렵고, 같은인코딩설정으로어떤프로그램이든녹화하고싶다면 GPU인코딩도 좋은 선택이다.

2-PC 방송

캡처카드가 없다면 NDI플러그인은 좋은 선택이다.

영상 송출용 컴퓨터에서는 두가지 방법을 사용할 수 있다.

1. NDI Scan Converter 사용하기

다운로드 페이지(https://www.newtek.com/ndi/tools/)에서 NDI Tools를 설치한다.

이때 Scan Converter는 반드시 설치해야 한다.

Scan Converter를 실행하면 트레이에 Scan Converter가 나타난다.

트레이 아이콘을 마우스 우클릭을 하고 Audio Source를 설정한다.

2. OBS의 NDI-Plugin 이용하기

다운로드 페이지(https://github.com/Palakis/obs-ndi/releases)에서 OS에 맞게 적절한 프로그램을 설치한다.

OBS를 실행하고 도구-NDI Output Settings를 클릭한다.

Main Output을 활성화하고 저장한다.

송출용 컴퓨터에서 OBS로 처리해야할 게 없다면 Scan Converter가 간편하고 리소스 사용량도 더 적다.

영상 인코딩용 컴퓨터는 OBS에서 플러그인을 사용하도록 설정해야 한다.

소스 추가 버튼을 클릭하고 NDI Source를 추가한다.

다음에 나타나는 창에서 소스를 선택한다.

Bnadwidth를 낮게 하면 품질이 크게 낮아지니 그대로 둔다.

YUV Range는 Partial, YUV Color Space는 BT.601로 설정한다.

트위치에서 영상의 색상 범위를 위와 같이 제한하고 있기 때문이다.

1인미디어 시대, 게임방송, 나도 해볼까? part.1

1인미디어 시대, 게임방송, 나도 해볼까? part.2: OBS 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.3: CPU 인코딩 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.4 : 비교와 결론

1인미디어 시대, 게임방송, 나도 해볼까? part.2: OBS 설정

2018. 12. 1. 23:45

OBS 소개

OBS는 Open Broadcaster Software로 오픈 소스 개인 방송용 소프트웨어이다.

방송에 필요한 기본적인 도구들을 제공하고 플러그인을 통해 다양한 추가 기능을 제공한다.

설정에서는 출력 부분을 제외하고는 설명할 부분이 없다.

출력은 인코딩 방법에 따라 추후 설명한다.

장면과 소스

OBS에서 화면을 출력하려면 장면을 만들고, 소스를 구성하면 된다.

소스에는 장면에 표시할 요소를 추가할 수 있는데, 창 사진 동영상 브라우저 게임과 화면 전체 등을 추가할 수 있다.

게임을 출력하고자 할 때는 게임 캡처가 가장 리소스를 적게 사용하고 그 다음이 디스플레이, 마지막으로 창 캡처가 리소스를 제일 많이 사용한다.
창 캡처는 호환성 문제도 있어서 별로 추천하지 않는다.

또한 소스에는 장면도 추가할 수 있는데, 위 스크린샷에서 Overlay와 ㅋㅎ배경은 장면을 추가한 것이다.
"ㅋㅎ배경" 장면은 화면 가운데에 프로필 이미지가 보이는 바탕화면인데, NDI Source가 아무것도 확인이 되지 않으면 자동으로 바탕화면이 보이도록 해준다.
Overlay는 왼쪽 아래 '콜홍'사진과 채팅 소스를 가지고 있다.

이렇게 구성해두면 추후 어떤 새로운 장면을 추가하더라도 프로필 사진과 채팅소스를 따로 추가할 필요가 없다.

믹서와 모니터

믹서는 녹음될 오디오 채널들을 표시해준다. 각 채널의 소리 크기를 보여주고, 믹싱을 하거나 모니터링 할 수 있다. 각 오디오 채널별로 오른쪽 톱니바퀴를 통해 오디오를모니터하거나 필터를 할 수도 있다.

채널별 입력되는 소리의 크기는 최대(피크)가 노란 부분을 넘지 않도록 하는게 좋다. 그 범위는 -20dB ~ -10dB이다. 대부분 음원 유통 채널은 -13~ -16LUFS로 정의하고,유럽 방송 기준은 -24 LUFS 이니 그 사이로 적당히 맞추면 된다.

dB는 기술적 단위이고, LUFS는 청각적, 감각적 단위이다. 사람은 저음과 초고음에 비해 사람 목소리에 해당하는 음에 대해 더 민감하게 반응하는데, 그걸 반영한 단위가 LUFS이다.

LUFS로 표시해주는 툴을 사용한다면 더 좋겠지만 dB만 잘 맞춰도 소비자가 듣기에 거북하지 않다.

믹서에서 오른쪽의 톱니바퀴를 눌러 Advanced Audio Properties를 클릭하면 각오디오 채널을모니터하고 조절하는 기능을 제공한다.

필터

일반적인 1인 미디어 제작 환경은 전문적인 환경과 다르기 때문에 입력되는 모든 오디오와 비디오를 녹화하기에는 개인정보가 포함되거나 컨텐츠 소비자가 듣기에 불편한 소리가 포함될 수 있다. 이를 없애거나 줄이기 위해 OBS에서 기본적으로 몇 가지 필터를 제공한다.

오디오를 위해서는 노이즈 게이트, 컴프레서 등이 있다. 노이즈 게이트는 사용자가 지정한 음성의 크기를 기준으로 그보다 더 작은 소리는 아예 출력하지 않는다. 컴프레서는 기준값 이상의 소리를 줄이는데, 갑자기 큰 소리를 내거나 물건이 떨어지는 소리처럼 예상하지 못한 큰 소리가 날 때 출력을 줄여 컨텐츠 소비자가 불편하지 않게 해준다.

비디오를 위해서는 크롭, 컬러 코렉션, 크로마 키 등이 있다. 크롭은 입력 영상을 잘라내고, 컬러 코렉션은 색감을 조절하는 필터이다. 크로마 키는 흔히 방송에서도 많이 사용하는 기능이다. 특정 색을 지정하면 그 색이 나타나는 부분은 영상 입력이 아닌 것, 또는 투명한 색으로 인식한다. 그러면 뒤쪽 레이어가 보인다. OBS에서는 뒤쪽 소스가 보이는 것이다.

필터를 간단히 설명한 이유는 필터는 직접 만져보며 배워야 한다고 생각하기 때문이다. 이론적인 내용보다 개인적인 선호와 주변의 상황에 맞는 필터들을 수많은 테스트를 거쳐 직접 결정하길 바란다.

플러그인

OBS에서 기본적으로 제공해주는 기능만으로도 충분하지만, 외부 플러그인을 추가하여 OBS를 200% 활용할 수 있다. 오픈 소스 답게 플러그인들도 다양하고 빠르게 변한다. 그렇기 때문에 플러그인도 여러가지 커뮤니티를 돌아가면서 찾아보면 좋다.

추천하는 플러그인으로는 NDI 플러그인과 리모트 플러그인이다. NDI는 추후 설명할 예정인데, 캡처카드 없이 2-PC 방송을 하기위한 플러그인이다. 리모트는 OBS를 원격으로 조절하는 플러그인이다. 원컴방송인 경우에도 모바일 기기의 웹 브라우저로 OBS 장면을 바꾸거나 방송을 송출/중단할 수 있다. 리모트 플러그인은 종류가 다양하니 직접 비교하며 찾아보면 좋다.

1인미디어 시대, 게임방송, 나도 해볼까? part.1

1인미디어 시대, 게임방송, 나도 해볼까? part.2: OBS 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.3: CPU 인코딩 설정

1인미디어 시대, 게임방송, 나도 해볼까? part.4 : 비교와 결론

+ Recent posts