【工具软件】mediamtx:在网页、vue3项目中播放 rtsp 视频流(支持265转码)

本文介绍了如何在Web页面中通过Medimtx实操播放RTSP视频流,包括安装ffmpeg、配置MedimtxAPI、接口调用示例以及服务端部署建议,重点强调Medimtx的广泛支持和HLS的使用注意事项。

声明

本文只做 mediamtx 的使用实操,请务必参考下面的博客,,我也参考下面的大佬博客,感谢@唯一602的无私分享:
在web页面中直接播放rtsp视频流,重点推荐:mediamtx,不仅仅是rtsp

mediamtx 介绍

官方文档
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
从介绍我们可以看到,支持的格式特别多,因此我也很推荐用这个来做 rtsp 的方案。

windows 本地使用

安装 ffmpeg

教程请自行百度,可以参考:
ffmpeg安装教程(windows版)

下载和运行 mediamtx_v1.0.0

请参考这篇博客关于安装和基础运行的部分内容:
在web页面中直接播放rtsp视频流,重点推荐:mediamtx,不仅仅是rtsp

注意:API配置设为yes,apiAddress是api的地址和端口号,默认127.0.0.1:9997,可以使用本机IP,0.0.0.0表示127.0.0.1和本机实际IP都可以访问

项目中使用

个人建议项目中使用的话,采用接口调用的方式,官方接口文档

根据上面博客的介绍,核心有三个接口:
注意,查询添加删除的接口调用的端口地址默认是:8889

import mediamtx_request from './mediamtx_request'; // axios 封装

// 查询所有流
export function getAllMediaStream() {
   
   
  return mediamtx_request({
   
   
    url: '/v2/paths/list'
<think>我们被要求提供关于MediaMTX的介绍和使用说明。MediaMTX(原名rtsp-simple-server)是一个开源的实时媒体服务器和代理,支持多种流媒体协议,如RTSP、RTMP、HLS等。它设计轻量、高效,易于部署,适用于实时视频流传输和处理。 </think> ### MediaMTX 全面解析:实时流媒体服务器的核心功能与部署指南 MediaMTX(原名 **rtsp-simple-server**)是一款轻量级开源实时流媒体服务器,专为处理**RTSP、RTMP、HLS、WebRTC**等流协议设计。其核心定位是作为**媒体中转站**(Media Multiplexer),实现流媒体的接收、转码、分发和录制,特别适用于物联网设备监控、直播系统等场景[^1]。 --- #### 一、核心特性与技术优势 1. **协议支持矩阵** | 输入协议 | 输出协议 | 应用场景 | |---------|---------|----------| | RTSP/RTP | RTMP, HLS, WebRTC | 安防摄像头转直播推流 | | RTMP | HLS, SRT | 直播平台信号转换 | | H.265/HEVC | H.264 转码 | 兼容旧设备播放 | ```mermaid graph LR A[摄像头/设备] -- RTSP --> B(MediaMTX) B-- HLS --> C[iPhone用户] B-- WebRTC --> D[浏览器] B-- SRT --> E[远程演播室] ``` 2. **关键技术创新** - **Zero-Copy架构**:内存中转流数据,避免磁盘I/O瓶颈 - **动态转码**:按需将H.265转为H.264(通过FFmpeg) - **API驱动配置**:所有操作通过REST API控制(默认端口`9997`) - **低延迟模式**:WebRTC传输延迟 < 500ms --- #### 二、快速部署指南(以Ubuntu为例) 1. **二进制安装** ```bash wget https://github.com/aler9/mediamtx/releases/download/v1.4.0/mediamtx_v1.4.0_linux_amd64.tar.gz tar xvf mediamtx_v1.4.0_linux_amd64.tar.gz ./mediamtx ``` 2. **Docker部署** ```bash docker run -p 1935:1935 -p 8554:8554 -p 8888:80 aler9/mediamtx ``` 3. **配置文件示例**(`mediamtx.yml`) ```yaml paths: cam1: source: rtsp://admin:pass@192.168.1.100:554/stream1 sourceOnDemand: yes live: source: rtmp://localhost/live ``` --- #### 三、典型应用场景实现 1. **摄像头转HLS直播** ```bash # 启动服务后通过API创建转发规则 curl -X POST http://localhost:9997/v3/config/paths/add/mystream \ -d &#39;{"source": "rtsp://cam_ip:554", "sourceProtocol": "rtsp"}&#39; # 播放地址:http://服务器IP:8888/mystream/index.m3u8 ``` 2. **WebRTC低延迟监控** ```javascript // 前端使用WebRTC播放 import { Player } from &#39;rtsp-relay/browser&#39;; const player = new Player({ url: &#39;ws://服务器IP:8889/mystream&#39;, canvas: document.getElementById(&#39;video&#39;) }); ``` 3. **云端录制存储** ```yaml paths: record: source: rtsp://cam_ip:554 record: true recordPath: ./archive/%Y-%m-%d_%H-%M-%S.mp4 ``` --- #### 四、性能优化策略 1. **硬件加速转码** 在配置中启用NVENC: ```yaml paths: h264_stream: source: rtsp://cam_ip:554 runOnInit: ffmpeg -i rtsp://localhost:$RTSP_PORT/$MTX_PATH -c:v h264_nvenc -profile high -f rtsp rtsp://localhost:$RTSP_PORT/transcoded ``` 2. **负载均衡方案** ```mermaid graph TB A[边缘节点1] --> C[CDN] B[边缘节点2] --> C C --> D[用户] ``` --- #### 五、故障排查命令 | 问题现象 | 诊断命令 | 解决方案 | |----------|----------|----------| | 流无法拉取 | `curl -v http://localhost:9997/v3/paths` | 检查`source`地址可达性 | | 高延迟 | `ffprobe -show_frames rtsp://server/stream` | 启用`lowLatency`模式 | | 转码失败 | `docker logs mediamtx | grep ffmpeg` | 验证FFmpeg版本兼容性 | > **安全建议** > - 启用API认证:`api: true` + `apiUser: admin` + `apiPass: $2y$05$...`(bcrypt加密)[^2] > - 限制IP访问:`readIPs: [192.168.1.0/24]` > - 定期更新:每月检查[GitHub Release](https://github.com/aler9/mediamtx/releases) 通过API驱动架构和轻量化设计,MediaMTX在树莓派等设备上可处理20路以上720p流,是嵌入式媒体系统的理想选择。其实时转码能力大幅降低了终端适配成本[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值