尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

MediaMTX 流媒体服务器完整教程:5 分钟把 RTSP 摄像头送上网页低延迟播放

MediaMTX 流媒体服务器完整教程:5 分钟把 RTSP 摄像头送上网页低延迟播放 MediaMTX 流媒体服务器完整教程5 分钟把 RTSP 摄像头送上网页低延迟播放【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx安保室的监控摄像头只会说 RTSP而网页管理端却想要秒级延迟的画面两者之间的缺口需要一台流媒体服务器来补。MediaMTX 就是这样一台即开即用的流媒体服务器它由 Go 编译成单个可执行文件、没有任何运行时依赖覆盖 RTSP、RTMP、HLS、WebRTC、SRT、MoQ 等多种协议的实时转发用 Docker 一条命令部署后就能把摄像头推来的 RTSP 流转成浏览器直接可播的 HLS 或 WebRTC。 特性速览动手前先看这张表项目内容部署形态单文件可执行程序零依赖Docker 镜像同步维护协议覆盖RTSP / RTMP / LL-HLS / WebRTC / SRT / MoQMedia over QUIC/ RTP / MPEG-TS默认端口RTSP8554、RTMP1935、HLS8888、WebRTC8889、SRT8890配置方式单个mediamtx.yml任意参数均可用MTX_*环境变量覆盖热重载保存配置文件即被自动检测并生效不中断已有连接录制回放按路径录制分段落盘独立回放服务运行在9996端口按需与转发有人观看才拉流、无人自动断开可前推到外部 RTSP / RTMP / SRT / WebRTC 服务器运维接口Control API9997、Prometheus 指标9998 三命令跑通最短链路FFmpeg 推流浏览器验证第一步拉起容器并映射核心端口docker run --rm -it \ -p 8554:8554 -p 1935:1935 -p 8888:8888 -p 8889:8889 \ bluenviron/mediamtx:1第二步用 FFmpeg 把任意本地视频循环推入 RTSP 端口ffmpeg -re -stream_loop -1 -i file.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream第三步验证结果。浏览器打开http://localhost:8888/mystream出现画面即说明 RTSP 输入已经转成 HLS 输出VLC 里播放rtsp://localhost:8554/mystream则证明同一路流被两种协议同时读取。至此一条典型的 RTSP 转 HLS 链路已经在你机器上跑通。 顺着一条流的旅程走一遍从推入到上屏比起先背架构图跟着一个视频帧的行程更直观推入。发布端经 RTSP、RTMP、SRT、WebRTC 或 MoQ 任一协议建立连接接入层internal/servers/下各协议子目录完成握手并接收首帧。翻译。协议数据包在internal/protocols/里被解复用为统一的内部媒体流视频轨H.264、H.265、AV1 等、音频轨和一条统一时间线。全程只拆包重封不做转码所以延迟和画质都取决于源流本身。分发。中枢 internal/core/path_manager.go 维护着“一条路径、一个源、多个读取端”的关系表。每来一个读取端就动态长出对应输出HLS 复用器切分 TS/fMP4 分片、WebRTC 建立 PeerConnection 发送 RTP、RTMP 重新封装。各读取端互相独立互不干扰。落盘与外发。同一条流还可以被录制器写进磁盘、被 forward 机制推到外部服务器、被回放服务索引全部由配置开关决定。 场景一监控摄像头接进网页管理端需求摄像头只输出 RTSP前端要求低延迟、跨端可播。怎么配在mediamtx.yml的paths下登记这条流服务器会自动去拉paths: cam1: source: rtsp://user:pass192.168.1.64:554/stream1读者得到什么无需再写任何采集端代码http://主机:8889/cam1是 WebRTC 播放地址延迟最低http://主机:8888/cam1是 LL-HLS 地址默认即为 lowLatency 变体通常在秒级延迟内出画面。 场景二直播留存 按时间段回放需求直播过程要可追溯事后能按时间点回看。怎么配给路径打开录制再全局启用回放服务paths: cam1: record: yes recordFormat: fmp4 recordDeleteAfter: 7d playback: yes playbackAddress: :9996分片按recordPath模板默认./recordings/%path/%Y-%m-%d_%H-%M-%S-%f_%z自动切段写盘recordDeleteAfter负责到期清理。回放服务的实现位于internal/playback/它提供两个端点http://主机:9996/list?pathcam1列出可回放的时段/get?pathcam1start...duration...按时段取流。读者得到什么输出是 fMP4 格式可直接塞进网页video标签播放实现“直播 录像 回放”三合一。 场景三按需拉流与多节点就近分发需求流源不稳定或不想空耗带宽且多地用户都来看。怎么配sourceOnDemand: yes有人读才建立拉流连接读端清零一段时间后自动断开省掉空窗期的带宽runOnDemand更进一步用自定义命令比如一条 FFmpeg 指令在首次有人读时临时拉起推流源forward列表把本路径的流同时推到别的 RTSP / RTMP / SRT / WebRTC WHIP 目标一配多用。读者得到什么带宽按需付费跨机房部署时用 Control API 动态把远端流 URL 注册成本地路径让各节点承接就近流量拓扑规划见 docs/2-features/19-scalability.md。✅ 上线前必查清单认证、监控、扩展认证authInternalUsers别保留默认的user: any改为按用户分配凭据权限按动作拆分publish推流、read读流、playback回放分别授权敏感路径叠加path限制支持~前缀的正则与ips白名单已有企业身份体系时切换authJWTJWKSJWT JWKS 公钥或authHTTPAddressHTTP 回调监控api: true打开9997Control API可随时查看路径状态、在线增删路径metrics: true打开9998Prometheus 接口接入现有告警扩展确认单机出口带宽覆盖多路流的并发读流量多站点部署前读一遍 scalability 文档规划边缘节点与动态路径注册 故障排查速查表症状—原因—动作症状可能原因解决动作容器内 RTSP 读流卡死、收不到帧Docker 网络栈改写了 UDP 报文源信息RTSP 的 UDP 传输判断错了对端地址启动参数追加-e MTX_RTSPTRANSPORTStcp强制 TCP或改用--networkhost绕过容器网络WebRTC 握手成功却黑屏8189UDP 端口未放行或webrtcAdditionalHosts里没有客户端可达的 IP放行该 UDP 端口并把宿主机对外 IP 填入webrtcAdditionalHostsiOS / macOS 上 LL-HLS 不出画面Apple 设备要求 Low-Latency HLS 走 HTTPS开启hlsEncryption: true并配好证书临时方案是把hlsVariant换成mpegts改了mediamtx.yml部分参数不生效该参数不在热重载范围内如全局监听地址保存配置后等待自动检测生效涉及监听地址的改动需重启容器或进程 延伸阅读与下一步官方起步路径安装、升级、首次使用见 docs/1-kickoff/全部配置项的完整字典docs/5-references/1-configuration-file.md想理解回放如何拼回时间轴直接翻internal/playback/的源码先按“三命令跑通最短链路”在本地跑通一条 RTSP 转 HLS看到画面后再按需开启录制、认证与监控——这就是掌握单文件流媒体转发部署的最短路线。【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表