neTV:自架 IPTV 播放器,把直播頻道搬進瀏覽器直接看

neTV 是 Apache-2.0 開源的自架 IPTV 播放器,用 Docker 跑在 NAS 上,瀏覽器直接看直播不用裝 App。README 寫到它主打低延遲切台、h264+aac 零 CPU 直通、NVIDIA TensorRT 即時 AI 升頻。本文依官方文件拆解它的架構、怎麼部署,以及它是播放器不是內容來源的關鍵限制。

用 AI 摘要這篇文章:

neTV 是一個你自己架在 NAS 或小主機上的 IPTV 播放器。它只做一件事:把你已經有的 IPTV 來源,用一個乾淨的網頁介面播出來,打開瀏覽器就能看直播,不必再裝 App,也不必架 Plex 那種大型媒體庫。

neTV 播放器官方截圖Pin
neTV 播放器官方截圖:瀏覽器內直接播放。

這裡的關鍵字是「你已經有的」。neTV 在 README 的免責聲明裡寫得很白:它只是一個播放器,不提供任何內容,你要自己準備合法的 IPTV 訂閱(提供 Xtream Codes API 或 M3U 播放清單的那種服務)。先記住這點,整篇都繞著它轉。

neTV 不想取代 Plex,它只服務「看直播」的人

README 的 Alternatives 段落把話說得很客氣:Plex、Emby、Jellyfin 都是成熟、優秀的媒體中心,社群也大;neTV 只是給「覺得它們太重、只想要一個簡單 IPTV 播放器」的人另一個選擇。所以它的定位是「補」,不是「取代」。

所謂「太重」是具體的。Plex 一啟動就想掃你的媒體櫃、抓海報、整理演員卡、為每個裝置協商轉碼;如果你根本沒有本地媒體櫃,手上就是一條 IPTV,這套手續全是空轉。neTV 把這些全砍掉,直接對著 IPTV 來源播。它只吃直播和隨選影片(VOD,像 Netflix 那樣點開就看的影片庫),不管你的本地檔案。

不過 neTV 也不是完全沒有「家人」這條軸線。README 的比較表顯示它支援多使用者,每個使用者、每個來源都能設同時連線數上限,只是沒有 Plex 那種細到每個資料夾的權限。它也用不到,因為它沒有本地資料夾。

README 附的比較表裡有幾項是讀者最常拿來糾結的,我摘出來:

neTVPlex / Emby / Jellyfin
主要定位IPTV 直播與點播完整媒體中心
原生吃 Xtream Codes API否(Plex 要靠 xTeVe 之類的工具轉接 M3U)
本地影片庫 / DVR 錄影沒有
AI 升頻(跟我們介紹過的 HitPaw Video Enhancer 走不同路線:一個是即時播放升頻,一個是後製處理)到 4K有(TensorRT,僅 NVIDIA)無(Jellyfin 有外掛,其餘無)

這張表是從 README 的比較表摘的,只挑會影響「我要選哪邊」的那幾欄。看得出來:如果你要的是一個顧全家媒體的大本營,neTV 不足;如果你手上就是一條 IPTV,嫌 Plex 開起來太重,neTV 就是順著這個不滿長出來的工具。

自己架的另一個好處是介面統一。IPTV 來源給的 App 通常又陽春又碎,手機一個、電視一個、電腦又一個;neTV 把全部裝置收進同一個網頁,手機平板開瀏覽器、客廳電腦開瀏覽器、Chromecast 投出去,看到的是同一套操作。README 的比較表也顯示 neTV 能設多個來源、每個來源各自限制同時連線數,所以你可以把一條體育直播、一條無線電視接收器、一條隨選影片併在同一個節目表裡,不用在三個 App 之間切來切去。

這裡要誠實說:neTV 實際切台比 Plex 快多少、播 4K 多順,我沒有實機測,README 也沒給這類數字。所以「感覺比較快」的說法我不寫進來。

打開瀏覽器就是電視:官方介面長這樣

README 附了五張截圖,分別是電子節目表、播放器、隨選影片、影集、設定頁。

neTV EPG 電子節目指南官方截圖Pin
neTV EPG 官方截圖:頻道列表與節目資訊。
從這些截圖能看出 neTV 想給你的使用樣貌:

  • 電子節目表(EPG) 是像第四台那種「頻道對時間」的格子表,你能看到現在每個頻道在播什麼、接下來播什麼。EPG 全名是 Electronic Program Guide,就是數位電視裡那張節目表。如果你的 IPTV 來源原本只給一個陽春 App、連節目表都欠奉,這張格子表就是 neTV 明顯加分的地方。
  • 播放器 是網頁版的播放畫面,截圖裡能看到字幕與播放控制。
  • 隨選影片與影集 頁面把電影和影集分開陳列,有季與集的結構,像你熟悉的串流平台那樣選片。
  • 設定頁 讓你加 IPTV 來源、調轉碼、看硬體編碼器有沒有被抓到。

README 還列了搜尋(支援正規表示式)、收藏拖曳排序、隨選影片斷點續看等功能,這些是把播放體驗補完的周邊,不是決定你裝不裝的理由。

還有一個細節:設定頁上的 AI 升頻選項,只有在 TensorRT 引擎真的存在時才會出現;機器上沒有 NVIDIA 顯卡時,那個選項連看都不會讓你看到。我只讀了 README 和它附的截圖,沒有實際部署點過每一頁,所以這裡只能說「官方文件呈現的樣貌」,不能替每個按鈕的反應快慢背書。

它怎麼把 CPU 省下來:能不轉碼就不轉碼

如果你想在 NAS 或小主機上跑 IPTV,最怕的就是轉碼(把影片格式即時換成裝置能播的格式)把 CPU 吃滿。這段是整篇最該讀慢的地方,因為它直接決定 neTV 在你的機器上會不會吵、會不會卡。

多數 NAS 搭的是低功耗處理器,一旦每個頻道都得轉碼,CPU 馬上滿載,風扇也跟著吵。README 在 Transcoding 段落寫了幾個專門對付這件事的設計:

  • 智慧直通(smart passthrough):遇到 h264 影像加 AAC 音訊的串流,直接重新打包,不重新編碼,README 寫此時 CPU 幾乎是零。重新打包(remux)的概念像把貨物從大箱換到小箱,不拆開重裝,所以省力。h264 加 AAC 正是 IPTV 最常見的組合,這條等於幫你擋掉大多數情況。
  • 整條 GPU 管線:碰到真的要轉碼的來源,解碼交給 NVDEC、編碼交給 NVENC 或 VAAPI,這些是顯卡裡專門處理影片的單元,CPU 就能閒著。NVDEC/NVENC 屬於 NVIDIA 陣營,VAAPI 則是 Intel/AMD 的對應方案。
  • 探測快取(probe caching):每條串流只先讀一次資訊(解析度、編碼等等),同部影集的各集共享這份資料,不重複工。
  • 自動去交錯:無線電視和有線訊號常是交錯式(畫面會看到橫向掃描線),neTV 會自動偵測並去交錯;遇到逐行掃描的來源就跳過,不浪費力氣。
  • 智慧倒帶:倒轉時重用已經轉過的段落,只補轉中間沒涵蓋到的缺口。
  • 連線復原:隨選影片的播放連線狀態(session)在 neTV 重啟後能接續,不會從頭來。

反過來說,如果你的來源是 HEVC 或比較少見的編碼,neTV 還是得轉碼,這時 GPU 就重要了。沒有 GPU 的機器,README 也列了軟體轉碼(software fallback)作為後備,也就是交給 CPU 硬算,能跑但會吃力,能同時開幾條就看你的 CPU 撐不撐得住。

還有一條和 HTTPS 有關:如果你的 neTV 走 HTTPS,但 IPTV 來源是普通的 HTTP 串流,瀏覽器基於安全會擋下混合內容。README 寫 neTV 會自動把這類 HTTP 串流代理出去(HTTPS passthrough),讓你在 HTTPS 站台下還是看得到 HTTP 來源,不必自己改來源。

這幾條我都標註是 README 寫到的設計。它們說明了「作者怎麼想省 CPU」,但不能直接推論成「neTV 在你的機器上一定順」,實際表現要看你的硬體和來源。

### AI 升頻:把老節目拉成 4K,但要 NVIDIA 顯卡

neTV 還有一個比較吸睛的能力:用 TensorRT 跑 Real-ESRGAN 模型,把 480p/720p/1080p 的畫面即時升頻到 4K,對老影集和低畫質串流特別有用。README 給的參考數字是 RTX 5090 上 480p 升 4K 約 85fps、720p 升 4K 約 39fps。

條件很硬:只支援 NVIDIA 顯卡,建議 RTX 20 系列以上,驅動 535 以上,還要額外建一個 AI 升頻用的 Docker 映像檔。第一次啟動要花 2 到 3 分鐘把 TensorRT 引擎編出來,之後快取起來,下次啟動就快了。AMD 和 Intel 顯卡吃不到這個功能。

這裡要給 NAS 使用者一個現實的提醒:真正能跑 AI 升頻的機器,多半是拿桌機或遊戲機當伺服器的人,不是一台純 NAS。多數 NAS 沒有 NVIDIA 顯卡,也塞不進一張 RTX。所以把 AI 升頻當主訴求來決定要不要裝 neTV,不太成立;它更像是「剛好機器裡有 N 卡」的紅利。

怎麼開始:一支 docker-compose 就能跑起來

README 提供 Docker Compose 的部署方式,這是最快上手的一條路。

第一步:建立 docker-compose.yml

services:
  netv:
    image: ghcr.io/jvdillon/netv:latest
    ports:
      - "8000:8000"
    volumes:
      - ./cache:/app/cache
      - /etc/localtime:/etc/localtime:ro
    devices:
      - /dev/dri:/dev/dri  # 有顯卡才掛,沒有就把這行刪掉
    restart: unless-stopped

第二步:啟動

docker compose up -d

打開 http://localhost:8000,第一次進去要建一個管理員帳號。遇到節目表或 M3U 解析怪怪的,README 的 Troubleshooting 提供一條快速除錯路:在 docker-compose.yml 加一個環境變數 LOG_LEVEL=DEBUG,重啟後看 log,能看出是 EPG、M3U 還是來源本身的問題。

第三步:接上你的 IPTV 來源

進設定頁加來源。neTV 吃兩種格式:

  • Xtream Codes API:很多 IPTV 服務商用的介接格式,你拿到的是一組伺服器網址、帳號、密碼,填進去就能抓到直播頻道、電影、影集三大類。
  • M3U 播放清單:一個文字檔,裡面列出一長串頻道的播放網址。HDHomeRun 這類無線電視接收器產生的也是這種格式。

兩種來源給你的體驗不太一樣。Xtream Codes API 會把直播、電影、影集連同 metadata(海報、分級、劇情簡介等詮釋資料)一起送過來,所以 neTV 的「電影」「影集」頁才會有東西可選、有季有集。M3U 基本上只是一串頻道網址,直播頁沒問題,但「電影/影集」頁能不能填滿,要看你的 M3U 內容本身帶不帶這些資訊。

如果你還沒有任何 IPTV 來源,README 的 Q&A 直接建議看 iptv-org/iptv 這個社群維護的公開頻道清單當起點(只是公開訊號源,能不能看、合不合法要自己判斷)。節目表資料可以搭 iptv-org/epg 或 Schedules Direct。

如果你裝 neTV 是為了看無線電視(OTA,over the air,用天線收的那種免費數位電視),README 的 tools 目錄裡有幾個小幫手:alignm3u.py 能把 HDHomeRun 接收器產生的 M3U 和電視節目表對起來,zap2xml.py 能去抓電子節目表轉成 XML,xtream2m3u.py 則反向把 Xtream 來源倒成 M3U,方便你拿到 Emby 之類的工具用。

硬體轉碼怎麼開:Intel/AMD 內顯只要 /dev/dri 存在就自動抓(VAAPI);NVIDIA 要先裝 nvidia-container-toolkit;如果跑在沒有顯卡的 VPS 上,記得把上面 devices 那段刪掉,不然容器會起不來。想追求最佳 GPU 效能、或要用 AMD 獨顯、或想跑 AI 升頻,README 還提供一份自製的 FFmpeg 映像檔,那是進階選項,一般使用不必動到。日後更新也簡單,docker compose pull && docker compose up -d 拉新映像檔重啟,快取資料還在。

不想碰 Docker 的人,README 另外給了一條 Debian/Ubuntu 的 systemd 路線,跑幾支 install-*.sh 腳本就能裝成系統服務、開機自動啟動。Chromecast 要的 HTTPS 憑證、NVIDIA 最佳化的 FFmpeg 也都有對應腳本。這條路比 Docker 多幾個步驟,但對把 neTV 當主力服務的人,跑成 systemd 比較好管理。

客廳電腦、Chromecast、手機平板都吃得下

neTV 設計時就考慮了幾種看電視的姿勢:

  • 客廳電腦(HTPC):README 把鍵盤導航列為優先,方向鍵、Enter、Esc 就能走完整個介面,這是所謂的 10-foot UI,給沙發距離看的大字介面。常按的鍵有空白鍵或 K 播放暫停、F 全螢幕、M 靜音、C 切字幕、I 切資訊圖層、左右鍵快轉倒轉 10 秒、上下鍵調音量、J 跳到指定時間、Esc 回上一頁。
  • Chromecast 投到大電視:支援,但前提是 neTV 要走 HTTPS,也就是你要先掛好憑證,否則瀏覽器的投放按鈕不會給你按。
  • 手機平板:是響應式網頁,會自動縮放,但沒有原生 App。README 的比較表在「Mobile apps」這欄就老實標 Web only。

裝之前先知道:它只是播放器,內容你自己帶

把限制集中說一次,這幾點會直接決定 neTV 適不適合你:

1. 不提供任何內容。README 免責聲明寫死:只是播放器,你要自備合法的 IPTV 訂閱,使用內容的法律責任在你。

2. AI 升頻只支援 NVIDIA。RTX 20 系列以上,AMD 和 Intel 用戶直接跳過這個賣點。

3. 要會一點 Docker 或終端機。Docker Compose 是最快路線;不想碰 Docker 的人可以走 systemd,但仍要跑指令。

4. 字幕只支援 WebVTT 一種格式,不像 Plex 支援完整字幕格式。

5. 沒有 DVR 錄影、沒有本地媒體庫。要錄節目、要播自己硬碟裡的電影,這不是它的戰場。

6. Chromecast 要 HTTPS,等於多一道憑證設定。

7. 行動裝置沒有原生 App,只有網頁版,出門想用手機看要有心理準備。

還有一點容易被誤會:neTV 是播放器,不會幫你突破 IPTV 服務商本來的同時連線數限制。你跟對方簽幾條就是幾條,neTV 只是在你這端再分一層管理,例如限制某個帳號同時只能開一條,或把不同來源分給不同家人。

誰該裝、誰別碰

適合裝的人大致長這樣:手上已經有一條合法 IPTV,嫌 Plex 開媒體庫太重、只想要個輕量網頁播放器;客廳擺了一台 HTPC 或習慣 Chromecast;機器裡正好有一張 NVIDIA 顯卡,想試試把老節目升頻到 4K。

不該碰的人也很清楚:想要本地影片庫、家庭相簿、DVR 錄影,直接選 Plex、Emby 或 Jellyfin,別為了 neTV 放棄這些;完全沒有 IPTV 來源,neTV 對你沒用;不想碰任何指令,這工具的安裝門檻會讓你挫敗。

第一步很輕:到 GitHub 上 jvdillon/netv 這個 repo,把 README 的 docker-compose 抄下來跑一輪,再把自己的 IPTV 來源接上,很快就能知道它值不值得留在你的機器上。想先零成本試水,可以拿 iptv-org/iptv 的公開頻道接進去,確認介面、轉碼、Chromecast 都合你意,再決定要不要為合法訂閱付錢。

成本要算清楚:軟體本身免費,但你真正花錢的有兩塊。一是合法的 IPTV 訂閱,這條 neTV 幫不了你;二是跑得動它的硬體。只想看直播、手上有現成 NAS 的人,成本接近零;想玩 AI 升頻,等於要為一張 NVIDIA 顯卡和它吃的電費買單。先把這兩筆算進去,再決定要不要入坑。neTV 採 Apache-2.0(關於 GitHub 公開不等於授權,我們在 Agent Battery 那篇談過) 授權,完全免費、開源。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 737

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...