前言
对于我看IPTV只能用各种客户端来看的事实(虽然基本没看过),我心里是有点小不爽的,如果我哪一天在外面忽然想看IPTV但是又没带手机,没有带ipad,没带macbook呢?好吧,这种可能性太小,我主要是想搞个网页版的IPTV播放方案,这样任何人都可以通过网页直接看我家里的电信IPTV(估计有法律风险)。所以找了半天,找到了IPTVnator这个跨平台IPTV播放器,因为其有个网页版是通过docker来部署的,所以我想尝试下这个播放器的网页版能否满足我小小的要求。
IPTVnator特性简介:
- M3u 和 M3u8 播放列表支持
- 从文件系统上传播放列表
- 通过 URL 添加远程播放列表
- 播放列表自动更新功能
- 从文件系统打开播放列表
- 搜索频道
- EPG 支持(电视指南)及详细信息
- 电视档案/追看/时移
- 基于组的频道列表
- 将频道保存为收藏夹
- 从所有播放列表汇总的全球最爱
- 支持 HTML video player 视频播放器或基于 Video.js 的播放器
- 国际化,目前支持 7 种语言(en、ru、de、ko、es、zh、fr)
- 为播放列表设置自定义“用户代理”标头
- 重新获取/自动更新播放列表
- 浅色与黑暗的主题
“M3u 和 M3u8 播放列表支持”和”EPG 支持(电视指南)及详细信息”这两点都是我需要的,所以我就开始了下面的科研尝试之旅。
部署
IPTVnator由前端(对外web端)和后端2部分组成。
后端部署:
后端docker run命令如下:
docker run --name iptvnator-backend -d --restart=always \
-p 7333:3000 \
-e CLIENT_URL=http://localhost:4333 \
4gray/iptvnator-backend:latest
关键参数解释:
-p 7333:3000
映射宿主机的7333端口到容器的3000端口
-e CLIENT_URL=http://localhost:4333
指定前端的地址和端口
注意:这个4333是下面前端配置的宿主机映射端口,需要根据实际环境中配置的宿主机IP和前端映射端口修改,因为这个试验环境是前端后后端是同一个宿主机下的容器,所以可以用localhost来通信。如果是不同的宿主机容器环境,请根据前端的实际参数进行修改
前端部署:
前端docker run命令如下:
docker run --name iptvnator-web -d --restart=always --network=public-net \
-p 4333:80 \
-e BACKEND_URL=http://localhost:7333 \
4gray/iptvnator:latest
关键参数解释:
-p 4333:80
映射宿主机的4333端口到容器的80端口
-e BACKEND_URL=http://localhost:7333
指定后端的地址和端口,如果后端和前端都在同一台主机上,在前端和后端相互指定地址时都是用localhost即可。
github上的docker-compose.yml地址如下:https://github.com/4gray/iptvnator/blob/electron/docker/docker-compose.yml
如果打不开github,docker-compose.yml具体内容如下:
version: '3'
services:
backend:
image: 4gray/iptvnator-backend:latest
ports:
- "7333:3000"
environment:
- CLIENT_URL=http://localhost:4333 #this one should match with the address and port in frontend CLIENT_URL env
frontend:
image: 4gray/iptvnator:latest
ports:
- "4333:80"
environment:
- BACKEND_URL=http://localhost:7333 # this one should match with the address of the backend service
初始配置及使用
修改语言为中文
使用http://宿主机ip:4333访问前端页面,点击右边红框按钮:
选择Settings:
添加播放列表
这里可以选择不同的添加方式添加播放列表:从文件添加、从URL添加以及从文本添加3种方式:
大家根据自己的实际情况选择方式,我在网上搜了一下直播源的m3u8试了一下:
结论
IPTVnator的定位是跨平台IPTV播放器,所以其有mac、win、linux、安卓的客户端,不过对于我而言,本地的播放客户端能用的太多了(VLC、MPV、APTV等等),我真正想要的是基于web且支持频道列表及EPG的网页播放器,这样才能完全摆脱客户端的束缚,所以看上了IPTVnator的网页版。但是实际测试下来,在国内特色的上网环境下,那些来自网络的IPTV直播源的播放效果非常的差强人意(本来直播源就不稳定,更别说可能还需要科学),而最关键的问题,是我原本搭建这个的初衷,是播放成都电信IPTV的m3u文件(前因后果参见:爱快软路由系列 实现电信IPTV全媒体播放),从而让我的全媒体播放解决方案真正完美,但是遗憾的是,系统自带的2个播放器:
HTML5 Video Player和VideoJs Player都无法正常播放爱快使用udpxy代理转换成来的http地址,前端最新的v15.0版本倒是多了MPV Player和VLS两个选项,可以通过指定本地安装这2个播放器的路径来实现播放,但是,这个就没有意义了呀,那我还不如直接用本地播放器来放了。为了验证是否只是docker版无法播放,我还直接安装了mac版的客户端,但是结果还是无法播放,所以就排除了只是docker版的问题。
所以我不得不承认,这次尝试没有达到我真正想要的效果,只能等以后前端升级之后再来尝试了。
IPTVnator提供了体验的地址,大家可以先去尝试一下:
IPTV体验站点地址
when i go to web gui front end i add list and it sasy something about the backend not reachable now i have the backend url in front end and front end in back end oh im in docker unraid im not getting it sorry to bug
Is it related to the backend address specified in the frontend configuration during deployment? When I deployed the frontend, the backend address I pointed to was the physical IP address of the host machine, as per the official instructions. However, I just checked the official docker-compose.yml, and it has now been unified to localhost:
查看图片