Jellyfin:用Docker自架可調畫質 + 硬體解碼的影片音樂串流伺服器

想要打造自己的家庭影院,就使用Jellyfin来播放吧。

Jellyfin是專有軟體"Emby"的開源分支版本,設定上十分簡單直觀。

透過手機和電視盒無線播放電腦上的影片,出門在外也能連回家中播放影片。值得一試的地方在於播放影片就像看Youtube一樣可以調整畫質,還能以資料夾模式瀏覽影片。

1. 用Docker安裝Jellyfin


  • 作業系統:Arch Linux
  • CPU:i5-7400
  • GPU:GTX1050Ti

  1. 在Linux電腦安裝Docker和Docker-compose,像Arch的話就是:
1
2
sudo pacman -S docker docker-compose
sudo systemctl enable --now docker
  1. 安裝顯示卡驅動程式,Arch Linux的Nvidia需要安裝驅動、CUDA、Nvidia Container Toolkit
1
2
3
sudo pacman -S nvidia-dkms nvidia-settings nvtop cuda
yay -S nvidia-container-toolkit
sudo systemctl restart docker
  1. 建立dockerfile
1
2
3
mkdir ~/jellyfin
cd jellyfin
vim docker-compose.yml
  1. 填入以下內容:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
version: '3.5'
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    user: root:root
    network_mode: 'host'
    volumes:
    # 將目前的目錄作為設定檔的存放處
      - "./config:/config"
      - "./cache:/cache"
    # 將硬碟上的影片目錄掛載至Jellyfin的/media目錄,可掛載多個
      - "/home/ivon/Videos:/media:ro"
    # 開機自動啟動容器
    restart: 'unless-stopped'
    environment:
      - JELLYFIN_PublishedServerUrl=http://example.com
    extra_hosts:
      - "host.docker.internal:host-gateway"
    # 使用Nvidia的顯示卡硬體加速
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
  1. 啟動容器。此容器會在每次開機後自動啟動。
1
sudo docker compose up -d
  1. 用瀏覽器開啟localhost:8096,按照設定精靈的提示繼續。

  2. 設定帳號密碼,預設使用root

  3. 點選新增媒體庫,從/media目錄選擇掛載的影片目錄

  4. 如果選取的影片目錄不含電影或電視節目,建議取消勾選自動下載中繼資料,不然的話會下載到奇怪的封面。

  5. 設定中繼資料語言。

  6. 進入主畫面後點選左邊選單開啟「控制台」,在「播放」選擇使用Nvidia NVENC硬體加速,並將常見的影片格式都勾選,再往下捲動按儲存。

  7. 左上角設定尚可換主題,以及在首頁顯示「資料夾」模式檢視影片。

  8. 回首頁,點選任一影片查看播放效果,按右上角投放到Chromecast播放。

2. 在手機上觀看Jellyfin媒體庫

由上可知,Jellyfin能直接網頁看,也有很多第三方APP支援Jellyfin。這邊介紹的是Jellyfin官方出的APP客戶端,支援Android和iOS系統。

  1. 首先讓手機和電腦處於同一Wifi網路下

  2. 電腦輸入ip addr查看區域IP,通常是192.168開頭

1
2
enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.1.103/24 brd 192.168.1.255 scope global dynamic noprefixroute enp2s0
  1. 下載Jellyfin的APP,開啟後輸入http://電腦區域IP:8096,登入帳號

  2. 停用電池優化就能鎖定螢幕後繼續播放。

3. 從外部網路存取Jellyfin媒體庫

要怎麼從不同網段存取家中的電腦呢?

安裝並設定ZeroTier,將電腦和手機皆加入虛擬區域網路,防火牆開啟8096 TCP通訊埠。

這樣的話Jellyfin的IP位址就會變成http://虛擬區域IP:8096

如果本網站文章對您有幫助,歡迎贊助我。