Revue
繁體中文

指南

rtp2httpd FCC 快速轉台:Apple TV 上轉台更快

用 rtp2httpd 轉送 IPTV 群播時,可以開啟 FCC(Fast Channel Change,快速轉台)。做法是在 M3U 的頻道網址後面加上 ?fcc=<FCC 伺服器 IP>:<連接埠>。Revue 這一端不需要任何設定。在我們的測試中,在顯示模式相同的頻道之間轉台,新頻道畫面開始動的時間從約 2.3 秒縮短到約 1.7 秒。代價是直播畫面會比不開時晚 1–2 秒。

本文假設你已經照著IPTV 群播轉單播:用 udpxy、rtp2httpd 在 Apple TV 上看一文,用 rtp2httpd 在 Revue 上看到頻道了。

FCC 是什麼

一般群播轉台慢,是慢在等關鍵影格。影片裡只有關鍵影格帶有完整畫面,後面的影格都要靠它才能解出來。轉送程式加入新頻道的群播後,收到的第一段資料通常不是關鍵影格,播放器只能等下一個。關鍵影格之間通常相隔 1 秒到幾秒。

FCC 的做法是:轉台時,rtp2httpd 先向 IPTV 網路裡的 FCC 伺服器要這個頻道的資料。FCC 伺服器從它快取的關鍵影格開始,用單播傳過來,速度比正常播放稍快(我們測到約 1.2 倍,持續約 10 秒)。單播追上群播後,rtp2httpd 切回群播,中斷單播。播放器收到的始終是同一條連續的串流,不會察覺到切換。

事前準備

  • rtp2httpd。udpxy 沒有 FCC 功能。
  • 你所在 IPTV 網路的 FCC 伺服器位址和連接埠。它和群播位址一樣,由你自己的 IPTV 網路決定,本文不提供。rtp2httpd 的文件〈FCC 快速换台配置〉(簡體中文)介紹了查找方法。
  • rtp2httpd 要能連到 FCC 伺服器。依 rtp2httpd 文件,通常要求轉送裝置在 IPTV 網路上取得了位址(透過 DHCP、IPoE 或 PPPoE),並用 upstream-interface 指定 IPTV 那一端的網路介面。
  • rtp2httpd 在 NAS、接在主路由器後面的路由器這類 NAT 裝置後面執行時,預設的 FCC 類型還需要設定 fcc-listen-port-range,並在上層路由器設定連接埠轉送。詳見同一篇 rtp2httpd 文件。轉送裝置直接接上 IPTV 網路時不需要。

步驟一:在 M3U 加上 FCC 參數

在 rtp2httpd 頻道網址的最後加上 ?fcc=<FCC 伺服器 IP>:<連接埠>:

#EXTM3U
#EXTINF:-1 tvg-id="<節目表裡的頻道 id>" group-title="高畫質",<頻道名稱>
http://<轉送裝置 IP>:5140/rtp/<群播位址>:<連接埠>?fcc=<FCC 伺服器 IP>:<連接埠>
  • fcc-type 用來選擇 FCC 協定,可以不寫。不寫時等同 telecom。依 rtp2httpd 文件,大多數情況用它就能運作;少數網路需要在網址後面再加上 &fcc-type=huawei。
  • 一個網址只能有一個 ?。網址裡已經有其他參數時,用 & 連接。
  • 如果你用 rtp2httpd 的 external-m3u 自動改寫播放清單,可以直接在來源清單的網址後面加參數:rtp://<群播位址>:<連接埠>/?fcc=<FCC 伺服器 IP>:<連接埠>。
  • 只想讓部分頻道開啟 FCC,就只改這些頻道的網址。

改好之後,在 Revue 的頻道清單頁按遙控器的播放/暫停鍵,重新載入播放清單。

步驟二:確認 FCC 有沒有生效

只靠感覺判斷並不可靠。以下兩種方法擇一即可。

看回應標頭(需要 rtp2httpd 3.16.0 或以上版本)。 在電腦的終端機執行:

curl -s -o /dev/null -D - --max-time 3 "http://<轉送裝置 IP>:5140/rtp/<群播位址>:<連接埠>?fcc=<FCC 伺服器 IP>:<連接埠>"

這個指令只會印出回應標頭,3 秒後自動結束。找到 R2H-FCC-Status 這一行:

  • active:這次是從 FCC 單播開始播放的,FCC 已經生效。
  • fallback:FCC 伺服器沒有回應,rtp2httpd 改用一般群播。請照文末的常見問題檢查。
  • 沒有這一行:網址裡沒有 fcc=,或 rtp2httpd 版本低於 3.16.0。

不要用 curl -I。收到 HEAD 請求時,rtp2httpd 不會去連 FCC 伺服器,回應裡也沒有這一行。

看狀態頁。 用瀏覽器開啟 http://<轉送裝置 IP>:5140/status。在 Apple TV 上轉一個台,然後馬上看這台 Apple TV 那一列(依「客戶端」欄位裡 Apple TV 的 IP 找)。狀態頁的文字是 rtp2httpd 自己的用語:

  • 「服務」欄位的網址最後帶有 ?fcc=…,代表 Revue 用的是改好的網址。
  • 轉台後約 10 秒內,「狀態」欄位顯示「FCC 單播活躍」,代表 FCC 正在運作。之後會變成「組播活躍」,這是切回群播後的正常狀態。

如果轉台後一直只看到「組播活躍」,請用上面的 curl 指令再確認一次。

能快多少

我們用一台 Apple TV 和 rtp2httpd 3.17.2 測了 6 個頻道,其中包含 4K HDR 頻道。只在顯示模式相同的頻道之間轉台,一般群播和 FCC 各轉 24 次。下表是中位數,從按下轉台起算:

一般群播 開啟 FCC
聲音出來 約 0.6 秒 約 0.4 秒
新頻道畫面開始動 約 2.3 秒 約 1.7 秒

逐台來看,開啟 FCC 後畫面早動 0.4–0.9 秒。不同網路、不同頻道的關鍵影格間隔不一樣,你的結果會有差異。

為什麼有些播放器開了 FCC 也不覺得快

FCC 傳來的第一段資料就從關鍵影格開始。但說明這條串流裡有哪些影音的資訊(PAT/PMT)常常晚零點幾秒才到。有些播放器會丟掉這段資訊到達之前收到的資料,開頭那個關鍵影格也跟著丟了,只能再等下一個。這樣開不開 FCC,差別不大。

Revue 會先把這段資料存起來,等這段資訊到了再接著使用,所以能用上 FCC 傳來的第一個關鍵影格。一般群播開始播放時,這段資訊到達之前收到的關鍵影格,Revue 也一樣會用上。

什麼情況幫不上忙

  • tvOS 開啟了「符合內容」,又在 SDR 頻道和 4K HDR 頻道之間轉台,或在影格率不同的頻道之間轉台時,電視要先切換顯示模式。這一步要好幾秒,時間長短取決於電視,FCC 縮短不了。在顯示模式相同的頻道之間轉台,才能明顯感受到 FCC 的效果。
  • FCC 伺服器沒有回應時,rtp2httpd 只等 80 毫秒,就改用一般群播。頻道照常能看,只是沒有加速。

代價:直播畫面會晚 1–2 秒

開啟 FCC 後,Revue 播放的畫面比不開時晚 1–2 秒。原因是 FCC 傳來的資料從一個稍早的關鍵影格開始,Revue 從這一格起以正常速度播放,所以會一直落後這麼多。這段延遲會維持到下次轉台。Revue 不會為了追上即時畫面而加速播放。

如果你很在意即時性,例如一邊看比賽一邊看手機上的比分,可以只讓常轉的頻道開啟 FCC,或乾脆不開。

常見問題

狀況 原因與處理
開了 FCC,轉台還是一樣慢 先照步驟二確認 FCC 已經生效。已經生效還是覺得慢,看看是不是在 SDR 和 4K HDR 頻道之間轉台:這時等待的時間主要花在電視切換顯示模式。
R2H-FCC-Status 是 fallback FCC 伺服器沒有回應。依序檢查:FCC 位址和連接埠是否正確;轉送裝置有沒有在 IPTV 網路上取得位址,upstream-interface 是否指向 IPTV 網路介面;rtp2httpd 在 NAT 後面時,有沒有設定連接埠轉送。也可以試著加上 &fcc-type=huawei。rtp2httpd 記錄裡的 FCC: Server response timeout 指的是同一件事。
FCC 位址寫錯了,頻道還能看嗎 可以。rtp2httpd 等不到回應就改用一般群播,只是沒有加速。
udpxy 能用 FCC 嗎 不能。FCC 是 rtp2httpd 的功能,udpxy 沒有。
改了頻道網址,收藏會不見嗎 通常不會。網址改變後,Revue 會依 tvg-id 或頻道名稱,把收藏對應到新網址。前提是 tvg-id 或頻道名稱在這個播放清單裡沒有重複。

其他播放問題的檢查方法,請見頻道黑畫面、卡頓、沒聲音怎麼辦。