AD

프로그램 방송의 기본:인코더

상어밥__
2020-09-11 00:00:29 11393 22 24

최근에 팁글에 너무 이상한 글만 올라와서 한번 작성해 보았습니다.

시리즈로 계속 이어나갈지 단편으로 끝낼지는 잘 모르겠네요.

거두절미하고 바로 시작하겠습니다.


인터넷 방송이라는 것은 간단하게 말해 

본인의 화면상에 표시되는 영상 정보를 데이터로 변환하여 실시간으로 플랫폼에 전송하는 것 입니다.

영상정보를 데이터화 하는 것을 흔히 인코딩이라고 부르며

인코딩하는 기술을 코덱이라고 부릅니다.

그리고 영상정보를 데이터로 변환한것이 초당 얼마나 있는가 를 비트레이트로 표현합니다.

6000kbps면 6000킬로비트 퍼 세컨 1초에 6000킬로비트를 저장(송출)한다는 것입니다.

당연히 비트레이트가 높으면 데이터의 절대값이 많으니 화질은 올라가겠지만

그만큼 보는 사람이 많은 데이터를 받아야 하니 트랜스코드가 적용되지 않은 하꼬방에서

무작정 비트레이트를 늘려봤자 모바일 환경에서는 버퍼링이 폭증하거나 데이터 요금 폭탄을 맞을 확률이 높습니다.

그렇기 때문에 개발자들은 낮은 비트레이트로 더 고화질을 구현하는 인코더를 만들기 위해 노력하고

그렇게 만들어진 인코더를 우리는 방송프로그램에서 사용하는 것이죠.


우리가 흔히 접하게 되는 각종 방송프로그램에서는 

오픈소스로 개발된  X264와 엔비디아의 NVENC를 주로 사용합니다.

X264의 경우 CPU를 활용해 인코딩을 하며

NVENC의 경우 엔비디아 그래픽카드에 내장된 자체 인코딩 유닛을 사용해 인코딩을 진행합니다.

이 인코딩 유닛은 우리가 게임을 돌리는 쿠다코어와 별도로 존재하기 때문에 

게이밍 환경에 영향을 미치지 않는다는 장점이 있습니다.

단점이라면 X264에 비해 화질면에서 밀린다는 것이었지만 RTX부터 유닛 자체의 성능을 개선하고

소프트웨어적으로도 알고리즘을 개선해 화질에서 비약적인 발전을 이루었고

지금은 20시리즈 이후의 그래픽카드를 쓴다는 가정하에

X264의 미디움 세팅에 준하는 화질을 보여주게 되었습니다.

(소프트웨어의 개선으로 기존 그래픽카드에서도 성능이 향상되긴 했습니다.)


결론적으로 말해서 라이젠 3900x이상의 다코어 CPU를 장만할수 없거나 하지 않으셨다 해도

RTX2060부터 RTX2080TI까지 NVENC유닛은 동일하기 때문에 과한 예산을 들이지 않고 방송을 진행할수 있다는 것입니댜.

그리고 세부적으로 세팅을 만져줄 필요가 없다는 장점도 있습니다.

그러니 대부분의 유저에게는 NVENC(NEW)를 추천드립니다.

트위치의 경우 비트레이트가 6000을 넘으면 여러가지 애로사항이 꽃피기 때문에 

비트레이트의 경우 6000

나머지는 엔비디아가 설정을 다 맞춰주었기 때문에 

단순 옵션에 디폴트로 세팅해도 잘 동작합니다.


물론 저같이 하꼬면서 3900X갓다박고 보는 분들도 있겠죠.

그런 분들을 위해 X264의 세팅을 한번 살펴보겠습니다.

69cb07ec1843e7d902ed721fdb5123e3.png

X264의 경우 고급 인코더를 활성화 하면 여러가지 옵션들이 등장합니다

여기서 사전설정은 우리가 게임에서 그래픽옵션을 만질때 보는 전체 설정

사용자 임의 인코더 설정은 텍스쳐 해상도, 렌더거리 등의 그래픽 세부설정을 만지는 것

이라고 이해하시면 편할 것 같습니다.

앞에서 NVENC를 설명하면서 말했듯이  X264의 경우 

미디움 옵션이상 뽑을 수 있는 CPU가 아니라면 그다지 추천하지는 않습니다.

물론 NVENC로 송출과 녹화를 모두 진행하면 품질이 곤두박질치니

녹화와 송출을 CPU와 GPU에 분배해준다면 사용해볼법 하지만

CPU의 종류와 주로 송출하는 게임에 따라 너무 달라지기 때문에 본인의 세팅을 실험해서 찾을 수 밖에 없습니다.

앞에서도 설명했듯 X264는 CPU의 자원을 잡아먹는데 게임에 따라 

멀티코어 지원을 잘 하는 게임(레식), 코어 2개밖에 못써서 클럭빨로 먹고사는 게임(스2)

혹은 투컴을 사용해서 CPU가 남아도는등

너무나 다양한 사례가 있고 그걸 일일이 다 알려드리는 것은 사실상 불가능합니다.

그러니 간략하게 개요만 알려드리겠습니다.


48f33fb3d3939117440a444952d0c1f4.png

*방송인코더 설정은 무조건 끄고 진행하셔야 합니다

  설정해둔거 다 씹어먹고 기본 세팅으로 진행됩니다.

1. 데이터율 제어 

    비트레이트를 어떻게 관리할지 설정합니다.

CBR(Constant Bit Rate) 

화면의 움직임에 상관없이 일정한 비트레이트로 데이터를 전송합니다

트위치의 권장 사항입니다.

ABR(Available Bit Rate)

네트워크 즉 인터넷의 환경에 맞춰 비트레이트를 유동적으로 관리합니다

VBR(Variable Bit Rate)

화면이 격하게 움직이면 비트량을 늘리고, 화면이 움직이지 않으면 비트량이 줄어듭니다.

CRF(Constant Rate Factor)

비트레이트가 아니라 화질이 중점이 됩니다. 목표 화질에 맞추기 위해 비트레이트를 조절합니다.


2. 비트레이트

    영상의 초당 전송량을 결정합니다.

6000Kbps

FHD 60fps 기준 트위치 권장 비트레이트입니다.


3. 키 프레임 단위

    완벽한 프레임간의 시간을 정의합니다.

2

트위치 권장사항입니다. 이 값은 플랫폼의 권장사항으로 설정하는것을 추천합니다.


3. CPU사용량

    간단 설정에서 봤던 인코더 사전 설정입니다. CPU를 얼마나 사용할지 결정할 수 있습니다.

medium

물론 스레드리퍼등을 사용하면 더 높은 세팅을 할 수 있겠지만 

대다수의 분들은 3900X를 사용하리라 생각되기 때문에 미디움을 추천합니다.

본인의 CPU에 맞춰서 세팅값을 변화시켜 보세요


4. 프로파일

    X264가 개발될 당시 다양한 사양의 기기에 대응하기 위해 제작된 프리셋입니다.

main

high로 설정해도 크게 문제는 없지만 모바일 환경에서 시청이 불편할 수 있습니다.

유의미한 화질차이도 없기 때문에 되도록이면 main설정을 추천드립니다.


5. 조정

    화질이 아닌 추가적인 옵션을 세팅할 수 있습니다.

(없음)

사용해도 크게 이득이 없습니다. 사용하지 않는것을 추천합니다.


6. X264 설정

    앞에서 설명했던 세부적인 X264 세팅을 하는 곳입니다.

e2c0d29f7e60d3d4774721c230ef2600.png

이 이미지는 X264의 각각의 프리셋에 따라 어떤 항목이 어떤 값으로 지정되는지 알려줍니다.

프리셋보다 더 높은 혹은 더 낮은 값을 넣고 싶을때 해당 항목의 수치를 지정해 공란에 입력합니다.

각각의 항목에 대해 모두 설명하기엔 너무 길어지기 때문에 위키피디아 링크로 대체합니다.

[https://en.wikibooks.org/wiki/MeGUI/x264_Settings]

본인의 사양이 미디움에서 슬로우로 올렸을 경우에는 모자라고 미디움에서는 남아돈다 같은 경우에

하나씩 차근차근 만저보는것을 추천드립니다.

물론 트위치에서 각 세팅에 리미터를 걸어두었기 때문에 해당 항목을 확인해야 하는데다

각 세팅간에 연동되는 항목또한 많기 때문에 정확한 이해없이 해당 세팅을 건드리는것은 추천하지 않습니다.




저는 남이 설정해준걸 따라가는 것 보다는 

최소한 그것이 어떤것을 변화시키는지 알고 만지는 것이 좋다고 생각합니다.

그런 관점에서 인코더의 이해를 돕기 위해 글을 작성하긴 했는데

다 쓰고보니 설명이 부족한 것 같기도 하고 너무 장황한것 같기도 하네요.

그래도 부족한 부분이나 잘못된 부분은 댓글에서 다른 분들이 알려주실테니

여기서 줄이겠습니다.


참고 사이트

https://stream.twitch.tv/

http://dev.beandog.org/x264_preset_reference.html

https://en.wikipedia.org/wiki/Advanced_Video_Coding#Feature_support_in_particular_profiles

https://www.nvidia.com/en-us/geforce/guides/broadcasting-guide/

후원댓글 24
댓글 24개  
이전 댓글 더 보기
이 글에 댓글을 달 권한이 없습니다. 로그인해 보세요.
AD
▼아랫글 [교주님이 알려주는] 추천 OBS STUDIO 플러그인! 모두의_교주_시트벨리
방송하기프로그램채팅/봇업데이트
11
프로그램
방송의 기본:ASIO [16]
상어밥__
10-07
23
프로그램
APPLE AAC인코더로 OBS 음질향상 [39]
레퍼런스
10-06
15
프로그램
OBS Studio 26.0 정식배포 [6]
숭숭군
10-05
22
10-04
40
10-03
10
업데이트
NVIDIA GeForce Hotfix v456.71 Driver [5]
로즈우
10-02
6
프로그램
Multistreaming-Assist 툴 업데이트 [4]
구닥다리_티비
10-01
16
10-01
14
프로그램
지금 베가스15가 무료입니다. [4]
도박치료1336
09-24
21
09-23
14
방송하기
리스트림 4시간 이슈 이후 2달 [9]
캄파놀로
09-19
19
프로그램
NVIDIA BROADCAST 앱이 나왔습니다 [8]
아는척하는_로젠케이
09-18
18
프로그램
핫클립 커스텀 레이아웃 CSS [6]
Funzinnu
09-18
15
09-17
19
09-16
7
프로그램
OBS 방송을 다른 PC의 OBS 미디어 소스로 받아보기 [5]
아는척하는_로젠케이
09-12
»
프로그램
방송의 기본:인코더 [24]
상어밥__
09-11
24
프로그램
[교주님이 알려주는] 추천 OBS STUDIO 플러그인! [8]
모두의_교주_시트벨리
09-09
인기글 글 쓰기