利用mediamtx搭建rtsp流媒体server

1.安装mediamtx

我的部署平台是嵌入式瑞芯微RK3588s平台,需要选arm7。

下载位置在这里:GitHub - bluenviron/mediamtx: Ready-to-use SRT / WebRTC / RTSP / RTMP / LL-HLS media server and media proxy that allows to read, publish, proxy, record and playback video and audio streams.

它不需要外部署nginx之类的web服务器。

1.1 如果你只需要rtmp流

值得提一句的是,nginx有一个处理rtmp的扩展模块。rtmp的服务器搭建也很容易随着nginx的部署实现。网上有详尽的帖子。这里不再说明这种处理方法。

2.发出rtsp流

大部分ai训练是使用python,opencv作为辅助工具实现的。此时看看这种模式的rtsp流(已经经过AI识别,叠加了指示信息)如何输出:

此时mediamtx需要OpenCV 通过GSteamer,作为RTSP client先上传码流。我们的工作,一般在厂商提供的开发环境中进行,可以先查看各个组件是否存在:

python3 -c 'import cv2; print(cv2.getBuildInformation())'

你应该能看到:

 

注意那个 GStreamer :YES字样。

核心的代码这里:

2.1 写入rtsp头

out = cv2.VideoWriter('appsrc ! videoconvert' + \' ! video/x-raw,format=I420' + \' ! x264enc speed-preset=ultrafast bitrate=600 key-int-max=' + str(fps * 2) + \' ! video/x-h264,profile=baseline' + \' ! rtspclientsink location=rtsp://localhost:8554/mystream',cv2.CAP_GSTREAMER, 0, fps, (width, height), True)
if not out.isOpened():raise Exception("can't open video writer")

它把测试的一个自行生成的视频流发布到了: rtsp://localhost:8554/mystream这个地方。

2.2 循环压入视频帧(自行生成的frame.)

while True:frame = np.zeros((height, width, 3), np.uint8)# create a rectanglecolor = colors[curcolor]curcolor += 1curcolor %= len(colors)for y in range(0, int(frame.shape[0] / 2)):for x in range(0, int(frame.shape[1] / 2)):frame[y][x] = colorout.write(frame)print("%s frame written to the server" % datetime.now())now = time()diff = (1 / fps) - now - startif diff > 0:sleep(diff)start = now

 注意,这里实际压入的是点阵数据。Image到点阵数据的转换很容易处理。

3.测试(obs studio):

可以使用obs studio来打开你发布的rtsp流:

你会看到快速闪烁颜色不断变换的视频帧。上面使用的是byte*3的图片

上面的处理在rk3588s(debian11?环境下测试过)下测试过。

mediamtx原始github首页已经包含了足够的信息。只看首页就能完成基本的流媒体发布工作。

附录A mediamtx支持的媒体流格式

2024/04/28 16:03:26 INF configuration loaded from /home/fengxh/rtsp_svr/mediamtx/mediamtx.yml
2024/04/28 16:03:26 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2024/04/28 16:03:26 INF [RTMP] listener opened on :1935
2024/04/28 16:03:26 INF [HLS] listener opened on :8888
2024/04/28 16:03:26 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2024/04/28 16:03:26 INF [SRT] listener opened on :8890 (UDP)

RTSP RTMP我实际测试过。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671707.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新旅程,新起点——盈致集团搬迁公告

在这春风得意的美好时光里,我们带着满腔的热忱向各位好友宣布一个重要消息:盈致集团即将展开新的篇章,我们的办公地址将迁移至一个全新的地点。新的环境,新的开始,我们期待在这片充满潜力的土地上,继续书写…

【kali换源之后签名无效,报错处理】

#一、问题:报错信息# 错误:1 http://mirrors.ustc.edu.cn/kali kali-rolling InRelease 错误:2 http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling InRelease 错误:3 http://dl.google.com/linux/chrome/deb stable InRelease 错误:4 http://mirrors.aliyu…

Linux网络部分——DNS域名解析服务

目录 1. 域名结构 2. 系统根据域名查找IP地址的过程 3.DNS域名解析方式 4.DNS域名解析的工作原理【☆】 5.域名解析查询方式 6.搭建主从DNS域名服务器 ①初始化操作主服务器和从服务器,安装BIND软件 ②修改主服务器的主配置文件、区域配置文件、区域数…

DRF的序列化【2】

【0】前提概要 【1】基于 View JsonResponse 编写的 5 个接口: 序列化自定义处理: 你需要自己编写序列化逻辑。处理 JSON 格式的 POST 请求数据: 从 request.body 中获取数据,并使用 json.loads() 解析成字典,然后创建相应的对象。request.…

揭秘“全民拼购”:小众模式如何引爆商业新纪元

在当今商业领域,一个曾经被边缘化,但实则蕴含巨大价值的商业模式逐渐崭露头角。不同于传统的销售模式,这一新模式在我近期接触的一个案例中表现出了惊人的活力,即便在用户数量不足二十万的情况下,也能实现日均销售额接…

院校信息 | “卷王”计算机专业在留学圈有多抢手?!UIUC宣布将成立CS新学院!

计算机科学专业作为“当红炸子鸡”专业,有着超高的就业率和高薪待遇,一直都是留学圈报考的热门专业之一。 继加州大学伯克利分校(UCB)和南加州大学去年相继宣布成立两所新的学院后,伊利诺伊大学香槟分校(UI…

如何在 Windows 11 上检查和显示 CPU 温度

1.为什么需要监控 CPU 温度? CPU 是您计算机的核心,是从后台运行整个节目的木偶大师,接收指令并处理保持整个 shindig 运行所需的处理能力。并且需要定期监测其内部温度,以确保节目不会着火。高于平均水平的热量总是会导致性能急…

力扣每日一题110:平衡二叉树

题目 简单 给定一个二叉树,判断它是否是 平衡二叉树 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:true示例 2: 输入:root [1,2,2,3,3,null,null,4,4] 输出:false示例 3: …

Spring6 当中的 Bean 循环依赖的详细处理方案+源码解析

1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析 文章目录 1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析每博一文案1.1 Bean的循环依赖1.2 singletion 下的 set 注入下的 Bean 的循环依赖1.3 prototype下的 set 注入下的 Bean 的循环依赖1.4 singleton下的构…

【毕业设计】基于SSM的运动用品商城的设计与实现

1.项目介绍 在这个日益数字化和信息化的时代,随着人们购物习惯的转变,传统的实体商店已经无法满足人们日益增长的在线购物需求。因此,基于SSM(Spring Spring MVC MyBatis)框架的运动用品商城项目应运而生&#xff0…

如何使用resource-counter统计跨Amazon区域的不同类型资源数量

关于resource-counter resource-counter是一款功能强大的命令行工具,该工具基于纯Python 3开发,可以帮助广大研究人员跨Amazon区域统计不同类型资源的数量。 该工具在统计完不同区域的各类资源数量后,可以在命令行中输出并显示统计结果。res…

ASP.NET网上图书订阅系统的设计

摘 要 网上图书订阅系统基于 Microsoft SQL Server 2000和ASP.NET平台,以C#为编程语言开发,实现了网上图书预订和借阅,订阅信息查询,图书和用户信息的修改,借阅排行和新到图书的查询等功能,这样不但可将管理员从繁重…