웹사이트 검색

이 설정을 놓쳐서 TV에서 Jellyfin 서버가 끊기고 있습니다


며칠 전, 긴 하루를 보내고 나서 영화를 보기 위해 앉았습니다. 자랑스럽게 TV를 켜고 바로 Jellyfin으로 갔습니다. 평소 스트리밍 서비스의 네트워크 문제를 겪지 않아도 된다는 사실에 꽤 기뻤습니다. 왜냐하면 제 모든 미디어 라이브러리를 제 하드웨어에 직접 호스팅해 놓았기 때문입니다. 재생 버튼을 눌렀고, 예상대로 영화가 즉시 재생되기 시작했습니다. 로딩 원도 없고, 버퍼링도 없었습니다 — 정말 멋졌습니다.

하지만 그때, 정말 귀찮은 미세 끊김 현상을 발견했어요. 마치 2초마다 영화가 1초 동안 이상하게 느린 동작으로 재생되는 것 같았죠. 아마 다른 사람은 눈치채지 못했을 수도 있지만, 저한텐 정말 미칠 지경이었어요. 처음에는 아무것도 할 수 없었죠. 이더넷 케이블부터 서버의 CPU 사용량까지 다 확인했지만, 결국 하나의 단순하고 간과된 설정 때문이라는 것을 알게 되었어요.

프레임의 수학에 대해 이야기해 봅시다

네모난 못과 둥근 새로고침률

스트리밍이 끊길 때, 본능적으로 파이프나 엔진 탓을 하게 됩니다. 제 스트림은 TV가 아니라 서버에서 트랜스코딩됩니다. 게다가 같은 고비트레이트 영화를 제 맥북이나 서버 역할을 하는 PC에서 직접 재생했을 때는 재생이 완벽했습니다. 결국 문제의 원인은 프레임률 불일치였습니다.

대부분의 영화는 23.976 FPS로 촬영되며, 우리는 보통 이를 24p라고 부릅니다. 제 TV는 거의 모든 현대 디스플레이처럼 60Hz 화면을 가지고 있어, 초당 60번 화면을 새로 고칩니다. 하지만 제 안드로이드 TV 박스는 현재 50Hz로 설정되어 있었습니다. 24 FPS 영화가 50Hz 또는 60Hz 주사율에 어떻게 맞춰지는지 계산해보면, 재생이 왜 이렇게 어색하게 느껴졌는지 금방 이해할 수 있습니다.

24 FPS 영화를 60Hz 화면에서 재생할 때, 기기는 3:2 풀다운이라고 하는 작업을 수행해야 합니다. 60은 24로 깔끔하게 나눠지지 않기 때문에, 수학적으로 60/24=2.5가 됩니다. 이를 해결하기 위해, 플레이어는 영화의 첫 번째 프레임을 세 번, 두 번째 프레임을 두 번 보여줍니다(3 + 2=5). 이 패턴은 초 단위로 반복되어 총 60번의 화면 갱신을 채우게 됩니다. 이는 대부분의 사람들이 익숙한 매우 작은 '저더(judder)' 현상을 일으키지만, 기기가 50Hz로 설정되어 있으면 계산이 훨씬 더 복잡해집니다.

50Hz 출력의 경우 계산은 50/23.976 ≈ 2.08가 됩니다. 이 프레임들을 깔끔하게 균등하게 분배할 방법은 없습니다. 하드웨어는 본질적으로 네모난 못을 둥근 구멍에 억지로 맞추려 하듯, 영상과 오디오 트랙을 동기화하기 위해 프레임을 불규칙하게 반복하거나 건너뛰도록 강요합니다. 제가 보고 있던 그 리드미컬한 슬로우 모션 효과는 TV 박스가 몇 초마다 스스로를 따라잡으려는 과정에서 발생한 결과였습니다. 최종적으로 영상 파일과 실제 디스플레이 간에 프레임 불일치가 생겼고, 이것이 미세한 끊김의 근본 원인이었습니다.

Jellyfin에서 문제 해결 방법 찾기

그냥 토글 하나일 뿐이에요

다행히도, 이것을 해결할 수 있는 간단한 설정이 있는데, 어디서 찾아야 하는지를 알아야 합니다. 저는 실제로 Android TV용 공식 Jellyfin 클라이언트에서는 이 설정을 찾지 못했는데, 이 버전은 조금 더 단순화되어 있습니다. 대신 저는 Dune이라는 대체 클라이언트를 사용합니다. Dune이나 Kodi와 같은 좀 더 고급 플레이어를 사용한다면, 하드웨어가 비디오 신호를 처리하는 방식에 대해 훨씬 더 많은 제어를 할 수 있습니다.

해결 방법은 '주사율 전환(Refresh Rate Switching)'이라는 기능입니다. 이 기능은 TV 박스가 시청 중인 영화의 프레임 속도에 맞춰 물리적으로 출력을 변경하도록 지시합니다. 24p 영화에서 재생 버튼을 누르면, TV 박스는 60Hz 또는 50Hz로 출력을 계속하지 않고 하드웨어를 24Hz(혹은 48Hz, 120Hz와 같은 배수)로 전환합니다. 이렇게 하면 영화의 모든 프레임이 화면에 정확히 같은 시간 동안 유지되는 1:1 주기가 만들어집니다.

듄에서, 할 일은 재생 설정에 들어가서 고급 설정으로 이동한 다음 주사율 전환 옵션을 기기 기준으로 조정으로 전환하는 것입니다. 이 설정을 바꾸고 영화로 돌아가자 차이가 확연히 느껴졌습니다. 재생 버튼을 누르자 화면이 잠깐 검게 변했는데, 이는 HDMI "핸드셰이크"가 일어나면서 장치들이 새로운 주사율에 맞춰 동기화되는 과정이고, 곧 영화가 시작되었습니다. 그 불편하고 규칙적인 끊김은 완전히 사라졌습니다.

새로 고침 빈도 전환에는 세 가지 옵션이 있습니다. 사용 안 함은 우리가 원하지 않는 옵션입니다. 장치에서 스케일을 선택하면 전환의 부담이 박스로 넘어가고, TV에서 스케일을 선택하면 TV로 넘어갑니다. 두 번째 옵션은 다소 성공 여부가 불확실한데, HDMI-CEC를 통해 TV 화면과 협상하여 24Hz로 설정해야 하기 때문입니다.

모든 것은 타이밍에 달려 있다

이 설정을 통해 이제 감독과 편집자가 의도한 그대로의 움직임을 3:2 풀다운이나 50Hz 충돌과 같은 인위적인 간섭 없이 정확히 볼 수 있습니다. 작은 수정이지만, 끊김의 원인은 단순한 CPU 과부하보다 훨씬 흥미로웠습니다 — 그래서 공유하고 싶었습니다. 여러분도 저만큼 즐기셨기를 바랍니다!

관련기사