2026-10-19 18:04:01
微信小程序使用本地搭建RTMP服务实现推流拉流(live-pusher/live-player)的完整流程如下:
一、本地RTMP服务搭建环境准备
安装Node.js环境,确保npm可用。
克隆开源仓库
启动服务
进入Node-Media-Server文件夹,执行以下命令:
npm installnode index.js服务默认监听端口:
RTMP协议:1935端口(用于推流)
HTTP-FLV协议:8000端口(用于网页拉流)
验证服务
使用工具(如OBS)推流至rtmp://本地IP:1935/live/STREAM_NAME,或通过后续步骤用小程序推流测试。
前置条件
注册微信小程序账号,在
获取小程序的AppID,并在开发者工具中导入项目(选择仓库中的client文件夹)。
配置IP地址
修改小程序页面中的服务器IP配置为本地局域网IP(如192.168.x.x),确保手机与电脑在同一网络。
推流地址格式:rtmp://本地IP:1935/live/STREAM_NAME(STREAM_NAME可自定义)。
代码实现
推流组件(live-pusher):
<live-pusher url="rtmp://本地IP:1935/live/STREAM_NAME" mode="SD" autopush bindstatechange="onPushStateChange"/>拉流组件(live-player):
<live-player src="http://本地IP:8000/live/STREAM_NAME.flv" mode="live" autoplay bindstatechange="onPlayStateChange"/>真机调试
在微信开发者工具中点击真机调试,使用手机扫描二维码启动小程序。
确保本地RTMP服务已运行,且IP配置正确。
启动HTTP服务
进入仓库中的web-client文件夹,执行以下命令:
# 若已全局安装http-serverhttp-server -p 8080# 否则通过npx启动npm installnpx http-server -p 8080访问网页
浏览器打开
若成功,网页将显示小程序推送的视频流。
优势
低延迟:腾讯云采用UDP+RTMP或QUIC协议,延迟约400ms(优于TCP的1-2秒)。
免费流量:新用户可申请20GB免费流量测试。
限制
仅腾讯云服务支持UDP传输,自建RTMP服务必须使用TCP。
其他云服务(如声网、阿里云)均基于TCP,延迟与自建服务相当。
适用场景
对延迟敏感(如互动直播)→ 腾讯云。
内部测试或低成本需求 → 自建RTMP服务。
能否获取原始媒体数据流?
不行:小程序环境禁止通过live-pusher获取原始数据(与HTML5的WebRTC不同),无法进行美颜、压缩等预处理。
网络波动导致延迟高?
自建TCP服务在WiFi下可能达2秒延迟,建议优化网络环境或切换至腾讯云。
推流失败排查
检查防火墙是否放行1935端口。
确认手机与服务器在同一局域网(或配置公网IP及端口映射)。
通过以上步骤,可快速实现微信小程序与本地RTMP服务的推流拉流功能,并根据需求选择是否迁移至腾讯云以优化体验。