FlashRtcServer用户使用说明书

下载地址:https://download.csdn.net/download/XiBuQiuChong/93185154

目录

  1. 产品简介

1.1 概述

1.2 主要特性

1.3 典型应用场景

  1. 运行环境要求

2.1 服务器

2.2 推流端

2.3 观看端

  1. 安装

3.1 程序包内容

3.2 目录结构

  1. 配置

4.1 编辑 config.ini

4.2 PublicIP 设置

  1. 启动服务器

5.1 启动程序

5.2 确认 IP 显示

5.3 启动服务

5.4 停止服务

  1. 推流(WHIP)

6.1 WHIP URL 格式

6.2 使用 FlashRtcClient(推荐)

6.3 使用 OBS Studio

6.4 停止推流

  1. 拉流播放(WHEP)

7.1 打开 Web 播放器

7.2 播放流

7.3 播放器按钮说明

7.4 统计面板说明

7.5 停止播放

  1. 多人观看

8.1 操作步骤

  1. 故障排查

9.1 服务器无法启动

9.2 推流端无法连接

9.3 观看端无法播放

9.4 IP 地址问题

  1. API 参考(高级用户)

10.1 WHIP 推流示例(cURL)

10.2 WHEP 拉流示例(cURL)

  1. 常见问题(FAQ)

  2. 快速上手

1. 产品简介

1.1 概述

FlashRtcServer 是一款面向 Windows 平台的轻量级 WebRTC 流媒体服务器。它通过 WHIP 协议接收来自推流端(浏览器、OBS、FlashRtcClient)的实时音视频流,并通过 WHEP 协议将流转发给多个观看者。适用于低延迟直播、视频监控、远程显示以及一对多分发等场景。

1.2 主要特性

  1. 采用 WHIP/WHEP 标准协议,原生兼容浏览器和 OBS
  2. 基于 WebRTC,端到端延迟低于 1 秒
  3. 支持 H.264 视频 + Opus 音频
  4. UDP 与 TCP 双传输,共用端口,对 NAT 友好
  5. 内置 Web 播放器,观看者无需安装任何软件
  6. NACK 重传 + 关键帧快起,弱网下播放流畅
  7. IOCP 高性能网络,可支持数百路并发观看

1.3 典型应用场景

|------------|----------------------|-------------|
| 场景 | 推流端 | 观看端 |
| 网络直播 | OBS / FlashRtcClient | 浏览器 Web 播放器 |
| 远程屏幕 / 摄像头 | FlashRtcClient | 浏览器 Web 播放器 |
| 监控(IP 摄像头) | FFmpeg / GStreamer | 浏览器 Web 播放器 |
| 一对多分发 | 单个 WHIP 推流 | 多个 WHEP 观看者 |

2. 运行环境要求

2.1 服务器

|--------|--------------------------------------|
| 项目 | 要求 |
| 操作系统 | Windows 10 及以上版本(x86 / x64) |
| 运行时库 | Visual C++ Redistributable 2019(x86) |
| 网络 | 观看者可访问的公网 IP,或仅局域网使用 |
| 防火墙 | 放行服务端口(默认 1985)的 TCP 和 UDP |
| 硬件 | 双核 2GHz+、2GB 内存起步;推荐四核 4GB+ |

2.2 推流端

  1. FlashRtcClient(Windows,推荐)- 支持 H.264 硬件编码
  2. OBS Studio 30 及以上版本(内置 WHIP 输出)
  3. 支持 WHIP 的浏览器(Chrome / Edge 94+)

2.3 观看端

  1. 现代浏览器:Chrome / Edge / Firefox(推荐 Chrome / Edge)
  2. 无需安装任何插件,直接打开 Web 播放器即可

3. 安装

3.1 程序包内容

部署包包含以下文件,请将它们放在同一目录下(例如 C:\FlashRtcServer\):

FlashRtcServer.exe # 主程序

config.ini # 配置文件

web\index.html # Web 播放器(必须位于 web 子目录下)

libcrypto-1_1.dll # OpenSSL

libssl-1_1.dll # OpenSSL

srtp2.dll # SRTP 库

mfc140u.dll # MFC 运行时(Debug 版为 mfc140ud.dll)

msvcp140.dll # VC++ 运行时(Debug 版为 msvcp140d.dll)

vcruntime140.dll # VC++ 运行时(Debug 版为 vcruntime140d.dll)
ucrtbase.dll # 通用 C 运行时(Debug 版为 ucrtbased.dll)
提示

若使用 Debug 模式从源码编译,需要带 "d" 后缀的 DLL(mfc140ud.dll、msvcp140d.dll 等)。若要在其他机器上部署,建议使用 Release 版本,以免依赖调试运行时。

3.2 目录结构

C:\FlashRtcServer\

+-- FlashRtcServer.exe

+-- config.ini

+-- *.dll

+-- web\
+-- index.html <-- Web 播放器必须放在此处
重要

web 子目录必须与 FlashRtcServer.exe 在同一目录下。若 Web 播放器页面无法打开,请检查 web\index.html 是否存在。

4. 配置

4.1 编辑 config.ini

使用文本编辑器(记事本等)打开 config.ini,默认内容如下:

RTC

; Public IP address to announce in SDP candidates.

; Set this to your server's public IP if behind NAT (e.g. cloud servers).

; Leave empty or delete the line to auto-detect via STUN / local interface.
PublicIP=192.168.0.100

4.2 PublicIP 设置

PublicIP 字段用于告知观看者向哪个地址发送媒体数据,请根据实际部署场景设置:

|-------------|-----------------|---------------|
| 部署场景 | PublicIP 取值 | 示例 |
| 云服务器(公网 IP) | 服务器公网 IP | 192.168.0.100 |
| 仅局域网使用 | 服务器局域网 IP | 192.168.1.100 |
| 自动检测(仅本地) | 留空 | PublicIP= |

警告

PublicIP 设置错误将导致观看者无法连接。云服务器必须填写公网 IP;局域网测试填写局域网 IP;留空则自动检测本机 IP,仅适用于局域网场景。

5. 启动服务器

5.1 启动程序

  1. 双击 FlashRtcServer.exe
  2. 主对话框弹出,显示端口(默认 1985)和 IP 信息

5.2 确认 IP 显示

"公网 IP" 输入框显示的是 config.ini 中的 IP。启动前请确认其与服务器实际 IP 一致。
提示

如 IP 显示不正确,请关闭程序,修改 config.ini 后再重新启动。

5.3 启动服务

  1. 点击"Start"(启动)按钮
  2. 状态栏显示"Server running on port 1985"
  3. 日志面板显示"Server started successfully"

5.4 停止服务

  1. 点击"Stop"(停止)按钮
  2. 所有连接被关闭,HTTP 服务停止
  3. 状态栏显示"Server stopped"

重要

同一端口只能运行一个实例。若启动失败提示"端口被占用",请关闭其他 FlashRtcServer 实例,或等待 30 秒后重试。

6. 推流(WHIP)

推流是指将摄像头、屏幕或视频文件发送到服务器的过程,服务器随后将流分发给观看者。

6.1 WHIP URL 格式

所有推流端使用相同的 URL 格式:
http://<服务器IP>:<端口>/rtc/v1/whip/?app=<应用名>&stream=<流名>

|--------|-----------------------|---------------|
| 参数 | 含义 | 示例 |
| 服务器IP | 服务器 IP(与 PublicIP 一致) | 192.168.0.100 |
| 端口 | 服务端口(默认 1985) | 1985 |
| app | 应用名(任意字符串) | hk |
| stream | 流名(任意字符串,每路流唯一) | cctv |

示例:
http://192.168.0.100:1985/rtc/v1/whip/?app=hk\&stream=cctv

6.2 使用 FlashRtcClient(推荐)

  1. 打开 FlashRtcClient
  2. 将 WHIP URL 设置为上述地址
  3. 选择视频源(摄像头 / 屏幕 / 文件)
  4. 推荐编码参数:H.264、1920x1080、30fps、2.5Mbps
  5. 点击"推流" / "Start"按钮
  6. 服务器日志面板会显示新增的 WHIP 会话

6.3 使用 OBS Studio

  1. OBS 30 及以上版本内置 WHIP 输出
  2. 设置 -> 推流 -> 服务:WHIP
  3. 服务器:粘贴上述 WHIP URL
  4. 点击"开始推流"

6.4 停止推流

  1. 在推流端点击"停止" / "停止推流"
  2. 或直接关闭推流程序
  3. 服务器在 30 秒超时后会自动清除该流

7. 拉流播放(WHEP)

7.1 打开 Web 播放器

在任意现代浏览器中(推荐 Chrome / Edge)打开:
http://<服务器IP>:<端口>/

示例:
http://192.168.0.100:1985/

7.2 播放流

  1. 在页面中输入服务器地址(如 192.168.0.100:1985)
  2. 输入应用名 App(如 hk)- 必须与推流端一致
  3. 输入流名 Stream(如 cctv)- 必须与推流端一致
  4. 点击"Play"(播放)按钮
  5. 1 秒内出现画面,左上角统计面板显示实时指标

提示

若推流端未运行,播放将失败。请先确保流正在推流,再点击播放。

7.3 播放器按钮说明

|-------------------|--------------|
| 按钮 | 功能 |
| Play(播放) | 连接服务器并开始播放 |
| Stop(停止) | 停止播放并断开连接 |
| Snapshot(截图) | 将当前画面保存为 PNG |
| Mute / Unmute(静音) | 切换音频开关 |
| Fullscreen(全屏) | 进入全屏模式 |

7.4 统计面板说明

画面左上角的覆盖层显示实时连接指标:

|-----------------|--------|----------------|
| 指标 | 含义 | 健康范围 |
| Latency(延迟) | 端到端延迟 | < 500 ms |
| RTT | 网络往返时延 | < 100 ms |
| Resolution(分辨率) | 视频分辨率 | 与推流端一致 |
| Bitrate(码率) | 视频码率 | 约等于推流端设置 |
| FPS(帧率) | 每秒帧数 | 约等于推流端设置(如 30) |
| Loss(丢包率) | 丢包率 | < 1% |

7.5 停止播放

  1. 点击"Stop"(停止)按钮
  2. 或直接关闭浏览器标签页

8. 多人观看

FlashRtcServer 支持一个推流端对多个观看者。每个观看者打开 Web 播放器,输入相同的 App + Stream 即可观看同一路流。

8.1 操作步骤

  1. 推流端推流到 app=hk, stream=cctv
  2. 观看者 1 打开 http://服务器IP:1985/ 并播放 hk/cctv
  3. 观看者 2 打开相同 URL 并播放 hk/cctv
  4. ... 以此类推,增加更多观看者
  5. 服务器对话框的"Clients"计数器会随观看者增加而递增

注意

每个观看者都会占用与流码率相等的上行带宽。2.5 Mbps 的流,10 个观看者约需要 25 Mbps 服务器上行带宽。

9. 故障排查

9.1 服务器无法启动

|-----------|-----------------------|-------------------------------------------------|
| 现象 | 原因 | 解决方法 |
| 提示"端口被占用" | 其他实例或进程占用了端口 | 关闭其他 FlashRtcServer 实例,等待 30 秒后重试 |
| 对话框立即关闭 | 缺少 DLL 或 VC++ 运行时版本不对 | 安装 VC++ Redistributable 2019(x86);检查所有 DLL 是否齐全 |

9.2 推流端无法连接

|-----------|--------------|---------------------------------------------------------------|
| 现象 | 原因 | 解决方法 |
| WHIP 连接失败 | 服务器 IP 或端口错误 | 核对 URL:http://<服务器IP>:1985/rtc/v1/whip/?app=...&stream=... |
| 连接超时 | 防火墙拦截端口 | 在 Windows 防火墙和云服务器安全组中放行 TCP+UDP 1985 端口 |
| DTLS 握手失败 | 网络拦截 UDP | 服务器同时支持 TCP,浏览器会自动回退 |

9.3 观看端无法播放

|--------------|---------------|-----------------------------------------|
| 现象 | 原因 | 解决方法 |
| 网页打不开 | URL 错误或服务器未启动 | 检查 http://<服务器IP>:1985/ 能否打开;确认服务器已启动 |
| 点击播放无反应 | 流未推流 | 先启动推流端;检查"Streams"计数器是否 >= 1 |
| 有声音但黑屏 | 编码格式不匹配 | 推流端必须使用 H.264 视频和 Opus 音频 |
| 画面卡顿 / 花屏 | 网络丢包 | 查看 Loss 指标;考虑降低推流码率 |
| 延迟过高(> 1 秒) | 网络拥塞或浏览器抖动缓冲 | 刷新页面;检查网络带宽 |

9.4 IP 地址问题

|------------|-------------------------|-------------------------------------------|
| 现象 | 原因 | 解决方法 |
| 外网观看者无法连接 | PublicIP 未设置或错误 | 编辑 config.ini,将 PublicIP 设为服务器公网 IP,重启服务器 |
| 内网可连,外网不可连 | 防火墙拦截或 PublicIP 设为内网 IP | 放行防火墙端口;将 PublicIP 改为公网 IP |

10. API 参考(高级用户)

供需要将 FlashRtcServer 与自定义应用集成的用户参考:

|---------|-------------------------------|----------------------|
| 方法 | URL | 用途 |
| POST | /rtc/v1/whip/?app=X&stream=Y | 推流(WHIP) |
| DELETE | /rtc/v1/whip/resource/<id> | 停止推流 |
| POST | /rtc/v1/whep/?app=X&stream=Y | 拉流(WHEP,带 SDP offer) |
| GET | /rtc/v1/whep/?app=X&stream=Y | 拉流(WHEP,服务器生成 SDP) |
| DELETE | /rtc/v1/whep/resource/<id> | 停止拉流 |
| OPTIONS | /rtc/v1/* | CORS 预检(自动处理) |
| GET | / | Web 播放器页面 |
| GET | /<file> | web/ 下的静态文件 |

10.1 WHIP 推流示例(cURL)

curl -X POST \

-H "Content-Type: application/sdp" \

-d "@offer.sdp" \

"http://192.168.0.100:1985/rtc/v1/whip/?app=hk\&stream=cctv"

响应:201 Created

Location: /rtc/v1/whip/resource/<session-id>

响应体:SDP answer

10.2 WHEP 拉流示例(cURL)

curl -X POST \

-H "Content-Type: application/sdp" \

-d "@offer.sdp" \

"http://192.168.0.100:1985/rtc/v1/whep/?app=hk\&stream=cctv"

响应:201 Created

Location: /rtc/v1/whep/resource/<session-id>

响应体:SDP answer

11. 常见问题(FAQ)

问:服务器是否需要公网 IP?

答:若要供外网访问,必须有公网 IP;若仅局域网使用,内网 IP 即可。请在 config.ini 中正确设置 PublicIP。

问:播放支持哪些浏览器?

答:Chrome、Edge、Firefox 均可。推荐使用 Chrome / Edge,性能和延迟表现最佳。不支持 Internet Explorer。

问:可以用手机浏览器推流吗?

答:可以,前提是浏览器支持 WHIP(Android Chrome、iOS 16.4+ Safari)。如需稳定推流,建议使用桌面端 FlashRtcClient 或 OBS。

问:支持哪些编码格式?

答:视频支持 H.264(packetization-mode=1,profile-level-id=42e01f);音频支持 Opus(48kHz 立体声)。不支持 VP8/VP9/AV1 和 AAC。

问:能支持多少并发观看者?

答:取决于服务器带宽和流码率。粗略估算:2.5 Mbps 的流在 100 Mbps 上行带宽下可服务约 30 个观看者。CPU 占用随观看者数量增加而上升。

问:支持录像或转码吗?

答:不支持。FlashRtcServer 是零转码转发器,将推流端的流原样转发给所有观看者。如需录像,请使用单独的 WHIP 消费者写入磁盘。

问:可以作为 Windows 服务运行吗?

答:当前版本为桌面应用程序(MFC 对话框)。作为服务运行需要额外开发,暂不官方支持。

问:支持鉴权吗?

答:本版本不支持。所有 WHIP/WHEP 端点均为开放状态。如需鉴权,建议在服务器前部署带认证的反向代理。

12. 快速上手

希望 5 分钟内上手?请按以下步骤操作:

步骤 1:将部署包解压到 C:\FlashRtcServer\

(保留 web\index.html 在原位)

步骤 2:编辑 config.ini

PublicIP=<你的服务器 IP>

步骤 3:放行防火墙端口

netsh advfirewall firewall add rule name="FlashRtcServer" \

dir=in action=allow protocol=TCP localport=1985

netsh advfirewall firewall add rule name="FlashRtcServer-UDP" \

dir=in action=allow protocol=UDP localport=1985

步骤 4:运行 FlashRtcServer.exe,点击"Start"

步骤 5:推流(在推流端机器上)

WHIP URL:http://<服务器IP>:1985/rtc/v1/whip/?app=hk&stream=cctv

步骤 6:播放(在任意浏览器中)

打开:http://<服务器IP>:1985/

输入:Server=<服务器IP>:1985,App=hk,Stream=cctv
点击"Play"
需要帮助?

请先查看服务器对话框的日志面板 - 它会显示连接事件、错误信息和会话生命周期。大部分问题可从日志中定位。