九千台頻道,你看的二十台
iPhone 與 CarPlay 上的 IPTV 頻道群組。 二十台,不是九千台。
iPhone 與 CarPlay 上的 IPTV 頻道群組來自播放清單本身:#EXTINF 行上的 group-title 屬性,或底下那一行 #EXTGRP。不管清單是從 M3U 網址還是從檔案加進來,Dashow 都依這些值在 iPhone 上建立「電視直播」的群組選單。兩者都沒宣告的清單會是平的一長條,這時把常看的頻道加入「喜好項目」。
- 01
分群寫在播放清單裡:#EXTINF 行上的 group-title,或自成一行的 #EXTGRP。
- 02
group-title 是約定俗成的 M3U 擴充,所以同一個檔案在每個播放器裡分法不同。
- 03
檔案裡沒有分類時,「喜好項目」與「最近觀看」是最快找到 IPTV 頻道的路。
如何使用
快速上手
- 01
在「瀏覽」裡打開「電視直播」
「瀏覽」從位置開始,你的 IPTV 頻道收在「電視直播」裡。
- 02
用群組選單
先選來源,再用「群組」選單把節目表縮短。
- 03
把常看的加入「喜好項目」
把你會看的頻道標起來,它們就集中到「喜好項目」。
- 04
檢查播放清單檔案
沒有群組選單時,打開 .m3u 搜尋 group-title 和 #EXTGRP。
平的一長條頻道清單,是檔案的性質。
你缺的那個分群,不是播放器裡的某個設定,而是播放清單裡的資料。M3U 是純文字檔案,每個頻道至少佔兩行:一行 #EXTINF 帶著頻道的中繼資料,底下一行是串流網址。分類就寫在那個網址的上面。
所以裝著同樣頻道的兩份播放清單,在同一支 iPhone 上表現不同。一份打開時有群組選單,裡面是新聞、體育和電影。另一份打開就是九千列排成一條。手機沒有任何差別。差別在檔案。
讀一行 #EXTINF,再看看有沒有 #EXTGRP。
這是一個完整的頻道項目:#EXTINF:-1 tvg-id="123" tvg-name="Channel Name" tvg-logo="http://example.com/logo.png" group-title="News", Channel Name。長度和逗號之間的全部是鍵值中繼資料,逗號後面的文字則是播放器顯示的名稱。長度寫 -1 或 0,代表這是一個沒有預定長度的串流。
大多數播放清單會出現四個屬性,其中一個負責做出分類。群組也可以寫在自成一行的地方。#EXTINF 行上的 group-title 優先;它不在時,底下那一行 #EXTGRP 會替接在後面的項目指定群組。用純文字編輯器在 .m3u 裡兩個都搜一次,因為一個檔案可以完全沒有 group-title,卻仍然帶著分類。
- tvg-id,來源指派給這個頻道項目的識別碼。
- tvg-name,來源自己寫的頻道名稱,和逗號後面的顯示名稱分開存放。
- tvg-logo,頻道標誌圖片的 HTTP 網址。
- group-title,分類的名稱。做出群組的就是這個屬性。
group-title 是約定俗成的擴充,不是規格。
RFC 8216 把 #EXTINF 規範為 HTTP 即時串流的一部分,定義的是長度和逗號後面的標題文字。它完全沒有提到 tvg-id, tvg-logo, group-title 或 #EXTGRP。那些屬性是播放清單工具與播放器在實務裡長出來的,從來沒有任何標準組織認可過。
沒有仲裁者。這就解釋了為什麼同一份播放清單,一個播放器建出分類樹,另一個顯示成長長的一條:各自決定要讀哪些屬性。這也解釋了為什麼來源只要改一個屬性,就能把你的分類重新排過。
用「喜好項目」做一份短清單。
播放清單完全沒有 IPTV 頻道群組時,答案是「喜好項目」。把一個直播頻道標起來,它就加入「瀏覽」裡的「喜好項目」位置,一份你自己做的清單,而不是來源寫好的。二十個標起來的頻道,表現就像一個沒有任何 #EXTINF 行宣告過的分類。
其餘的交給「最近觀看」。你打開過的直播頻道,會照觀看的順序留著,依據的是裝置上記錄的觀看時間。一份短短的「喜好項目」加上「最近觀看」,中午想看新聞時,iPhone 打開的就是新聞,而不是九千列。
重新整理帶來的,是新檔案宣告的分類。
播放清單的重新整理是交易式的:新清單完整取回時才取代舊的,失敗的重新整理則讓裝置上已經有的頻道原封不動。成功之後,分類就是新檔案宣告的那些。來源把「體育」改名成「SPORT」,你的群組也跟著改名。
這一頁停在清單這裡。加入播放清單屬於 M3U 播放清單那份指南,清單載不進來或播不出來屬於播放清單疑難排解,直播頻道上車用螢幕則是 CarPlay 看 IPTV 那一頁。檔案完全沒有宣告分類時,可以請來源加上 group-title。




