IPappTV

Rozwiązywanie problemów

Obraz zamarza, dźwięk leci - kanały 1080i na Android TV

Dlaczego część kanałów zatrzymuje się na jednej klatce, co IPappTV robi z tym sama i co zrobić ręcznie

Objaw: kanał się uruchamia, dźwięk gra normalnie, ale obraz stoi na jednej klatce albo skacze co kilka sekund. Dotyczy zwykle tych samych kanałów za każdym razem, najczęściej stacji nadawanych w 1080i. W VLC na tym samym urządzeniu ten kanał działa. Najkrótsza droga: w odtwarzaczu strzałka w dół → ikona dekodera → „Zawsze programowy (FFmpeg)".

1. Skąd się to bierze

Telewizory i przystawki z Androidem dekodują wideo układem sprzętowym w procesorze (SoC). Jest szybki i nie grzeje urządzenia, ale bywa wybredny. Najczęstszy problem to 1080i - obraz z przeplotem, w którym każda klatka jest przesyłana jako dwa półobrazy. Wiele stacji w Europie wciąż nadaje w tym formacie, a część dostawców IPTV przekazuje go dalej bez zmian.

Niektóre dekodery sprzętowe przyjmują taki strumień bez błędu - odtwarzacz widzi, że „gra" - ale nie oddają klatek na ekran albo oddają co którąś. Stąd zamrożony obraz przy działającym dźwięku: dźwięk jest dekodowany osobno i z nim nie ma problemu.

VLC nie ma tego problemu, bo domyślnie dekoduje programowo, biblioteką FFmpeg, na zwykłym procesorze. Ta sama biblioteka jest wbudowana w IPappTV jako dekoder zapasowy.

2. Co aplikacja robi sama

Przy każdym uruchomieniu kanału działa drabinka prób. Ekran ładowania pokazuje, na którym etapie jesteś: „Łączenie…", „Łączenie ponownie…", „Przełączam dekoder…".

  1. Próba 1 - dekoder sprzętowy. Domyślny start, najmniejsze obciążenie.
  2. Próba 2 - ponowne połączenie tym samym dekoderem. Wiele paneli IPTV uruchamia transkoder dopiero na pierwsze żądanie i pierwsze połączenie trafia w pustą playlistę. To nie jest jeszcze problem dekodera, więc nie zmieniamy go pochopnie.
  3. Próba 3 - drugi dekoder. Jeśli kanał nadal nie rusza, aplikacja przełącza na FFmpeg. Gdy po przełączeniu kanał gra stabilnie przez kilka sekund, wybór jest zapamiętywany dla tego kanału - następnym razem startuje od razu programowo, bez przechodzenia drabinki.

Osobno działa strażnik stopklatki. Zamrożony obraz z punktu widzenia odtwarzacza nie jest błędem - stan to „gra", dane płyną. Dlatego aplikacja co dwie sekundy sprawdza licznik faktycznie wyrenderowanych klatek. Jeśli przez sześć sekund nie przybyła żadna, a odtwarzanie formalnie trwa, przełącza dekoder i od razu zapisuje wybór dla kanału. Sześć sekund to kompromis: krócej dawało fałszywe alarmy na kanałach, które po prostu wolno startują.

Drabinka działa w obie strony. Jeśli globalnie wybrałeś FFmpeg, a trafi się strumień, którego dekoder programowy nie wyrabia (typowo 4K w HEVC), aplikacja spróbuje sprzętowo i to zapamięta.

3. Co zrobić ręcznie

Jeśli obraz jest zamrożony, a aplikacja nie przełączyła sama (na przykład nie minęło jeszcze sześć sekund albo strumień oddaje pojedyncze klatki, co zeruje licznik):

  1. W odtwarzaczu naciśnij strzałkę w dół - pojawi się pasek funkcyjny.
  2. Przejdź na ikonę dekodera i naciśnij OK.
  3. Wybierz „Zawsze programowy (FFmpeg)". Kanał uruchomi się ponownie i to ustawienie zostanie zapamiętane tylko dla niego.

Jeśli takich kanałów jest dużo - cała lista od jednego dostawcy - zmień punkt startowy globalnie: Ustawienia → „Dekodowanie wideo (domyślne)" → „Programowe (FFmpeg)". Drabinka nadal będzie ratować sprzętem te kanały, których FFmpeg nie udźwignie.

Ustawienia „Zawsze sprzętowy" i „Zawsze programowy" przy kanale wyłączają drabinkę dla tego kanału. To celowe: kto je wybiera, chce przewidywalnego startu, a nie kilkunastu sekund prób.

4. Koszt dekodera programowego

FFmpeg dekoduje na głównym procesorze. Na Chromecast z Google TV, Shield czy nowszych telewizorach 1080i i 1080p idą bez problemu. Na słabszych przystawkach i starszych telewizorach strumień w wysokiej rozdzielczości i z dużą liczbą klatek może w FFmpeg gubić klatki - obraz jest płynny na sprzęcie, a rwie programowo. Nie mamy pomiarów dla konkretnych modeli; to zależy od procesora i od strumienia. Dlatego aplikacja domyślnie startuje sprzętowo i przechodzi na FFmpeg tylko wtedy, gdy musi.

Dekodowanie programowe zużywa też więcej energii - na telefonie skraca czas na baterii wyraźnie. Na telewizorze to nie ma znaczenia.

5. Zapamiętane dekodery - jak to cofnąć

Aplikacja przechowuje decyzję per kanał: „hw" albo „sw". Jeśli zmieniłeś dostawcę, dostawca zaczął transkodować kanały inaczej albo kanały zaczęły startować niewłaściwym dekoderem, wyczyść wszystko jednym przyciskiem: Ustawienia → „Wyczyść zapamiętane dekodery". Przy pojedynczym kanale wystarczy wybrać z paska „Automatyczny".

6. Gdy to nie pomaga

  • Czarny ekran zamiast zamrożonego obrazu to inny problem - wyłącz odtwarzanie tunelowane w ustawieniach. Na części telewizorów tunel daje dźwięk bez obrazu.
  • Obraz rwie także na FFmpeg - sprawdź kanał w VLC na tym samym urządzeniu. Jeśli tam też rwie, to za słabe urządzenie na ten strumień albo problem łącza; jeśli w VLC jest płynnie, napisz do nas.
  • Rwie na wszystkich kanałach, także w 720p - to nie dekoder. Zwiększ bufor odtwarzacza w ustawieniach (domyślnie 2,5 s) i sprawdź łącze.

Piszesz na kontakt@ipapptv.com - podaj model urządzenia, wersję Androida i to, czy kanał działa w VLC. Bez adresu strumienia.