环境准备
- Windows系统
- Linux系统,如Ubuntu或centos
- Windows下gitbash终端
- 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
输出
