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

导言
2023年春节越来越近,团团圆圆的氛围愈发浓烈,带着孩子们看看CCTV和春节晚会。
今天的主要任务就是实现如何在客厅的电视上播放电视直播源。
主要要求有两个:
- 电视机或者机顶盒安装Jellyfin客户端
- 局域网内需要一台运行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个子文件夹config、cache集中存在服务所需要文件内容。
mkdir /volume1/docker/jellyfin |
附带设置一下媒体文件的路径,我NAS中电影存放的位置是 /volume1/video/电影
有了这些数据,使用这段安装代码安装Jellyfin:
export UID=$(id -u) |
查看一下容器是否创建成功

可能会出现错误提示内容如:
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 |
如果一切顺利的话,服务器安装成功。稍等片刻待服务器初始化完成后,浏览器输入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 \ |
提示一下,xTeVe安装后需要稍等数分钟,待初始化完成后打开网页端开始配置,默认端口号34400http://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 进行许可。