XSplit 화질, VBV 버퍼 및 프리셋 설정
XSplit은 x264 인코더를 사용하므로 먼저 제목에 언급된 매개변수 중 화질 매개변수를 제외한 나머지는 x264 위키의 매개변수와 같은 의미라는 점을 알려 드립니다. 위키는 여기에서 확인하세요.
화질
화질은 다르므로 바로 이 부분부터 설명하겠습니다. x264에서 화질은 CRF 계수 또는 Constant Rate Factor라고 합니다. 인코더는 CRF=0(무손실)부터 CRF=51(끔찍한 화질)까지 모든 값을 받습니다.
비디오 스트림을 인코딩할 때 일반적으로 여러 레이트 제어 방식을 적용할 수 있습니다. XSplit은 비트레이트 상한(vbv-maxrate)을 지키면서 인코딩된 비디오의 특정 화질을 목표로 하는 화질 기반 레이트 제어를 사용합니다. 화질별로 필요한 비트레이트에는 큰 차이가 있습니다(선형이 아닙니다). 대부분의 사람은 CRF=18과 CRF=0의 차이를 보지도 못할 것입니다. 다만 CRF=0 녹화는 하드 드라이브 공간을 상당히 많이 차지합니다.
XSplit에서는 스트리밍을 위한 일반 화질 설정을 0에서 10 사이로 사용하며 10이 가장 높습니다. 화질 10은 일반적으로 매우 좋은 화질인 CRF=25에 해당합니다. 화질 0은 CRF=35에 해당하며 경우에 따라 허용할 수 있지만 아주 좋지는 않습니다.
논의할 여지는 있지만 XSplit은 자체 화질 매개변수를 사용하고 내부적으로 CRF로 변환하는 방식을 따릅니다. 사람들은 화질을 이해하며 0에서 10 사이에서 마지막 값이 가장 높은 방식에 익숙하다고 생각합니다. 하지만 이 방법을 택하려는 사람들은 모두 쉽게 사용자 지정할 수 있습니다.
로컬 녹화에서는 화질 설정만 지정할 수 있고 특정 vbv-maxrate나 vbv-buffer가 정의되지 않는 것을 볼 수 있습니다. 로컬 녹화에서는 대역폭 사용량을 걱정하지 않는 경우가 많기 때문입니다. 따라서 특정 화질을 목표로 녹화를 만들면 같은 입력이라도 선택한 화질에 따라 녹화 파일 크기가 달라집니다.
복잡한 장면(프레임)에서는 일관된 시각적 화질을 유지하기 위해 더 많은 비트를 사용하고 덜 복잡한 장면에서는 적은 비트를 사용합니다. x264 인코더는 프레임 변화의 중요도를 해석하고 설정(CRF, 즉 화질 설정)에 따라 시각적 화질을 최적화하려고 합니다. 화질의 기준 FPS는 초당 25프레임입니다. x264는 비디오의 프레임 레이트에 따라 화질을 조정하므로 같은 화질 설정이면 60 FPS 스트림의 프레임별 화질이 25 FPS보다 낮습니다. 이유는 간단합니다. 두 스트림의 전체 시각적 화질을 같게 유지하는 것이 목표일 때 25 FPS의 한 프레임은 60 FPS의 한 프레임보다 중요하기 때문입니다.
로컬 녹화에서도 최대 대역폭 사용을 제어하고 싶을 수 있으므로 XSplit UI에서 vbv-maxrate와 vbv-buffer를 설정할 수 있습니다. 잠시 후 다시 설명하겠습니다.
VBV-buffer와 VBV-maxrate
x264 인코더가 사용하는 두 가지 주요 데이터 레이트 제어 방식은 다음과 같습니다
- 평균 비트레이트 모드- 평균 화질 모드
앞서 설명했듯 XSplit UI에서는 평균 화질 모드만 허용합니다. 이 방식이 종종 훨씬 효과적이기 때문입니다.
하지만 두 주요 레이트 제어 방식 모두에 추가적인 보조 레이트 제어가 자주 사용되며, XSplit으로 성공적인 라이브 스트리밍을 하려면 필수입니다. 바로 VBV 레이트 제어입니다. 화질 기반 인코딩은 특정 화질을 보장하지만 특정 대역폭 사용량을 보장하지는 않습니다. 라이브 스트리밍에서는 자신의 사용 가능한 업로드 대역폭을 넘지 않는 것도, 시청자의 다운로드 속도를 넘지 않는 것도 중요합니다.
일부 인코더는 일정한 대역폭으로 스트리밍하는 옵션을 사용하지만, 이 레이트 제어 방식(또는 제어의 부재)은 대역폭을 낭비하며 방송자와 시청자 모두에게 더 높은 연결 품질을 요구하는 경우가 많습니다.
XSplit은 대신 화질 기반 인코딩을 사용하고 VBV-maxrate와 VBV-buffer를 설정합니다. 즉 XSplit의 x264 인코더는 스트림의 화질을 일정하게 유지하려 하고, 덜 복잡하거나 덜 중요한 장면에서는 더 적은 대역폭을 사용할 수 있습니다. VBV-maxrate는 인코더가 사용할 수 있는 대역폭의 상한을 정하지만 VBV-buffer와 관련해 작동합니다.
VBV-maxrate=2000과 VBV-buffer=4000을 설정하면 VBV 버퍼(디코딩 버퍼)는 최대 2000 Kbps로 채워집니다. 따라서 비디오 비트레이트는 개별적인 2000 Kbps 값을 넘을 수 있지만 2초 동안 4000 Kbit를 넘지는 않습니다. 즉 VBV-maxrate는 스트림에서 존재할 수 있는 최고 비트레이트가 아니라 버퍼에 들어올 수 있는 최대 비트레이트입니다.
이 개념을 이해하면 vbv-buffer가 제공하는 유연성도 알 수 있습니다. 기본적으로 인코더가 일련의 프레임을 미리 보고, vbv-buffer를 넘지 않는 한 일부 프레임에는 더 많은 비트를, 다른 프레임에는 더 적은 비트를 사용하게 합니다.
이제 알아야 할 것은 vbv-buffer가 실제로 디코딩 쪽 버퍼이므로 디코더에 따라 달라지며 저희 경우에는 주로 Flash Player라는 점입니다. Flash Player 버퍼를 0초부터, 음, 아마 어떤 값으로든 설정할 수 있습니다. 하지만 대부분의 스트리밍 서비스 제공자는 버퍼 설정을 1초 또는 2초로 고정합니다. 따라서 XSplit 스트리밍 플러그인은 보통 vbv-maxrate가 X킬로비트/초(Kbps)이면 vbv-buffer를 X 또는 2 * X킬로비트로 자동 조정합니다. 이제 좀 이해가 되기 시작했으면 좋겠습니다! 서비스 제공자의 Flash Player 버퍼가 10초 정도라면 제 vbv-buffer를 크게 늘려 전체 대역폭이 더 낮아도 같은 화질을 얻거나 같은 대역폭에서 더 나은 화질을 얻을 수 있을 것입니다. 즉 필요할 때 비트레이트를 급증시키도록 인코더에 더 많은 자유를 주는 것입니다. 따라서 XSplit 팀이 파트너들과 대화하여 Flash Player 버퍼를 XSplit의 VBV 버퍼 설정에 맞게 조정해 줄 수 있는지 알아볼 것이라고 기대할 수 있습니다.
마지막으로 로컬 녹화로 돌아가 보겠습니다. 녹화에는 기본 최대 레이트(vbv-maxrate)도, 그에 따른 vbv-buffer도 설정되어 있지 않습니다. 하지만 녹화한 비디오를 웹사이트에 올리고 방문자가 인터넷을 통해 Flash Player로 재생하게 하려면 신중히 생각해야 합니다. 최종 시청자의 다운로드 대역폭이 1000 Kbps 이하이고 비디오가 약 4초 뒤 재생되기를 원한다면 로컬 녹화에 지정한 화질과 함께 적절한 VBV 제약을 적용해야 합니다.
위 사례에서는 다음 XSplit 설정을 사용합니다:
VBV Max Rate:1000 kbpsVBV Buffer:4000 kbps
오디오도 고려해야 하겠지만 이 경우 VBV Max Rate에서 오디오 비트레이트의 1배를, VBV Buffer에서 오디오 비트레이트의 4배를 빼면 됩니다.
인코더 프리셋
“Ultrafast”부터 “Placebo”까지 여러 기본 프리셋이 제공됩니다. XSplit은 “XSplit Default”라는 사용자 지정 프리셋을 사용합니다. 앞으로 기본값이 “Veryfast”로 설정될 것이라고 기대할 수 있습니다.
그렇다면 이 모든 것은 무엇을 의미할까요?
H.264는 디코더가 지원하거나 디코딩할 수 있어야 하는 압축 기능을 지정합니다. 디코더의 기능에 따라 High Profile, Medium Profile, Base Line Profile이라는 프로필 그룹으로 나뉩니다. 지금은 Flash Player가 지원하는 High Profile만 고려하겠습니다.
특정 프리셋을 사용하면 x264 인코더는 여러 고급 프리셋 기능으로 비디오 비트 스트림을 더 잘 압축합니다. “Superfast”보다 느린 프리셋은 다른 사용자 지정 제약이 추가되지 않는 한 High Profile 호환 비트 스트림을 만들지만 지금은 신경 쓰지 않아도 됩니다. 느린 프리셋일수록 스트림이 더 많이 압축되고 제한된 대역폭에서 더 나은 화질을 만들 수 있다는 것만 알면 됩니다. 하지만 프레임 레이트와 해상도에 따라 상당한 CPU 성능이 필요합니다.
기본 프리셋은 “XSplit Default” 또는 “Veryfast”이며 두 가지는 거의 동등합니다. 다른 CPU 집약적인 프로세스가 동시에 실행되지 않고 “Veryfast” 프리셋으로 1280 x 720에서 30 FPS를 방송하거나 인코딩하려면 i5 프로세서로 충분할 것입니다. 어느 코어든 CPU 사용량이 70%를 넘으면 다음이 필요합니다:
a) 더 낮은 해상도 사용b) 더 빠른 프리셋 사용(superfast 등)c) 좋은 Core i7 컴퓨터 구입
짧게 말하면 선택한 프리셋은 인코더에 요청하는 압축량과 같습니다. 더 느림 = 더 많은 압축 = 더 높은 CPU 사용량.
앞서 배운 내용을 더 설명하기 위해 이제 여러분이 궁금해할 유일한 질문에 답해 보겠습니다 -:):
질문:로컬 녹화를 하고 화질을 8로 설정한 뒤 VBV 제약을 설정하지 않으면 더 느린 프리셋을 선택했을 때 더 나은 화질의 비디오를 얻을 수 있나요?
답변: 아니요, 그렇지 않습니다. 화질은 완전히 같지만 프리셋이 빠를수록 녹화한 비디오는 덜 압축됩니다(파일 크기가 더 큼). 하지만 VBV-maxrate 제약이 충분히 제한적이라면 느린 프리셋이 지정한 VBV-maxrate보다 낮게 유지하는 데 더 뛰어나므로 화질 차이가 나타납니다.







댓글