现代化自托管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 存放数据库、日志文件等

端口

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

bash 复制代码
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
8998 8998

环境

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

命令行安装

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

bash 复制代码
# 新建文件夹 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 文件

yaml 复制代码
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 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 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

支持播放和录制

播放界面,支持画中画等

官方的动图演示

viniplay 功能演示

参考文档

ardoviniandrea/ViniPlay

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

相关推荐
Patrick_Wilson1 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy2 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭2 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩3 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵4 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1114 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽5 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康7 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn8610 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵10 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops