Jeśli kiedykolwiek szukałeś usług IPTV, to na pewno widziałeś te dwie frazy wielokrotnie: „URL M3U” i „Xtream Codes”. Pod spodem są to prawie te same rzeczy, a większość nowoczesnych odtwarzaczy obsługuje obie, ale ten wybór ma znaczenie — psują się na różne sposoby, a przełączenie się z jednego na drugi jest często najtańszym rozwiązaniem, gdy coś nie działa.

To jest praktyczne porównanie dla użytkowników IPTV, a nie rozbicie techniczne protokołów.

Porównanie obok siebie: odtwarzacz pobierający jeden plik playlist.m3u jednorazowo, w porównaniu do tego samego odtwarzacza rozsyłającego trzy turkusowe strzałki do get.php, player_api.php i xmltv.php.

M3U to jedno pobranie jednego pliku; Xtream to małe API, z którym odtwarzacz ciągle się komunikuje.

Czym one właściwie są

M3U to płaski plik tekstowy. Otwórz go w edytorze tekstowym, a zobaczysz nagłówek (#EXTM3U), a następnie ciąg linii #EXTINF:… łączących każdy kanał z adresem URL streamu. To prawdopodobnie najprostszy istniejący format. Twój odtwarzacz pobiera ten plik raz, parsuje go i od teraz ma listę kanałów.

#EXTM3U
#EXTINF:-1 tvg-id="bbc1" group-title="UK",BBC One HD
http://provider.example/live/bbc1/index.m3u8

To jest cały model danych: lista kanałów, z których każdy ma nazwę i adres URL. Zero dynamiki. Jeśli chcesz zaktualizowaną listę, musisz ponownie pobrać plik.

Xtream Codes to API HTTP. Podajesz odtwarzaczowi adres serwera, nazwę użytkownika i hasło; odtwarzacz wysyła zapytania do kilku punktów końcowych (get.php?type=m3u_plus, player_api.php, xmltv.php), aby pobrać listę kanałów, bibliotekę VOD, katalog seriali i przewodnik (EPG) jako oddzielne dokumenty. Faktyczne adresy URL streamów są konstruowane przez odtwarzacz z poświadczeń logowania i identyfikatora kanału.

Pod kątem mechaniki, logowanie do Xtream niemal zawsze zwraca M3U jako jeden ze swoich punktów końcowych — kiedy „importujesz M3U” od dostawcy Xtream, używasz jednego konkretnego wywołania z jego API. W drugą stronę to nie działa: zwykły plik M3U nie udostępnia niczego więcej.

Kiedy wybrać które

Użyj M3U, jeśli:

  • Zależy ci tylko na kanałach na żywo. Format M3U nie ma pojęcia o VOD czy katalogu seriali; jeśli twój dostawca je oferuje, M3U ich nie wyświetli.
  • Chcesz zachować lokalną kopię. Plik M3U jest przenośny — zrób jego kopię zapasową, edytuj w edytorze tekstu, udostępnij wybraną część komuś innemu.
  • Nie ufasz, że twój dostawca długo przetrwa na rynku. Wyeksportowany plik M3U będzie działał tak długo, jak długo będą działały w nim adresy URL streamów, nawet jeśli punkt końcowy API dostawcy zniknie jutro.
  • Dostawca ma błędy w usłudze. M3U to mniej ruchomych części. Jeśli ich API Xtream jest zawodne, ale eksport do M3U działa poprawnie, po prostu używaj M3U.

Użyj Xtream Codes, jeśli:

  • Chcesz VOD i seriale. Po prostu nie pojawiają się one w zwykłym formacie M3U.
  • Chcesz kategorii, z których odtwarzacz może korzystać natywnie. Xtream wysyła „na żywo”, „VOD”, „seriale” jako osobne drzewa kategorii; M3U ma jedynie ciągi znaków group-title, które co prawda są powszechnie akceptowane, ale nie są tak dobrze ustrukturyzowane.
  • Często zmieniasz urządzenia i nie chcesz ponownie importować list. Dane logowania Xtream działają wszędzie, a każdy kompatybilny odtwarzacz pobierze z nich dokładnie taką samą bibliotekę.
  • Chcesz, aby odtwarzacz dynamicznie odświeżał listę kanałów. Xtream pobiera dane ponownie na każdą sesję; M3U to stan punktowy z momentu pobrania.

Jak sprawdzić, z czego korzystasz

Jeśli zarejestrowałeś się u dostawcy, a ten wysłał ci jedną linijkę, jak na przykład:

http://server.example:8080/get.php?username=ABC&password=XYZ&type=m3u_plus&output=mpegts

To jest adres URL M3U. Możesz wkleić go bezpośrednio do testera M3U, aby upewnić się, że działa.

Jeśli przysłali ci trzy rzeczy — adres serwera, nazwę użytkownika, hasło — to jest logowanie do Xtream. Większość nowoczesnych odtwarzaczy ma osobny formularz „Dodaj źródło Xtream”. Wielu dostawców bez problemu udostępnia obie opcje: te same dane do logowania działają na obu interfejsach. Możesz użyć testera M3U, aby sprawdzić punkt końcowy playlisty oraz walidatora EPG do weryfikacji punktu końcowego przewodnika programowego, wszystko to bez instalowania czegokolwiek.

Typowe awarie (i do jakiego formatu się przełączyć)

Ten sam dostawca może działać idealnie na jednym interfejsie i być całkowicie zepsutym na drugim. Sześć rodzajów błędów warto znać.

M3U zwraca HTML

Wklejasz adres URL do testera i otrzymujesz komunikat: „serwer zwrócił stronę HTML”. Zazwyczaj oznacza to, że punkt końcowy M3U wymaga pliku cookie sesji, lub dostawca nałożył limit zapytań (rate-limit) na IP, które próbuje się z nim połączyć. Spróbuj użyć Xtream — punkty końcowe API są często mniej agresywnie ograniczane niż masowy eksport M3U.

Xtream zwraca błąd uwierzytelniania („auth failed”), ale M3U działa

Niektórzy dostawcy aktualizują swoją bazę danych poświadczeń Xtream z opóźnieniem. Adres URL M3U jest podpisywany w momencie jego wydania i działa nadal; API cię odrzuca, bo jeszcze nie podchwyciło twojego nowego hasła. Poczekaj godzinę, lub po prostu korzystaj z M3U.

Jeden odtwarzacz może to przeczytać, inny nie

Xtream Codes to standard de facto, a nie oficjalny. Istnieją dostawcy, którzy deklarują wsparcie dla Xtream, ale implementują tylko dwa ze standardowych punktów końcowych; są odtwarzacze, które odwołują się do niestandardowego punkt końcowego i psują się, gdy go brakuje. Jeśli twój odtwarzacz nie może dogadać się z twoim dostawcą przez Xtream, ale czyta M3U świetnie, przejdź na M3U. Sytuacja odwrotna jest rzadsza, ale też się zdarza.

Brakuje logotypów kanałów w M3U, a w Xtream są

W M3U adresy URL do logo znajdują się bezpośrednio w linii (tvg-logo="…"). W Xtream, loga są serwowane przez specjalny punkt końcowy. Jeśli twoje M3U zawiera błędne lub nieaktualne linki do logo, przejście na Xtream odświeży je. Sytuacja odwrotna (loga są w M3U, brakuje w Xtream) prawie się nie zdarza.

EPG łączy się z kanałami w jednym formacie, a w drugim nie

Wartość <channel id="…"> z XMLTV musi pasować do tvg-id="…" w M3U lub pola channel-id w Xtream. Te identyfikatory nie zawsze są takie same w obu formatach — dostawcy czasami regenerują je według jakiegoś harmonogramu. Jeśli twój przewodnik programowy jest pusty w M3U, ale ma dane w Xtream, oznacza to, że identyfikatory nie zgadzają się w formacie M3U; korzystaj więc po prostu z Xtream.

Jeden format jest szybszy

Xtream w powolnej sieci wykonuje o wiele więcej zapytań (round trips) niż M3U. Na niestabilnym połączeniu, różnica może wynieść od 5 do 10 sekund przy starcie. M3U pobiera plik raz i działa w oparciu o lokalne dane. Jeśli zależy ci na szybkim starcie aplikacji, M3U wygrywa zazwyczaj za każdym razem.

Co robi Klipa

Klipa obsługuje oba z nich, traktuje je jako zamienne źródła (możesz posiadać jedno źródło M3U i jedno logowanie Xtream obok siebie w tej samej bibliotece), a pobieranie danych z obu odbywa się w tle. Jeśli M3U nagle zacznie zwracać błędy HTML, sesja Xtream utrzyma twoją listę kanałów aż do następnego odświeżenia. Jeśli zawiedzie logowanie Xtream, zbuforowany zapis z M3U nadal będzie w użyciu.

Stanowcza rekomendacja brzmi: wybierz ten format, który twój dostawca oferuje stabilniej, ale nie przywiązuj się ślepo tylko do jednego formatu. Format nie jest samym produktem. Są nimi kanały.