现代化自托管IPTV播放器ViniPlay

简介

什么是 ViniPlay ?

ViniPlay 是一个功能强大的自托管 IPTV 播放器,提供现代化的 Web 界面,可将 M3UEPG 文件转换为高质量的流媒体体验,并支持多用户管理、多屏观看、Chromecast 投屏、DVR 录制等功能,是一个全面的 IPTV 解决方案。

主要特点

  • 👤 多用户管理:使用专用的管理员账户保护应用程序。创建、编辑和管理标准用户账户。
  • 📺 现代电视指南:高性能虚拟化的 EPG 网格,能够顺畅处理成千上万的频道和节目。功能包括高级搜索、频道收藏和“最近观看”类别。
  • 🖼️ 多视图:在网格中拖动、放置和调整播放器的大小,以同时观看多个流。保存和加载自定义布局。 “沉浸式视图”将隐藏所有 UI 元素,仅保留播放器在页面上,以最大化观看体验。
  • 🖥️ Chromecast 支持:将流直接投射到网络上的任何 Google Cast 设备。 (仅在源信号强并正确传递且没有数据包丢失的情况下工作,因 Cast 框架的限制)
  • 🔔 推送通知:设置即将到来的节目的提醒,并在浏览器中接收推送通知,即使在应用程序关闭时。
  • ⚙️ 强大的转码功能 - 甚至支持 GPU:后端使用 FFMPEG 处理流,确保与所有现代浏览器和设备的兼容性。创建自定义流配置文件以调整转码设置。支持 GPU 转码。(Nvidia, InterlQSVVaapi
  • 📂 灵活的源管理:可以从本地文件、XC 代码和远程 URL 添加 M3UEPG 源。为基于 URL 的源设置自动刷新间隔,以保持你的指南数据最新。
  • 🚀 高性能 UI:前端以性能为核心设计,使用 UI 虚拟化技术优化指南,并有效管理状态,以确保快速和响应式的用户体验。
  • 🐳 Docker 部署:整个应用程序打包在一个 Docker 容器中,便于使用 DockerDocker Compose 通过简单的命令进行部署。
  • ▶️ 画中画:弹出播放器,以便在处理其他事务时继续观看。
  • 🎥 DVR:使用 FFMPEG 录制节目。通过电视指南安排录制,或轻松设置特定频道和时间。
  • 📽️ 单一播放器:直接从浏览器播放 .m3u8.ts 链接,并提供详细的控制台日志和记录历史。
  • 👥 管理员监控页面:实时监控用户观看流,存储历史播放记录,并向所有用户广播消息。
  • 📺 VOD 支持:从提供商播放你的 VOD,在用户界面中干净地分类为可扩展网格,并为电影和系列设置过滤器和标签(重要:此功能仅适用于 XC API 登录)。

应用场景

  • 家庭娱乐:个人用户可以通过 ViniPlay 在家中享受 IPTV 服务,轻松管理和观看自己喜爱的节目。
  • 小型广播公司或内容提供商: 适合小型公司使用,提供自定义 IPTV 解决方案,满足客户需求。
  • 社区项目:社区或数字图书馆可以使用 ViniPlay 作为公共 IPTV 播放平台,为用户提供流媒体服务。
  • 技术爱好者:对于喜欢实验和自托管解决方案的用户来说,ViniPlay 提供了灵活度与可定制性。

ViniPlay 为用户提供了现代和功能丰富的流媒体体验,适用于各种场景,满足个人和小型组织的需求。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 viniplay ,选择第一个 ardovini/viniplay,版本选择 latest

本文写作时, latest 版本对应为 0.11.0

docker 文件夹中,创建一个新文件夹 viniplay,并在其中建一个子文件夹 data

文件夹 装载路径 说明
docker/viniplay/data /data 存放数据库、日志文件等

端口

本地端口不冲突就行,不确定的话可以用命令查一下

1
2
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8998 8998

环境

可变
SESSION_SECRET 替换为长、随机且安全的字符串

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 新建文件夹 viniplay 和 子目录
mkdir -p /volume1/docker/viniplay/data

# 进入 viniplay 目录
cd /volume1/docker/viniplay

# 运行容器
docker run -d \
--restart unless-stopped \
--name viniplay \
-p 8998:8998 \
-v $(pwd)/data:/data \
-e SESSION_SECRET=replace_this_with_a_very_long_random_and_secret_string \
ardovini/viniplay:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3'

services:
viniplay:
image: ardovini/viniplay:latest
container_name: viniplay
restart: unless-stopped
ports:
- 8998:8998
volumes:
- ./data:/data
environment:
- SESSION_SECRET=replace_this_with_a_very_long_random_and_secret_string

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 viniplay 和 子目录
mkdir -p /volume1/docker/viniplay/data

# 进入 viniplay 目录
cd /volume1/docker/viniplay

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8998 就能看到注册界面。您将需要创建您的初始管理员帐户

登录成功后的主界面

Settings –> Guide Data Sources 设置您的 m3uepg来源

设置 m3uurl 地址

再设置一个 epg

添加成功后

Process Sources & View Guide

接下来还得设置一下播放器

  • Active User Agent:保持默认的 ViniPlay Default
  • Active Stream Profile:默认是 Redirect (No Transcoding),需要改为 ffmpeg (Built in),否则可能会存在跨域

进入 TV Guide

支持播放和录制

播放界面,支持画中画等

官方的动图演示

参考文档

ardoviniandrea/ViniPlay
地址:https://github.com/ardoviniandrea/ViniPlay