当前位置: 首页 > news >正文

Ubuntu 环境下创建并启动一个 MediaMTX 的 systemd 服务

文章目录

  • 一、简介
  • 二、安装及使用
  • 三、创建系统服务
  • 小结

一、简介

MediaMTX 是一个现代、高性能、跨平台的 流媒体服务器,主要用于接收、转发、转码和分发 音视频流,支持多种协议。它的前身是 rtsp-simple-server,后来重命名为 MediaMTX,功能也变得更全面,不再局限于 RTSP。

二、安装及使用

  1. 参考github官网,选择合适的版本下载,解压后包含一个许可协议、一个mediamtx可执行程序以及一个yml配置文件。
    文件
  2. 参考官方主页,使用指令./mediamtx启动服务。但这样在前台中不利于生产环境使用,所以一般会创建mediamtx服务,这样可以更稳定、可控、自动化运行。
    启动服务

三、创建系统服务

  1. /etc/systemd/system目录下创建mediamtx.service文件并粘贴如下内容,ExecStart修改为实际的可执行文件路径,WorkingDirectory修改为可执行文件所在目录,在想要存放 日志文件 的目录下创建mediamtx.logmediamtx_error.log这两个文件并修改路径。

    [Unit]
    Description=mediamtx-Service
    After=network.target
    StartLimitIntervalSec=0
    StartLimitBurst=5[Service]
    ExecStart=/home/xxx/mediamtx/mediamtx
    Restart=always
    RestartSec=0
    WorkingDirectory=/home/xxx/mediamtx
    StandardOutput=append:/mnt/logs/mediamtx.log
    StandardError=append:/mnt/logs/mediamtx_error.log
    User=root
    Group=root[Install]
    WantedBy=multi-user.target
    
  2. 由于mediamtx.service指定了用户和组为root,所以需要确保文件所属对应的用户和组。读写权限一般是644就可以。

    sudo chown root:root /etc/systemd/system/mediamtx.service
    sudo chown root:root /mnt/logs/*.log
    
  3. 配置生效并设置开机自启。如果有 docker 的话,最好是将 mediamtx 安装并运行在宿主机中,让容器中的程序推送RTSP流到宿主机IP上的 mediamtx。另外,启动服务的时候要确认相关端口没有被占用,例如8888端口。

    # 重新加载 systemd 服务列表
    sudo systemctl daemon-reexec
    sudo systemctl daemon-reload# 启用开机启动
    sudo systemctl enable mediamtx.service# 立即启动服务(可选)
    sudo systemctl start mediamtx.service# 查看状态
    sudo systemctl status mediamtx.service
    
  4. 正常启动后,查看服务状态如下,如有Failederrorexited等关键词,可以在日志文件中查看具体原因。
    状态

  5. 可以在docker内通过ffmpeg指令测试将视频文件推流到 MediaMTX,并通过 VLC 拉取视频流验证传输是否正常。

    ffmpeg -re -i xxx.mp4 -c copy -f rtsp rtsp://mediamtx宿主机的ip:8554/live/stream1
    

小结

上述内容均参考官网及个人实践,如有其他问题欢迎在评论区讨论,谢谢!!

http://www.dtcms.com/a/297143.html

相关文章:

  • 缓存HDC内容用于后续Direct2D绘制.
  • 数据仓库深度探索系列 | 开篇:开启数仓建设新征程
  • 验证回文串-leetcode
  • Nginx简单介绍
  • 【STM32】Keil + FreeRTOS + HAL DMA + UART 空闲中断 接收异常
  • 【矩阵专题】Leetcode48.旋转图像(Hot100)
  • leetcode_122 买卖股票的最佳时机II
  • STM32与ADS1220实现多通道数据采集的完整分析和源程序
  • Comfyui中Upscale Image By 几种放大方法的区别
  • Java研学-RabbitMQ(三)
  • Centos7安装rabbitmq
  • RabbitMQ—HAProxy负载均衡
  • React性能优化终极指南:memo、useCallback、useMemo全解析
  • Ubuntu22 上,用C++ gSoap 创建一个简单的webservice
  • NineData 数据库 DevOps 全面支持 GaussDB,国产化管理再升级!
  • Spring Boot 自动装配底层源码实现详解
  • 国产DevOps平台Gitee:如何重塑中国企业研发效能新格局
  • Java 单元测试详解:从入门到实战,彻底掌握 JUnit 5 + Mockito + Spring Boot 测试技巧
  • react中 多个层级 组件数据同用 组件之间传值 usecontext useReducer
  • Gitee如何成为国内企业DevOps转型的首选平台?
  • 璞致 PZSDR-P101:ZYNQ7100+AD9361 架构软件无线电平台,重塑宽频信号处理范式
  • ERNIE-4.5-0.3B 实战指南:文心一言 4.5 开源模型的轻量化部署与效能跃升
  • 规则分配脚本
  • 初识JVM--从Java文件到机器指令
  • 中国开源Qwen3 Coder与Kimi K2哪个最适合编程
  • “磁”力全开:钕铁硼重塑现代科技生活
  • Linux 网络与 Vim 编辑器操作
  • 3D实景的概念、特点及应用场景
  • 从“人工眼”到‘智能眼’:EZ-Vision视觉系统如何重构生产线视觉检测精度?
  • AI与区块链融合:2025年的技术革命与投资机遇