appstore/apps/streaming-media-server-pro
2024-12-12 21:27:56 +08:00
..
2023-01-03 feat:格式化yaml文件 2024-12-12 21:27:56 +08:00
latest feat:格式化yaml文件 2024-12-12 21:27:56 +08:00
data.yml feat:格式化yaml文件 2024-12-12 21:27:56 +08:00
logo.png 精简提交历史记录 2023-11-09 19:15:01 +08:00
README.md 精简提交历史记录 2023-11-09 19:15:01 +08:00

Streaming-Media-Server-Pro

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。

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

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