从RTMP到WebRTC:快速搭建低延迟直播测试环境全指南
2026/9/7 12:35:47 网站建设 项目流程

做直播音视频的人,这两年应该都感受过同一种焦虑:RTMP 推流生态成熟、接入简单,但延迟在高并发下就是压不下来;WebRTC 低延迟能力强,但信令、ICE 协商、编解码兼容性,随便一个环节都能把人大脑耗干。

你接到的需求往往并不是“把服务器推倒重来”,而是“先搭一套 RTMP 到 WebRTC 的测试环境,验证现有推流端能不能低延迟播放”。这时候,你不能直接拿线上流量试错,也不能把生产链路搞乱,要在测试环境里先把协议转换、延迟、浏览器兼容性、丢包情况全摸清楚。本文要解决的,就是“如何快速、低成本、可复现地搭建一套 rtmp2webrtc 测试环境”。

这套环境搭建完,你能明显感受到业务侧的变化:原本只能靠 HLS 或 HTTP-FLV 兜底的传统直播,可以在不改推流端的条件下,把播放端延迟从几秒的级别压缩到秒级以内。同时,你也会更清楚哪些环节会出现花屏、黑屏、卡顿,以及应该用什么顺序去定位问题。如果你手头正好有类似项目,建议先收藏再往下看,一步一步跟着做就行。

1. 为什么要单独搭一套 RTMP 到 WebRTC 测试环境

很多团队在项目初期容易犯一个错误:直接在测试服务器上装一个开源流媒体服务,觉得只要它能“接收 RTMP”“转发 WebRTC”,就说明链路通了。但真实业务根本不是这样。

测试环境和生产环境的差异,远比大多数人想象的大。生产环境有成熟的监控、告警、日志采集、限流、防火墙规则,而测试环境往往是一个裸系统,端口没开、DNS 不对、浏览器访问不了内网 IP,甚至连 UDP 都被运营商或机房策略挡着。WebRTC 的核心传输是 UDP,如果测试环境里 UDP 端口不通,你花三天也看不到视频画面,问题却根本不在服务端代码上。

所以,单独搭一套 rtmp2webrtc 测试环境,本质上不是“把服务装起来”,而是把“推流端、信令交互、媒体协商、媒体传输、播放端”这条完整链路,从生产环境里隔离出来,做可控验证。

另一个原因是协议转换过程中的变量太多。RTMP 内部传输的是 FLV 封装的 AAC 音频和 H.264 视频,而 WebRTC 传输的是 RTP 包,还要经过 DTLS 加密和 SRTP 加密。两者之间不只是“封装格式转换”那么简单,还涉及 SDP 协商、ICE 候选收集、音视频时间戳处理、音视频同步。这些逻辑在测试环境里可以一个模块一个模块地验证,一旦直接放到生产环境去调,问题就不可控了。

从工程角度看,测试环境还承担着另一层职责:它要能模拟异常。比如模拟推流端断流、模拟公网丢包、模拟浏览器不兼容 WebRTC,甚至是模拟信令服务器不可用。只有把这些场景在测试环境里跑熟,生产线上出了问题时,你才知道该看日志、看媒体服务器状态,还是直接抓包。

因此,本文选择的测试链路是:FFmpeg 作为 RTMP 推流端,开源流媒体服务器作为协议转换核心,浏览器作为 WebRTC 播放端。这样一条典型链路,覆盖了大多数实际项目的核心场景。

2. RTMP、WebRTC 与协议转换的基本概念

写这篇文章之前,我习惯把 RTMP 和 WebRTC 放到同一个坐标下对比,因为它们解决的根本不是同一个问题。

RTMP 是 Adobe 定义的流媒体协议,基于 TCP 长连接。推流端把音视频数据封装成 FLV 格式的消息,通过 RTMP 的 publish 命令推送到服务器;播放端通过 play 命令拉流。它的优点是生态成熟、OBS/FFmpeg/推流硬件全都支持,缺点是 TCP 队头阻塞导致延迟较高,尤其是在网络抖动时,延迟会迅速恶化。

WebRTC 不是单一协议,而是一套由浏览器和移动端共同推动的实时通信标准。它的媒体传输基于 RTP/SRTP,传输层默认用 UDP,并配合 ICE 完成 NAT 穿透,用 DTLS 做加密握手,用 SDP 描述媒体能力。WebRTC 的优势是延迟可以控制在很低水平,适合通话、连麦、低延迟直播,但劣势是技术栈复杂,服务端需要配套 STUN/TURN,播放端不能像 RTMP 那样用一个简单的 URL 就打开。

把这两个概念放一起看,就很容易理解 rtmp2webrtc 转换的价值:推流端保留 RTMP 这把“旧钥匙”,播放端换成 WebRTC 这把“新锁”,中间需要一把专门的“转换器”,把旧钥匙的齿纹重新打成新钥匙能用的样子。

转换过程在媒体服务器内部大致分为三步:

  1. 接收 RTMP 流,解析出 H.264 视频和 AAC 音频。
  2. 将 H.264 和 AAC 数据封装成 WebRTC 需要的 RTP 包,并维护时间戳映射关系。
  3. 完成信令层面的 SDP 协商,把媒体信息和 ICE 候选发送给浏览器,随后开始 UDP 传输。

这里有个新手最容易误解的地方:并不是 RTMP 的流一进来,WebRTC 播放端就能立刻拉流。信令交换是一次性的,媒体传输才是持续性的。如果服务器没有把 SDP 正确发给播放端,或者播放端没有成功收集到可用的 ICE 候选,那么即使服务器内部已经在转包,播放端依然会显示“连接失败”。

我建议用三个标准来理解这套环境:协议、信令、媒体传输。协议是表面规则,信令是播放端的“接入凭证”,媒体传输是真正承载画面的那条路。测试环境里,任何一环出问题,画面都无法正常展示。

3. 整体架构与开源方案对比

在动手搭建前,先看整体链路:RTMP 推流端把音视频推到媒体服务器,媒体服务器内部完成协议转换,WebRTC 播放端通过信令服务拿到 SDP 以及 ICE 信息,再通过 UDP 与媒体服务器传输音视频数据。

这里最核心的选型问题,是用什么媒体服务器完成转换。目前业界常见的有四类:

方案核心优势局限适用场景
SRS国内社区活跃,RTMP/WebRTC/HTTP-FLV/HLS 全支持,文档丰富需要自己理解配置项,版本差异存在中大型直播团队,需要完整流媒体服务
MediaMTX配置简单,支持 RTSP/RTMP/WebRTC 快速互通功能相对轻量,高级定制较少验证协议转换、嵌入式场景
JanusWebRTC 网关能力专业,插件化架构清晰配置和二次开发门槛较高需要深度定制 WebRTC 信令和媒体流
OvenMediaEngine原生支持低延迟直播,LLHLS/WebRTC 性能好国内资料相对少,上手有门槛面向低延迟直播产品化场景

如果是在国产生态或特定政企项目中部署,还要考虑操作系统和 CPU 架构兼容问题,比如飞腾、鲲鹏、麒麟操作系统等环境。多数开源方案支持主流的 Linux 发行版,但在非 x86 架构上编译时,要重点确认依赖库是否有对应的二进制包。

从技术演进趋势看,SRS 是更适合多数国内团队的选择。它对 RTMP 的兼容性非常深入,FFmpeg、OBS 等工具可以无缝对接,而且从 4.0 开始就逐步把 WebRTC 的能力内置到核心模块中,不需要再额外引入网关服务。测试环境里用 SRS 还有一个优势:它的日志非常详细,从收到 RTMP 包、创建 RTC 会话到发送媒体包,都有明确记录,方便排查问题。

在本文的实操部分,我会先用 SRS 做完整的 rtmp2webrtc 测试环境,再单独介绍 MediaMTX 这种轻量方案,方便你在不同场景下做取舍。

4. 环境准备与前置条件

搭建 rtmp2webrtc 测试环境,不一定要很强的服务器,但前置条件必须确认清楚。

4.1 基础环境要求

推荐配置如下:

  • 操作系统:CentOS 7/8、Ubuntu 20.04/22.04,或兼容的国产 Linux 发行版
  • CPU:2 核以上即可
  • 内存:4 GB 以上
  • 磁盘:20 GB 以上,用于存储日志和录制的测试流
  • 网络:必须保证 UDP 端口可达,尤其是 WebRTC 默认使用的 8000 端口

如果你用的是麒麟操作系统,要注意系统自带的 GCC、Make、OpenSSL 版本可能偏旧。建议提前使用系统包管理器安装编译工具链,避免在编译 SRS 时出现“找不到 OpenSSL 头文件”这类基础错误。

4.2 安装 Docker 与 FFmpeg

虽然可以直接编译 SRS,但从可复现角度,推荐先用 Docker 运行。Docker 方式的好处是环境一致、删除干净,不会把测试服务器搞乱。

安装 Docker 后,验证 Docker 是否正常工作:

docker --version docker ps

推流端需要 FFmpeg,以下命令可以快速安装:

# Ubuntu / Debian sudo apt update sudo apt install -y ffmpeg

验证 FFmpeg 是否支持常见编码格式:

ffmpeg -version ffmpeg -encoders | grep 264

如果项目对 H.264 编码有硬性需求,建议使用自带 libx264 的 FFmpeg 版本。

4.3 防火墙与端口规划

这是测试环境最容易踩坑的地方。RTMP 默认使用 TCP 1935 端口,WebRTC 默认使用 UDP 8000 端口,SRS 的 HTTP 接口使用 TCP 8080 端口。在云服务器或物理机上,必须确保:

  • TCP 1935:允许 RTMP 推流端连接
  • TCP 8080:允许浏览器访问播放器页面和 HTTP API
  • UDP 8000:允许 WebRTC 媒体传输

防火墙配置示例:

# 以 firewalld 为例 sudo firewall-cmd --permanent --add-port=1935/tcp sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --permanent --add-port=8000/udp sudo firewall-cmd --reload

如果测试环境搭建在内网,路由器和云安全组也要同步放行上述端口,否则浏览器的 ICE 连接会失败。

5. 基于 SRS 的 rtmp2webrtc 测试环境搭建

SRS 的部署方式有两种基础,一种是使用官方 Docker 镜像,一种是从源码编译。测试环境我用 Docker 方式演示,方便隔离和清理。

5.1 使用 Docker 快速启动 SRS

先拉取 SRS 镜像,然后使用配置文件启动服务。SRS 的配置文件名一般是srs.conf,我们把测试配置放在宿主机上,挂载到容器内。

创建配置文件/data/srs/srs.conf

listen 1935; max_connections 1000; daemon off; srs_log_tank console; srs_log_level trace; http_api { enabled on; listen 1985; } http_server { enabled on; listen 8080; dir ./objs/nginx/html; } rtc_server { enabled on; listen 8000; # 测试多进程时,可以启用以下配置 # candidate $CANDIDATE; } vhost __defaultVhost__ { rtc { enabled on; rtmp_to_rtc on; } play { rtmp { enabled on; } } }

这段配置的核心是rtmp_to_rtc on,它决定了 RTMP 推上来的流能否被 WebRTC 播放端拉走。rtc_server负责 WebRTC 的 UDP 端口监听,http_api用于提供流状态查询接口,http_server用于播放器页面访问。

启动 SRS:

docker run -d \ --name srs \ -p 1935:1935 \ -p 1985:1985 \ -p 8080:8080 \ -p 8000:8000/udp \ -v /data/srs/srs.conf:/usr/local/srs/conf/srs.conf \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5.0 \ ./objs/srs -c conf/srs.conf

启动后查看容器日志:

docker logs -f srs

如果日志中出现rtc_server listen :8000,说明 UDP 端口已正常监听。如果日志报端口占用或权限不足,先确认端口是否已被其他进程占用。

这里真正容易踩坑的是容器网络模式。如果你用默认 bridge 网络,容器内部的 SRS 会把内网 IP 写入 SDP,浏览器拿到这个 IP 后无法访问,就会出现“能连接但播放不出来”。解决办法是在启动容器时,把 SRS 的 candidate 配置成服务器的公网 IP 或局域网 IP。

启动命令中可以增加环境变量:

docker run -d \ --name srs \ --network host \ -e CANDIDATE=192.168.1.100 \ ...

使用 host 网络模式可以避免 NAT 映射带来的 SDP 地址错误,对测试环境来说更方便。

5.2 验证 SRS 服务状态

打开浏览器访问http://192.168.1.100:8080,能看到 SRS 的默认页面。访问http://192.168.1.100:1985/api/v1/streams,应该返回一个 JSON 数组,当前为空。这两步能确认 HTTP 服务和 API 服务正常。

SRS 还提供了流状态接口,等到推流完成后,可以在这里看到流的 ID、视频编解码信息、分辨率、码率等。这个接口对测试很有价值,建议在脚本里轮询它。

5.3 使用源码方式部署到麒麟操作系统的注意事项

如果测试环境是麒麟操作系统,推荐直接用源码编译 SRS。步骤不复杂,但有两个关键点需要提前处理:

  • 确认系统已安装 gcc、g++、make、patch、unzip 等基础工具
  • 确认 OpenSSL 开发包已安装,因为 WebRTC 的 DTLS 握手依赖 OpenSSL
sudo yum install -y gcc gcc-c++ make patch unzip openssl-devel ./configure --full make -j4

编译过程中如果出现内存不足,可以降低并发数,比如make -j2。编译完成后,SRS 的二进制文件在./objs/srs,配置目录在./conf。这种方式虽然比 Docker 多一点步骤,但对于内网隔离、没有镜像源的测试环境往往更可靠。

6. 完整链路测试:推流与播放

环境搭建好之后,下面开始做端到端的 rtmp2webrtc 测试。

6.1 使用 FFmpeg 推送测试流

测试流可以直接用本地视频文件,也可以用合成测试源。为了便于观察画面和时间戳,我习惯使用 testsrc 作为视频源:

ffmpeg -re \ -f lavfi -i testsrc=size=1280x720:rate=30 \ -f lavfi -i sine=frequency=1000:sample_rate=44100 \ -vcodec libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p \ -acodec aac -ar 44100 -ac 2 \ -f flv rtmp://192.168.1.100:1935/live/test

这条命令的含义:

  • -re按实时速率读取输入,模拟真实推流
  • testsrc生成一个带时间戳的彩色测试画面
  • sine生成一个 1kHz 的正弦波音频
  • -tune zerolatency降低编码延迟
  • 输出协议是 FLV,推流地址指向 SRS 的 1935 端口

如果 FFmpeg 推流成功,终端会持续打印speed=1x之类的日志,说明推流速度与实时同步。

6.2 确认 RTMP 流已进入服务器

推送后在终端或浏览器中访问 SRS API:

curl http://192.168.1.100:1985/api/v1/streams | python3 -m json.tool

响应中应包含一条流地址为/live/test的记录,并且videoaudio字段下能看到对应的编码信息。如果这里没有数据,说明 FFmpeg 与 SRS 之间的 RTMP 链路本身就有问题,需要先检查 TCP 1935 端口和防火墙。

6.3 在浏览器中测试 WebRTC 播放

SRS 自带 WebRTC 播放器页面,可以直接访问:

http://192.168.1.100:8080/players/rtc_player.html

在播放器页面中输入流地址:

webrtc://192.168.1.100:8000/live/test

点击播放后,如果画面出现,说明 RTMP 流已经成功转换为 WebRTC 流,端到端链路打通。

如果你的项目需要自研播放器,可以参考 SRS 提供的 JavaScript 示例,但核心逻辑不变:创建 RTCPeerConnection,与 SRS 完成 SDP 协商,等待音视频轨道到达。

注意一个容易被忽略的问题:浏览器访问播放器页面时,如果使用http://+ IP 地址,部分浏览器会限制 WebRTC 的 getUserMedia 和某些高级功能。更稳妥的方式是使用https://访问,或者使用localhost访问。这也意味着,在真实的测试环境中,建议提前把 HTTPS 证书配置好。

7. 如何验证测试环境是否达标

很多人以为“看到画面”就等于测试完成,实际不然。RTMP 到 WebRTC 的测试环境,至少要验证四个方面。

7.1 延迟是否达到低延迟目标

RTMP 的 HLS 播放延迟通常在几秒到十几秒,而 WebRTC 的测试目标应该控制在秒级以内。验证方式是使用手机秒表或 OBS 的本地时间显示,将推流画面中的时间码与播放端时间码做对比。

更专业的做法是在视频源中插入时间戳,比如用 FFmpeg 在视频上叠加当前时间:

ffmpeg -re \ -f lavfi -i testsrc=size=1280x720:rate=30 \ -f lavfi -i sine=frequency=1000:sample_rate=44100 \ -vf "drawtext=text='%{localtime}':x=50:y=50:fontsize=48:fontcolor=white:box=1:boxcolor=black@0.5" \ -vcodec libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p \ -acodec aac -ar 44100 -ac 2 \ -f flv rtmp://192.168.1.100:1935/live/test

同时用另一个终端播放 WebRTC 流,用手机拍摄播放器画面和系统时间,读取差值,大致就能判断延迟是否达标。如果测试环境里的延迟超过 3 秒,通常不是 WebRTC 的问题,而是推流端的编码缓冲、网络抖动缓冲或播放器的渲染延时设置过大了。

7.2 花屏、黑屏和卡顿是否在可控范围

稳定的测试环境不应该出现大面积花屏。如果出现,先检查 FFmpeg 推流是否稳定,再检查 UDP 8000 端口是否有丢包。可以用ss -unap查看 UDP 连接状态,用tcpdump -i eth0 udp port 8000抓包分析。

7.3 多路并发是否稳定

单路测试通过后,可以尝试推多路不同的流,比如同时推test1test2test3,观察 SRS 的 CPU 和内存占用,确认测试环境在多路并发时不会崩溃。这一步虽然不是生产压力测试,但能提前暴露出单核瓶颈、文件描述符不足等问题。

7.4 日志和监控是否完整

一个合格的测试环境,日志应该包含 RTMP 推流事件和 WebRTC 播放事件。SRS 的控制台日志可以设置不同级别,建议测试时保留trace级别;如果只是日常使用,可以改为info,避免日志刷屏。

8. 使用 MediaMTX 搭建轻量测试环境

有些场景只需要快速验证“RTMP 推上来、WebRTC 能不能播放”,不需要 SRS 的完整模块。这时可以试试 MediaMTX,它的配置比 SRS 简单很多,尤其适合嵌入式设备或临时测试。

MediaMTX 的配置思路是:默认启用所有支持的协议,你只需要在配置文件中开启 RTMP 和 WebRTC。

等 MediaMTX 启动后,默认端口映射是:

  • RTMP 端口:1935
  • WebRTC UDP 端口:默认随机,也可以配置固定端口
  • API 端口:9997

搭建步骤非常简单:

mkdir -p /data/mediamtx cat > /data/mediamtx/mediamtx.yml << 'EOF' rtmp: true webrtc: true rtmpAddress: ":1935" webrtcAddress: ":8189" api: yes EOF docker run -d \ --name mediamtx \ --network host \ -v /data/mediamtx/mediamtx.yml:/mediamtx/mediamtx.yml \ bluenviron/mediamtx:latest

推流命令与 SRS 一样:

ffmpeg -re \ -f lavfi -i testsrc=size=1280x720:rate=30 \ -f lavfi -i sine=frequency=1000:sample_rate=44100 \ -vcodec libx264 -preset veryfast -tune zerolatency -pix_fmt yuv420p \ -acodec aac -ar 44100 -ac 2 \ -f flv rtmp://192.168.1.100:1935/live/test

播放地址则使用:

webrtc://192.168.1.100:8189/live/test

MediaMTX 的优势是占用资源少,但它在转码、鉴权、多路复杂调度上的能力不像 SRS 那么强。因此我的判断是:MediaMTX 适合“验证协议是否走得通”,SRS 更适合“搭建一个能长期服务业务的测试环境”。

9. 常见问题与排查方法

在实际搭建 rtmp2webrtc 测试环境的过程中,以下问题出现频率最高。

问题现象可能原因排查方式解决方案
浏览器一直连接失败SDP 中 candidate 地址错误查看 SRS 日志,确认 SDP 内容;用tcpdump抓 UDP 包使用 host 网络或设置 candidate 为服务器实际 IP
推流端正常,播放黑屏编码参数不兼容查看播放器控制台报错将视频改为 H.264 编码,音频改为 AAC 编码
有画面但无声音频采样率或声道数不兼容查看 SRS 日志中 audio 信息统一音频格式为 44100 Hz 双声道 AAC
延迟很高推流端编码缓冲大;播放缓冲大用时间戳画面实测推流端使用-tune zerolatency,降低播放缓存
公网环境无法播放缺少 TURN 服务器或 UDP 不通使用stun测试工具验证连通性部署 coturn,或打开 UDP 端口
SRS 容器内运行后外部无法访问bridge 网络 NAT 后 candidate 地址错误查看 SDP 中 IP 是否为容器 IP改用--network host,或配置 candidate
麒麟系统编译失败缺少 OpenSSL 开发包查看 configure 错误日志安装openssl-devel后重新 configure
推流后 API 查不到流推流地址与 vhost 不匹配检查配置中的 vhost 与推流 app 名统一使用live/test格式,并确认 vhost 配置正确

排查问题有一条通用顺序:先看服务端日志,再看 API 状态,最后抓包。不要一上来就改配置,否则你会发现改了十处,问题还在原地。

10. 最佳实践与工程建议

测试环境一旦跑通,后面要考虑的就是怎么让这套环境具备工程落地价值。

10.1 测试环境要能快速销毁和重建

尽量把搭建过程写成脚本或 Docker Compose。这样当某一台测试机器坏掉、网络重置、配置改乱时,都可以在 10 分钟内重新拉起来。建议把srs.conf和推流脚本全部纳入版本管理,防止“测试环境只在某个人电脑上能跑”的尴尬局面。

10.2 延迟测试要形成固定方法

延迟数值会和网络环境强相关。建议固定用同一台电脑、同一个浏览器、同一个视频源来测量延迟,这样不同版本的对比才有意义。每一轮测试记录时间、版本、网络模式、延迟值,形成简单的表格,后续回归测试直接复用。

10.3 做好安全边界控制

测试环境虽然不承载生产流量,但也会暴露在网络上。建议做到三点:RTMP 推流端口只在测试网段开放;WebRTC 的 UDP 端口不要直接暴露到公网,除非有明确需求;SRS 的 API 接口加访问限制,避免无关人员查询流状态。

若涉及生产环境变更,如端口开放、防火墙调整、服务重启,必须先在测试环境验证,并提前备份配置。生产环境中的操作应采用最小权限原则,避免使用 root 直接操作服务。

10.4 编解码兼容性要提前约定

WebRTC 不是所有编码都支持,尤其是 Safari 对 H.264 的支持与 Chrome/Edge 存在差异。建议测试时明确浏览器矩阵,至少覆盖 Chrome、Edge、Safari、移动端微信内置浏览器,避免出现“内网测得好好的,一上线上手机就黑屏”。

10.5 引入 TURN 服务器的时机

如果测试环境的目标是模拟公网播放,那么从一开始就应该把 coturn 纳入环境,而不是等到测不通了才补。因为 WebRTC 的 UDP 传输在公网中经常遇到 NAT 限制,没有 TURN 做中继,真正跨网络测试时会导致大量连接失败。测试环境里的 TURN 配置,优先使用与生产相同的配置模板,减少环境差异带来的不确定因素。

11. 总结与后续学习方向

到现在,我们已经把一套基于 SRS 的 rtmp2webrtc 测试环境完整跑通了:从环境准备到容器启动,从 FFmpeg 推流到浏览器 WebRTC 播放,再到延迟、花屏、并发、日志四个维度的验证方法。同时,也对比了 SRS 与 MediaMTX 两种方案,给出了测试环境选型建议,并整理了测试中最常见的八个问题。

这套环境对你下一步工作的核心价值在于:先把协议转换的链路固定在测试环境里,后续无论你要测试转码策略、信令改造、播放器兼容,还是排查线上低延迟问题,都有了一个可以依赖的基线环境。

继续深入的方向,可以从三个点展开:

  • 学习 WebRTC 的 SDP 协商细节,理解 candidate、DTLS 指纹、媒体描述每一项的作用
  • 研究 SRS 源码中rtmp_to_rtc的实现逻辑,搞清楚媒体数据从 FLV 到 RTP 的时间戳换算过程
  • 把测试环境扩展为自动化回归平台,用脚本自动完成推流、检查 API、统计延迟,降低人工测试成本

建议先把本文的 SRS 配置、Docker 启动命令和 FFmpeg 推流命令存成脚本,在本地环境跑通一遍,然后再根据自己的业务场景调整推流地址、端口和播放器页面。这套最小可用的测试环境搭好以后,你会发现后续学习和排错都会顺手很多。收藏备用,下次需要搭低延迟直播验证环境时,直接按这套流程动手就行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询