全部指南

九千台頻道,你看的二十台

iPhone 與 CarPlay 上的 IPTV 頻道群組。 二十台,不是九千台。

iPhone 與 CarPlay 上的 IPTV 頻道群組來自播放清單本身:#EXTINF 行上的 group-title 屬性,或底下那一行 #EXTGRP。不管清單是從 M3U 網址還是從檔案加進來,Dashow 都依這些值在 iPhone 上建立「電視直播」的群組選單。兩者都沒宣告的清單會是平的一長條,這時把常看的頻道加入「喜好項目」。

即將推出 App Store如何使用
產品示意圖,實際體驗依 App 與顯示裝置的相容性而異。
  • 01

    分群寫在播放清單裡:#EXTINF 行上的 group-title,或自成一行的 #EXTGRP。

  • 02

    group-title 是約定俗成的 M3U 擴充,所以同一個檔案在每個播放器裡分法不同。

  • 03

    檔案裡沒有分類時,「喜好項目」與「最近觀看」是最快找到 IPTV 頻道的路。

如何使用

快速上手

  1. 01

    在「瀏覽」裡打開「電視直播」

    「瀏覽」從位置開始,你的 IPTV 頻道收在「電視直播」裡。

  2. 02

    用群組選單

    先選來源,再用「群組」選單把節目表縮短。

  3. 03

    把常看的加入「喜好項目」

    把你會看的頻道標起來,它們就集中到「喜好項目」。

  4. 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,卻仍然帶著分類。

  1. tvg-id,來源指派給這個頻道項目的識別碼。
  2. tvg-name,來源自己寫的頻道名稱,和逗號後面的顯示名稱分開存放。
  3. tvg-logo,頻道標誌圖片的 HTTP 網址。
  4. group-title,分類的名稱。做出群組的就是這個屬性。

group-title 是約定俗成的擴充,不是規格。

RFC 8216 把 #EXTINF 規範為 HTTP 即時串流的一部分,定義的是長度和逗號後面的標題文字。它完全沒有提到 tvg-id, tvg-logo, group-title 或 #EXTGRP。那些屬性是播放清單工具與播放器在實務裡長出來的,從來沒有任何標準組織認可過。

沒有仲裁者。這就解釋了為什麼同一份播放清單,一個播放器建出分類樹,另一個顯示成長長的一條:各自決定要讀哪些屬性。這也解釋了為什麼來源只要改一個屬性,就能把你的分類重新排過。

在 Dashow 裡穿過 IPTV 頻道群組。

電視直播」就在「瀏覽」裡,和「喜好項目」、「已儲存的影片」以及你的各個連線並排。打開它,來源選單寫著播放清單的名字,「群組」選單則收著檔案提供的分類。兩個選單都會記住你上次的選擇,所以星期二縮好的節目表,星期三打開時還是縮好的。

版面會自己調整。iPad 一次顯示的分類內容比 iPhone 多。記住的選擇在重新整理過的檔案裡消失時,它會自己回復,而不是留下一個空畫面。搜尋只在你所在的位置裡跑,所以從「電視直播」開始的搜尋,回來的是頻道。

用「喜好項目」做一份短清單。

播放清單完全沒有 IPTV 頻道群組時,答案是「喜好項目」。把一個直播頻道標起來,它就加入「瀏覽」裡的「喜好項目」位置,一份你自己做的清單,而不是來源寫好的。二十個標起來的頻道,表現就像一個沒有任何 #EXTINF 行宣告過的分類。

其餘的交給「最近觀看」。你打開過的直播頻道,會照觀看的順序留著,依據的是裝置上記錄的觀看時間。一份短短的「喜好項目」加上「最近觀看」,中午想看新聞時,iPhone 打開的就是新聞,而不是九千列。

重新整理帶來的,是新檔案宣告的分類。

播放清單的重新整理是交易式的:新清單完整取回時才取代舊的,失敗的重新整理則讓裝置上已經有的頻道原封不動。成功之後,分類就是新檔案宣告的那些。來源把「體育」改名成「SPORT」,你的群組也跟著改名。

這一頁停在清單這裡。加入播放清單屬於 M3U 播放清單那份指南,清單載不進來或播不出來屬於播放清單疑難排解,直播頻道上車用螢幕則是 CarPlay 看 IPTV 那一頁。檔案完全沒有宣告分類時,可以請來源加上 group-title。

IETF:RFC 8216,HTTP 即時串流M3U 擴充指令,包含 #EXTGRPApple:HTTP 即時串流

常見問題

想知道的,這裡有答案。

我的播放清單為什麼所有頻道都擠在一份清單裡?

因為檔案沒有替它們宣告分類。M3U 有兩種方式指定群組:#EXTINF 行上的 group-title 優先,該屬性不存在時,換底下那一行 #EXTGRP。在 .m3u 裡兩個都搜一次;兩個都沒有,就該去問來源。

可以把我從來不看的分類藏起來嗎?

「電視直播」裡的「群組」選單一次選一個分類,其餘的自然就不在畫面上。想要更短的路,把你會看的 IPTV 頻道加入「喜好項目」,再從「瀏覽」打開那個位置。

重新整理播放清單之後,「喜好項目」還在嗎?

在。新清單取代舊的之前,重新整理會先收集你標起來的頻道的網址,接著在每一個網址相符的新項目上把標記放回去。只要來源保留那個網址,頻道就留在「喜好項目」裡,而名稱、群組和標誌都來自新檔案。

來源更新清單之後,我的群組會怎麼樣?

變成新檔案說的樣子。分類在每次重新整理時都從檔案讀出,所以來源檔案裡改名或合併過的分類,就會照那個樣子出現在選單裡。記住的選擇已經不存在時,會回復到一個有效的。