Docker环境下使用xTeVe和Jellyfin搭建IPTV的电视直播平台

tree_fly

导言

2023年春节越来越近,团团圆圆的氛围愈发浓烈,带着孩子们看看CCTV和春节晚会。
今天的主要任务就是实现如何在客厅的电视上播放电视直播源。
主要要求有两个:

  1. 电视机或者机顶盒安装Jellyfin客户端
  2. 局域网内需要一台运行Docker的服务器,本文使用家里的群晖NAS,也可以尝试在电脑端创建虚拟机或其他的方案。

直播源的选择

直播源很多,最近发现肥羊严选 播放流畅,大家可以尝试。

SSH连接到NAS

文章中需要手动执行docker的代码命令,需要先通过ssh连接到NAS。
透过SSH登入群晖DSM的方法有很多,可参考这两篇文章。

安装Jellyfin服务器

Jellyfin免费、简约,搭建方便。Emby的播放直播功能需要付费。

我在群晖DSM中用Docker的界面模式安装Jellyfin,拉取数据时总是卡死,所以我切换到终端中用代码拉取了Jellyfin的镜像文件,然后手动安装。

sudo docker pull jellyfin/jellyfin

安装Jellyfin之前,我在/volume1/docker文件夹中创建了一个jellyfin文件夹,和2个子文件夹configcache集中存在服务所需要文件内容。

mkdir /volume1/docker/jellyfin
mkdir /volume1/docker/jellyfin/config
mkdir /volume1/docker/jellyfin/cache

附带设置一下媒体文件的路径,我NAS中电影存放的位置是 /volume1/video/电影
有了这些数据,使用这段安装代码安装Jellyfin:

export UID=$(id -u)
export GID=$(id -g)

sudo docker run -d \
--name jellyfin2 \
--user $UID:$GID \
--net=host \
--volume /volume1/docker/jellyfin/config:/config \
--volume /volume1/docker/jellyfin/cache:/cache \
--mount type=bind,source=/volume1/video/电影,target=/media \
--restart=unless-stopped \
jellyfin/jellyfin

查看一下容器是否创建成功

可能会出现错误提示内容如:

docker: Error response from daemon: Conflict. The container name “/jellyfin2” is already in use by container “38ee13a4d4c4c496c79cf3e033c8a184ac617a965abfd1128b122b61c1bfbd9d”. You have to remove (or rename) that container to be able to reuse that name.
See ‘docker run –help’.

使用sudo docker ps -a 查看一下错误的容器ID,删除掉重来来过。

tree_fly@DS218P:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38ee13a4d4c4 jellyfin/jellyfin "/jellyfin/jellyfin" 12 minutes ago Created jellyfin2

tree_fly@DS218P:~$ sudo docker rm 38ee13a4d4c4
38ee13a4d4c4

如果一切顺利的话,服务器安装成功。稍等片刻待服务器初始化完成后,浏览器输入Jellyfin网址即可开始初始化设置。
http://192.168.31.178:8096
记得换成自己的群晖IP地址,默认的端口号是8096

设置的时候如果不需要远程访问的话,可以关掉这个选项

安装xTeVe —— 流媒体直播代理服务器

仓库地址:dnsforge/xteve

首先拉取镜像文件到本地

docker pull dnsforge/xteve

依照安装文档提供的代码安装,首先新建存储配置文件的文件夹

mkdir /volume1/docker/xteve

创建容器

sudo docker run -it -d \
--name=xteve \
--network=host \
--restart=always \
--volume /volume1/docker/xteve:/home/xteve/conf \
dnsforge/xteve:latest

提示一下,xTeVe安装后需要稍等数分钟,待初始化完成后打开网页端开始配置,默认端口号34400
http://192.168.31.178:34400/web

配置内容说明:

  • Tuners的数量,可以参考同步播放的设备数量自由设置
  • EPG Source,数据源选择XEPG格式,因为后面我们要导入M3U格式的数据
  • M3U Playlist, 这里粘贴来自肥羊严选的网址,或者自己整理的。https://ghproxy.com/https://raw.githubusercontent.com/shenhuash01/IPTV/main/IPTV.m3u
  • XMLTV文件,参考一下EGP节目单,先填写一个,后面配置中还可以添加多个
    https://epg.112114.xyz/pp.xml
    http://epg.51zmt.top:8000/e.xml
    https://epg.pm/xmltv/epg.xml

接下来点开界面左栏中Mapping菜单,可以看到节目编号和XMLTV已经大部分自动匹配,仍有少许标记为红色的,需要自己手动配置,如需要配置记得点击Save保存。

Jellyfin 设置电视直播选项

打开Jellyfin的管理控制台,点击电视直播菜单

设置调谐器

设置调谐器类型为HD Homerun,调谐器IP地址填写192.168.31.178:34400,勾选允许硬件转码

添加电视指南数据提供方数据

回到xTeVe,查看xTeVe中提供的XEPG URL

复制XEPG URL后面的网址,点击电视指南数据提供方后面的➕号,选择XMLTV,在弹出的对话框中粘贴网址,直接保存。等待刷新指南数据结束。

回到电视直播节目,点击指南可以看到每个电视台的节目单

频道栏目可以查看所有电视节目台

网速支持的情况下,视频分辨率可以达到1080P,还有最喜欢的画中画功能~

机顶盒或电视中安装Jellyfin的客户端,登陆即可观看

教程就到这里,祝你新年快乐!

tree_fly
2023-01-11

  • 标题: Docker环境下使用xTeVe和Jellyfin搭建IPTV的电视直播平台
  • 作者: tree_fly
  • 创建于: 2023-01-11 15:53:05
  • 更新于: 2023-01-11 15:53:05
  • 链接: https://itreefly.com/posts/7a0fbdf1.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论