大道至简:仅靠PHP原生函数库,搭建生产级推拉流集群
纯 PHP 自研轻量级 RTMP 直播服务零 FFmpeg、Nginx 等第三方流媒体依赖开箱快速搭建私有化直播平台。Linux 环境自动启用event扩展 epoll 事件驱动Windows 环境自动降级 select IO 模型全平台兼容。项目定位底层基础设施完整自研 RTMP/HTTP-FLV/WS-FLV 协议栈、异步网络引擎业务管理、权限、回放管理等上层应用需开发者自行扩展开发。目录环境依赖快速开始推拉流地址规范直播点播访问地址Web 页面使用说明项目目录结构系统整体架构端口常量配置录制任务开关配置多进程 Worker 配置IPC 流同步核心推流鉴权配置FLV 直播分发网关静态文件 HTTP 网关多方式推拉流接入教程直播转发教程十万级及以上并发集群部署架构常见问题 FAQ开源协议附属工具包联系方式环境依赖依赖项硬性要求说明PHP 8.1仅支持 CLI 命令行模式运行不支持 FPMsockets 扩展强制必需底层 TCP/WS/RTMP 通信基础event 扩展Linux 强烈推荐安装启用 epoll 高并发事件模型Windows 无此扩展自动降级 select快速环境部署项目内置docker-compose.yml执行docker-compose up -d一键启动完整运行环境。快速开始1. 项目安装composercreate-project xiaosongshu/rtmp_servercdrtmp_server2. 启动源站主服务php server.php启动成功输出示例[INFO] RTMP Server started on 0.0.0.0:1935 [INFO] HTTP-FLV/WS-FLV Server started on 0.0.0.0:8501 [INFO] HTTP Static Server started on 0.0.0.0:803. 快速推流测试方式1浏览器无软件推流屏幕实时推流http://127.0.0.1/push.html本地 MP4/FLV 文件循环推流http://127.0.0.1/flv_push.html方式2FFmpeg 标准推流ffmpeg-re-stream_loop-1-ivideo.mp4-c:vlibx264-c:aaac-fflv rtmp://127.0.0.1:1935/live/stream方式3OBS Studio 推流服务器rtmp://127.0.0.1:1935/live/串流密钥stream方式4项目内置 PHP 推流客户端php pusher.php test.mp4 http://127.0.0.1:8501/live/stream4. 快速观看直播浏览器访问http://127.0.0.1/index.html推拉流地址规范推流地址OBS/FFmpeg/PHP/Web 统一格式协议标准格式示例地址RTMPrtmp://host:1935/{app}/{stream}rtmp://127.0.0.1:1935/live/streamHTTP-FLVhttp://host:8501/{app}/{stream}http://127.0.0.1:8501/live/streamWebSocket-FLVws://host:8501/{app}/{stream}ws://127.0.0.1:8501/live/stream字段约束{app}应用名、{stream}频道名仅允许英文、数字、下划线禁止特殊符号、中文。直播点播访问地址实时直播播放地址协议访问地址适用场景RTMPrtmp://127.0.0.1:1935/live/streamffplay、桌面专业播放器HTTP-FLVhttp://127.0.0.1:8501/live/stream.flvPC 浏览器低延迟直播WebSocket-FLVws://127.0.0.1:8501/live/stream.flv浏览器原生 WebSocket MSE 播放HLShttp://127.0.0.1:80/hls/live/stream/index.m3u8移动端、微信内置浏览器录制点播回放地址录制文件持久化存储于项目根目录直播结束自动生成完整文件文件类型存储路径访问示例完整合并 MP4mp4/live/stream/output_merge/stream_full.mp4http://127.0.0.1/mp4/live/stream/output_merge/stream_full.mp4原始 FLV 录制文件flv/live/stream/index.flvhttp://127.0.0.1/flv/live/stream/index.flvHLS TS 分片目录hls/live/stream/直接使用 m3u8 索引地址播放Web 页面使用说明直播播放页面页面文件功能说明访问地址index.htmlHTTP-FLV 低延迟直播播放器http://127.0.0.1/index.htmlplay.htmlHLS 移动端适配播放器http://127.0.0.1/play.htmlmp4.htmlMP4 点播专用页面http://127.0.0.1/mp4.htmlvideo.htmlFLV 点播播放器http://127.0.0.1/video.htmlplay_merge.htmlfMP4 分片点播页面http://127.0.0.1/play_merge.htmlWeb 端推流页面页面文件功能说明访问地址push.html浏览器屏幕采集推流WS-FLVhttp://127.0.0.1/push.htmlflv_push.html本地 MP4/FLV 文件循环推流http://127.0.0.1/flv_push.htmlpush_merge.html多路直播画面合并推流http://127.0.0.1/push_merge.htmlpush_transcode.html前端多码率转码推流适配弱网http://127.0.0.1/push_transcode.htmlPHP 内置推拉流客户端脚本脚本功能命令示例pusher.php命令行文件推流客户端php pusher.php video.mp4 http://127.0.0.1:8501/live/streampuller.php命令行拉流录制客户端php puller.php http://127.0.0.1:8501/live/stream.flv output.flv项目目录结构rtmp_server/ ├── config/ # 全局配置文件端口、多进程、录制、推流鉴权 ├── flv/ # 实时录制 FLV 原始流存储目录 ├── mp4/ # fMP4 分片 直播结束合并完整 MP4 ├── hls/ # HLS TS 分片、m3u8 索引文件目录 ├── MediaServer/ # RTMP/FLV/WS-FLV 核心协议栈、会话管理 ├── Root/ # 底层异步 IO、Socket 事件驱动引擎 ├── record/ # 客户端配套静态页面资源 ├── server.php # RTMP 源站主服务启动入口 ├── flvGateway.php # FLV 直播分发网关启动脚本 ├── fileGateway.php # HLS/MP4/静态资源 HTTP 网关 ├── forward.php # 直播转发客户端 ├── pusher.php # PHP 推流客户端 ├── puller.php # PHP 拉流客户端 ├── auth_config.php # 推流鉴权独立配置 ├── *.html # 全部 Web 推拉流、播放页面 ├── docker-compose.yml # Docker 一键部署配置 └── LICENSE # Apache 2.0 开源协议文件系统整体架构【外部推流端】OBS / FFmpeg / Web端 │ RTMP(1935) / HTTP-FLV/WS-FLV(8501) 推流接入 │ ▼ ╔══════════════════════════════════════════════════════════════════════════════════════╗ ║ RTMP 源站主服务流生产核心 ║ ║ ║ ║ 推拉流接入RTMP / HTTP-FLV / WS-FLV 三协议兼容内置推流鉴权校验 ║ ║ 协议转封装原始流转输出 HTTP-FLV / WS-FLV / HLS / fMP4 / MP4 ║ ║ 并行录制任务完全互不阻塞可单独开关 ║ ║ ┌──────────┬──────────┬──────────┐ ║ ║ │ FLV裸流录制 │ fMP4实时分片 │ HLS TS分片 │ ║ ║ └──────────┴──────────┴──────────┘ ║ ║ 实时流输出对外分发 HTTP-FLV、WS-FLV、HLS 直播流 ║ ║ 点播产物fMP4分片缓存直播结束自动拼接完整MP4文件 ║ ║ 内置静态HTTP服务(80端口)低并发场景无需额外网关直接提供页面、点播文件访问 ║ ╚══════════════════════════════════════════════════════════════════════════════════════╝ │ ┌───────────────────┼───────────────────┐ │ │ │ ▼ ▼ ▼ HTTP-FLV实时流 HLS静态分片文件 fMP4静态分片文件 │ │ │ ▼ ▼ ▼ ┌─────────────┐ ┌──────────────────────────────────────────┐ │ FLV直播网关集群 │ │ 静态文件网关集群(fileGateway) │ │ │ │ 托管资源HLS/fMP4/MP4/FLV/网页静态资源 │ │ ┌─────────┐ │ │ │ │ │一级网关 │ │ │ ┌───────┐ ┌───────┐ ┌───────┐ │ │ │(8080端口)│ │ │ │网关1 │ │网关2 │ │网关3 │ │ │ └───┬─────┘ │ │ │(8100) │ │(8101) │ │(8102) │ │ │ │ │ │ └──┬────┘ └──┬────┘ └──┬────┘ │ │ ┌───┴───┐ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ▼ ▼ ▼ │ │ ┌─┐ ┌─┐ ┌─┐ │ │ ┌──────────────────────────────────┐ │ │ │子│ │子│ │子│ │ │ │终端播放器客户端 │ │ │ │网│ │网│ │网│ │ │ │MSE/HLS播放器/ffplay/浏览器 │ │ │ │关│ │关│ │关│ │ │ └──────────────────────────────────┘ │ │ └┬─┘ └┬─┘ └┬─┘ │ │ │ │ │ │ │ │ └──────────────────────────────────────────┘ │ ▼ ▼ ▼ │ │ ┌────────────┐ │ │ │直播观看客户端│ │ │ │FLV播放器 │ │ │ └────────────┘ │ └─────────────────┘架构详细说明源站主服务唯一流生产者所有外部推流统一接入源站完成协议解析、鉴权、多路转封装、并行录制FLV录制、fMP4切片、HLS切片三个任务线程完全隔离互不阻塞。低并发场景可直接使用内置80端口静态服务无需部署额外网关。FLV 直播分发网关无转码逻辑仅做流量转发、GOP关键帧缓存实现播放器秒开支持横向扩容、多级级联生产环境建议最多两级层级越多延迟越高Linux epoll高并发Windows仅用于测试。高并发场景全部播放器拉流请求走网关减轻源站主进程连接压力。静态文件网关集群专门托管HLS、MP4、FLV、前端页面等静态资源实现读写分离大规模点播场景必须部署避免源站被文件IO请求占满。直播一体化工具本项目支持纯PHP客户端推流拉流以及直播转发功能并提供web前端推流播放转码合流。支持单进程/多进程切换以及个性化媒体资源工具包xiaosongshu/flv2mp4。分并发部署建议并发规模推荐部署方案低并发在线播放 1000仅启动源站server.php使用内置80、8501端口无需网关中等并发1000 ~ 5000在线源站 单层FLV网关集群 单层静态文件网关集群Nginx负载均衡高并发/大型活动直播5000在线源站 多层级FLV网关、静态网关集群前置负载均衡万人级活动必须接入商用CDN边缘分发禁止单服务器承载全部流量端口常量配置修改config/app.php调整全局服务端口内置常量定义/** HTTP-FLV / WebSocket-FLV 主服务端口 */define(BASE_FLV_PORT,8501);/** RTMP 标准1935端口 */define(BASE_RTMP_PORT,1935);/** 内置静态网页、点播文件HTTP端口 */define(BASE_WEB_PORT,80);录制任务开关配置config/app.php独立控制三类录制任务互不干扰define(FLV_TO_RECORD,true);// 开启实时原始FLV流录制define(FLV_TO_MP4,true);// 开启fMP4分片直播结束自动合并完整MP4define(FLV_TO_HLS,true);// 开启HLS TS分片生成多进程 Worker 配置IPC 流同步核心原理说明PHP CLI 多进程模型下每个 Worker 进程内存完全隔离单个进程收到推流后其他 Worker 无法读取流数据因此必须通过 IPC进程间通信同步直播流。本项目不使用共享内存、管道等传统系统IPC自研本地TCP Socket IPC方案分配一组内部通信端口收流Worker主动通过内置TCP客户端将完整流数据复制转发给全部其他Worker实现全进程流数据共享。配置代码config/app.php/** 总开关是否启用多进程Worker模式 */define(ENABLE_MULTI_PROCESS,true);/** Worker进程数量建议不超过服务器CPU物理核心数 */define(WORKER_COUNT,3);/** 进程间TCP通信端口起始值自动依次分配 8502、8503... */define(COPY_PORT_START,8502);关闭多进程ENABLE_MULTI_PROCESSfalse时进程数量、内部通信端口配置全部失效服务运行在单进程模式无需IPC流同步。多进程端口负载均衡规则Linux系统支持端口复用多个Worker可同时监听8501主FLV端口内核自动将播放器连接均衡分发至各WorkerWindows系统虽支持SO_REUSEADDR端口复用但新TCP连接只会固定分配给最先绑定8501的进程无法原生负载均衡可借助Nginx反向代理内部通信端口8502实现流量均分内部IPC端口对外可直接访问拉流用于Windows环境手动负载均衡。平台性能限制说明Linuxepoll IO模型单进程支持数千并发长连接多进程可充分利用多核CPU生产环境首选Windows底层select模型并发上限极低单进程约256连接仅用于本地开发调试禁止线上生产部署。推流鉴权配置功能说明防止非法流覆盖直播间仅携带合法stream key的推流请求允许接入播放器拉流无需鉴权。配置文件config/auth.php?phpreturn[enabledfalse,// 鉴权总开关publish[require_authtrue,// 推流强制校验密钥stream_keys[live_123456,stream_key_abc,],],global[allowed_apps[live],// 允许的应用名deny_apps[],],];鉴权推流地址写法通过URL参数key携带密钥RTMPffmpeg-re-ivideo.mp4-fflv rtmp://127.0.0.1:1935/live/stream?keylive_123456OBS串流密钥stream?keylive_123456HTTP-FLVffmpeg-re-ivideo.mp4-fflv http://127.0.0.1:8501/live/stream?keylive_123456WS-FLV PHP客户端php pusher.php test.flvws://127.0.0.1:8501/live/stream?keylive_123456安全最佳实践替换默认密钥使用32位以上随机字符串公网环境部署启用HTTPS/WSS避免密钥明文抓包定期轮换stream key降低泄露风险。系统默认关闭了鉴权若有需要请自行开启FLV 直播分发网关功能简介轻量化流量转发服务向上游源站拉取HTTP-FLV/WS-FLV流缓存GOP关键帧实现播放器秒开支持横向扩容、多级级联分发分担源站并发压力。启动命令# 基础单实例启动php flvGateway.php8080http://127.0.0.1:8501 php flvGateway.php8080ws://127.0.0.1:8501# 同层横向扩容多实例php flvGateway.php8080http://127.0.0.1:8501 php flvGateway.php8081http://127.0.0.1:8501 php flvGateway.php8082ws://127.0.0.1:8501# 多级级联不建议超过两级php flvGateway.php8080http://127.0.0.1:8501# 一级网关php flvGateway.php8081http://127.0.0.1:8080# 二级网关# Linux后台静默运行php flvGateway.php8080http://127.0.0.1:8501/dev/null21网关播放地址格式http://网关IP:端口/{app}/{stream}.flv ws://网关IP:端口/{app}/{stream}.flv示例http://127.0.0.1:8080/live/stream.flv静态文件 HTTP 网关功能简介独立静态资源HTTP服务托管HLS、MP4、FLV、前端页面分离文件IO与直播流业务提升高并发点播稳定性。启动命令# 单实例启动php fileGateway.php0.0.0.08100# 多实例横向扩容php fileGateway.php0.0.0.08100php fileGateway.php0.0.0.08101php fileGateway.php0.0.0.08102# Linux后台运行php fileGateway.php0.0.0.08100/dev/null21Nginx 负载均衡反向代理示例upstream filegateway_cluster { server 127.0.0.1:8100; server 127.0.0.1:8101; server 127.0.0.1:8102; } server { listen 80; server_name media.example.com; location ~* \.(m3u8|ts|mp4|m4s|flv|html|css|js)$ { proxy_pass http://filegateway_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }资源访问地址示例http://127.0.0.1:8100/index.html http://127.0.0.1:8100/hls/live/stream/index.m3u8 http://127.0.0.1:8100/mp4/live/stream/output_merge/stream_full.mp4多方式推拉流接入教程RTMP 推流OBS、FFmpeg、PHP客户端均兼容标准RTMP协议地址格式rtmp://host:1935/{app}/{stream}HTTP-FLV 推流适合命令行、程序自动化推流地址http://host:8501/{app}/{stream}WebSocket-FLV 推流浏览器原生推流方案延迟最低可达50ms内使用内置push.html页面即可。PHP 拉流脚本用于服务端拉流备份、跨服务器流转php puller.php http://127.0.0.1:8501/live/stream.flv output.flv php puller.php ws://127.0.0.1:8501/live/stream.flv output.flv直播转发教程本项目提供直播转发功能可以将直播转发到多路服务器支持rtmp/ws-flv/http-flv协议推拉流。详细命令见forward.php详解转发命令示例如下php forward.php http://127.0.0.1:8501/a/b.flvrtmp://127.0.0.1:1935/c/d,ws://127.0.0.1:8501/c/e,http://127.0.0.1:8501/c/f上面的命令表示将直播流http://127.0.0.1:8501/a/b.flv转发推流到rtmp://127.0.0.1:1935/c/d,ws://127.0.0.1:8501/c/e和http://127.0.0.1:8501/c/f当然你也可以推流到其他任意支持rtmp,ws-flv,http-flv的平台。工程化建议pusher.php/puller.php可集成至后端定时任务实现自动拉流转推、备份录制不依赖第三方工具完成全PHP直播业务闭环。根据您的描述我设计了一份十万级并发集群部署架构图及其详细说明。该架构突出高可用、弹性伸缩、多活容灾并强调源/边缘节点角色可互换、自动同步、多备份录制等特性。您可以直接将以下内容作为新章节插入 README建议放在“系统整体架构”之后。十万级及以上并发集群部署架构┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ 【第一层多主播推流层】 │ │ │ │ 主播A (OBS/Web/FFmpeg) 主播B (OBS/Web/FFmpeg) 主播N (OBS/Web/FFmpeg) │ │ │ │ │ │ │ ┌─────┼─────┐ ┌─────┼─────┐ ┌─────┼─────┐ │ │ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ │ │ [节点1] [节点2] [节点3] [节点1] [节点2] [节点3] [节点1] [节点2] [节点3] │ │ (同时推流至多个源节点实现推流端容灾) │ └─────────────────────────────────────────────────────────────────────────────────────────┘ │ │ RTMP/HTTP-FLV/WS-FLV 推流接入 ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ 【第二层源节点集群流生产核心】 │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 源节点 A │ │ 源节点 B │ │ 源节点 C │ │ 源节点 D │ │ │ │ server.php │ │ server.php │ │ server.php │ │ server.php │ │ │ │ (多进程) │ │ (多进程) │ │ (多进程) │ │ (多进程) │ │ │ │ 录制/分片 │ │ 录制/分片 │ │ 录制/分片 │ │ 录制/分片 │ │ │ └─────┬───────┘ └─────┬───────┘ └─────┬───────┘ └─────┬───────┘ │ │ │ │ │ │ │ │ └────────┬────────┴─────────────────┴────────┬────────┘ │ │ │ │ │ │ ┌────▼────┐ ┌────▼────┐ │ │ │ forward │ │ forward │ ← 自动同步直播流拉流→推流│ │ │ 同步 │ │ 同步 │ │ │ └────┬────┘ └────┬────┘ │ │ └──────────────┬────────────────────┘ │ │ │ │ │ (所有源节点互为备份任意节点故障其他节点继续服务) │ └──────────────────────────────────┼────────────────────────────────────────────────────┘ │ │ forward 拉流 (从源节点拉取推至边缘) ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ 【第三层边缘节点集群流分发与缓存】 │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ 边缘节点 X │ │ 边缘节点 Y │ │ 边缘节点 Z │ │ 边缘节点 W │ │ │ │ server.php │ │ server.php │ │ server.php │ │ server.php │ │ │ │ (多进程) │ │ (多进程) │ │ (多进程) │ │ (多进程) │ │ │ │ 录制/分片 │ │ 录制/分片 │ │ 录制/分片 │ │ 录制/分片 │ │ │ └─────┬───────┘ └─────┬───────┘ └─────┬───────┘ └─────┬───────┘ │ │ │ │ │ │ │ │ └────────┬────────┴─────────────────┴────────┬────────┘ │ │ │ │ │ │ ┌────▼────┐ ┌────▼────┐ │ │ │ forward │ │ forward │ ← 自动从源节点拉流缓存 │ │ │ 同步 │ │ 同步 │ │ │ └─────────┘ └─────────┘ │ │ │ │ ★ 源与边缘角色动态切换任一节点可随时升级为源节点接收主播推流或降级为边缘节点 │ │ ★ 所有节点均独立录制实现多副本备份提高数据可靠性 │ └──────────────────────────────────┼────────────────────────────────────────────────────┘ │ ┌─────────────┴─────────────┐ │ │ ▼ ▼ ┌────────────────────────────┐ ┌────────────────────────────┐ │ 【第四层网关分发层】 │ │ 【第四层网关分发层】 │ │ │ │ │ │ flvGateway 集群 │ │ fileGateway 集群 │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ │ │网关1│ │网关2│ │网关3│ │ │ │网关1│ │网关2│ │网关3│ │ │ └──┬──┘ └──┬──┘ └──┬──┘ │ │ └──┬──┘ └──┬──┘ └──┬──┘ │ │ │ │ │ │ │ │ │ │ │ │ └───────┼───────┘ │ │ └───────┼───────┘ │ │ │ │ │ │ │ │ (HTTP-FLV/WS-FLV) │ │ (HLS/MP4/FLV点播/静态页面)│ └─────────────┼─────────────┘ └─────────────┼─────────────┘ │ │ └─────────────┬───────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────────────────────────┐ │ 【第五层观众终端】 │ │ │ │ PC浏览器 (MSE/FLV.js) 移动端 (HLS) ffplay/专业播放器 WebSocket 播放器 │ │ │ │ ★ 观众就近接入边缘网关通过负载均衡DNS或Nginx自动分配至最优节点 │ └─────────────────────────────────────────────────────────────────────────────────────────┘架构设计核心说明1. 推流层高可用容灾多路推流主播可同时向多个源节点如节点A、B、C推流任一节点故障其他节点仍持有流观众无感知切换。推流端自动故障转移OBS/FFmpeg 可配置备用推流地址实现主备切换Web端可通过JavaScript多路推送。2. 源节点集群流生产核心多活部署所有源节点均处于活动状态均能接收推流且通过forward.php互相同步流数据保证每个源节点都拥有完整流副本。自动故障转移任意源节点宕机其他节点继续提供服务转发同步链路自动重连业务不中断。并行录制每个源节点独立执行 FLV/fMP4/HLS 录制实现多份物理备份防止单点存储丢失。3. 边缘节点集群流分发与缓存就近拉流边缘节点通过forward.php从源节点拉取直播流缓存 GOP 关键帧为观众提供低延迟、秒开播放。弹性伸缩根据并发量动态增减边缘节点支持水平扩展如应对突发流量。角色灵活切换源节点与边缘节点使用相同代码可随时通过配置提升为源节点接收推流或降级为边缘节点仅拉流分发实现资源按需调配。4. 网关分发层flvGateway 集群专为 HTTP-FLV/WS-FLV 实时流设计无转码、纯转发配合 GOP 缓存实现秒开支持多级级联横向扩容应对海量播放器连接。fileGateway 集群独立托管 HLS 分片、MP4 点播文件、静态页面等资源与动态流业务分离避免文件 IO 阻塞直播服务。5. 观众终端多协议覆盖支持 RTMP、HTTP-FLV、WS-FLV、HLS适配 PC、移动端、Web 等全平台。智能调度通过 DNS 轮询、Nginx 反向代理或全局负载均衡GSLB将观众请求引导至最近或负载最低的边缘节点确保体验最优。6. 数据流走向推流主播 →多路→ 源节点集群 →forward同步到所有源节点。拉流边缘边缘节点 →forward从任一源节点拉取 → 缓存 → 服务本地观众。播放观众 → 负载均衡 → flvGateway/fileGateway → 边缘节点或源节点→ 获取流数据。录制所有节点源/边缘均按配置录制最终合并为 MP4 供点播回放。7. 容灾与备份机制节点级容灾任何单节点源或边缘宕机转发客户端会自动重连至其他存活节点流数据不中断。地域级容灾若整个机房故障可通过 DNS 切换至备用机房需部署多套集群实现跨地域高可用。录制备份每个节点独立存储录制文件重要直播可选择多个节点同时录制确保数据不丢失。8. 扩展性与并发能力水平扩展所有层均支持横向扩容新增节点即可分担负载无需重启现有服务。十万级并发边缘节点与网关层可大规模水平扩展配合 CDN 边缘加速可支撑 10万 观众同时观看需保障带宽和服务器资源。性能优化Linux 下 event 扩展epoll驱动单节点可承载数千长连接(视服务器具体配置而定)多节点集群线性提升并发能力。9. 部署建议节点间的数据同步通过内置的forward.php转播客户端完成。该工具支持从任意源拉取 RTMP/HTTP-FLV/WS-FLV 流并可同时推送到一个或多个目标节点且在推送时支持携带鉴权参数如 key。开发者可根据实际网络拓扑和业务需求编写调度脚本例如结合健康检查、负载均衡策略或业务规则动态配置拉流源地址、目标节点列表及转发参数从而实现节点间的自动化流同步。源节点与边缘节点的角色切换同样依赖外部调度逻辑建议通过监控节点的系统状态如 CPU 负载、内存占用、活跃连接数、推流数量等或外部流量分配策略触发脚本动态调整节点角色从而实现弹性伸缩、故障转移和容灾切换。整个调度体系可根据实际场景定制提供高度灵活的生产级部署方案。常见问题 FAQQ1 Windows启动提示缺失event扩展怎么办Windows无event扩展服务自动切换select IO模型仅需安装sockets扩展即可正常运行无需额外处理。Q2 如何确认服务正常启动终端输出三条监听日志即代表启动成功RTMP 1935、FLV 8501、静态80端口。Q3 推流成功但播放器持续卡顿推流码率、分辨率过高降低码率/帧率测试服务器CPU满载开启多进程充分利用多核高并发未部署FLV网关大量播放器连接占用源站资源服务器上行带宽不足限制并发在线人数。Q4 如何停止服务终端按下Ctrl C发送终止信号或直接关闭运行终端窗口。Q5 支持哪些第三方推流软件全兼容标准RTMP客户端OBS Studio、FFmpeg、xSplit、移动端RTMP推流SDK。开源协议本项目采用Apache License 2.0开源协议。软件按现状提供不提供任何明示或隐含担保开发者不对使用本程序产生的直接、间接、衍生损失承担责任完整条款查看项目根目录LICENSE文件。附属工具包项目底层编解码、流转封装能力独立拆分工具包2723659854/flv2mp4提供FLV/MP4/fMP4/HLS互转、独立推拉流客户端、网关组件可单独引入第三方PHP项目使用。联系方式邮箱2723659854qq.comGitHubhttps://github.com/2723659854