- 我创建了
IPTV频道
群组,可供交流、测试、反馈, 加入可直接访问 https://t.me/+QmBC4d4jtgo2M2M9 ,或者扫码加入:
.
├── 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(负载均衡)
图中多台服务器是一种理想情况下实现,实际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的服务器,主要是因为免费。
使用我的邀请链接注册,你可以获得$200的credit,当你在上面消费$25时,我也可以获得$25的奖励。
我的邀请链接:
https://m.do.co/c/45e25f5e4569
根据以下通用命令部署本项目
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文件添加自定义频道