魔百盒折腾记——搭建自己的视频服务
系列文章
现在我们看电影、电视剧或者综艺节目,基本都是去爱奇艺、腾讯视频之类的网站。通过手机app、电视App或者电脑都可以观看。其实,我们自己也可以搭建类似的视频服务器。也可以做到用手机app、电视app或者电脑访问观看。当然,视频内容就需要自己想办法下载了。
1. 硬件
硬件的选择比较多,可以是x86的电脑,也树莓派这类开发板。我使用便宜实惠的魔百盒来进行搭建。好处是,这玩意超级便宜,大概也就50元,性价比极高,即使以后扔掉也不心疼。关于魔百盒的详细介绍可以参考我的其他文章。这儿仅仅列举硬件配置
-
CPU: 4核 ARM64 S905L3A
-
内存:2G
-
硬盘:USB硬盘,根据需要买硬盘即可。
需要特别特别注意的是,硬盘盒一定要买独立供电的那种。因为魔百盒的供电有限,如果不是独立供电的话,可能导致硬盘损坏,丢失数据。
另外,因为魔百盒自带的是安卓系统,所以,还需要一个安装系统的U盘,以便安装linux操作系统。虽然魔百盒的USB接口是2.0的,但是,U盘还是需要买3.0接口的。不然的话系统开机会非常非常慢。推荐使用东芝酷豆,我试了好多U盘,就这个型号的兼容性最好。
成本估计是魔百盒(50元)+U盘(30元)+硬盘盒(110元)+1T硬盘(300元),合计:490元
。
2. 操作系统
其实jellyfin支持各种主流的操作系统,比如linux、windows都支持。因为硬件选择的是魔百盒,所以,操作系统自然也就用的是armbian。armbian是一个Linux发行版,跟普通的Linux系统没有啥区别。系统安装方法请参考《魔百盒折腾记录——系统篇》
3. 软件
3.1 安装Docker
为了降低部署难度,我选择通过docker运行jellyfin。跟其他系统不同的是,在armbian里面,安装docker方法是执行命令:
sudo armbian-docker
然后,一路回车即可。
3.2 拉取镜像
docker完成后,使用下面的命令拉取镜像:
docker pull jellyfin/jellyfin
3.3 启动服务
为了方便启动jellyfin,特地写了一个启动脚本,如下:
#!/bin/bash
SOURCE="$0"
while [ -h "$SOURCE" ]; do
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
SRC_PATH="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
cd $SRC_PATH
VIDEO_DIR="$SRC_PATH/video"
DATA_DIR="$SRC_PATH/services"
repository=jellyfin/jellyfin
tag=latest
name=jellyfin
# 如果已经在运行,就先停止
container_id=`docker ps -a --filter "name=$name" --format "{{.ID}}"`
if [ "$container_id" != "" ]; then
echo "Stopping ${name} container..."
docker rm -f ${container_id} >> /dev/null
fi
# 构建启动参数
PARAM="-p 8096:8096"
PARAM="${PARAM} --restart=always"
PARAM="${PARAM} --privileged=true"
PARAM="${PARAM} --ulimit core=0"
if [ -e /dev/dri/renderD128 ]; then
PARAM="${PARAM} --device /dev/dri/renderD128:/dev/dri/renderD128"
fi
if [ -e /dev/dri/card0 ]; then
PARAM="${PARAM} --device /dev/dri/card0:/dev/dri/card0"
fi
PARAM="${PARAM} -v /etc/localtime:/etc/localtime:ro"
PARAM="${PARAM} -v /etc/timezone:/etc/timezone:ro"
PARAM="${PARAM} -v ${VIDEO_DIR}:/data/视频"
PARAM="${PARAM} -v ${DATA_DIR}/${name}/config:/config"
PARAM="${PARAM} -v ${DATA_DIR}/${name}/cache:/cache"
PARAM="${PARAM} --name ${name}"
# 启动docker容器
docker run -itd ${PARAM} ${repository}:${tag}
if [ $? -ne 0 ]; then
exit $?
fi
exit 0
将该脚本保存到硬盘上面,名为start.sh
。
然后,执行下面的命令启动容器:
bash ./start.sh
3.4 配置服务器
在浏览器中访问:http://IP:8096
。
3.4.1 选择语言
3.4.2 设置管理员账号和密码
3.4.3 添加媒体库
这一步可以忽略。如果要添加:
-
在启动脚本所在目录的
video
子目录中创建一个名为movies
的子目录,以后直接把视频文件都到该目录中即可在客户端中直接播放了。 -
点击添加媒体库,将
/data/视频/movies
添加进来。例如:注意:如果不是电影,比如是自己拍摄的一些视频,这儿的
内容类型
建议选择混合电影和电视剧
。添加目录:
添加成功后:
3.4.4 设置语言和地区
注意:国家/地区这一栏选择的是People's Republic of China
,我之前找China,死活没有找到。
3.4.5 登录
后面直接点下一个
即可,设置完成后,会自动进入登录页面:
输入前面设置的管理账号和密码,登录即可。登录成功后就可以看到前面添加的媒体库了。
4. 客户端
4.1 浏览器
使用浏览器访问:http://IP:8096
即可。
需要注意的是,如果想添加媒体库或者管理用户之类的,都需要在浏览器中进行操作。
4.2 安卓手机
在https://repo.jellyfin.org/releases/client/android/
中可以下载到最新的安卓客户端,建议选择jellyfin-android-VERSION-proprietary-release.apk
或者jellyfin-android-VERSION-libre-release.apk
。
其中,proprietary版本中加入了一些私有组件,libre版本是纯粹的自由软件
版本。

4.3 智能电视
在https://repo.jellyfin.org/releases/client/androidtv/
中可以下载到最新的安卓客户端,建议选择jellyfin-androidtv-VERSION-release.apk
。
需要注意的是,智能电视版本大概率无法使用搜索功能,这是因为国产的智能电视系统把语音识别阉割了导致的。我自己编译了一个屏蔽语音识别的版本:下载地址

4.4 Linux/Windows/Mac/iOS系统
可以直接使用浏览器或者kodi
+plugin.video.jellyfin
。推荐直接使用浏览器访问。
5. 跨网访问
上面的所有工作完成以后,还是只能在自己家里面使用这个视频服务器。如果想外出的时候访问怎么实现呢?那就需要使用内网穿透
技术了。关于内网穿透
,有机会单独写一篇文章吧。