惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
Google Online Security Blog
Google Online Security Blog
K
Kaspersky official blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cisco Talos Blog
Cisco Talos Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
PCI Perspectives
PCI Perspectives
酷 壳 – CoolShell
酷 壳 – CoolShell
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
N
News and Events Feed by Topic
V
Vulnerabilities – Threatpost
T
Troy Hunt's Blog
GbyAI
GbyAI
C
CERT Recently Published Vulnerability Notes
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
量子位
Scott Helme
Scott Helme
月光博客
月光博客
Attack and Defense Labs
Attack and Defense Labs
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
Project Zero
Project Zero
G
GRAHAM CLULEY
博客园 - 【当耐特】
Recorded Future
Recorded Future
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
小众软件
小众软件
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
爱范儿
爱范儿
S
Security @ Cisco Blogs
The Last Watchdog
The Last Watchdog
MongoDB | Blog
MongoDB | Blog
H
Hacker News: Front Page
Latest news
Latest news
P
Proofpoint News Feed

博客园 - aqi00

15天学会AI应用开发(十三)上下文与RAG的阶段性总结 15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG 15天学会AI应用开发(十一)从TXT文件构建RAG知识库 15天学会AI应用开发(十)把文本嵌入模型换成国产模型 15天学会AI应用开发(九)利用Chroma持久化向量数据 15天学会AI应用开发(八)使用向量数据库实现RAG功能 15天学会AI应用开发(七)有了大模型为什么还要引入RAG 15天学会AI应用开发(六)使用离线大模型对文本生成摘要 一文速览 HarmonyOS 6.1.1 推出的十个新特性 15天学会AI应用开发(五)使用AI摘要来压缩上下文消息 15天学会AI应用开发(四)根据Token长度截断历史对话 15天学会AI应用开发(三)把历史对话作为提示词会怎样 15天学会AI应用开发(二)为什么编写提示词这么重要 15天学会AI应用开发(一)搭建AI大模型应用开发环境 一文理清 HarmonyOS 6.0.2 涵盖的十个升级点 FFmpeg开发笔记(一百零二)国产的音视频移动开源工具FFmpegAndroid FFmpeg开发笔记(一百零一)跨平台的开源音视频移动框架MobileFFmpeg 一文速览 HarmonyOS 6.0.1 引入的十个新特性 一文读懂 HarmonyOS 6.1 带来的十大重要升级 新书《鸿蒙HarmonyOS 6应用开发:从零基础到App上线》出版啦 FFmpeg开发笔记(一百)国产的Android开源视频压缩工具VideoSlimmer FFmpeg开发笔记(九十九)基于Kotlin的国产开源播放器DKVideoPlayer FFmpeg开发笔记(九十八)基于FFmpeg的跨平台图形用户界面LosslessCut FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor FFmpeg开发笔记(九十六)采用Kotlin+Compose的视频编辑器OpenVideoEditor FFmpeg开发笔记(九十五)国产的开源视频美颜工具VideoEditorForAndroid FFmpeg开发笔记(九十四)基于Kotlin的国产开源推拉流框架anyRTC FFmpeg开发笔记(九十三)国产的Android开源视频编辑器EpMedia FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder FFmpeg开发笔记(九十)采用FFmpeg套壳的音视频转码百宝箱FFBox FFmpeg开发笔记(八十九)基于FFmpeg的直播视频录制工具StreamCap FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android FFmpeg开发笔记(八十六)基于Node.js的国产视频编辑开源框架OpenCut FFmpeg开发笔记(八十五)基于PyQt和FFmpeg的开源视频剪辑器OpenShot FFmpeg开发笔记(八十四)使用国产的librestreaming实现RTMP直播 FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer
FFmpeg开发笔记(八十二)使用国产直播服务器smart_rtmpd执行推流操作
aqi00 · 2025-10-12 · via 博客园 - aqi00

《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开发实战:从零基础到短视频上线》一书第十章的源码目录,执行下面的编译命令。

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

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

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

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

smart_rtpmd2

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

注意pushvideo.c的代码需要按照前一篇文章《FFmpeg代码对RTSP和RTMP的推流区别》的说明加以修改,才能支持RTMP协议的视频推流。
对应的拉流命令要改成下面这样,表示从RTMP地址拉流:

更多详细的FFmpeg开发知识参见《FFmpeg开发实战:从零基础到短视频上线》一书。