/Streaming-Media-Server-Pro

这是一个强大的IPTV源后端服务,具有视频缓冲区功能,程序内置了很多独家频道,不够?你还可以自定义添加电视源;超多功能接口,还可以添加你的代理,并且适合任意平台,非常适合作为家庭影院的IPTV服务!可玩性超高,更多详情点击查看。

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

builds Netlify Status
Python version Docker pulls GitHub stars MIT license

Documentation: English version | 中文版

stream.png

目录

项目树形图

.
├── app
│   ├── __init__.py
│   ├── main.py
│   ├── log
│   ├── api
│   │   ├── __init__.py
│   │   ├── a4gtv
│   │   │   ├── __init__.py
│   │   │   ├── endecrypt.py
│   │   │   ├── generateEpg.py
│   │   │   ├── tasks.py
│   │   │   ├── tools.py
│   │   │   └── utile.py
│   │   └── v2
│   │       ├── __init__.py
│   │       └── endpoints
│   │           ├── __init__.py
│   │           ├── more.py
│   │           └── sgtv.py
│   ├── assets
│   │   ├── EPG.xml
│   │   ├── diyepg.txt
│   ├── common
│   │   ├── __init__.py
│   │   ├── costum_logging.py
│   │   ├── diyEpg.py
│   │   ├── gitrepo.py
│   │   └── header.py
│   ├── conf
│   │   ├── __init__.py
│   │   ├── config.ini
│   │   └── config.py
│   ├── db
│   │   ├── __init__.py
│   │   ├── DBtools.py
│   │   └── dbMysql.py
│   └── scheams
│       ├── __init__.py
│       └── basic.py
├── main.py
├── requirements.txt
├── Dockerfile
├── README.md
├── Procfile
└── LICENSE

核心功能

  • 高效流媒体(具有缓冲区)
  • 代理任意视频网站的视频流
  • 生成m3u文件
  • 生成m3u8文件
  • 异步下载流
  • 流媒体转发
  • 生成EPG节目单 每日实时更新
  • 分布式处理ts片
  • Redis缓存参数
  • MySql缓存数据
  • 正向代理请求
  • 自定义节目频道
  • 自定义电视台标
  • 自定义清晰度
  • 支持反向代理或使用CDN(负载均衡)

程序接口指南

https://stream.naihe.cf/docs

播放效果

原理介绍

如下图所示:

文字详解

图中多台服务器是一种理想情况下实现,实际python程序、redis和mysql都可以在同一台服务器中实现

  • ① 客户端请求m3u8文件
    • 1-> 查看内存是否缓存,否则服务器执行图流程2
    • 2-> BackgroundTasks任务:执行图流程3,分布式下载数量根据设置的缓冲区大小决定
    • 3<- 返回m3u8文件
  • ② 客户端请求ts片
    • 1-> 查看本地是否缓存,否则服务器执行图流程2
    • 2-> BackgroundTasks任务:执行图流程3
    • 3-> 查看内存是否已下载完成状态,下载完执行图流程4,否则循环判断等待
    • 4<- 返回ts文件
  • ③ 还有很多技术细节就不一一展开,只列出以上部分

该项目根据分析4gtv网站的接口,通过算法得到生成ts视频的一些关键参数,省去请求网站从而得到m3u8文件的通信时长等开销,针对海外视频网站被墙隔离,支持以下几种观看方式:

  • 通过具有缓冲区的中转服务观看(调用api接口 /online.m3u8)
  • 通过CDN反向代理观看(调用api接口 /channel.m3u8?&host=xxx)
  • 使用科学上网软件观看(调用api接口 /channel2.m3u8)

使用方式

💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。

推荐大家使用Digitalocean的服务器,主要是因为免费。

DigitalOcean Referral Badge

使用我的邀请链接注册,你可以获得$200的credit,当你在上面消费$25时,我也可以获得$25的奖励。

我的邀请链接:

https://m.do.co/c/45e25f5e4569

根据以下通用命令部署本项目

python部署:

python版本>=3.8+

git clone https://github.com/239144498/Streaming-Media-Server-Pro.git

安装依赖

pip install -r requirements.txt

运行

python3 main.py

(docker部署)更多使用教程详情 https://www.cnblogs.com/1314h/p/16651157.html

现已支持频道

  • 在diychannel.txt文件添加自定义频道

License

GNU-3.0 © naihe