开源IPTV源服务程序使用教程

Streaming-Media-Server-Pro

前言

  我的目标是将程序打造成属于每个人的直播源服务,且对每个人完全开源免费!可作为家庭影院电视、视频等流媒体的提供商,兼容全平台,只需使用视频播放器调用接口链接即可享用,不多说开始喽。

开源程序介绍点击跳转

部署教程 by Naihe

💡提示:最好将本项目部署至美国地区的服务器,否则可能会出现奇怪的BUG。

推荐大家使用Digitalocean的服务器,主要是因为免费。

DigitalOcean Referral Badge

使用我的邀请链接注册,你可以获得$200的credit,当你在上面消费$25时,我也可以获得$25的奖励。

我的邀请链接:

https://m.do.co/c/45e25f5e4569

根据以下通用命令部署本项目
一键部署教程:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8252305
详细部署教程:https://www.cnblogs.com/1314h/p/16651157.html
免费公益接口:https://stream.naihe.cf/docs

公共站点: 我很脆弱...请勿压测(·•᷄ࡇ•᷅ )

该教程是我呕心沥血写成,使用教程包括程序部署和每个接口使用说明等,尽量保证每个人都会使用,部署总结概括需要做到以下及几点:

  1. 安装python或者docker(二选一必装)
  2. 安装PostgreSql或者MySQL数据库(二选一推荐安装)
  3. 安装Redis数据库(可选安装)
  4. 一定的耐心(看完下面详细的教程)

先说明我的配置

服务器1:1G内存+10G存储,mysql数据库,redis数据库

分布式下载5台

下载 ts + 上传数据库 ~ 1s时间

最近在256M内存VPS部署该程序,经测试也可以正常运行

以上仅供参考,程序对配置要求不高,实际使用1台服务器即可使程序正常运行。

服务器位置最好在香港、日本等物理距离近的地方,尽量不要选择国内主机。

一键部署

Python和Docker二选一安装

安装Python运行(二选一,必选)

Python版本推荐3.9+

安装Python很简单,不同系统安装方式也不同;避免篇幅冗长请自行百度,相信凭各位能力可以解决;该项是程序的核心支撑服务,一定要安装!

安装好Python后看下面

命令终端执行

git clone https://github.com/239144498/Streaming-Media-Server-Pro.git

安装python环境依赖

pip install -r requirements.txt

让程序跑起来

python main.py
浏览器访问:http://ip:8080/docs

安装Docker运行(二选一,必选)

Docker项目地址:https://hub.docker.com/r/239144498/streaming

安装Docker很简单,不同系统安装方式也不同;避免篇幅冗长请自行百度,相信凭各位能力可以解决;该项是程序的核心支撑服务,一定要安装!

安装好Docker后看下面

拉取镜像

docker pull 239144498/streaming

让程序跑起来

以下二选一执行

1、直接运行(新手推荐)
docker run -itd -p 8080:8080 --restart=always --name server 239144498/streaming  
浏览器访问:http://ip:8080/docs
2、挂载目录运行(主机目录共享给容器)
创建存放配置文件的文件夹
mkdir /home/assets
创建并编辑config.ini文件
vim /home/assets/config.ini	

按i再输入你的配置文件内容,完成后ESC 输入”:wq!“回车

docker run -itd -v /home/assets:/code/app/assets -p 8080:8080 --restart=always --name server 239144498/streaming  
浏览器访问:http://ip:8080/docs

程序额外功能

自定义IPTV源

该程序支持自定义源,如果你有其他iptv源,可以添加到该程序中,在app/assets/diychannel.txt文件中添加你的频道,如下图:

image-20220905143823893

Ps:使用Docker 需要把文件放到本机的/home/assets目录

添加后使用/program.m3u接口就可以看到自己的IPTV源啦。

挂载配置文件

做这个功能是为了解决Docker中config.ini文件重复配置问题,比如Docker镜像重新安装后可以读取挂载目录中已配置好的config.ini文件到容器中,减少不必要操作。

Ps: 在Docker中自定义IPTV源也是把文件放到本机的/home/assets目录

创建存放配置文件的文件夹

mkdir /home/assets

创建并编辑config.ini文件

vim /home/assets/config.ini	

按i再输入你的配置文件内容,完成后ESC 输入”:wq!“回车

进阶操作

*下面操作都是可选的,愿意掌握程序更多功能往下看

Config.ini文件配置(可选)

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

部署分布式代码下载,你需要点击跳转部署(前提:需要在线托管服务,或者主机)

免费托管服务推荐:

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=",...]

更多Config.ini配置(可选)

程序默认使用我提供的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
# 支持协议 http | https | socks5
proxies =

安装Mysql(建议安装)

要求Mysql版本5.1.6+

安装Mysql很简单,不同系统安装方式也不同;避免篇幅冗长请自行百度,相信凭各位能力可以解决;完成后可开启视频缓冲区功能,不安装就跳到第二步

开启Mysql后看下面

执行以下sql命令

tips:在config文件中正确填写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()
);
设置定时删除事件
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;

最后在Streaming-Media-Server-Pro/app/assets/config.ini 配置文件中改成你的ip、port等参数

安装Redis(可选安装)

安装Redis很简单,不同系统安装方式也不同;避免篇幅冗长请自行百度,相信凭各位能力可以解决;完成后可缓存参数,解决重启服务数据丢失问题,且方便多服务共享数据。

我在程序中设置了以内存作为缓存,所以也可以不安装,但缺点就是重启服务数据丢失。

开启Redis后看下面

开启了ssl需要在代码中的ssl设置true,默认false

最后在Streaming-Media-Server-Pro/app/assets/config.ini 配置文件中改成你的ip、port等参数

Docker扩展操作

查看容器状态
docker ps -a
查看镜像列表
docker images
查看容器资源使用情况
docker stats
查看容器内部的标准输出
docker logs [ID或者名字]
进入容器命令终端
docker exec -it server /bin/bash
查看端口开放状态
netstat -anp | grep 8080
重启容器
docker restart IMAGE_ID
删除容器
docker rm CONTAINER_ID

删除镜像
docker rmi IMAGE_ID

完整Config.ini配置信息

# 先看教程,不懂就不要乱改参数,后果将导致程序运行出错!
[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,默认使用我提供的接口

接口使用教程

可以访问 https://stream.naihe.cf/docs 接口文档

GET /online.m3u8

请求参数

参数名 位置 类型 必填 说明
host query string 反向代理域名,例http://www.example.com
fid query string 频道参数
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 频道参数
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 频道参数
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 频道参数
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 频道参数

实例请求:http://127.0.0.1:8080/program.m3u?&hd=720&host=http://www.example.com

介绍:返回完整fid参数,兼容手机平板电脑全平台,例如用potplayer播放器使用。

GET /EPG.xml

请求参数

实例请求:http://127.0.0.1:8080/epg.xml

介绍:返回所有频道未来3天将播放哪些节目

GET /live/

请求参数

参数名 位置 类型 必填 说明
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

介绍:代理下载视频返回给客户端

❤ 打赏 Donation

  如果你觉得本项目对你有帮助,请考虑打赏本项目,以激励我投入更多的时间进行维护与开发。 If you find this project helpful, please consider supporting the project going forward. Your support is greatly appreciated.

  你在GitHub给的star或者赞助是我长期维护此项目的动力所在,由衷感谢每一位支持者,“每一次你花的钱都是在为你想要的世界投票”。 另外,将本项目推荐给更多的人,也是一种支持的方式,用的人越多更新的动力越足。

免责声明

  • 本程序为免费开源项目,供大家管理及观看IPTV频道,方便下载以及学习Python,使用时请遵守相关法律法规,请勿滥用;
  • 本程序通过调用官方接口实现,无破坏官方接口行为;
  • 本程序仅做重定向/流量转发,不拦截、存储、篡改任何用户数据;
  • 在使用本程序之前,你应了解并承担相应的风险,希望使用此程序仅以学习为目的,任何侵害他人利益、商业用途、损害国家名誉或其他违法违规等行为造成的一切后果自行承担,与作者本人无关;
  • 如有侵权,请通过邮件与我联系,会及时处理。
posted @ 2022-09-02 20:32  Naihe\  阅读(17201)  评论(18编辑  收藏  举报
// 音乐播放器