想要在家裡透過區網,用電視播放電腦上的影片,除了用SMB分享資料夾以外,還可以考慮更進階的多媒體中心方案,打造一套離線的Netflix。
就用Jellyfin吧,這是一款自由開源的影音串流伺服器軟體,源自專有軟體「Emby」,設定上十分簡單直觀。

有了JellyFin,就能透過手機和電視盒無線播放電腦上的影片,打造多人共享的家庭影院。出門在外也能連回家中播放影片,還能順便聽音樂。
本文Ivon將介紹如何使用Docker架設Jellyfin伺服器,並說明觀看方法。
1. Jellyfin特色功能#
串流播放電腦的影片和音樂,不論是用網頁、手機APP、電視盒都行。支援多重帳號登入,多人畫面同步分享影片。
能以硬碟資料夾模式瀏覽媒體檔案
Jellyfin會根據影片檔名,自動抓取影劇的封面和演員資訊,產生影片縮圖,允許手動編輯中繼資料。
播放影片就像看Youtube,自動依照網速調整畫質讓播放更順暢,支援投放到Chromecast、AirPlay。
還能充當雲端音樂播放器。
支援多使用者,一個Jellyfin伺服器可以同時開好幾個帳號給其他人用。每個帳號能夠設定可觀看哪些影片。
Jellyfin提供多種插件,例如搭配BT下載管理器Sonarr、影音串流的Kodi、觀看統計JellyStats使用。Jellyfin的觀看歷史紀錄能夠跨裝置同步。
請注意:Jellyfin不是串流平台,它不是幫你整合各家線上服務,而是掃描硬碟影片並整理出一個漂亮的瀏覽界面,兼具影片播放器的功能。因此影片檔案你要自己準備。
2. 建議的影片資料夾結構#
Jellyfin會掃描硬碟影片,嘗試從TheMovieDB抓取影片的中繼資料,並顯示一個多媒體中心的面板讓你瀏覽。這樣比起單純以資料夾形式瀏覽影片舒服多了吧。
不過Jellyfin對格式有一定要求,這樣才能正確的抓到中繼資料。
3. 用Docker架設Jellyfin#
根據Jellyfin官方文件,推薦硬體規格為:Intel N100以上等級CPU、4GB以上RAM、100GB以上SSD。系統架構以x86為佳,Jellyfin對ARM架構的支援程度不一。
如果需要在播放的時候轉碼,CPU不能太差,若有GPU加速更好。
Docker需要Linux環境,在Linux伺服器安裝Docker
欲啟用GPU硬體加速解碼,需要安裝顯示卡驅動與調整設定,這個後面再講,這邊先以CPU解碼為主。
參考Jellyfin官方文件,建立docker-compose.yml
mkdir ~/jellyfin
cd jellyfin
vim docker-compose.yml
- 填入以下內容,注意我寫的註解部份
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: root:root # 以root使用者執行服務
network_mode: 'host' # 如果你需要從區域網路存取,可以把host改成bridge模式
volumes:
- "./config:/config" # 將設定檔和縮圖的存放至目前的資料夾
- "./cache:/cache"
- type: bind #參考下面格式,將硬碟的資料夾(source)依序掛載至Jellyfin容器內部的資料夾(target),權限設定唯讀,以此類推。
source: "/home/user/電影/"
target: "/電影/"
read_only: true
- type: bind
source: "/home/user/動畫/"
target: "/動畫/"
read_only: true
- type: bind
source: "/home/user/音樂/"
target: "/音樂/"
read_only: true
restart: 'unless-stopped' # 開機自動啟動容器
environment:
- JELLYFIN_PublishedServerUrl=http://example.com # 除非您有自己的域名,否則不需改這行
extra_hosts:
- "host.docker.internal:host-gateway"
- 啟動容器。此容器會在每次開機後自動啟動。
docker compose up -d
用瀏覽器開啟網址
http://localhost:8096
或者http://Linux電腦區域IP:8096
,按照設定精靈的提示繼續。設定帳號密碼,預設使用
root
點選新增媒體庫,從
/media
資料夾選擇掛載的影片資料夾設定要自動抓取的中繼資料,中繼資料就是影片的說明、演員、發行年份的資訊,Jellyfin會依照影片資料夾與檔名去比對,之後能手動編輯。
Ivon建議:如果您的影片資料夾不含電影、影集、動畫的影片,建議將媒體庫內容類別改為「Mixed Movies and Shows」或者「音樂錄影帶」,將影片以「純資料夾」模式處理。取消勾選所有「下載中繼資料」和「圖片獲取程序」選項,僅保留「Embedded Image Extractor」和「Screen Grabber」產生縮圖。不然Jellyfin會把每個子資料夾錄當成「一季」影集處理,且會下載到奇怪的封面,影片檔名可能還會顯示錯誤。
如果你的影片命名不是那麼標準的話,Jellyfin可能會抓錯中繼資料,這個時候也建議關閉下載中繼資料的選項。
設定中繼資料語言為正體中文。
完成設定之後,登入帳號。點選右上角管理員設定 → 控制台 → 媒體庫,掃描所有媒體庫。
隨後影片就會出現在首頁。
你也可以用跟Linux伺服器位於同一Wifi網路下的電腦或者手機,輸入
http://Linux電腦區域IP:8096
網址,開啟這個網頁界面,播放影片。
4. Jellyfin的轉碼效能問題#
影片播放時候會遇到的效能問題,可能會導致播放不順,畫面聲音不同步。
參見:Jellyfin直接播放 (Direct Play) 與轉碼 (Transcoding)的差別
5. 安裝Jellyfin客戶端#
有時候Jellyfin網頁版效能不是那麼好,所以需要針對作業系統安裝內建原生解碼器的客戶端。
雖然,Jellyfin官方有推出全平台的客戶端應用程式,不過手機版只是瀏覽器套殼而已,效能不佳,需要視情況採用第三方開發的客戶端。
Jellyfin官網有列出一些客戶端實作,這裡有我做的一個簡表比較:
名稱 | 支援系統 | 功能 |
---|---|---|
Jellyfin Media Player | Linux, Windows, macOS | Jellyfin官方開發的影片播放器,使用網頁版界面,搭配MPV後端提供原生解碼器,可以吃到mpv.conf。 |
Jellyfin Mobile | Android, iOS | 官方手機版客戶端,沒有原生解碼器,僅是瀏覽器套殼。 |
Findroid | Android | 專為Android設計的影片播放器,提供原生解碼器,使用MPV播放器當後端,可以吃到mpv.conf。 |
Finamp | Android, iOS | 音樂播放器。 |
Swiftfin | iOS | 專為iOS設計的影片播放器,透過VLC後端提供原生解碼器。 |
Feishin | Linux, Windows, macOS | 音樂播放器。 |
Jellyfin MPV Shim | Linux, Windows, macOS | 官方開發的投放應用程式,類似Chromecast,使用MPV播放器當後端。 |
客戶端的使用原理大同小異,只要讓連線的客戶端與Jellyfin伺服器處在同一個Wifi區域網路,輸入Jellyfin伺服器的IP,還有帳號密碼就能存取。
電腦用戶,請參考Jellyfin搭配MPV的用法:Jellyfin + MPV,使用內建原生解碼器的電腦客戶端
6. Jellyfin使用技巧#
從外部網路存取Jellyfin媒體庫#
Jellyfin預設可以用區域網路播放,那要怎麼從不同網段存取家中的電腦呢?
安裝內網穿透軟體,將電腦和手機加入虛擬區域網路
Linux伺服器的防火牆開啟8096 TCP通訊埠。
sudo ufw allow 8096/tcp
sudo ufw reload
- 這樣的話,要存取Jellyfin,只要在伺服器IP欄位輸入
http://虛擬區域IP:8096
即可。手機客戶端也是一樣原理。
啟用資料夾檢視#
在「控制台」的媒體庫頁面,開啟在首頁左側選單顯示「資料夾」模式的功能。這樣就能按照電腦硬碟資料夾架構去找檔案。
切換佈景主題#
進入Jellyfin首頁,點選左邊選單開啟「設定」 → 「顯示」,變更佈景主題,滑掉最下面按下儲存。
您也可以自行下載CSS調整Jellyfin的外觀。
新增其他Jellyfin使用者#
進入Jellyfin首頁,點選右上角 → 控制台,在「使用者」頁面新增使用者。
在這裡能自由決定要開放哪些媒體庫給該位使用者觀看。
之後會有更詳細的權限控管,例如只能看特定媒體庫,禁止調整伺服器設定,啟用家長監護功能等。如果電腦撐不住同時太多人觀看,請調低「網際網路串流傳輸位元率限制」。
多人同步觀看同部影片#
Jellyfin提供「SyncPlay」技術,讓不同使用者能同步觀看同一支影片。
第一個使用者在Jellyfin右上角點選「建立群組」
第二個使用者便可加入群組。
當第一個使用者播放影片的時候,第二個使用者的畫面也會跟著播放影片。點選右上角離開群組,退出同步播放。
解決.ass中文字幕變成方框#
參見:解決Jellyfin Docker的.ass中文字幕變成方框的問題