流媒体服务mediamtx和FFMpeg工具链联合实验

环境准备

  1. Windows系统
  2. Linux系统,如Ubuntu或centos
  3. Windows下gitbash终端
  4. Linux系统,安装golang1.25以上

一、Mediamtx

不支持windows构建

需要golang1.25.x版本以上,可以绕开docker方式构建,具体如下

1.1 下载构建

bash 复制代码
git clone https://github.com/bluenviron/mediamtx.git

cd mediamtx

go build -tags enableUpgrade -o bin/mediamtx

1.2 启动

bash 复制代码
./bin/mediamtx

输出

media 复制代码
2026/01/15 10:20:48 INF MediaMTX v1.15.6-18-c14fe778, linux, amd64
2026/01/15 10:20:48 INF configuration loaded from /root/webrtc/mediamtx/mediamtx.yml
2026/01/15 10:20:48 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2026/01/15 10:20:48 INF [RTMP] listener opened on :1935
2026/01/15 10:20:48 INF [HLS] listener opened on :8888
2026/01/15 10:20:48 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2026/01/15 10:20:48 INF [SRT] listener opened on :8890 (UDP)

二、FFmpeg

2.1 下载 & 解压

官网下载链接可能不定期变更

下载地址

选择ffmpeg-7.1.1-essentials_build.zip, 下载并解压到D盘根目录D:\ffmpeg-7.1.1-essentials_build

2.2 准备mp4视频文件

下载并保存到ffmpeg的解压目录下,如D:\ffmpeg-7.1.1-essentials_build\test.mp4

2.3 切换工作目录

workspace 复制代码
cd D:\ffmpeg-7.1.1-essentials_build

2.4 推流 & 拉流

ip部分替换为实际环境地址

2.4.1 推流-贴片计数器

**ffmpeg** 复制代码
./bin/ffmpeg.exe -re -stream_loop -1 -i test.mp4 -vf "drawtext=fontsize=40:timecode='00\:00\:00\:00':r=25" -c:v libx264 -an -f rtsp rtsp://<ip>:8554/mystream

输出

yaml 复制代码
264 -an -f rtsp rtsp://106.14.92.45:8554/mystream
ffmpeg version 7.1.1-essentials_build-www.gyan.dev Copyright (c) 2000-2025 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fon
tconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enab
le-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-l
ibx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass
--enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --
enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --ena
ble-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb
 --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-li
bopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.101 / 61. 19.101
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'test.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.41.100
  Duration: 00:00:35.23, start: 0.000000, bitrate: 787 kb/s
  Stream #0:0[0x1](eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 300x168, 784 kb/s, 30 fps, 30 t
br, 15360 tbn (default)
      Metadata:
        handler_name    : ?Mainconcept Video Media Handler
        vendor_id       : [0][0][0][0]
Fontconfig error: Cannot load default config file: No such file: (null)
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Press [q] to stop, [?] for help
Fontconfig error: Cannot load default config file: No such file: (null)
[libx264 @ 000001b629b06cc0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 000001b629b06cc0] profile High, level 1.3, 4:2:0, 8-bit
[libx264 @ 000001b629b06cc0] 264 - core 164 r3204 373697b - H.264/MPEG-4 AVC codec - Copyleft 2003-2025 - http://www.v
ideolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 m
ixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=5
lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyra
mid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0
rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, rtsp, to 'rtsp://106.14.92.45:8554/mystream':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf61.7.100
  Stream #0:0(eng): Video: h264, yuv420p(tv, progressive), 300x168, q=2-31, 30 fps, 90k tbn (default)
      Metadata:
        handler_name    : ?Mainconcept Video Media Handler
        vendor_id       : [0][0][0][0]
        encoder         : Lavc61.19.101 libx264
      Side data:
        cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A

2.4.2 播放-贴片计数器

ffplay 复制代码
 ./bin/ffplay.exe  rtsp://<ip>:8554/mystream

输出

相关推荐
qq_12498707532 小时前
基于SSM框架的智能密室逃脱信息管理系统(源码+论文+部署+安装)
java·大数据·人工智能·spring boot·后端·毕业设计·计算机毕业设计
掉鱼的猫2 小时前
从 Chat 到 Agent:Solon AI 带你进入“行动派”大模型时代
后端
vivo互联网技术2 小时前
vivo 微服务架构实践之 Dubbo 性能优化
java·后端·微服务·中间件·dubbo
仙俊红2 小时前
Spring 构造器注入 vs 字段注入
java·后端·spring
0和1的舞者2 小时前
Spring 事务核心知识点全梳理(编程式 + 声明式 + 注解详解)
java·后端·spring
风象南2 小时前
Spring Boot 中使用 JSONPath 高效处理 JSON 数据
后端
用户695619440373 小时前
PageOffice最简集成代码(SpringMVC)
java·后端
程序员爱钓鱼3 小时前
Node.js 编程实战:博客系统 —— 用户注册登录与文章管理
前端·后端·node.js
掘金者阿豪3 小时前
在Java项目中,如果没有使用Redis相关的代码或依赖,但在 `application.yaml` 配置文件中配置了Redis参数,项目启动时是否会报错
后端