SRS 实时媒体服务器全景指南协议、转封装、编解码与部署实践【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srsSRSSimple Realtime Server是一个简单、高性能、AI 驱动的实时媒体服务器一端接收来自各类推流端的媒体流另一端将它们以最适合的协议交付给播放端。它原生支持 RTMP、WebRTC、HLS、HTTP-FLV、HTTP-TS、SRT、MPEG-DASH 与 GB28181 等协议并以转封装Transmux为核心设计理念在不重编码视频的前提下实现协议间的高效互转。读完本文你将全面掌握 SRS 的协议矩阵与延迟画像、推流/播放工具链的选型、各协议转换开关的配置方法并能基于仓库内真实配置文件与源码完成一次完整的推流—播放实战。什么是 SRSSRS 是一个simple, high-efficiency, real-time media server简单、高效、实时媒体服务器。它接收发布者Publisher推上来的流再把流交付给播放者Player。整个项目的定位可以概括为一句线性的数据流Publishers推流端 -- SRS -- Players播放端在 srs-overview.md 中这一架构用如下 Mermaid 图表示从仓库结构看SRS 的 C 核心位于 trunk/src其中 trunk/src/app 存放应用层实现如srs_app_rtmp_conn.cpp、srs_app_rtc_conn.cpp、srs_app_srt_conn.cpp、srs_app_http_stream.cpp等trunk/src/protocol 存放各协议栈实现RTMP、RTSP、SRT、SDP、RTP/RTCP、HTTP 栈等服务进程入口在 trunk/src/main/srs_main_server.cpp。可以推断SRS 的每个协议连接都对应 app 层的一个连接类协议解析则由 protocol 层完成两者通过统一的消息/包结构衔接这也是它能轻松实现协议互转的架构基础。推流端与播放端工具生态一览推流端PublishersSRS 兼容几乎所有主流推流工具覆盖桌面、移动端与硬件设备FFmpeg—— 命令行编码/转码工具。可推 RTMP、SRT、WHIPWebRTC等协议。OBSOpen Broadcaster Software—— 流行的开源直播软件。可推 RTMP、SRT、WHIPWebRTC。Larix Broadcaster—— 移动端推流 AppiOS/Android。可推 RTMP、SRT、WHIPWebRTC。vMix—— Windows 直播制作软件。可推 RTMP、SRT。硬件编码器—— 如 Teradek、Haivision、Blackmagic 等设备推 RTMP、SRT。浏览器含移动端—— 通过 WHIPWebRTC推流。无需安装任何 App用户在 iPhone/Android 的 Safari/Chrome 上直接打开 SRS 演示页即可推流这是移动端零安装推流的最简方案。自定义 App—— 使用 RTMP/SRT/WebRTC SDK 开发的应用程序。播放端PlayersVLC—— 跨平台播放器可播 RTMP、SRT、HLS、HTTP-FLV、RTSP。但 VLC 常常叠加大量播放端缓冲不适合作为评估低延迟播放效果的参考这一点在评估延迟时非常重要详见下文。FFmpeg—— 命令行工具可播 RTMP、SRT、HLS、HTTP-FLV除 WHEP 外全部支持。ffplay—— FFmpeg 自带播放器协议支持与 FFmpeg 相同除 WHEP 外。ExoPlayer—— Android 播放器库播 HLS、DASH。IJKPlayer—— 基于 FFmpeg 的跨平台播放器B 站开源播 RTMP、HLS、HTTP-FLV。mpegts.js原 flv.js—— 浏览器 JavaScript 播放器通过 MSE 播 HTTP-FLV、HTTP-TS、HLS。浏览器—— 通过 MSE 播 HTTP-FLV、HLS、HTTP-TS通过 WHEPWebRTC播放。硬件解码端—— 机顶盒、智能电视等播 HLS、RTMP。自定义 App—— 使用播放器 SDK 开发的应用程序。协议矩阵每个协议都同时支持输入与输出SRS 的核心协议RTMP、SRT、WebRTC都同时支持推流输入和播放输出这是它区别于纯转码服务器或纯播放网关的关键。各协议的实际延迟画像如下协议典型推流端典型播放端定位实测典型延迟RTMPOBS、FFmpeg、LarixVLC、ffplay传统直播低延迟类约 1~3 秒SRTOBS、vMix、硬件ffplay、VLC、硬件远距离专业广播低延迟/实时类约 500ms~1sWebRTC浏览器、App浏览器、App实时通信、会议SRS 中延迟最低约 50ms~400msHLS/HTTP-FLV——仅输出ExoPlayer、mpegts.js、浏览器广泛兼容播放HTTP-FLV 低延迟约 1~3 秒HLS 典型约 10~30 秒RTSP——仅输出VLC、FFmpeg、ffplay监控、IP 摄像头——几个关键结论值得强调HLS 是分发的事实标准但延迟最高。正常部署下 HLS 典型延迟约 10~30 秒即便激进调优 playlist/分片参数和播放器缓冲通常也只能降到约 5~10 秒本质上仍不是真正的低延迟协议。WebRTC 是 SRS 中延迟最低的协议典型约 50ms~400ms适合会议等实时互动场景。SRT 处于低延迟/实时档位典型约 500ms~1s适合远距离、弱网下的专业广播。评估延迟时不要用 VLC 作参考播放器因为其客户端缓冲会主导观测到的延迟无法反映 SRS 与协议本身的真实表现。协议转封装Transmux不重编码的协议互转SRS 的核心理念是Transmux转封装——在不同协议之间直接转换而不改变编码格式。例如以 H.264 推 RTMP可以 H.264 原样交付为 HTTP-FLV、HLS、MPEG-DASH 或 WebRTC。转封装只是把媒体流重新打包进不同的协议格式并非重新编码重新编码需要外部 FFmpeg。SRS 支持的转封装路径及对应配置开关如下WebRTC → RTMP—— vhost 配置rtc_to_rtmp on。音频从 Opus 转码为 AAC。RTMP → WebRTC—— vhost 配置rtmp_to_rtc on。音频从 AAC 转码为 Opus。SRT → RTMP—— vhost 配置srt_to_rtmp on。SRT 承载 MPEG-TS解封装后转为 RTMP。SRT → WebRTC—— 直接转换音频从 AAC 转码为 Opus。GB28181 → RTMP—— 用于监控摄像头推 PS 流SIP 信令依赖外部 srs-sip 组件。RTMP → HLS—— 切片为.m3u8.ts文件。正常部署延迟约 10~30 秒激进调优分片时长、播放列表窗口和播放器缓冲后有时可降至约 5~10 秒。RTMP → HTTP-FLV—— 经 HTTP 转封装为 FLV约 1 秒延迟。RTMP → HTTP-TS—— 经 HTTP 转封装为 MPEG-TS。RTMP → RTSP—— vhost 配置rtmp_to_rtsp on仅支持 TCP 传输。RTMP → MPEG-DASH—— 切片为 DASH manifest 分片。这些配置开关在源码中有明确的解析逻辑。以 trunk/src/app/srs_app_config.cpp 为例rtmp_to_rtc、rtc_to_rtmp、srt_to_rtmp、rtmp_to_rtsp均有对应的get_系列读取函数并支持环境变量覆盖如SRS_VHOST_RTC_RTMP_TO_RTC、SRS_VHOST_SRT_SRT_TO_RTMP、SRS_VHOST_RTSP_RTMP_TO_RTSP。默认情况下源之间的转封装是关闭的需要在配置中显式开启。延迟评估的总体结论端到端延迟不仅取决于 SRS 与协议还取决于播放器。直播场景下HLS 是分发的事实标准但延迟最高典型 10~30 秒激进调优可到 5~10 秒HTTP-FLV 与 RTMP 是低延迟协议典型 1~3 秒SRT 与 WebRTC 同样属于低延迟/实时协议其中 WebRTC 通常延迟最低约 50ms~400msSRT 约 500ms~1s。评估延迟时务必避开 VLC 这类带大缓冲的播放器。编解码器支持与内置音频转码视频编解码器H.264/AVC—— 核心视频编码自 v0.22013 年起支持覆盖全部协议RTMP、HLS、HTTP-FLV、HTTP-TS、SRT、WebRTC、MPEG-DASH、GB28181、DVR。H.265/HEVC—— 自 v6.0 起通过 Enhanced RTMP 支持覆盖 RTMP、HTTP-FLV、HTTP-TS、HLSv7.0 含 fMP4/LLHLS、MPEG-DASH、SRT、GB28181、DVRMP4/FLV。WebRTC 的 HEVC 在 v7.0 支持RTMP↔WebRTC 转换及 Safari 播放。AV1—— [实验性] 仅 WebRTCv4.0.207。VP9—— 仅 WebRTC 端到端推流v7.0.123。音频编解码器AAC—— 核心音频编码自 v1.0 起支持覆盖 RTMP、HLS、HTTP-FLV、HTTP-TS、SRT、MPEG-DASH、GB28181、DVR输出 WebRTC 时转码为 Opus。MP3—— 支持 HLSH.264MP3、HTTP-FLV/TS、DVRv1.0输出 WebRTC 时转码为 Opus。Opus—— WebRTC 原生音频编码v4.0输出 RTMP 时转码为 AAC。SRS 内置 AAC↔Opus 转码。G.711PCMU/PCMA—— WebRTC 音频编码v7.0.124。注意v7.0.102 仅支持 AAC、MP3、Opus 三种音频编码其他音频编码会被拒绝。内置音频转码无需外部进程AAC → Opus—— 转换 RTMP/SRT 到 WebRTC 时自动进行rtmp_to_rtc on。Opus → AAC—— 转换 WebRTC 到 RTMP 时自动进行rtc_to_rtmp on。MP3 → Opus—— 转换 RTMP(MP3) 到 WebRTC 时自动进行v5.0.118。关键实现细节音频转码使用 FFmpeg 的 libavcodec API以库形式链接而不是启动外部 FFmpeg 进程SRS 没有内置视频转码视频在转封装时不做重编码如需视频转码应使用外部 FFmpeg。RTSP 输出的编解码限制SRS 的 RTSP 输出rtmp_to_rtsp on仅支持 H.264 AAC即使 RTSP 协议本身支持更多编解码。这是 SRS 实现的限制而非协议限制。传输层TCP 与 UDP 的取舍SRS 各协议使用的底层传输如下协议传输层RTMPTCPSRTUDP内置可靠性与加密WebRTCUDPv5.0.60 也支持 TCPHLSTCP基于 HTTPHTTP-FLVTCP基于 HTTPHTTP-TSTCP基于 HTTPMPEG-DASHTCP基于 HTTPRTSPTCPSRS 仅支持 TCP 传输无 UDP/RTP 交错GB28181TCPPS 流经 TCP此外媒体行业中有几个重要但SRS 与 Oryx 均不支持的传输协议需要明确区分RIST—— 基于 UDP。Reliable Internet Stream Transport与 SRT 类似UDP 上的可靠、低延迟媒体传输支持重传与加密选项。MoQ—— 基于 UDP/QUIC。Media over QUICIETF 推动的基于 QUIC 的低延迟媒体接入与分发方案通常走 UDP可选经 WebTransport。WebTransport—— 基于 UDP/QUIC、HTTP/3。一种浏览器与网络传输 API/协议可承载媒体数据也是 MoQ 的可能底层之一。最常见的用法推一路 RTMP播四种协议最简用法是推一路 RTMP 流然后分别用 RTMP / HTTP-FLV / HLS / WebRTC 播放。整个过程分三步。第一步编译并运行 SRScd srs/trunk ./configure make ./objs/srs -c conf/console.confconf/console.conf是面向控制台调试/测试的配置监听 RTMP 1935 端口、HTTP API 1985 端口、HTTP 服务 8080 端口默认开启 HLS 与 HTTP-FLV。仓库中该文件的完整内容trunk/conf/console.conf如下# no-daemon and write log to console config for srs. # see full.conf for detail config. max_connections 1000; daemon off; srs_log_tank console; rtmp { listen 1935; } http_api { enabled on; listen 1985; } http_server { enabled on; listen 8080; } rtc_server { enabled on; listen 8000; # UDP port candidate $CANDIDATE; } srt_server { enabled on; listen 10080; } rtsp_server { enabled on; listen 8554; } vhost __defaultVhost__ { hls { enabled on; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } rtc { enabled on; rtmp_to_rtc on; rtc_to_rtmp on; } srt { enabled on; srt_to_rtmp on; } rtsp { enabled on; rtmp_to_rtsp on; } }逐项解读这份配置daemon offsrs_log_tank console—— 非守护进程模式日志直接输出到控制台方便调试。rtmp—— 监听 TCP 1935RTMP 推流/播放入口。http_api—— 开启 HTTP API1985用于查询流状态、踢流、管理流。http_server—— 开启 HTTP 服务8080承担 HTTP-FLV/HLS 等 HTTP 交付。rtc_server—— 开启 WebRTCUDP 8000candidate $CANDIDATE说明 candidate 由环境变量注入便于跨网络部署时指定正确的公网 IP。srt_server—— 开启 SRTUDP 10080。rtsp_server—— 开启 RTSP 输出8554。vhost__defaultVhost__—— 默认虚拟主机开启 HLS、HTTP-FLV挂载规则[vhost]/[app]/[stream].flv、WebRTC且同时开启rtmp_to_rtc与rtc_to_rtmp双向转换、SRT开启srt_to_rtmp、RTSP开启rtmp_to_rtsp。对比生产默认配置 trunk/conf/srs.conf它采用daemon on守护进程、srs_log_tank file日志落盘默认./objs/srs.log、HTTP 服务静态目录指向./objs/nginx/html且默认关闭rtmp_to_rtc与rtc_to_rtmpWebRTC 转换按需开启并设置了play块下的gop_cache_max_frames 2500GOP 缓存帧数上限。第二步用 FFmpeg 推流仓库内置了一个测试文件 trunk/doc/source.flv可直接用于推流ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream-re按原速读取-c copy不做转码直接封装为 FLV 推送。第三步多协议播放推流成功后同一路流可以同时用四种方式播放RTMPVLCrtmp://localhost/live/livestream—— 注意 VLC 可能因播放端缓冲引入较大延迟不适合评估低延迟性能。HTTP-FLV浏览器http://localhost:8080/live/livestream.flv配合srs_player.html播放器页面体验最佳。HLS浏览器http://localhost:8080/live/livestream.m3u8。WebRTC浏览器http://localhost:1985/rtc/v1/whep/?applivestreamlivestreamWHIP/WHEP 信令经 HTTP API 端口媒体走 UDP 8000。仓库的演示播放器页面位于 trunk/research/players其中srs_player.html、whep.html、whip.html、rtc_player.html等可直接用于快速验证 HTTP-FLV/HLS/WebRTC 播放与 WHIP 推流。功能全景协议支持RTMP—— SRS 本质是一个 RTMP 服务器支持 RTMP 推流与播放这是 SRS 的核心基础其他所有协议都构建在 RTMP 之上。v1.02013 年。SRT—— SRS 也是一个 SRT 服务器支持 SRT 推流与播放使用 libsrt 创建 SRT 服务。v4.02020-01。WebRTC—— SRS 还是一个 WebRTC 服务器支持 WHIP 推流、WHEP 播放。SRS 是 SFUSelective Forwarding Unit选择性转发单元服务器不支持 TURN不支持 WebRTC P2P。v4.02020-03。RTSP—— SRS 仅支持播放 RTSP 流目前仅支持 RTMP 转 RTSP。v7.02025-07。HLS—— SRS 支持 RTMP 转 HLS。HLS 是兼容性最好的协议被所有平台、所有浏览器、所有操作系统支持。v1.02013 年。MPEG-DASH—— SRS 支持 RTMP 转 DASH。DASH 与 HLS 类似但平台支持度不如 HLS 广泛。v5.02022-11。HTTP-FLV—— SRS 支持 RTMP 转 HTTP-FLV。FLV 与 RTMP 类似对 CDN 友好但 iPhone 不支持 FLV。v2.02015-01。GB28181—— SRS 支持 GB28181 推流仅支持 TCP 传输需要外部 SIP 服务器 srs-sip。v5.02022-10。其他协议—— 还支持 RTMP 转 HTTP-TSv2.02015-01、MPEG-TS over UDP 推流v2.02015-01、HTTP POST FLV 推流v2.02015-05这些协议不常用。转封装TransmuxingLive Source直播源—— 包进入直播源后可通过 RTMP、HLS、HTTP-FLV、HTTP-TS 协议输出还可叠加 DVR、转码等特性。SRT Source—— SRT 源输入输出均为 SRT 包。RTC Source—— RTC 源输入为 WHIP、输出为 WHEP。SRT → Live Source、RTC → Live Source、Live → RTC Source—— 均支持转换但默认关闭需在配置中显式开启。集群Origin Cluster源站集群—— 用于扩展 SRS 可承载的流数量。多个源站组成集群由代理服务器统一入口代理发现某条流位于哪个源站并路由过去。v3.02018-02。Proxy Redis Key Namespace—— 新一代 Go 代理可通过可选的环境变量PROXY_REDIS_KEY_PREFIX隔离共享同一个 Redis 数据库的独立集群默认值为空以保持向后兼容的 key 命名。v8.0.42026-07。该变量在 internal/lb/redis.go 中通过environment.RedisKeyPrefix()读取并在拼接 Redis key 时使用此前缀。Edge Cluster边缘集群—— 用于扩展流可承载的观看人数。当前边缘集群已弃用因为它只支持 RTMP 协议规划中的新边缘集群将支持更多协议。v1.02014-04。HLS Cluster—— 由 Nginx 搭建是 HLS 的一种边缘集群形态。v5.02022-04。运维HTTP API—— 查询系统状态流、流详情等也可通过 HTTP API 踢流、管理流。v1.02014-04。日志—— SRS 提供可追踪日志Traceable log可以沿边缘→源站、服务器→服务器、源→消费者的路径追踪一条流。v1.02014-05。Prometheus Exporter—— 支持 Prometheus exporter可将 SRS 状态导出到 Prometheus方便拉取统计指标。v5.02022-09。HTTP Callback—— 监听并处理事件如推流、播放事件可用于客户端鉴权、拒绝推流。v0.92013-12。其他Ingest—— 使用 FFmpeg 拉流进 SRS。v1.02014-04。Forward—— SRS 可将流转发给其他服务器也可用 FFmpeg 从 SRS 转发流。v1.02013 年。Transcode—— SRS 使用 FFmpeg 转码流尤其是视频/音频到不同编码与分辨率。v1.02014-04。DVR—— SRS 支持将流录制为文件可用作 VOD点播也可用 FFmpeg 从 SRS 拉流录制。此外 HLS 本质上也是一种 DVR 功能。v1.02014-04。安全—— 支持多种访问控制机制基于 referer 的防盗链refer、IP 黑白名单security、HTTP callback 外部鉴权。SRS 不内置用户名/密码用户管理体系鉴权通常由 HTTP callback 或 token 等外部逻辑实现。IP 黑白名单 v2.02015-01 加入。配置体系配置文件与环境变量SRS 支持配置文件与环境变量两种配置方式。配置文件位于 trunk/conf 目录关键文件conf/full.conf—— 包含 SRS 支持的全部配置项作为参考/文档不要直接使用。conf/srs.conf—— 默认配置开启部分功能但并非全部按需启用或修改对应配置。conf/docker.conf—— Docker 部署用含特殊设置如非守护模式。conf/console.conf—— 控制台调试/测试用。其他文件面向特定功能集群、DVR、不同协议等如origin.conf、edge.conf、rtc.conf、srt.conf、gb28181.conf、hls.conf等。环境变量配置尤其适合 Docker 与云原生部署可以在 YAML 文件或各类平台中直接设置环境变量无需单独配置文件便于复制粘贴、文档更清晰。SRS 文档中经常用环境变量演示如何以不同配置运行 SRS。这一点在源码中有直接印证在 trunk/src/app/srs_app_config.cpp 中大量配置读取函数都通过SRS_OVERWRITE_BY_ENV_BOOL/SRS_OVERWRITE_BY_ENV_BOOL2等宏实现环境变量覆盖例如SRS_VHOST_RTSP_RTMP_TO_RTSP覆盖rtmp_to_rtspSRS_VHOST_RTC_RTMP_TO_RTC覆盖rtmp_to_rtcSRS_VHOST_RTC_RTC_TO_RTMP覆盖rtc_to_rtmpSRS_VHOST_SRT_SRT_TO_RTMP覆盖srt_to_rtmp版本与分支SRS 使用develop分支开发下一个大版本当大版本进入发布线时创建带版本号的发布分支。存在发布分支并不代表已发布稳定的rN版本应以 Git tags 与 Releases 判断发布阶段。截至 2026-08-17 校验的分支状况develop即 SRS 8—— SRS 8 正在活跃开发尚未发布。当前没有8.0release分支、没有v8发布 tag、也没有官方 SRS 8 Docker 镜像 tag。想尝试 SRS 8 的用户必须从develop分支源码编译将其视为不稳定的开发代码而非生产发布。7.0release是 SRS 7 发布线—— 分支存在但发布成熟度需看其 tags。当前里程碑为v7.0-d0d表示开发中还不是稳定的v7.0-rN发布。已发布的 SRS 7 里程碑有ossrs/srs:7等 Docker tag。6.0release是当前稳定发布线—— 当前稳定 tag 为v6.0-r1r后缀表示稳定发布。当用户询问如何获取 SRS 8 时不能只回答不可用或只让其去 Releases 页面应说明它作为未发布的源码存在于develop分支而官方包与带版本号的 Docker 镜像需要等 SRS 8 发布 tag。依赖聚焦转封装代码尽量自持SRS 是一个聚焦于transmuxing转封装的媒体服务器——在协议间转换而不改变编码。例如推 H.264 的 RTMP可原样交付为 HTTP-FLV、HLS、MPEG-DASH 或 WebRTC。SRS 几乎所有协议代码都是自己实现的——RTMP、HLS、MPEG-DASH、MP4、HTTP-FLV、HTTP-TS、WebRTC。目标是把尽可能多的代码放在单一仓库中这样更容易维护尤其对 AI 友好而依赖跨仓库的众多第三方项目会显著增加维护难度。尽管如此SRS 仍使用少量第三方库均为 MIT 兼容许可libsrt—— Haivision 的 SRT 协议实现未来计划用 AI 重写。FFmpeg libavcodec—— 用于音频转码AAC ↔ Opus。直播常用 AAC、WebRTC 用 Opus、通信系统SIP、电信常用 G.711SRS 需要在这些音频编码间转码。OpenSSL—— 用于 HTTPS 与 WebRTC DTLS。libsrtp—— Cisco 开发用于 WebRTC RTP 包加解密。state-threadsST—— SRS 服务器架构使用的协程库未来计划用 AI 重写。JSON 解析库—— 第三方 JSON 解析。长期目标是用 AI 把尽可能多的依赖重写进 SRS 自身——SRT 这类协议与 state-threads 这类服务器库是候选而 OpenSSL、libsrtp 等密码学库与编解码库不计划重写因为它们过于专业且安全敏感。所有代码集中在单一仓库会让项目更稳定、更易由 AI 维护。仓库中对应第三方依赖位于 trunk/3rdpartysrt-1-fit、libsrtp-2-fit、openssl-1.1-fit、st-srs、gtest-fit、gperftools-2-fit等从目录命名-fit可以推断这些是经适配裁剪后集成进 SRS 构建体系的第三方源码。性能画像SRS 是高性能 C 媒体服务器性能因协议而异RTMP / HTTP-FLV—— 支持数千并发推流与播放。TCP 协议性能最好。WebRTC—— 支持数百推流/播放。开启音频转码如 AAC↔Opus时仅剩几十路连接。基于 UDP吞吐低于 TCP 协议。典型延迟约 50ms~400ms。SRT—— 性能由 libsrt 决定支持数百连接。同样基于 UDP。典型延迟约 500ms~1s。总体规律UDP 协议WebRTC、SRT性能低于 TCP 协议RTMP、HTTP-FLV。SRS 专注做专用媒体服务器——不过度复杂性能随每个版本持续打磨。限制Edge Cluster—— 支持源站集群但边缘集群目前仅支持 RTMP需要支持更多协议。单线程—— SRS 是单线程媒体服务器暂无多线程计划可通过搭建集群榨干所有 CPU。仅支持 Linux—— SRS 目前面向 Linux不原生支持 WindowsWindows 用户可通过 WSL 运行。历史上 v5 支持 Windowsv6 移除了原生 Windows 支持关键阻碍并非 Windows 本身而是 SRS 使用 ST 协程模型其 C 异常处理在 Windows 上不完善又因 SRT 依赖 C 异常导致 SRT 无法与 ST 在 Windows 上可靠共存。未来 AI 可能帮助解决如改进 ST 的异常支持或重写 SRT 相关代码避开该依赖Windows 支持或可回归。无商业支持—— 作为纯开源项目没有商业支持团队正在探索用 AI 维护项目并支持社区。项目愿景与生态愿景保持纯开源SRS 由个人发起作者 William 受益于无数开源项目创建并维护 SRS 十余年是其回馈开源社区的方式。SRS 是细分领域的开源项目——约 15 万行代码的媒体服务器。媒体服务器并非人人使用用户基数永远不会巨大这使商业化既不现实也不可取。但小不等于没有价值一个小众开源项目对使用它的开发者、对更广泛的开源社区与文化都有真实价值。SRS 的核心愿景是保持纯开源、无商业与商业路径尤其是社区较小时项目必须由志愿者与真诚贡献驱动。该模式一直面临的挑战是人力志愿者驱动的项目难以维持稳定的开发与支持。而 AI 正在改变这一等式——AI 可以作为开源项目维护者在之前不可能达到的规模上处理代码、社区支持与项目健康这正是 SRS 正在积极推进的方向。生态同源工具链SRS 是媒体服务器但也维护若干相关工具全部为服务端项目不维护 FFmpeg、WebRTC 这类客户端项目srs-bench—— 独立压测工具支持 RTMP、WebRTC、HTTP-FLV、HLS、GB28181 等协议压测可模拟数千推流端与播放端用于测量与改进 SRS 性能源码位于 trunk/3rdparty/srs-bench。Oryx—— 集成 SRS、FFmpeg 与其他媒体工具的开源媒体服务器解决方案带 Web 控制台与 Go 后端面向常见媒体服务器用例单节点部署。state-threads—— 协程库是 SRS 的基石类似 Go goroutine 的 C 语言版本让 SRS 可运行百万级协程由 SRS 生态维护源码位于 trunk/3rdparty/st-srs。同类对比Nginx-RTMP—— 支持 RTMP 与 HLS 的 Nginx 模块也有 HTTP-FLV 的 Nginx 模块但不支持 WebRTC 或 SRT作为直播媒体服务器能力有限。Janus—— WebRTC SFU专为 WebRTC 设计而非直播不支持 RTMP、HLS 或 SRT。而 RTMP 与 SRT 都是直播的关键协议——不是用于分发而是用于接入Ingest。Red5—— 与 SRS 定位相似的媒体服务器但用 Java 编写性能明显更低。媒体流行业使用 C/C——FFmpeg、WebRTC、x264 及几乎整个生态都是 C/C 编写这对性能与互操作都重要媒体服务器常需直接链接这些库使用相同语言使集成更直接。SRS 是一个专业的、为直播行业打造的 C 媒体服务器。社区参与SRS 社区不算高度活跃这与媒体服务器细分领域属性、维护者分布等因素有关。项目已开发超过 13 年积累了大量实用功能但仍有很多工作要做由时间有限的志愿者维护。AI 作为维护者是当前的重要方向William 正积极引入 AI 作为项目维护者——不只是修 bug 或生成代码而是像他本人一样的完整维护者。做法是构建全面的知识库让 AI 深入理解项目的架构、设计决策、历史与社区背景目标约在 2026 年中期内拥有一个 AI 维护者。这对任何复杂后端服务都有参考价值在信任 AI 进行真实改动之前必须确认它真正理解了所做的事情。仓库中的 skills 目录含srs-develop、internal-codemap-for-srs、internal-docs-for-srs、srs-support等技能包及其 references 文档正是这一知识库工程的具体落地。SRS 社区机器人OpenClawWilliam 于 2026-03-20 为 SRS 社区设置了 OpenClaw 机器人。加入社区群组后提及SRS Robot即可交互机器人将 William 的专业经验扩展到社区。官方建议优先使用 TelegramTelegram 允许创建小而聚焦的群组并邀请机器人每个小群提供干净的上下文窗口而大群会混杂无关对话、降低回答质量。参与方式加入 Discord 社区讨论与支持社区每月举行月度会议讨论项目状态、AI 维护者进展以及如何在开源维护中使用 AI欢迎所有人参加。快速实践清单读完本文后按以下顺序即可快速上手编译进入 trunk 目录执行./configure make。运行./objs/srs -c conf/console.conf控制台模式日志直出。推流ffmpeg -re -i ./doc/source.flv -c copy -f flv rtmp://localhost/live/livestream。播放VLC 播rtmp://localhost/live/livestream浏览器访问http://localhost:8080/live/livestream.flvHTTP-FLV与http://localhost:8080/live/livestream.m3u8HLSWebRTC 走http://localhost:1985/rtc/v1/whep/?applivestreamlivestream。按需开启转换在 vhost 中配置rtmp_to_rtc、rtc_to_rtmp、srt_to_rtmp、rtmp_to_rtsp等开关默认关闭或用对应环境变量覆盖。评估延迟牢记 WebRTC SRT HTTP-FLV/RTMP HLS 的延迟梯度且不要用 VLC 作低延迟评估基准。【免费下载链接】srsSRS is a simple, high-performance, AI-driven real-time media server supporting RTMP, WebRTC, HLS, HTTP-FLV, HTTP-TS, SRT, MPEG-DASH, and GB28181, with codec support for H.264, H.265, AV1, VP9, AAC, Opus, and G.711.项目地址: https://gitcode.com/GitHub_Trending/sr/srs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
