开源IPTV源服务程序使用教程
docker项目地址:https://hub.docker.com/r/239144498/streaming
部署教程
使用教程包括程序部署和每个接口使用说明等,尽量保证每个人都会使用,部署总结概括需要做到以下及几点:
安装python或者docker(二选一必装)
安装PostgreSql或者MySQL数据库(二选一推荐安装)
安装Redis数据库(可选安装)
一定的耐心(看完下面详细的教程)
先说明我的配置
服务器1:1G内存+10G存储,mysql数据库
服务器2:redis数据库 200M,托管在服务商中
分布式下载5台,托管在服务商中
下载 ts + 上传数据库 ~ 1s时间
以上仅供参考,实际1台服务器即可使程序正常运行。
服务器位置最好在香港、日本等物理距离近的地方,尽量不要选择国内主机。
第一步
安装Mysql(建议选择安装)
要求版本5.1.6及以上
部署教程自行百度,如果不安装将使用不了视频缓冲区功能(online.m3u8接口将失效),不安装就跳到第二步
开启mysql后看下面
执行以下sql命令,不会就百度
创建数据库
XML/HTML代码
- CREATE DATABASE media
XML/HTML代码
- 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()
- );
设置定时删除事件
XML/HTML代码
- SET GLOBAL event_scheduler = ON; # 开启事件调度器
XML/HTML代码
- use media;
XML/HTML代码
- DROP event IF EXISTS auto_delete;
- CREATE EVENT auto_delete
- ON SCHEDULE EVERY 30 minute # xx分钟根据数据库的存储和查询性能综合决定
- DO
- TRUNCATE video;
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数据库类似填写,不懂就不填。
XML/HTML代码
- [default]
- # defaultdb 选择参数:mysql | postgresql | 留空则不连接数据库
- defaultdb =
- [mysql]
- # 将下列5行改为你的参数
- host = 192.168.1.x # ip地址
- user = root # 用户名
- password = 123456789 # 密码
- port = 3306 # 端口
- database = media # 数据库名
设置外网访问:你的ip+端口 或者 域名 + 端口
XML/HTML代码
- # 你的外网映射端口号,默认8080
- port = 8080
- # 修改192.168.1.x为你的ip或域名
- localhost = http://192.168.1.x:%(port)s
视频下载选项,部署了分布式下载选online,否则选local,该前提是已安装数据库
XML/HTML代码
- # downchoose参数:local | online
- downchoose = local
部署分布式代码下载,你需要点击跳转部署(前提:需要在线托管服务,或者主机)
免费下载code托管:
pythonanywhere:https://www.pythonanywhere.com
heroku:https://www.heroku.com
免费redis:https://console.upstash.com
设置视频缓冲区,安装了数据库看这里
XML/HTML代码
- # 视频缓冲区大小,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这三个参数。
XML/HTML代码
- # 存放节目单仓库
- xmlowner = 用户名
- xmlrepo = 仓库名
- xmlaccess_token = token
下面是进阶操作,不懂就不改
XML/HTML代码
- [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
- # 支持协议 http | https | socks5
- proxies =
第四步
安装Python(二选一,必选)
安装教程自行百度,该项是程序的核心支撑服务,一定要安装!
安装Python后看下面
命令终端执行
XML/HTML代码
- git clone https://github.com/239144498/Streaming-Media-Server-Pro.git
XML/HTML代码
- 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
完整配置信息
XML/HTML代码
- # 先看教程,不懂就不要乱改参数,后果将导致程序运行出错!
- [default]
- # defaultdb 可选参数:mysql | postgresql | 不连接数据库则留空
- defaultdb =
- # downchoose 可选参数:local | online
- downchoose = local
- # 你的外网映射端口号,默认8080
- port = 8080
- # 修改192.168.1.x为你的ip或域名
- localhost =
- # vbuffer视频缓冲区大小,downchoose:local推荐2-3,online推荐4-5,实际根据通信带宽和计算机性能决定
- vbuffer = 3
- # 以下3个参数不懂就不要动
- downurls = ["%(localhost)s/url3?url="]
- # 进阶操作,默认不用改
- [advanced]
- host1 = https://4gtvfreepc-cds.cdn.hinet.net
- host2 = https://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 =
- debug = False
- [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
实例请求:http://127.0.0.1:8080/live/pool/4gtv-live012/4gtv-live-mid/7201661716300.ts?token1=FzwRIP1td0zsoDAfEz9-bg&expires1=1661951225