影视聚合播放器MoonTV

简介

什么是 MoonTV ?

MoonTV 是一个开箱即用的跨平台影视聚合播放器,基于 Next.jsTailwind CSSTypeScript 构建。它支持多资源搜索、在线播放、收藏同步及播放记录等功能,让用户可以随时畅享海量的免费影视内容。

主要特点

  1. 🔍多源聚合搜索:内置数十个免费资源站点,一次搜索返回全源结果。
  2. 📄丰富详情页:支持剧集列表、演员、年份和简介等信息展示。
  3. ▶️流畅在线播放:集成 HLS.jsVidStack,实现高质量的视频播放。
  4. ❤️收藏与继续观看:使用 LocalStorage 存储用户的播放记录和收藏。
  5. 📱PWA 支持:提供离线缓存,支持安装到桌面/主屏,移动端体验更佳。
  6. 🌗响应式布局:适应各种屏幕尺寸,提供桌面和移动端的良好用户体验。
  7. 🚀极简部署:可通过简单的 Docker 命令快速运行,支持 Vercel 等平台的免费部署。
  8. 👿智能去广告:实验性功能,自动跳过视频中的切片广告。

应用场景

  • 个人影视播放器:适合用户在个人设备上观看和管理影视内容。
  • 开发者工具:为开发者提供一个快速搭建影视聚合应用的基础。
  • 教育用途:可用于学习如何构建现代 Web 应用,了解前端框架和视频播放技术。
  • 小型团队项目:适合小团队快速开发和部署影视相关的项目。

MoonTV 从功能上说,和老苏之前介绍的 视频搜索与观看平台LibreTV 差不多

如果不想自己搭建,可以去看看官方的演示站点: https://moontv-demo.shinya.click

安装

在群晖上以 Docker 方式安装。

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

docker cli 安装

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

默认

1
2
3
4
5
6
# 运行容器
docker run -d \
--restart unless-stopped \
--name moontv \
-p 3066:3000 \
ghcr.io/senshinya/moontv:latest

自定义

1
2
3
4
5
6
7
8
9
10
11
12
13
# 新建文件夹 moontv 
mkdir -p /volume1/docker/moontv

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

# 运行容器
docker run -d \
--restart unless-stopped \
--name moontv \
-p 3066:3000 \
-v $(pwd)/config.json:/app/config.json:ro \
ghcr.io/senshinya/moontv:latest

config.json 中可以自定义源

1
2
3
4
5
6
7
8
9
10
11
{
"cache_time": 7200,
"api_site": {
"dyttzy": {
"api": "http://caiji.dyttzyapi.com/api.php/provide/vod",
"name": "电影天堂资源",
"detail": "http://caiji.dyttzyapi.com"
}
// ...更多站点
}
}
  • cache_time:接口缓存时间(秒)。
  • api_site:你可以增删或替换任何资源站,字段说明:
    • key:唯一标识,保持小写字母/数字。
    • api:资源站提供的 vod JSON API 根地址。
    • name:在人机界面中展示的名称。
    • detail:(可选)部分无法通过 API 获取剧集详情的站点,需要提供网页详情根 URL,用于爬取。

docker-compose 安装

多账户 Redis 版本

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: '3'

services:
moontv-core:
image: ghcr.io/senshinya/moontv:latest
container_name: moontv
restart: unless-stopped
ports:
- '3000:3000'
environment:
- NEXT_PUBLIC_STORAGE_TYPE=redis
- REDIS_URL=redis://moontv-redis:6379
- NEXT_PUBLIC_ENABLE_REGISTER=true
depends_on:
- moontv-redis

moontv-redis:
image: redis
container_name: moontv-redis
restart: unless-stopped
volumes:
- ./data:/data

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 moontv 
mkdir -p /volume1/docker/moontv/data

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

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

# 一键启动
docker-compose up -d

环境变量的详细说明如下:

变量 说明 可选值 默认值
PASSWORD 实例访问密码,留空则不启用密码保护 任意字符串 (空)
SITE_NAME 站点名称 任意字符串 MoonTV
ANNOUNCEMENT 站点公告 任意字符串 本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。
NEXT_PUBLIC_STORAGE_TYPE 播放记录/收藏的存储方式 localstorage(本地浏览器存储)、redis(仅 docker 支持) localstorage
REDIS_URL redis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPEredis 则必填 连接 url
NEXT_PUBLIC_ENABLE_REGISTER 是否开放注册,建议首次运行时设置 true,注册初始账号后可关闭 true / false false
NEXT_PUBLIC_SEARCH_MAX_PAGE 搜索接口可拉取的最大页数 1-50 5
NEXT_PUBLIC_AGGREGATE_SEARCH_RESULT 搜索结果默认是否按标题和年份聚合 true / false true

运行

在浏览器中输入 http://群晖IP:3066 ,如果设置了 NEXT_PUBLIC_ENABLE_REGISTER=true,第一次需要注册用户

注册或者登录成功后,就能看到主界面

虽然打开一个,你会发现内置了很多源

随便选一个可以直接播放了

后记

如果你想在 Android TV 或者 Apple TV 上使用,可以去看看 OrionTV 项目,据说现在已经可以直接使用 MoonTV 作为后端,进行搜索和资源获取啦

下载地址: https://github.com/zimplexing/OrionTV/releases

参考文档

senshinya/MoonTV
地址:https://github.com/senshinya/MoonTV

MoonTV
地址:https://moontv-demo.shinya.click/

zimplexing/OrionTV: 一个基于 React Native TVOS 和 Expo 构建的跨平台电视应用,旨在提供流畅的视频观看体验。
地址:https://github.com/zimplexing/OrionTV