Streaming-Media-Server-Pro

  在互联网快速发展的今天,有成千上万个用户都有观看电视的需求,而我, 想打造一个让每个人都拥有自己的电视频道的目标,每个人都可以根据自己的喜欢去筛选喜欢的节目, 并且拥有免费且流畅的观看体验。

核心功能

  • 生成m3u
  • 生成m3u8文件
  • 视频中转(具有缓冲区)
  • 异步下载视频
  • 流媒体转发
  • 生成EPG节目单 每日实时更新
  • 分布式处理ts片段
  • Redis缓存
  • MySql或PostgreSql缓存
  • 多服务器分流
  • 清晰度可自定义
  • 请求主机可自定义

REST API

https://www.apifox.cn/apidoc/shared-95689a43-31f7-4ef2-952a-cecff34105f2/api-35577145

实现效果:

ios软件观看效果

原理介绍

如下图所示:

文字详解

  • ① 客户端请求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)

使用方式

Mysql操作

创建数据库
CREATE DATABASE media
创建video表
create table media.video(
    vname varchar(30) not null,
    CONSTRAINT video_pk PRIMARY KEY (vname),
    vcontent  MEDIUMBLOB NOT NULL,
    vsize varchar(20) NULL,
    ctime  timestamp(0) default now()
);
CIL执行,设置定时事件
SET GLOBAL event_scheduler = ON;

use video;

DROP event IF EXISTS auto_delete;
CREATE EVENT auto_delete
ON SCHEDULE EVERY 30 minute     # xx分钟根据数据库的存储和查询性能综合决定
DO
TRUNCATE video;

python部署:

git clone https://github.com/239144498/Streaming-Media-Server-Pro.git
安装依赖
pip install -r requirements.txt
运行
python3 main.py

现已支持频道

  • 民视第一台
  • 民视**台
  • 民视
  • 大爱电视
  • 中视
  • 中视经典台
  • 华视
  • 三立综合台
  • 客家电视台
  • 八大综艺台
  • 中视菁采台
  • TVBS精采台
  • 爱尔达娱乐台
  • 靖天综合台
  • 靖天日本台
  • 新唐人亚太台
  • 中天综合台
  • ARIRANG阿里郎频道
  • Global Trekker
  • LiveABC互动英语频道
  • 达文西频道
  • ELTV生活英语台
  • Nick Jr. 儿童频道
  • 尼克儿童频道
  • 靖天卡通台
  • 靖洋卡通Nice Bingo
  • i-Fun动漫台
  • MOMO亲子台
  • CN卡通
  • 东森购物一台
  • 镜电视新闻台
  • 东森新闻台
  • 华视新闻
  • 民视新闻台
  • 三立财经新闻iNEWS
  • TVBS新闻
  • 东森财经新闻台
  • 中视新闻
  • 中天新闻台
  • 寰宇新闻台
  • SBN全球财经台
  • TVBS
  • 东森购物二台
  • 民视综艺台
  • 猪哥亮歌厅秀
  • 靖天育乐台
  • KLT-靖天国际台
  • Nice TV 靖天欢乐台
  • 靖天资讯台
  • 中天全民最大党
  • TVBS欢乐台
  • 韩国娱乐台 KMTV
  • Lifetime 娱乐频道
  • 电影原声台CMusic
  • TRACE Urban
  • MTV Live HD 音乐频道
  • Mezzo Live HD
  • CLASSICA 古典乐
  • 博斯高球台
  • 博斯运动一台
  • 博斯无限台
  • 博斯网球台
  • TRACE Sport Stars
  • 智林体育台
  • 时尚运动X
  • 车迷TV
  • GINX Esports TV
  • TechStorm
  • Pet Club TV
  • 民视旅游台
  • 滚动力rollor
  • 亚洲旅游台
  • 幸福空间居家台
  • Love Nature
  • History 历史频道
  • HISTORY 2 频道
  • Smithsonian Channel
  • 爱尔达生活旅游台
  • LUXE TV Channel
  • TV5MONDE STYLE HD 生活时尚
  • 中天美食旅游
  • 公视戏剧
  • 民视影剧台
  • 龙华戏剧台
  • HITS频道
  • 龙华日韩台
  • 八大精彩台
  • 靖天戏剧台
  • 靖洋戏剧台
  • CI 罪案侦查频道
  • 视纳华仁纪实频道
  • 影迷数位纪实台
  • 金光布袋戏
  • ROCK Extreme
  • 采昌影剧台
  • 靖天映画
  • 靖天电影台
  • 龙华电影台
  • 影迷数位电影台
  • amc最爱电影
  • CinemaWorld
  • CATCHPLAY Beyond
  • CATCHPLAY电影台
  • My Cinema Europe HD 我的欧洲电影
  • 好消息2台
  • 好消息
  • 大爱二台
  • 人间卫视
  • 半岛国际新闻台
  • VOA美国之音
  • CNBC Asia 财经台
  • DW德国之声
  • CNN头条新闻台
  • CNN国际新闻台
  • 国会频道1
  • 国会频道2
  • 经典电影台
  • 经典卡通台
  • 精选动漫台
  • 华语戏剧台
  • 华语综艺台

License

Released under the MIT license.

Copyright, 2022, by naihe,239144498@qq.com .

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.