[Docker]使用Jellyfin搭建家庭影音中心

安裝
1.啟動核顯支持
? ? Jellyfin支持調(diào)用顯卡對視頻進行硬件編解碼,可以極大地提高播放流暢度,減少系統(tǒng)資源占用,但需要硬件支持,筆者使用的CPU是G4600,核顯是HD630,支持H265編碼視頻的硬件解碼。可以在本文附錄的鏈接中查詢到不同CPU和GPU對硬件解碼的支持情況。
? ? Unraid 默認沒有加載核顯的驅(qū)動,需要手動加載:
2.添加開機啟動
3.通過Docker方式安裝
? ? 創(chuàng)建Jellyfin容器的命令行如下,這是筆者自己搭建Jellyfin時使用的,在關(guān)鍵的幾個參數(shù)后面都加了注釋,稍后我會用表格的方式詳細說明每個參數(shù),方便使用 Unraid 的小伙伴通過 Docker 界面創(chuàng)建 Jellyfin 容器。
創(chuàng)建 Jellyfin 容器的參數(shù)配置
? ? DOCKER >> ADD CONTAINER?進入容器創(chuàng)建界面,點擊右上角 BASIC VIEW 切換到高級視圖。?
? ? 如圖所示,設(shè)置容器名稱(Name)、倉庫名稱(Repository),然后修改網(wǎng)絡(luò)類型(Network Type)為 `Host` 。這里推薦使用 `Host` 網(wǎng)絡(luò)類型,方便后面解決一些Jellyfin的小問題。

? ? 然后進行容器參數(shù)的配置和路徑映射,我以表格方式列出每個參數(shù)的設(shè)置和說明:

PUID和PGID的查詢
? ? 上面的表格中 PUID 和 PGID?分別指系統(tǒng)的 用戶ID 和 用戶組ID。我們在安裝 Unraid 時,除了系統(tǒng)管理員用戶 `root` 還創(chuàng)建了另一個用戶。點擊導(dǎo)航欄 USERS?就可以查看到 Unraid 系統(tǒng)中的所有用戶了,但在這個界面無法查詢到用戶的ID號,我們需要點擊導(dǎo)航欄最右的終端圖標(biāo),進入終端界面,輸入 `id username`?命令進行查詢,如圖所示。

關(guān)于Path路徑
? ? 除了配置文件必須使用 Jellyfin Docker 指定的容器路徑 `/config`,像電影、劇集、音樂等媒體的容器路徑可以自行定義,不用局限于上面表格中的 `/data/movies`,只要不和容器內(nèi)的原有路徑?jīng)_突即可。
? ? 比如,在主機上有多個存儲電影的目錄:`/disk1/movie1`, `/disk2/movie2` ,那么在配置 Path 路徑映射的時候,可以在容器路徑填寫 `/data/MyMovie1` `/data/MyMovie2` 分別映射到主機的對應(yīng)目錄,Jellyfin 的媒體庫會自動識別這些路徑的位置。

? ? 配置完成后,點擊 APPLY 開始鏡像下載和運行,由于使用 Host 網(wǎng)絡(luò)類型,成功運行 Jellyfin 容器后可以使用默認的 8096 端口進行訪問。
Jellyfin的詳細使用教程推薦觀看B站UP主@司波圖的視頻:
? ? 免費開源影音服務(wù)器Jellyfin部署全攻略(BV1ME411o7H2)
? ? 超完美整理家庭影音資料庫(BV1DE41187FG)
設(shè)置
1. 設(shè)置硬件加速
? ? 進入 Jellyfin 控制臺 >> 播放 >> 轉(zhuǎn)碼?如下圖設(shè)置 硬件加速?和 VA API設(shè)備,并在下方勾選需要啟動硬件解碼的格式(HEVC即H265)

解決Jellyfin的小問題
1.演員照片無法正常顯示的問題
? ? 筆者的電影和劇集都是通過 TinyMediaManager 進行搜刮的,會在目錄里生成對應(yīng)的 nfo 文件。在 Jellyfin 的電影詳情界面能正常顯示海報和主題,但演員的照片卻無法顯示,只顯示不同顏色的圖標(biāo)。明明在 themoviedb 網(wǎng)站上都有照片的...

? ? 最后,經(jīng)過各種手段的嘗試,筆者鎖定了問題的根源:Jellyfin 容器內(nèi)的網(wǎng)絡(luò)無法正常訪問 api.themoviedb.org,也就無法下載演員照片到 Jellyfin 的數(shù)據(jù)庫。
解決問題
? ? 首先,通過 DNS Checker (https://dnschecker.org/) 網(wǎng)站找到可以訪問 `api.themoviedb.org` 和 `www.themoviedb.org` 的IP地址。
? ? 筆者先嘗試修改 Jellyfin 容器內(nèi)的 hosts 文件,可惜容器的系統(tǒng)連 vi 都沒有,遂放棄。
? ? 既然無法修改容器的 hosts,那就只能修改主機的 hosts 文件,同時把 Docker 容器的網(wǎng)絡(luò)模式從 `Bridge` 橋接模式變?yōu)?`Host` 主機模式,讓 Jellyfin 容器使用主機的網(wǎng)絡(luò)。
? ? 進入 Unraid 系統(tǒng)終端界面,運行如下命令,修改 hosts 文件:
? ? 保存后,進入 Unraid 管理頁面,編輯?Docker 中 Jellyfin 的配置文件,切換網(wǎng)絡(luò)模式為 `Host`,容器將重新生成。這就是上文直接使用 Host 模式來創(chuàng)建容器的原因。再次打開 Jellyfin 稍作等待,Jellyfin 后臺會自動開始下載演員的照片到數(shù)據(jù)庫中,打開電影詳情界面,演員的照片都可以正常顯示啦!

2.中文/日文字幕無法正常顯示變成方塊的問題
? ? 在播放一些動漫的時候發(fā)現(xiàn)某些字幕文字無法正常顯示,變成了方塊“口口口口”亂碼。

? ? 這種情況多發(fā)生在使用了 ASS 特效字幕的視頻播放中,毫無疑問是字體的問題了。經(jīng)過一番折騰,筆者發(fā)現(xiàn) ASS 特效字幕的字體定義十分繁雜,比如這個,定義了十多行字體標(biāo)簽。(字幕組的同學(xué)們真的是很用心在制作呀?。?/p>

? ?進入 Jellyfin 控制臺,在播放選項中,可以發(fā)現(xiàn) `備用字體文件路徑` 這個設(shè)置。看來只要把字體上傳到服務(wù)器并映射到 Jellyfin 容器內(nèi)就好了。在下載動漫種子的時候,字幕組也正好提供了他們使用的字體文件,但是大小接近100MB的字體文件,已經(jīng)遠遠超過 Jellyfin 備用字體的大小限制了。而且不同字幕組使用的字體也不盡相同,難道每次都要手動去找字體文件,然后上傳到服務(wù)器嗎?
? ? 又經(jīng)過一番搜索折騰,筆者找到了這個:CodePlayer/webfont-noto (https://github.com/CodePlayer/webfont-noto) 這是一個 woff2 字體集,包含了中日韓三種語言的字體,重點是體積小巧,簡中、繁中、日文、韓文加一起只有7MB。

? ? 如此一來問題就迎刃而解啦!先用 FileBrowser 在 Jellyfin 配置文件路徑里新建一個 `extraFonts` 文件夾用來存放字體文件,上傳四種語言的字體。然后在 Jellyfin 控制臺中設(shè)置備用字體路徑并勾選 `啟動備用字體`,最后重啟 Jellyfin 容器。

? ? 測試播放,字幕完美顯示!

附上字體文件鏈接:
? ? https://pan.baidu.com/s/1BfIhq_K5XguYwHCDd7HJ3A 提取碼: bc8t
Reference
核顯視頻編碼硬解支持列表??
https://tieba.baidu.com/p/6119362452
Installing Jellyfin | Documentation - Jellyfin Project
https://jellyfin.org/docs/general/administration/installing.html#unraid-docker
關(guān)于字幕和封面顯示方塊的解決方法
https://tieba.baidu.com/p/7255811856
Add options to use multiple custom fonts for subtitle rendering
https://github.com/jellyfin/jellyfin-web/pull/1636
[Docker]使用Jellyfin搭建家庭影音中心的評論 (共 條)
