rtsp-simple-server安装,MediaMTX)
文章目录rtsp-simple-server现已更名 MediaMTX完整安装使用重要说明一、Docker 一键部署推荐5秒启动方案1host网络UDP/TCP全兼容推荐方案2端口映射服务器多容器共存时用强制仅TCP常用容器命令二、Linux 二进制安装x86/ARM1. 下载对应架构包2. 解压启动目录文件说明三、Windows 安装四、核心配置修改解决你ffmpeg写头报错五、MP4文件推RTSP标准命令适配MediaMTX规避 Could not write header1. 转码版90%报错直接修复优先测试2. 循环播放MP43. ffplay拉流验证六、Java ProcessBuilder 管道MP4推RTSP完整可用命令数组七、防火墙放行端口Linux八、对比 SRS / ZLMediaKit九、常见报错排查这一期我们继续讲支持RTP的流媒体服务。这相当于我们组装一个电脑要用到的CPU我们做流媒体开发实际上是做外围的PCB板。最后让我们的这个核心CPU能用起来。因此多介绍几种CPU对我们了解流媒体开发有很重要的作用rtsp-simple-server现已更名 MediaMTX完整安装使用重要说明原项目rtsp-simple-server已改名MediaMTX仓库地址https://github.com/bluenviron/mediamtx功能完全一致单文件无依赖原生支持RTSP推流(ANNOUNCE)、RTMP、HLS、WebRTC专门用来测试你 MP4/H264 推RTSP报错场景。一、Docker 一键部署推荐5秒启动方案1host网络UDP/TCP全兼容推荐dockerrun-d\--namemediamtx\--restartalways\--networkhost\bluenviron/mediamtx:latest--networkhost解决UDP RTP端口映射错乱推流不会花屏/断开。方案2端口映射服务器多容器共存时用强制仅TCPdockerrun-d\--namemediamtx\--restartalways\-eMTX_PROTOCOLStcp\-p8554:8554# RTSP端口-p1935:1935# RTMP端口-p8888:8888# HLS/HTTPbluenviron/mediamtx:latest常用容器命令# 实时日志排查ffmpeg报错dockerlogs-fmediamtx# 停止/重启dockerstop mediamtxdockerrestart mediamtx# 进入容器修改配置dockerexec-itmediamtxbash二、Linux 二进制安装x86/ARM1. 下载对应架构包发布页https://github.com/bluenviron/mediamtx/releasesx86_64服务器mediamtx_vx.x.x_linux_amd64.tar.gzARM/树莓派mediamtx_vx.x.x_linux_arm64.tar.gz2. 解压启动# 下载示例替换最新版本号wgethttps://github.com/bluenviron/mediamtx/releases/download/v1.9.3/mediamtx_v1.9.3_linux_amd64.tar.gz# 解压tar-zxvfmediamtx_v1.9.3_linux_amd64.tar.gzcdmediamtx_v1.9.3_linux_amd64# 前台启动看日志调试推流报错./mediamtx# 后台常驻nohup./mediamtxmtx.log21目录文件说明mediamtx主程序mediamtx.yml配置文件端口、鉴权、协议三、Windows 安装下载mediamtx_vx.x.x_windows_amd64.zip解压打开CMD进入文件夹前台运行mediamtx.exe默认监听0.0.0.0:8554四、核心配置修改解决你ffmpeg写头报错编辑mediamtx.yml关键参数适配推流# 仅使用TCP屏蔽UDP丢包问题必改解决大部分报错protocols:[tcp]# RTSP监听端口rtspPort:8554# 关闭鉴权测试用paths:# 所有流路径不限制账号密码all:publishUser:publishPass:readUser:readPass:# 低延迟参数readBufferCount:0修改后重启服务生效。五、MP4文件推RTSP标准命令适配MediaMTX规避 Could not write header1. 转码版90%报错直接修复优先测试ffmpeg-re-itest.mp4\-vcodeclibx264-presetfast -x264-params nal-hrdcbr\-acodecaac-b:a128k\-rtsp_transporttcp\-frtsp rtsp://127.0.0.1:8554/live/test2. 循环播放MP4ffmpeg-re-stream_loop-1-itest.mp4\-vcodeclibx264-presetfast-acodecaac\-rtsp_transporttcp-frtsp rtsp://127.0.0.1:8554/live/loop3. ffplay拉流验证ffplay-rtsp_transporttcp rtsp://127.0.0.1:8554/live/test六、Java ProcessBuilder 管道MP4推RTSP完整可用命令数组String[]cmd{ffmpeg,-re,-flags,low_delay,-fflags,nobuffer,-f,mp4,-i,pipe:0,-vcodec,libx264,-acodec,aac,-rtsp_transport,tcp,-f,rtsp,rtsp://127.0.0.1:8554/live/java};关键点去掉-c copy强制转码解决Could not write header。七、防火墙放行端口Linux# RTSPufw allow8554/tcp# RTMP备用ufw allow1935/tcp ufw reload八、对比 SRS / ZLMediaKitMediaMTX(rtsp-simple-server)原生支持RTSP ANNOUNCE推流轻量单文件测试首选SRS不支持RTSP推流只能RTMP转RTSP输出ZLMediaKit功能最全支持JT1078、GB28181生产车载业务首选你的场景调试MP4推RTSP先用MediaMTX验证ffmpeg链路是否正常。九、常见报错排查Could not write header不要用-c copy强制重新编码音视频MediaMTX配置开启protocols: [tcp]推流几秒断开Docker改用--networkhostMP4提前执行ffmpeg -i src.mp4 -c copy -movflags faststart out.mp4Java管道数据异常每次write后调用flush()独立线程异步读取ffmpeg stdout/stderr防止缓冲区阻塞。