使用docker运行mediamtx


前言

mediamtx官方作者提供了docker的镜像,如下图,但是现在想要使用ffmpeg+RPI的版本无法下载,本文介绍使用ubuntu镜像运行mediamtx,开机docker运行时,自启动mediamtx。
mediamtx官方docker


一、安装docker

我是在ubuntu18.04上安装的docker

1、安装docker

sudo apt update
sudo apt install docker.io

测试:

sudo docker info

2、免sudo使用docker

cat /etc/group
# 在最下面可以看到docker group
sudo gpasswd -a 用户名 docker
#把用户添加到docker group

执行添加用户到docker组以后需要重启系统重新登录

3、更换镜像源

sudo vim /etc/docker/daemon.json

添加如下内容:(我用的是阿里的,需要自己注册使用自己的地址)

{
  "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}

重启docker

sudo systemctl restart docker

测试:

sudo docker info

可以看到最下面多了镜像

 Registry Mirrors:
  https://xxxxxxx.mirror.aliyuncs.com/

二、创建ubuntu容器并安装mediamtx且自启动

1、下载解压并配置mediamtx

在宿主机的/usr/local/mediamtx的目录下放置mediamtx的安装包,然后解压,并配置好yml文件相关内容。参考:mediamtx使用说明 https://blog.youkuaiyun.com/haixiangyun/article/details/132489160

2、创建mediamtx-start.sh文件作为mediamtx启动文件

在/usr/local/mediamtx/目录下

sudo vim mediamtx-start.sh

写入内容:

#!/bin/sh
/usr/local/mediamtx/mediamtx /usr/local/mediamtx/mediamtx.yml

3、创建容器

docker run -d -p 8889:8889 -p 8554:8554 -v /usr/local/mediamtx/:/usr/local/mediamtx/ -v /etc/localtime:/etc/localtime --restart=on-failure --name=ubuntu-mediamtx ubuntu:18.04 bash /usr/local/mediamtx/mediamtx-start.sh
  • -d 在后台运行
  • -p 端口映射,根据实际需求映射,我这儿使用rtsp映射8554;使用webrtc映射8889
  • -v 目录映射,/usr/local/mediamtx/为mediamtx的目录,映射后方便查看,可在本地修改mediamtx配置和查看日志; 映射/etc/localtime为同步时区
  • –restart 重启方式,不设置或者设置为no的话无法开机自启动
  • –name 给容器命名
  • bash /usr/local/mediamtx/mediamtx-start.sh :启动时使用bash命令执行我们创建的.sh文件

三、安装ffmpeg

根据自己的需求如果需要安装ffmpeg,可进入镜像中安装ffmpeg
参考:ubuntu18安装ffmpeg5 https://blog.youkuaiyun.com/haixiangyun/article/details/132583757

总结

刚开始想在创建的ubuntu18.04的镜像中使用systemctl做开启自启动mediamtx,但是镜像的目的是隔离,镜像中不支持systemctl,因此可以写启动脚本,在容器运行是执行开启脚本。

<think>嗯,用户想了解如何使用MediaMTX实现RTSP或HLS视频流传输。首先,我需要回顾一下MediaMTX的基本信息。根据引用[1],MediaMTX是一个轻量级的流媒体服务器,适合测试RTSP/RTMP等协议,但功能相对简单,不适合生产环境。用户可能是在寻找一个简单的解决方案来测试或开发,而不是部署到实际应用中。 接下来,我需要整理安装和配置MediaMTX的步骤。引用[3]提到了FFmpegMediaMTX结合使用,将本地摄像头推流成RTSP流。所以安装MediaMTX的方法可能包括直接下载二进制文件或者通过Docker安装,因为这类工具通常提供这两种方式。此外,用户可能需要知道如何启动服务器,默认配置是否足够,或者是否需要调整端口等参数。 然后是推流和拉流的具体操作。FFmpeg是常用的推流工具,用户需要知道如何编写推流命令,指定输入源(比如摄像头)、编码参数和输出地址。例如,使用FFmpeg将摄像头数据推送到MediaMTX的RTSP地址。同时,拉流部分需要说明不同的协议如何访问,比如RTSP、HLS、WebRTC等,可能需要给出示例URL,如rtsp://服务器地址/流名称,或者HLS的m3u8地址。 另外,用户提到HLS,可能需要解释HLS的特点,比如基于HTTP,适合自适应码率,以及如何在MediaMTX中启用或配置HLS支持。不过根据引用内容,MediaMTX本身支持HLS,所以可能需要确认是否需要额外配置,比如生成m3u8文件和ts分片的位置。 安全配置方面,引用[2]提到RTSPS是RTSP的加密版本,但MediaMTX是否支持TLS/SSL可能需要查阅文档。如果用户需要安全传输,可能需要配置证书或使用其他支持RTSPS的服务器,如ZLMediaKit。 最后,用户可能需要与其他工具对比,比如SRS或ZLMediaKit,但根据问题,用户明确想用MediaMTX,所以应专注于它的使用方法。同时,生成相关问题时要考虑用户可能的后续疑问,比如性能优化、多路推流、日志调试等。 总结步骤:安装、启动、推流、拉流、HLS配置、安全注意事项,以及可能的问题排查。需要确保命令示例正确,路径和参数与实际环境匹配,比如Linux下的摄像头设备路径通常是/dev/video0。另外,提醒用户检查防火墙设置,确保端口开放,避免连接问题。</think>### 如何配置MediaMTX实现RTSP/HLS视频流传输? #### 一、安装与启动MediaMTX 1. **直接下载二进制文件** MediaMTX提供预编译的Linux/Windows/macOS版本,从[GitHub仓库](https://github.com/bluenviron/mediamtx/releases)下载对应系统的压缩包,解压后运行可执行文件即可[^1]。 2. **通过Docker运行** 使用以下命令快速启动容器: ```bash docker run -p 8554:8554 -p 1935:1935 bluenviron/mediamtx ``` 默认开放RTSP端口`8554`和RTMP端口`1935`。 --- #### 二、推流与拉流操作 1. **使用FFmpeg推流到RTSP** 假设本地摄像头设备为`/dev/video0`,推送RTSP流的命令如下: ```bash ffmpeg -f v4l2 -i /dev/video0 -c:v h264 -f rtsp rtsp://localhost:8554/mystream ``` - `-f v4l2`:指定视频输入设备为Linux摄像头 - `rtsp://localhost:8554/mystream`:目标RTSP地址,`mystream`为自定义流名称[^3]。 2. **拉取RTSP流** 使用VLC或FFplay播放: ```bash ffplay rtsp://服务器IP:8554/mystream ``` 3. **生成HLS流** MediaMTX默认自动生成HLS流,通过HTTP访问: ```bash http://服务器IP:8888/mystream/index.m3u8 ``` HLS分片文件存储在`/tmp/mediamtx`目录下。 --- #### 三、配置文件调整(可选) 编辑`mediamtx.yml`可自定义参数: ```yaml rtspPort: 8554 # 修改RTSP端口 hls: # HLS配置 segmentDuration: 4 # 分片时长(秒) allowOrigin: "*" # 允许跨域访问 ``` --- #### 四、安全与限制说明 1. **协议支持** MediaMTX支持RTSP、RTMP、HLS、WebRTC等协议,但**不支持RTSPS加密传输**,需通过反向代理(如Nginx)实现HTTPS[^2]。 2. **性能限制** 适用于低并发测试场景,生产环境建议使用ZLMediaKit或SRS,支持GB28181、WebRTC等复杂功能。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值