목차

OBS 설정의 중요한 부분들 설명

방송

인터넷 방송은 RTMP라는 프로토콜을 사용합니다.

RTMP는 업로드 주소에 해당하는 RTMP URL 과 암호에 해당하는 “스트림 키” 로 이루어져있으며 RTMP 와 스트림 키는 방송을 하고자 하는 플랫폼(YouTube, 트위치)의 자신의 방송 대쉬보드에서 받아올수 있습니다.

YouTube 설정
YouTube 설정

OBS는 기본적으로 YouTube나 트위치 등은 지원하지만 지원하지 않는 방송 플랫폼의 경우는 RTMP 주소와 스트림 키를 직접 입력하면 어디든 방송이 가능합니다. YouTube나 트위치도 RTMP 주소와 스트림 키를 입력하는 사용자 지정 방식으로도 전부 가능합니다.

사용자 지정 RTMP 주소와 스트림 키 입력 화면
사용자 지정 RTMP 주소와 스트림 키 입력 화면

출력 탭

출력 탭에서는 위에서 설정한 RTMP로 방송 플랫폼에 전송되거나, 녹화 되는 영상/오디오의 품질에 대한 설정을 할 수 있습니다.

출력방식

- 단순/고급으로 설정을 변경할 수 있습니다. 단순 설정은 고급 설정의 내용에 포함되므로 고급 설정에 대하여만 설명하도록 하겠습니다.

방송

- 방송 송출되는 영상의 화질에 대한 설정입니다. 실제로 영상의 오리지널 소스를 인코딩(압축)하지 않으면 초당 데이터량(비트레이트)이 매우 크기 때문에, 업로드 서버의 데이터를 받아들이는 속도라던지 인터넷망의 속도의 제한 때문에, 영상을 전부 전송하기가 힘듭니다. 영상을 제시간에 제대로 전송 하지 못하면 영상이 끊기거나 하겠죠? 따라서, 영상을 OBS에서 방송 플랫폼으로 실시간 업로드(스트리밍) 할때 실시간으로 압축(인코딩)하여 용량을 줄여서 내보내게 됩니다. 그것에 대한 설정을 하게 됩니다. 세세한 설정은 해당 인코딩(압축)에 대한 압축률이나 방식 등등 세부 옵션이라고 생각하시면 됩니다.

인코더

인코더에 대해서는 사실 가장 좋은 화질로 인코딩 할 수 있는 인코더는 X264 입니다. 하지만 그렇게 하기 위해서는 CPU 점유율이 100% 정도로 올라가게 되고, 드롭 프레임이 많이 발생하는 등의 문제가 발생할 수 있습니다. 그래서, X264의 설정을 줄여서 화질을 낮추게 되면, CPU 는 좀 편안하게 동작하지만, 화질이 하드웨어 인코더보다 많이 떨어지게 됩니다. 실제로 X264 경우는 영상 편집 프로그램에서 결과물을 렌더링할 때(비실시간) 많이 사용하는 인코더라고 볼 수 있습니다. 실시간 라이브 방송에는 적합하지 않다고 볼 수 있습니다.(물론 CPU가 아주 좋으면 실시간 라이브 방송에도 어느 정도 사용은 할 수 있습니다.)

NVENC와 QSV는 GPU 파워의 영향을 받게 되는데 소스 영상이 해상도가 높고 인코더의 설정을 높게 해야 할 경우 고급형 엔비디아 그래픽 카드를 사용하여 NVENC를 쓰면 많이 유리합니다. 하지만 인텔 내장 GPU 정도로도 충분한 해상도나 화질의 영상은 QSV로도 비슷한 화질의 영상이 가능합니다. 화질 및 속도는 NVENC가 좀더 유리하다고 알려져 있으나 QSV도 크게 차이가 나지는 않는다고 합니다. 인코더 설정을 최대로 높게 해서 GPU의 사용량을 모니터링 해보고 결정하면 좋을듯 합니다.

게임 방송을 하는 경우에는 그래픽 카드로는 게임 화면을 연산하기 때문에 남는 QSV로 따로 독립적으로 방송 송출 인코딩을 하면 많이 도움이 됩니다.

목표 사용 수준

Quality로 놓으면 실시간 속도가 좀 느리더라도 화질 중심으로 인코딩 작동하고, Balanced로 놓았을 때는 속도와 품질이 둘다 균형있게 맞춰집니다. 인코딩 속도가 빠르면 영상이 인코딩에 의해 딜레이 되는 정도가 줄어들지만 화질은 더더욱 안좋아지게 됩니다. Balanced를 기본으로 사용하고 조금 GPU 파워가 남는다 싶으면 Quality 로 설정하면 화질에 좀더 이득을 볼수 있습니다.

만약 CPU 네이티브 인코더인 X264 사용 시에 너무 느리게 인코딩이 되서 드롭되는 프레임이 생긴다면 속도 위주로 재조정을 해야합니다. 하지만 하드웨어 인코더(NVECN, QSV)를 사용할 때는 거의 그럴 일은 없습니다.

코덱을 QSV나 NVENC, X264등으로 설정 후에 아래와 같은 해당 코덱 세부 설정이 있습니다.

사실 QSV나 NVENC, X264 등도 모두 H.264라는 표준 코덱을 기반으로 한 방식들이기 때문에 세부 설정은 전부 비슷비슷합니다.

Profile

코덱의 프로파일 설정

현재 H.264/AVC에서 제공되고 있는 프로파일은 다음과 같습니다.

프로파일 번호프로파일 이름주요 특징
66Baseline전력, 저해상도, 낮은 딜레이를 가짐. CAVLC만 사용, B픽처 사용하지 않음
66Constrained BaselineBaseline과 Main프로파일의 교집합이 되는 기술만 사용
77Main산술부호화 및 B픽처 사용으로 효율을 높임
88Extended스트리밍을 위한 기술 및 오류 내성기술 사용
FRExT100High8×8 DCT 사용,8×8 화면내 예측 사용
110High 10High 프로파일 + 10bit/pixel인 영상 지원
110High 10 IntraHigh10 프로파일에서 화면 내 예측 기술만 사용
122High 4:2:2High10 프로파일 + 4:2:2 컬러 포맷 지원
122High 4:2:2 IntraHigh 4:2:2에서 화면 내 예측 기술만 사용
244High 4:4:4 Predictive최대 14bit/pixel 지원, 4:4:4 컬러 포맷 지원
244High 4:4:4 IntraHigh 4:4:4 Predictive에서 화면 내 예측 기술만 지원
44CAVLC 4:4:4 IntraHigh 4:4:4 Intra에서 CAVLC로 사용(CABAC사용하지 않음)
키프레임 간격

보통 영상 인코딩을 하는 방식은 프레임 간의 변동되지 않은 부분을 삭제 해버리고 변동된 부분의 정보만 저장하는 방식이 이용되고 있습니다. 그중에서 키프레임은 그 키가 되는 프레임으로 삭제되는 정보가 없이 화면 전체의 정보를 전부 가지고 있는 “키프레임” 을 말합니다. 키프레임 간격이 2초 라면 2초마다 전체 샷이 저장되고 그 사이의 프레임들은 키프레임 사이의 움직임이 있어 변동된 부분의 정보만 가지고 있습니다. 또한 영상을 멈췄을 때 표시되는 간격이 바로 이 키프레임 간격입니다.

이 키프레임은?

영상 압축 기술에서 가장 중요한 부분이라고 볼 수 있겠죠. 키프레임을 쓰지 않고 모든 프레임을 다 저장하면 영상의 용량이 너무 커지게 됩니다.

영상이 기본적으로 1초에 24프레임의 사진을 나열하여 움직이는 영상을 재현하는 방식이라면, 키프레임 간격이 1초라고 했을 때 1장의 사진만 온전한 전체 사진이고 나머지 23장은 앞뒤 사진을 비교하여 움직임이 있는 부분의 정보만 기록하는 방식인 것입니다.

YouTube와 같은 플랫폼은 키프레임 간격을 3초나 2초를 권장하고 있습니다.

데이터율 제어

여러가지 방식이 있으나 VBR과 CBR은 각각, Variable bitrate, Contant bitrate 를 말합니다.

비트레이트

비트레이트는 라이브 플랫폼에서 해상도에 따라서 권장하는 비트레이트가 있으며, 해당 플랫폼에 문의하거나, 제시하는 문서가 있기도 합니다.

YouTube의 경우는 디폴트 스트림키 말고 새로 스트림 키를 만들 때 지정할 수 있는데 아래와 같습니다. OBS에서 해당 스트림 키와 서로 맞춰주면 됩니다.

B-frame

앞서 말한 키프레임은 화면 전체의 정보를 지닌 프레임인 것에 비해, 나머지 프레임들은 변동 된 움직임에 대한 정보만을 기록한다고 이야기 했습니다. 그러한 변동 된 정보를 가진 프레임을 P-프레임이라고 하는데, 이 P-프레임은 앞의 키프레임에서 달라진 변동 된 정보만 기록하는 프레임입니다. 그렇게 함으로써 영상의 용량을 많이 줄일 수 있습니다.

그런데 여기에 추가로 B-frame을 도입하게 됩니다.

B-frame은 앞뒤로 프레임을 비교하여, 키 프레임과 P-프레임, 또는 P-프레임들 끼리 비교하여 변동 된 정보를 기록하는 프레임입니다. 그래서 일반적인 P-frame 보다도 훨씬 용량이 적어지게 됩니다. 즉 B-frame을 많이 넣을수록 영상의 용량을 더욱더 절약할 수 있습니다. 하지만 당연히 이러한 B나 P-프레임이 많아지면 영상의 화질은 저하됩니다. 특히 움직임이 많을수록 화질이 많이 저하되게 됩니다. 또한, B-frame을 많이 넣게 되면 더욱더 복잡한 연산이 필요하게 되어 인코딩하는 CPU와 GPU의 사용량은 더욱더 늘어나게 됩니다.

P-frame과 B-frame이 다른 부분은, P-frame은 앞의 키프레임에 비해서 바뀐 정보만을 기록하는 방식에 비하여, B-frame은 앞과 뒤의 프레임을 서로 비교하여 변동 된 정보를 찾아내서 기록하는 방식이라는 점입니다. 그래서 Bi-directional predicted 프레임이라고 합니다.

B-frame은 일반적으로 2나 3정도의 값을 권장합니다. (움직임이 많은 영상일 경우는 0으로 놓아도 좋습니다)

녹화

​녹화에서는 방송 송출이 아닌 레코딩에 사용될 인코더의 스펙을 지정합니다.

대체적으로 방송탭의 인코더 옵션과 비슷합니다.

다만 녹화인 만큼, 방송 플랫폼이 원하는 비트레이트가 아닌, 더 높은 비트레이트를 설정함으로써, 녹화되는 영상의 화질을 좋게 만들 수 있습니다. 하지만, 녹화되는 파일 용량이 커지게 됩니다.

대체적으로 1080P 영상의 경우에는 캠코더나 카메라에서 레코딩되는 원본 영상들의 경우 25Mbps, 50Mbps 등의 비트레이트레코딩 되는 경우가 많습니다. 그래서 이와 비슷하게 옵션을 설정하여 사용하면, 캠코더나 카메라의 원본 영상의 화질과 비슷한 결과를 얻을 수 있으리라 생각됩니다.

(4K 의 경우에는 100Mbps )

단위에 조심하세요. 25Mbps = 25000kbps.

방송과 녹화를 동시에 하는 경우 높은 GPU 사용량이 요구 되므로 GPU 점유율을 확인하는 것이 중요합니다.

왠만하면 I3나 I5 이상 급의 CPU에 내장된 QSV 아래로는 방송과 녹화를 동시에 하는 것은 쉽지 않습니다. 방송과 녹화를 동시에 해야하는 경우는 NVENC 사용을 권장합니다. 내장된 저장 매체의 읽기/쓰기 속도도 중요하므로 SDXC나 SDD에 녹화하는 것을 추천드립니다.(사전에 충분한 읽기/쓰기 속도가 나오는지 속도 테스트를 꼭 해보시기 바랍니다.)

오디오

비디오

비디오탭의 내용은 OBS에서 방송나가는 화면을 볼 수 있는 “미리 보기” 에 대한 설정입니다.

“미리 보기” 를 출력하는 것도 CPU 와 GPU 퍼포먼스를 사용합니다

단축키

큰 설명이 필요 없을 것 같습니다.

고급

도움되시길 바랍니다.