news 2026/5/23 16:07:21

FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作

FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。不过MediaMTX的功能比较简单,也不方便个性化定制,如今出现了国产的直播服务器smart_rtpmd,更适合日常开发调试使用。

smart_rtpmd是一款用于直播且录播性能卓越的流媒体服务器,相当于nginx+rtmp,或者是简化版的SRS和ZLMediaKit。smart_rtpmd开源且跨平台,支持Windows、Linux(含Ubuntu、CentOS等)、FreeBSD、ARM64等操作系统。smart_rtpmd支持的视频格式包括H.264、H.265、VP8等,支持的音频格式包括AAC、OPUS等。

smart_rtpmd的源码托管地址为https://github.com/superconvert/smart_rtmpd(星星数0.6k),国内的镜像地址为https://gitee.com/superconvert/smart_rtmpd,最新版本是2025年3月发布的smart_rtpmd_v2025.03.10,可见该框架的源码更新十分及时。

smart_rtpmd不依赖其他第三方库,下载后的压缩包文件解压即可运行。以Windows系统的smart_rtpmd程序为例,它的解压步骤说明如下:

1、下载smart_rtpmd的源码得到压缩包smart-rtmpd-master.zip。

2、解压smart-rtmpd-master.zip包,找到smart-rtmpd-master目录下的压缩包rtmpd.zip。

3、解压rtmpd.zip包,找到rtmpd目录下的压缩包smart-rtmpd-win.zip。

4、解压smart-rtmpd-win.zip包,得到smart_rtmpd_win目录,,里面的smart_rtmpd.exe便是可运行于Windows系统的smart_rtpmd服务器程序。

双击smart_rtmpd.exe弹出smart_rtpmd管理界面,单击右下角的启动按钮如下图所示,即可开启smart_rtpmd的直播推流服务。

smart_rtmpd1

由日志可见,smart_rtpmd开启了下列五项流媒体服务:

1、侦听1935端口的RTMP服务,对应的流媒体播放地址是rtmp://127.0.0.1:1935/live/stream;

2、侦听8554端口的RTSP服务,对应的流媒体播放地址是rtsp://127.0.0.1:8554/live/stream;

3、侦听8080端口的HTTP(HLS)服务,对应的流媒体播放地址是http://127.0.0.1:8080/live/stream.m3u8;

4、侦听8888端口的TURN.TCP(WebRTC)服务;

5、侦听9000端口的SRT服务;

接下来验证smart_rtpmd的实际推拉流情况。打开MSYS窗口,进入《FFmpeg开发实战:从零基础到短视频上线》一书第十章的源码目录,执行下面的编译命令。

gcc pushvideo.c -o pushvideo -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lpostproc -lm

编译完成后执行以下命令启动测试程序,期望把2018.mp4推给smart_rtpmd的RTSP推流地址rtsp://127.0.0.1:8554/live/stream。

./pushvideo ../file/2018.mp4 rtsp://127.0.0.1:8554/live/stream

打开另一个MSYS窗口,同样进入《FFmpeg开发实战:从零基础到短视频上线》一书第十章的源码目录,执行下面的编译命令。

gcc pullvideo.c -o pullvideo -I/usr/local/ffmpeg/include -L/usr/local/ffmpeg/lib -I/usr/local/sdl2/include -L/usr/local/sdl2/lib -lsdl2 -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lpostproc -lm

编译完成后执行以下命令启动测试程序,期望从rtsp://127.0.0.1:8554/live/stream拉取视频流并弹窗播放。

./pullvideo rtsp://127.0.0.1:8554/live/stream

然后果真弹出一个SDL窗口,正在播放从RTSP服务拉取的视频画面如下图所示,说明smart_rtpmd正确实现了RTSP协议的流媒体转发功能。

smart_rtpmd2

如果改成RTMP协议实现推拉流的话,需要把推流命令改成下面这样,表示向RTMP地址推流:

./pushvideo ../file/2018.mp4 rtmp://127.0.0.1:1935/live/stream

注意pushvideo.c的代码需要按照前一篇文章《FFmpeg代码对RTSP和RTMP的推流区别》的说明加以修改,才能支持RTMP协议的视频推流。

对应的拉流命令要改成下面这样,表示从RTMP地址拉流:

./pullvideo rtmp://127.0.0.1:1935/live/stream

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 16:07:21

Stable Diffusion AIGC 视觉设计实战教程之 04-文生图

文生图基础参数 基本步骤概述 文生图是通过自然语言描述即提示词,来生成对应图像的技术,Stable Diffusion 作为这一领域的先进模型、其生成图像的过程涉及多个核心参数和步骤。在 Stable Diffusion 中进行文生图的基本步骤: 选择检查点模型&a…

作者头像 李华
网站建设 2026/5/22 18:53:22

基于Web的开放性实验项目管理系统的设计与实现开题报告

本科生毕业论文(设计)开题报告题目: 标题用楷体三号字作者单位楷体四号作者姓名专业班级作者学号指导教师(职称)****年**月开题报告填写要求开题报告主要内容:1.课题来源…

作者头像 李华
网站建设 2026/5/21 23:30:17

【建议收藏】大模型学习之路:零基础理解LLM、Transformer与GPT/BERT

本文系统介绍大语言模型(LLM)的核心概念与原理,包括深度学习基础、大模型定义特点、预训练与微调过程、Transformer架构及其自注意力机制、GPT与BERT的区别与应用,以及Token在文本处理中的作用。文章强调理解这些基础概念对掌握大模型技术的重要性&#…

作者头像 李华
网站建设 2026/5/23 5:03:39

创客匠人全球峰会圆满落幕:AI+IP双驱动,共绘未来商业与教育新蓝图

2025年11月22日至25日,由创客匠人主办的“全球创始人IPAI万人高峰论坛”在厦门海峡大剧院盛大举行并圆满落幕。本届峰会吸引了来自全球的逾万名创始人、行业领袖及专家学者齐聚一堂,围绕“AI、IP、未来、共创、格局”五大核心议题,共同探讨智…

作者头像 李华
网站建设 2026/5/21 3:07:22

【珍藏版】AI大模型学习路线:从零基础到进阶,附赠免费学习资源

文章提供了一条完整的AI大模型学习路线,涵盖数学与编程基础、机器学习入门、深度学习深入、大模型探索、进阶应用及社区参与。各阶段配有经典书籍、在线课程和实践项目推荐,并附赠免费学习资源,包括学习路线图、视频教程、技术文档和面试题等…

作者头像 李华
网站建设 2026/5/11 4:53:04

基于web的可视化植物信息查询系统

本科毕业设计 题 目 基于web的可视化植物信息查询系统 学院名称 智能制造与控制技术学院 专业名称 电气工程及其自动化 班 级 202 姓 名 张三 学 号 2 指导教师 李四 毕业时间 202年7月日 毕业设计(论文)诚信承诺书 本人完成的…

作者头像 李华