AMD advanced media framework

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 : 비교와 결론

+ Recent posts