Jellyfin简单介绍
Jellyfin 是一个开源的媒体服务器软件,旨在提供个人媒体集中管理和流媒体体验。它可以让您将音频、视频、图片等媒体文件存储在一台计算机或网络存储设备上,并通过各种设备和平台进行访问和播放。
总结,它就是一个家庭影院管理程序。
在NAS上也有对应的套件,但即便是Docker也可以很简单部署。
搭建方式
创建安装目录
sudo -i
mkdir -p /root/data/docker_data/jellyfin
cd /root/data/docker_data/jellyfin
创建docker-compose.yml文件
这边我们直接用 docker-compose的方式安装。
version: '3.5'
services:
jellyfin:
image: jellyfin/jellyfin
container_name: jellyfin
user: 0:0
network_mode: 'host'
ports:
- 8096:8096 # 端口设置,可以修改左边的
volumes:
- /config:/config
- /cache:/cache
- /media:/media
- /media2:/media2
restart: unless-stopped
# Optional - may be necessary for docker healthcheck to pass if running in host network mode
extra_hosts:
- "host.docker.internal:host-gateway"
修改好之后,注意切换成英文输入法,然后按一下 esc
,然后 :wq
保存退出。
查看端口是否被占用
(以 8096 为例),输入:
lsof -i:8096 #查看 8096 端口是否被占用,如果被占用,重新自定义一个端口
如果啥也没出现,表示端口未被占用。
如果出现:
-bash: lsof: command not found
运行
apt install lsof #安装 lsof
最后运行docker-compose
cd /root/data/docker_data/jellyfin # 来到 dockercompose 文件所在的文件夹下
docker-compose up -d
理论上我们就可以输入 http://ip:8096 就可以访问和安装了。
完成后需要等待程序部署,可以查看jellyfin的容器log日志
docker logs -f jellyfin
退出日志,只需要按ctrl+c
建议把挂载的文件夹设置为共享文件夹,更方便文件的管理。
遇到的一些问题
有的时候播放外嵌字幕的视频时,会出现字幕无法正常显示,字幕和封面显示方块。
解决办法:
方案一:
由于jellyfin使用的字体叫做dejavu,这个字体不支持中文字符集,所以全部显示方块。所以我们只需要把jellyfin自带的字体给替换掉即可。
具体操作:
下载一个支持中文字体ttf文件,比如微软黑体,将其复制六份并重命名为:
- DejaVuSans.ttf
- DejaVuSans-Bold.ttf
- DejaVuSansMono.ttf
- DejaVuSansMono-Bold.ttf
- DejaVuSerif.ttf
- DejaVuSerif-Bold.ttf
创建名为dajavu的文件夹,把6个文件放到文件夹里面,然后传到jellyfin挂载的目录里。
这一步可能有些小伙伴不会操作,因为我们使用的docker容器部署,不能直接传输文件。
还记得上面我们把路径映射出来了么。
- /media2:/media2
把文件夹上传到一个路径,比如挂载好的/media,然后进入容器内部,把文件移动过去即可。
查询容器ID:
docker ps
进入容器内部:
docker exec -it b10f180d4c39 bash
把刚刚传进来的字体替换掉原来的字体即可。
mv media/dajavu usr/share/fonts/truetype/dejavu/
然后重启服务,就能正常的渲染字幕了。
方案二:
使用外置播放器,比如potplayer或者vlc硬解码,同时还能降低服务器性能消耗,这也是我推荐的方式。
只需要在浏览器上安装此油猴脚本即可。
因为这些视频播放器都自带字体,所以不用自己安装。