开源IPTV源服务程序使用教程
部署教程
极简部署教程:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8252305
完整部署教程:https://www.cnblogs.com/1314h/p/16651157.html
使用教程包括程序部署和每个接口使用说明等,尽量保证每个人都会使用,部署总结概括需要做到以下及几点:
- 安装python或者docker(二选一必装)
- 安装PostgreSql或者MySQL数据库(二选一推荐安装)
- 安装Redis数据库(可选安装)
- 一定的耐心(看完下面详细的教程)
先说明我的配置
服务器1:1G内存+10G存储,mysql数据库
服务器2:redis数据库 200M,托管在服务商中
分布式下载5台,托管在服务商中
下载 ts + 上传数据库 ~ 1s时间
以上仅供参考,实际1台服务器即可使程序正常运行。
服务器位置最好在香港、日本等物理距离近的地方,尽量不要选择国内主机。
第一步
安装Mysql(建议选择安装)
要求版本5.1.6及以上
部署教程自行百度,如果不安装将使用不了视频缓冲区功能(online.m3u8接口将失效),不安装就跳到第二步
开启mysql后看下面
执行以下sql命令,不会就百度
创建数据库
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() );
设置定时删除事件
SET GLOBAL event_scheduler = ON; # 开启事件调度器
use media;
DROP event IF EXISTS auto_delete; CREATE EVENT auto_delete ON SCHEDULE EVERY 30 minute # xx分钟根据数据库的存储和查询性能综合决定 DO TRUNCATE video;
在config.ini配置文件中替换你的ip、port等参数
第二步
安装Redis(可选安装)
部署教程自行百度,该数据库用于缓存参数,以及方便多服务器共享数据,帮助重启服务数据不丢失。
我在程序中专门设置了内存缓存参数,所以也可以不安装,但缺点重启服务数据丢失。
不安装就跳到第三步
开启Redis后看下面
在config.ini配置文件中替换你的ip、port等参数
第三步
config.ini文件配置(重要必选)
config.ini在程序路径.app/assets/config.ini
根据安装数据库实际情况配置参数,例如MySQL,在config.ini更改为你的参数即可,PostgreSql数据库类似填写,不懂就不填。
[default] # defaultdb 选择参数:mysql | postgresql | 留空则不连接数据库 defaultdb = [mysql] # 将下列5行改为你的参数 host = 192.168.1.x # ip地址 user = root # 用户名 password = 123456789 # 密码 port = 3306 # 端口 database = media # 数据库名
设置外网访问:你的ip+端口 或者 域名 + 端口
# 你的外网映射端口号,默认8080 port = 8080 # 修改192.168.1.x为你的ip或域名 localhost = http://192.168.1.x:%(port)s
视频下载选项,部署了分布式下载选online,否则选local,该前提是已安装数据库
# downchoose参数:local | online downchoose = local
部署分布式代码下载,你需要点击跳转部署(前提:需要在线托管服务,或者主机)
免费下载code托管:
pythonanywhere:https://www.pythonanywhere.com
heroku:https://www.heroku.com
免费redis:https://console.upstash.com
设置视频缓冲区,安装了数据库看这里
# 视频缓冲区大小,local推荐2-3,online推荐4-5 # 实际根据网络带宽和计算机性能决定 vbuffer = 3 # 分布式视频下载器 # local示例["https://"+localhost+"/url3?url=", ...] # online示例["https://www.example1.com/url3?url=", ...] # 有多个分布式下载链接使用方法如下,否则参数不要改 downurls = ["%{localhost}s/url3?url=", "https://www.example1.com/url3?url=", "https://www.example2.com/url3?url=",...]
可选项
程序默认使用我提供的EPG节目单(每日会自动更新),如果你需要创建该脚本,需要在config.ini配置文件提供xmlowner、xmlrepo、xmlaccess_token这三个参数。
# 存放节目单厂库 xmlowner = 用户名 xmlrepo = 仓库名 xmlaccess_token = token
下面是进阶操作,不懂就不改
[advanced] host1 = 4gtvfreepc-cds.cdn.hinet.net host2 = 4gtvfree-cds.cdn.hinet.net # tvglogo可选参数:fsLOGO_MOBILE 台标 | fsHEAD_FRAME 播放预览 tvglogo = fsHEAD_FRAME # 对所有接口启用代理,没有就不用配置 # 代理有验证: http://user:password@10.10.1.10:3128 | 代理无验证: http://10.10.1.10:3128 proxies =
第四步
安装Python(二选一,必选)
安装教程自行百度,该项是程序的核心支撑服务,一定要安装!
安装Python后看下面
命令终端执行
git clone https://github.com/239144498/Streaming-Media-Server-Pro.git
安装python环境依赖
pip install -r requirements.txt
额外功能
该程序支持自定义源,如果你有自己的源,可以添加到该程序中,在app/assets/diychannel.txt文件中添加你的频道,如下图:
让程序跑起来
python main.py 浏览器访问:http://ip:8080/program.m3u
用Docker怎么运行(二选一,必选)?
docker项目地址:https://hub.docker.com/r/239144498/streaming
默认各位已经安装好docker环境
替代第四步,执行以下命令
拉取镜像
docker pull 239144498/streaming
创建存放配置文件的文件夹
mkdir /home/assets
进入文件夹
cd /home/assets
创建并编辑config.ini文件
vim config.ini
按i再输入你的配置文件内容,完成后ESC 输入”:wq!“回车
查看镜像
docker images 获取 IMAGE_ID
运行容器
docker run -itd -v /home/assets:/code/app/assets -p 8080:8080 --restart=always --name server 上一步的IMAGE_ID 浏览器访问:http://ip:8080/program.m3u
扩展操作
查看容器运行状态
docker ps -a
进入容器命令终端
docker ps -a 找到 containerID docker exec -it containerID /bin/bash
查看端口开放状态
netstat -anp | grep 8080
重启容器
docker restart IMAGE_ID
完整配置信息
# 先看教程,不懂就不要乱改参数,后果将导致程序运行出错! [default] # defaultdb 可选参数:mysql | postgresql | 不连接数据库则留空 defaultdb = # downchoose 可选参数:local | online downchoose = local # 你的外网映射端口号,默认8080 port = 8080 # 修改192.168.1.x为你的ip或域名 localhost = http://192.168.1.xxx:%(port)s # vbuffer视频缓冲区大小,downchoose:local推荐2-3,online推荐4-5,实际根据通信带宽和计算机性能决定 vbuffer = 3 # 以下3个参数不懂就不要动 downurls = ["%(localhost)s/url3?url="] # 进阶操作,默认不用改 [advanced] host1 = 4gtvfreepc-cds.cdn.hinet.net host2 = 4gtvfree-cds.cdn.hinet.net # tvglogo可选参数:fsLOGO_MOBILE 台标 | fsHEAD_FRAME 播放预览 tvglogo = fsHEAD_FRAME # 对所有接口启用代理,没有就不用配置 # 代理有验证: http://user:password@10.10.1.10:3128 | 代理无验证: http://10.10.1.10:3128 proxies = [mysql] host = 192.x.91.34 user = root password = 123456789 port = 3306 database = media [postgresql] host = 192.x.91.34 user = root password = 123456789 port = 5432 database = media [redis] host = 192.x.91.34 port = 6379 password = 123456789 [other] # 存放节目单厂库 xmlowner = xmlrepo = xmlaccess_token = # 接口限制指定ip,默认使用我提供的接口
接口使用教程
GET /online.m3u8
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
host | query | string | 否 | 反向代理域名,例http://www.example.com |
fid | query | string | 是 | 频道参数,例4gtv-4gtv018 |
hd | query | string | 否 | 视频清晰度,可选360、480、720、1080 |
实例请求:http://127.0.0.1:8080/online.m3u8?fid=4gtv-4gtv018&hd=720&host=http://www.example.com
host参数用于反向代理,解决本地部署且未挂梯子工具问题,怎么部署反代自行百度
介绍:客户端请求后将多个ts下载到数据库作为缓冲区,下次客户端请求call.ts就从数据库读取。
GET /call.ts
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
fid | query | string | 是 | 频道参数,例4gtv-4gtv018 |
seq | query | string | 是 | 60466177,由/online.m3u8自动产生 |
hd | query | string | 是 | 视频清晰度,可选360、480、720、1080 |
实例请求:http://127.0.0.1:8080/call.ts?fid=litv-longturn11&seq=60466177&hd=1080
介绍:从数据库读取视频返回给客户端。
GET /channel.m3u8
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
host | query | string | 否 | 反向代理域名,例http://www.example.com |
fid | query | string | 是 | 频道参数,例4gtv-4gtv018 |
hd | query | string | 否 | 视频清晰度,可选360、480、720、1080 |
实例请求:http://127.0.0.1:8080/channel.m3u8?fid=4gtv-4gtv018&hd=720&host=http://www.example.com
介绍:客户端请求后生成视频链接参数,下次客户端请求/live/{file_path}接口默认本机反代,或者使用host参数作为反代,同时起到分流作用,减轻服务器压力。
GET /channel2.m3u8
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
fid | query | string | 是 | 频道参数,例4gtv-4gtv018 |
hd | query | string | 否 | 视频清晰度,可选360、480、720、1080 |
实例请求:http://127.0.0.1:8080/channel2.m3u8?fid=4gtv-4gtv018&hd=720
介绍:重定向视频链接给客户端。
GET /program.m3u
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
host | query | string | 否 | 反向代理域名,例http://www.example.com |
hd | query | string | 否 | 视频清晰度,可选360、480、720、1080 |
name | query | string | 否 | 频道参数,例4gtv-4gtv018 |
实例请求:http://127.0.0.1:8080/program.m3u?&hd=720&host=http://www.example.com
介绍:返回4gtv全部频道表,兼容手机平板电脑全平台,例如用potplayer播放器使用。
GET /EPG.xml
请求参数
无
实例请求:http://127.0.0.1:8080/EPG.xml
介绍:返回所有频道未来3天将播放哪些节目
GET /live/{file_path}
请求参数
参数名 | 位置 | 类型 | 必填 | 说明 |
---|---|---|---|---|
file_path | path | string | 是 | 视频url路径 |
token1 | query | string | 否 | token,例FzwRIP1td0zsoDAfEz9 |
expires1 | query | integer | 否 | expires,例1661951225 |