• 开源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}

    请求参数

    参数名 位置 类型 必填 说明
    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,使用时请遵守相关法律法规,请勿滥用;
    • 本程序通过调用官方接口实现,无破坏官方接口行为;
    • 本程序仅做重定向/流量转发,不拦截、存储、篡改任何用户数据;
    • 在使用本程序之前,你应了解并承担相应的风险,希望使用此程序仅以学习为目的,任何侵害他人利益、商业用途、损害国家名誉或其他违法违规等行为造成的一切后果自行承担,与作者本人无关;
    • 如有侵权,请通过邮件与我联系,会及时处理。
  • 相关阅读:
    Linux 软件安装目录
    MATLAB | 如何绘制二维散点主方向直方图
    架构师之路,从「存储选型」起步
    记一次 .NET 某医疗住院系统 崩溃分析
    canvas基础笔记
    5+非肿瘤分析,分型+WGCNA+机器学习筛选相关基因
    K-means 聚类算法学习笔记
    ssm和springboot的区别
    你的小程序可以接广告赚钱了
    SpringBoot笔记
  • 原文地址:https://www.cnblogs.com/1314h/p/16651157.html