Streaming-Media-Server-Pro
前言
我的目标是将程序打造成属于每个人的直播源服务,且对每个人完全开源免费!可作为家庭影院电视、视频等流媒体的提供商,兼容全平台,只需下载视频播放器调用接口链接即可享用,不多说开始喽。
部署教程
免费体验接口:http://stream.naihe.cf/program.m3u
大家使用接口体验即可,不要造成服务器太大流量压力,影响其他人的体验感受,谢谢配合。
该教程是我呕心沥血写成,使用教程包括程序部署和每个接口使用说明等,尽量保证每个人都会使用,部署总结概括需要做到以下及几点:
- 安装python(必装)
- 安装PostgreSql或者MySQL数据库(推荐安装)
- 安装Redis数据库(可选安装)
- 一定的耐心(看完下面详细的教程)
先说明我的配置
服务器1:1G内存+10G存储,mysql数据库
服务器2:redis数据库 200M,托管在服务商中
分布式下载5台,托管在服务商中
下载 ts + 上传数据库 ~ 1s时间
以上仅供参考,实际1台服务器即可使程序正常运行。
服务器位置最好在香港、日本等物理距离近的地方,尽量不要选择国内主机,否则网络请求被墙,本地搭建要后台挂梯子工具
第一步
安装Mysql(建议选择安装)
部署教程自行百度,如果不安装将使用不了视频缓冲区功能(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文件配置(重要必选)
根据安装数据库实际情况配置参数,例如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
第四步
安装Python(必选)
安装教程自行百度,该项是程序的核心支撑服务,一定要安装
安装Python后看下面,使用docker部署点这里
命令终端执行
git clone https://github.com/239144498/Streaming-Media-Server-Pro.git
安装python环境依赖
pip install -r requirements.txt
额外功能
该程序支持自定义源,如果你有自己的源,可以添加到该程序中,在app/assets/diyepg.txt文件中添加你的频道,如下图:
让程序跑起来
python main.py
用Docker怎么运行?
正在写教程,敬请关注。
完整配置信息
# 根据前面步骤要求修改
# 先看教程,不懂就不要乱改参数,后果将导致程序运行出错!
[default]
# defaultdb 可选参数:mysql | postgresql | 不连接数据库则留空
defaultdb =
# downchoose 可选参数:local | online
downchoose = local
# 你的外网映射端口号,默认8080
port = 8080
# 修改192.168.1.x为你的ip或域名
localhost = http://192.168.1.211:%(port)s
# vbuffer视频缓冲区大小,local推荐2-3,online推荐4-5,实际根据带宽和计算机性能决定
vbuffer = 3
# 以下3个参数不懂就不要动
downurls = ["%(localhost)s/url3?url="]
host1 = 4gtvfreepc-cds.cdn.hinet.net
host2 = 4gtvfree-cds.cdn.hinet.net
[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才能用,默认使用我提供的接口
接口使用教程
正在写教程,敬请关注。