
Zmiana częstotliwości odświeżania ekranu w tvOS (dopasowanie częstotliwości klatek)
tvOS oferuje teraz tryb dopasowania częstotliwości klatek, który synchronizuje pętlę renderowania aplikacji z natywną częstotliwością odświeżania wyświetlacza. Poprzez udostępnienie źródłowego tempa za pośrednictwem AVPlayerItem oraz prostego flagi kompilacji, system może zablokować kompozytor na 30 Hz, 60 Hz, 50 Hz lub 120 Hz bez rozrywania obrazu i nadmiernego opóźnienia. Korzyścią jest płynniejsze doświadczenie wizualne oraz wymierne oszczędności energii, choć implementacja opiera się na precyzyjnym timingu CADisplayLink i prawidłowej obsłudze metadanych. Następna sekcja wyjaśnia, jak platforma określa odpowiednią częstotliwość odświeżania.
Spis treści
ToggleCo oznacza szybkość klatek wideo dla programistów tvOS

EnableMatch Frame Rate synchronizuje rytm renderowania aplikacji tvOS z natywną częstotliwością odświeżania wyświetlacza, zapewniając płynny ruch i idealną wierność wizualną.
Dla programistów oznacza to, że system planuje operacje rysowania tak, aby zbiegały się z każdym odświeżeniem ekranu, eliminując rozrywanie klatek i redukując opóźnienia.
API automatycznie dostosowuje pętlę klatek aplikacji, gdy telewizor zgłasza bazę 60 Hz, 50 Hz lub 30 Hz, dzięki czemu treść wygląda płynnie bez ręcznego kodu synchronizacji.
Programiści muszą projektować animacje i symulacje fizyki jako oparte na czasie, a nie na liczbie klatek, co pozwala silnikowi płynnie skalować się przy różnych częstotliwościach odświeżania.
Budżetowanie zasobów również się zmienia: wyższe częstotliwości odświeżania wymagają większej liczby cykli GPU, więc profilowanie obciążenia CPU/GPU staje się niezbędne do utrzymania spójnej wydajności i efektywności energetycznej.
Jak tvOS wykrywa natywną częstotliwość odświeżania wideo w celu dopasowania częstotliwości klatek

Po zsynchronizowaniu częstotliwości renderowania z wyświetlaczem, tvOS musi określić natywną częstotliwość odświeżania wideo, aby poprawnie zastosować funkcję Match Frame Rate.
System analizuje metadane pliku wideo, konkretnie pole częstotliwości klatek w nagłówku kontenera oraz informacje o synchronowaniu osadzone w strumieniu kodeka.
Jeśli nagłówek jest nieobecny lub niejednoznaczny, tvOS analizuje pierwsze kilka GOP‑ów, mierząc odstęp pomiędzy kolejnymi znacznikami prezentacji (PTS).
To empiryczne próbkowanie daje dokładne oszacowanie interwału klatek źródłowych, który jest następnie przeliczany na herce.
Wykryta wartość jest porównywana z możliwościami odświeżania wyświetlacza; gdy istnieje dopasowanie, kompozytor blokuje swój zegar wyjściowy do interwału wideo, eliminując drgania i zachowując wierność ruchu.
Wykrycie to odbywa się raz na sesję odtwarzania, zapewniając spójną synchronizację bez dodatkowego narzutu.
Modeli Apple TV obsługujące dynamiczne odświeżanie w dopasowanym tempie klatek

Te urządzenia zawierają oprogramowanie układowe oparte na tvOS 14, które może odpytać natywną częstotliwość odświeżania wideo i w czasie rzeczywistym dostosować potok wyświetlania.
Model 4K z 2021 roku wprowadził tryby 60 Hz i 50 Hz, natomiast odświeżanie 4K z 2022 roku dodało obsługę treści 24 Hz, umożliwiając płynniejsze odtwarzanie mediów kinowych.
Poprawka HD z 2023 roku rozszerzyła tę możliwość na wyświetlacze 1080p, zachowując dokładny timing klatek bez artefaktów skalowania wTrzy modele udostępniają ten sam interfejs API, pozwalając programistom na żądanie dynamicznego odświeżania za pomocą flagi `matchFrameRate` w konfiguracji `AVPlayerItem`.
Kompatybilność jest ograniczona do telewizorów, które zgłaszają dokładne dane timingowe EDID, zapewniając synchronizację wyjścia na obsługiwanym sprzęcie.
Włączanie szybkości klatki w projekcie Xcode

Skonfiguruj projekt Xcode, aby używał flagi `matchFrameRate`, dodając odpowiedni klucz do pliku `Info.plist` aplikacji i ustawiając właściwość `AVPlayerItem` w kodzie.
W pliku plist wstaw `UIRequiresFullScreen` z wartością logiczną `true` oraz dodaj `TVOS_SUPPORTS_MATCH_FRAME_RATE` ustawioną na `YES`.
W źródle, po utworzeniu `AVPlayerItem`, przypisz `item.preferredForwardBufferDuration = 0` i włącz `item.canUseNetworkResourcesForLiveStreamingWhilePaused = true`.
Upewnij się, że informacje o wdrożeniu docelowym określają tvOS 13 lub nowszy, ponieważ wcześniejsze wersje ignorują tę flagę.
Zbuduj projekt, uruchom go na kompatybilnym Apple TV i zweryfikuj, że interfejs użytkownika odzwierciedla dynamiczną częstotliwość odświeżania bez widocznych zacięć.
Ta konfiguracja aktywuje systemowy mechanizm dopasowania częstotliwości odświeżania dla odtwarzania wideo.
Konfigurowanie AVFoundation dla adaptacyjnego rytmu odświeżania (dopasowanie częstotliwości klatek)

Jak można dostroić AVFoundation, aby szanował dynamiczne tempo odświeżania wymuszone przez tvOS match‑frame‑rate?
Kluczowym elementem jest skonfigurowanie AVPlayerItem i AVPlayer z preferredForwardBufferDuration, który odpowiada aktualnemu interwałowi wyświetlania.
Poprzez zapytanie UIScreen.main.maximumFramesPerSecond aplikacja uzyskuje aktywną częstotliwość odświeżania, a następnie ustawia player.currentItem?.preferredPeakBitRate na wartość, która unika szczytów buforowania przy tym rytmie.
Włączenie AVPlayerItemVideoOutput z AVVideoOutputPixelBufferAttributesKey, zawierającym kCVPixelBufferPixelFormatTypeKey zapewnia, że potok wideo dostarcza klatki zsynchronizowane z linkiem wyświetlania.
Deweloper musi także obserwować AVPlayerItemTimeJumpedNotification, aby wykrywać zmiany szybkości i odpowiednio aktualizować czas buforowania, co gwarantuje płynne dopasowanie do częstotliwości klatek bez ręcznego pomijania klatek.
Optymalizacja czasu pętli gry dla częstotliwości odświeżania 30 Hz, 48 Hz i 120 Hz
Wiele gier tvOS musi dostosować swoją główną pętlę do trzech różnych częstotliwości odświeżania — 30 Hz, 48 Hz i 120 Hz — zachowując przy tym deterministyczną fizykę i opóźnienie wejścia.
Typowe rozwiązanie polega na oddzieleniu kroków symulacji od klatek renderowania. Stały krok fizyki, na przykład 1/60 s, działa na wysokiej rozdzielczości timera; pętla gromadzi upływający czas i wykonuje w każdej iteracji całkowitą liczbę kroków.
Dla 30 Hz akumulator przyspiesza o 2 kroki na klatkę, dla 48 Hz o 1,25 kroku, a dla 120 Hz o 0,5 kroku, co wymaga interpolacji lub obsługi pod‑kroków.
Renderowanie używa najnowszego symulowanego stanu i interpoluje między krokami, aby wygładzić ruch.
Zdarzenia wejściowe są oznaczane znacznikami czasu i stosowane do odpowiedniego kroku, zapewniając spójne opóźnienie we wszystkich częstotliwościach odświeżania.
Eliminacja drgań i opóźnień wprowadzania przy użyciu odpowiednich buforów czasowych
Synchronizacja pętli gry z częstotliwością odświeżania wyświetlacza eliminuje drżenie i minimalizuje opóźnienie wejścia poprzez zastosowanie podwójnie buforowanego schematu czasowego. Pierwszy bufor przechowuje renderowaną klatkę, podczas gdy drugi przygotowuje następną, co pozwala GPU na przesłanie pełnego obrazu dokładnie w momencie, gdy wyświetlacz sygnalizuje pionowy blank. To wyrównanie zapobiega pomijaniu klatek i nierównomiernemu timingowi, które powodują drżenie.
Zdarzenia wejścia są znakowane czasowo w momencie przechwycenia, a następnie dopasowywane do bufora, który zostanie wyświetlony, co zmniejsza odstęp między działaniem użytkownika a wizualną reakcją. Poprzez obliczanie optymalnego interwału wymiany na podstawie docelowej częstotliwości odświeżania — czy to 30 Hz, 48 Hz, czy 120 Hz — system utrzymuje stały przepływ, zapewniając płynny ruch i responsywne sterowanie bez zauważalnego opóźnienia.
Wydajność i wpływ na zasilanie dopasowania częstotliwości klatek źródłowych
Kiedy częstotliwość klatek źródłowych jest zsynchronizowana z częstotliwością odświeżania wyświetlacza, GPU może utrzymać stałe obciążenie, zmniejszając potrzebę kosztownej konwersji liczby klatek i związanych z tym skoków poboru mocy.
Ta synchronizacja eliminuje dodatkowe buforowanie i kroki interpolacji, które w przeciwnym razie zużywałyby dodatkowe cykle, pozwalając procesorowi pracować blisko jego idealnego punktu wydajności.
Testy na sprzęcie Apple TV wykazują 7‑12 % spadek średniego zużycia energii podczas odtwarzania wideo, gdy dopasowuje się treść 30 fps do panelu 60 Hz w porównaniu z przeskalowyw do 60 fps.
Stabilniejszy potok danych zmniejsza także emisję ciepła, wydłużając żywotność urządzenia i zapobiegając ograniczeniom wydajności pod stałym obciążeniem.
W konsekwencji programiści, którzy włączają funkcję „Dopasuj częstotliwość klatek”, poprawiają zarówno spójność wydajności, jak i zużycie energii, nie rezygnując z jakości wizualnej.
Typowe pułapki i jak debugować problemy z częstotliwością odświeżania
Trzy częste źródła problemów z częstotliwością odświeżania w tvOS to nieprawidłowe ustawienia Info.plist, niezgodny timing warstwy widoku oraz niezamierzone użycie CADisplayLink bez uwzględnienia preferowanego przez systemu FramesPerSecond.
Programiści powinni najpierw sprawdzić, czy klucze UIRequiresFullScreen i UIRequiresPersistentWiFi odpowiadają zamierzonej polityce częstotliwości odświeżania; brak lub nieprawidłowa wartość zmusza system do domyślnego 30 Hz.
Następnie należy przejrzeć hierarchię warstw animujących się na niezależnych timerach; rozbieżności między blokami animacji UIView a prezentacjami CALayer powodują drżenie.
Gdy używany jest CADisplayLink, jego właściwość preferredFramesPerSecond musi być ustawiona na zero, aby dziedziczyć częstotliwość systemową, w przeciwnym razie nadpisuje ona Match Frame Rate.
Logowanie znacznika czasu linku wyświetlania i porównywanie go z rzeczywistym interwałem odświeżania ekranu ujawnia dryft.
„Debug → OpenGL ES Analyzer” w Xcode może wykrywać niezgodne wywołania rysowania, a Core Animation w Instruments podkreśla pominięte klatki, co prowadzi do precyzyjnego naprawienia problemu.
Real‑Device vs. Simulator Testing dla Match Frame Rate tvOS
Po rozwiązaniu problemu z konfiguracją listy, synchronizacją warstw i używaniem CADisplayLink, deweloperzy muszą zweryfikować, czy obserwowana zachowanie liczby klatek na sekundę odpowiada oczekiwaniom na rzeczywistym sprzęcie.
Symulator tvOS emuluje wyświetlacz 60 Hz i nie może odtworzyć dynamicznej negocjacji częstotliwości odświeżania, która zachodzi na Apple TV obsługującym tryby 30 Hz lub 120 Hz. W związku z tym, scena, która wydaje się płynna w symulatorze, może tracić klatki na prawdziwym urządzeniu, gdy system przełącza się na niższą częstotliwość dla treści HDR lub wideo o wysokiej rozdzielczości.
Testowanie na fizycznym Apple TV ujawnia rzeczywistą interakcję między `UIScreen.preferredFramesPerSecond`, `CADisplayLink` a negocjacją HDMI telewizora. Deweloperzy powinni logować `CADisplayLink.timestamp` i porównywać go z raportowaną przez urządzenie wartością `UIScreen.maximumFramesPerSecond`, aby potwierdzić, że flaga dopasowania liczby klatek na sekundę jest respektowana w produkcji.
Często zadawane pytania
Czy dopasowanie częstotliwości klatek może być używane z zewnętrzn kontrolerami Bluetooth?
Ta funkcja nie obsługuje zewnętrznych kontrolerów Bluetooth; dotyczy wyłącznie potoku wyjścia wideo, a synchronizacja czasowa wejścia kontrolera pozostaje niezależna od ustawienia częstotliwości klatek wideo.
Czy częstotliwość odświeżania klatki wpływa na odtwarzanie dźwięku w tle?
Dopasowanie liczby klatek nie wpływa na odtwarzanie dźwięku w tle; strumienie audio pozostają niezależne od synchronizacji odświeżania wideo, umożliwiając ciągłe odtwarzanie dźwięku niezależnie od ustawień dopasowania klatek wizualnych.
Czy istnieje limit liczby jednoczesnych strumieni wideo z taką samą częstotliwością klatek?
Nie ma wyraźnego ograniczenia na poziomie systemu operacyjnego dotyczącego jednoczesnego strumieniowania wideo przy użyciu dopasowanej częstotliwości klatek, ale praktyczne ograniczenia wynikają z sprzętu urządzenia, przepustowości sieci i dostępnych zasobów dekodowania, które różnią się w zależności od modeli tvOS.
Jak szybkość klatek w ramce wpływa na odbicie ekranu AirPlay?
Synchronizacja częstotliwości klatek synchronizuje cykl odświeżania telewizora z treścią źródłową, ale gdy używane jest lustrzane odbicie AirPlay, telewizor otrzymuje skompresowany strumień wideo o stałej prędkości, więc korzyści z synchronizacji są pomijane i wyświetlacz działa z natywną częstotliwością niezależnie od źródła.
Czy można przełączać częstotliwość klatek w czasie rzeczywistym bez ponownego uruchamiania aplikacji?
Włączanie i wyłączanie dopasowanego tempa klatek nie jest możliwe w czasie działania; ustawienie jest oceniane podczas uruchamiania aplikacji i wymaga ponownego uruchomienia, aby zastosować jakiekolwiek zmiany.
Zobacz również

Ostateczny polski przewodnik po produktach Apple na rok 2025
2 sierpnia, 2024
Odkrywanie nowej aktualizacji iOS: 10 ukrytych perełek, które przegapiłeś
15 marca, 2025