Lazy loaded image
🗒️在web页面使用mediamtx流媒体服务器播放rtsp视频流
字数 846阅读时长 3 分钟
2026-2-11
2026-2-11
type
Post
date
Feb 11, 2026
status
Published
slug
post-79
summary
在web页面使用mediamtx流媒体服务器播放rtsp视频流
tags
小技巧
工具
category
技术分享
password
icon

1、使用背景

先说优点:
1、不管是在windows还是linux,安装和使用都极其简单; 2、作者写的文档比较详细,使用过程中遇到的问题很少,不需要去参考其他文档; 3、在github上进行提问以及bug提交作者都能回复并及时修复bug,非常赞; 4、支持rtsp、rtmp、hsl;并且延迟处理的比较好; 5、集成webrtc可直接播放视频; 6、可进行视频访问加密处理;

2、安装ffmpeg

这个比较简单,网上教程也比较多,此处不做介绍。
ubuntu18.04上安装ffmpeg5.1可以参考:

3、下载运行mediamtx

下载地址:mediamtx下载地址
运行方式:
  • windows直接双击mediamtx.exe;
  • linux下在当前目录直接运行sudo ./mediamtx
 

4、功能介绍

mediamtx.yml文件的配置:
  1. 日志:
    1. 默认日志的logDestinations配置的是logDestinations,可加入file保存为日志文件;日志文件保存在当前目录下
  1. API:
    1. API配置设为yes,apiAddress是api的地址和端口号,默认127.0.0.1:9997,可以使用本机IP,0.0.0.0表示127.0.0.1和本机实际IP都可以访问
  1. 视频流:
    1. 此处介绍一下rtsp,其他的一样,protocols中使用的协议可以根据设置的先后顺序进行优先排序
  1. webrtc
    1. 使用webrtc可以直接在网页中浏览视频
  1.  配置现有非H265视频流
    1. 如果你的需求是能直接在网页中播放H264的rtsp或者其他视频流,stream01是你起的名字,source是视频流地址,在此处配置后可直接访问,使用webrtc直接访问:http://127.0.0.1:8889/stream01就能出来视频
  1. 配置使用ffmpeg转换流
    1. runOnInit:配置ffmpeg转换命令,服务器启动后就一直在后台执行转换命令,使用webrtc直接访问:http://127.0.0.1:8889/stream11就能出来视频
    2. runOnDemand:配置ffmpeg转换命令,只有在调用流时才会执行转换命令,
    3. 使用webrtc直接访问:http://127.0.0.1:8889/stream22 时,或者播放rtsp://127.0.0.1:8554/stream22时才会调用ffmpeg转换命令,还可以调整runOnDemandCloseAfter参数来配置不调用后关闭执行转换命令的时间

      5、API使用

      API文档:https://bluenviron.github.io/mediamtx/ 1、 http://127.0.0.1:9997/v2/paths/list 查看当前的视频流,包括yml里面配置的和通过api添加的
      2、 http://127.0.0.1:9997/v2/config/paths/add/stream11,此处我使用postman演示调用api。 (1)添加一个现有的视频流,添加后访问http://127.0.0.1:8889/stream11
      (2)添加一个使用ffmpeg转换的视频流
      我这个ffmpeg命令是把原来H265的视频转换为H264的rtsp视频流,访问http://127.0.0.1:8889/stream12,简单说明一下我使用的参数: -vcodec libx264 输出流为h264格式 -b:v 1024k 视频码流 -vf scale=1280:720 分辨率 -bf 0 禁用B帧,因为webrtc在网页调用时控制台一直输出 WebRTC doesn’t support H264 streams with B-frames,没有此问题的可以不设置
      (3)http://192.168.234.133:9997/v2/config/paths/remove/stream11 ,删除stream11流,remove后面的参数就是要删除的名字
 

6、参考链接

 
上一篇
Ollama简单安装使用教程
下一篇
VScode实现本地与远端同步开发