Monibuca v4.6.8 发布,开源 Go 语言流媒体开发框架


发布摘要

  • 重构Record插件,支持mp4格式(非fmp4)

  • 优化HLS插件内存使用

  • rtsp远端拉流默认改成tcp协议

  • 订阅者关闭增加关闭原因

  • 重构summary,减少无效采集,防止并发读写

  • 增加强制关闭订阅者的api

  • 远端拉流遇到无法连接的地址不再无限重试

详细说明

Record插件更新

本次发布中,Record插件更新代码较多。

支持mp4格式

原本的支持的mp4格式为fmp4格式,有用户反应文件播放时无法拖放。这是由于fmp4的格式导致的,fmp4格式是一种流媒体格式,适合直播场景。本次修改为录制原始mp4格式。值得注意的时候,这种格式需要在录制完成的时候对文件再次修改,因此如果在文件没有写完时直接关闭进程会导致录制的文件不完整。原来的fmp4代码依然保留,可以通过配置fmp4来启用。fmp4mp4不可同时开启录制。

代码重构

主要调整内容是将不同的录制格式的逻辑代码更加统一,更多通过基础结构体完成必要工作。并修复了一个api启用录制时没有将信息存入正在录制的列表中。

增加功能

api调用录制的时候,增加了两个参数,一个是fileName用于自定义文件名。举例:原本录制的live/test文件会是:record/live/test.flv。当我们通过调用http://localhost:8080/record/api/start?streamPath=live/test&fileName=abc后,录制的文件是:record/live/test/abc.flv

引擎更新

订阅关闭原因

订阅者在停止时日志上显示的信息较少,并不能反映出这个订阅者停止订阅是由于什么原因导致的,对排查问题造成比较大的困扰。本次更新增加了订阅者在主动或者被动关闭时的原因提示。

强制关闭订阅

有用户反馈需要将某个订阅者关闭,因此增加该apihttp://localhost/api/stop/subscribe?streamPath=xxx&id=xxx。其中参数id代表这个订阅者的唯一ID

订阅者生成默认ID

这条是为了上面这条服务,订阅者之前的ID没有任何限制,因此可能是空的。本次更新后,如果订阅者的ID在订阅的时候为空,将会默认赋予一个唯一的ID

优化summary

原来的summary会每隔1s运行一次。在没有访问summary信息时候会额外带来一些消耗。本次更新后,summary会在请求序列化的时候进行采集,但采集的频率会限制,1s内不会执行两次。通过缓存机制也防止并发访问summary序列化时导致的错误。

远端推拉防止无限重试

由于之前退出重试需要根据流关闭状态确定,而错误的远端地址会导致流尚且创建就报错,引起无限重试。本次更新增加了这部分判断。

AnnexB兼容性

某些设备输出的PS流里面的H264数据会有一些不规范的数据。具体表现是I帧数据后面出现了00 00 00 01分隔符,但后面跟的NaluType8PPS)。从二进制看并非PPS数据,此时引擎如果处理为PPS后,会导致PPS超大,对后续的RTP打包造成错误。因此目前处理如下:遇到I帧后,本次AnnexB数据后续均视为I帧的一部分。

其他更新

优化HLS内存使用

HLS插件中增加二级缓存,HLS流退出后将复用这个流用到的内存池,减少内存申请。

GB28181插件升级

  • 升级了gosip库版本(v0.0.0-20230802091127-d58873a3fe44

  • 此外修复了一个错误的sip信号导致的nil指针问题。

RTSP插件升级

  • 升级了gortsplib库版本(v3.9.0

  • RTSP默认远端拉流改为tcp协议


相關推薦

2023-06-13

发布摘要 本次发布带来如下更新: 预览插件引入jessibuca pro demo 启动工程引入conf目录,添加若干常用配置示例 启动工程修改默认配置文件,增加https协议配置,以及hls、llhls 可以自定义favicon.ico 引擎中Stream增加P

2023-02-03

新增重要功能 增加时光回溯功能 所谓时光回溯功能,就是加大视频流在服务器的缓存,可以通过配置publish下的buffertime来控制缓存多久。例如可以缓存7秒视频,那么服务器就会至少缓存7秒音视频数据,当我们需要

2022-04-02

龙芯的 LoongArch 移植已经被合并了,其将在大约一个月后发布稳定版。据称,由于新的 CPU 移植不会对现有的编译器代码造成风险,所以 LoongArch 代码能够在 GCC 指导委员会的批准后顺利进入 GCC。  是龙芯打造的自主指令系统

2022-04-02

可以根据需要在芯片中实现。其中一部分拓展由社区官方发布和批准,但还有一部分是工程师为自己芯片而设计的私人定制扩展 —— 这些拓展就是可能发生碎片化的地方。 碎片化的最大问题就是同一个东西在各个版本中不兼

2022-04-02

础上再延长两年,至 2025 年。 Qt 5.15 LTS 于 2020 年 5 月发布,按照 Qt 的原计划以及以往的传统(即常规的 Qt 版本在标准支持下的支持期为一年,LTS 版本在标准支持下则是三年时间),Qt 5.15 LTS 的支持结束时间为 2023 年 5 月,

2022-04-02

知名软件行业分析公司 RedMonk 发布了 2022 年 1 月(第一季度)。 RedMonk 编程语言排行榜通过追踪编程语言在 GitHub 和 Stack Overflow 上的代码使用情况与讨论数量,统计分析后进行排序,其旨在深入了解潜在的语言采用趋势。该榜

2023-05-18

Go 博客发布了 2023 年第一季度 Go 开发者调查。共 5,844 名开发者参与了本次调查,分享了他们有关如何使用 Go、在使用 Go 时遇到的最大挑战、以及他们首要考虑的改进方向等方面的内容。 今年的调查引入了一个基于自我认定的

2023-10-26

Language Model Evaluation Harness 当一个新的大语言模型(LLM)发布时,通常都会被进行评估,将该模型与 ChatGPT 在某个基准上进行比较,很多公司可能会使用 lm-eval-harness 来生成评估分数。lm-eval-harness 由分布式人工智能研究所 Eleuther

2023-07-22

v1.3.0 更新内容: 1、重新菜单模块和菜单表数据; 2、划分权限功能,不同账号根据角色权限获取不同的菜单; 3、修复用户已反馈的 BUG; 一款 Go 语言基于GoFrame、Vue3.x、AntDesign、MySQL等框架精心打造的一款模块化、插件化、高

2022-10-24

SM图书作者,WASM布道者,目前在蚂蚁从事 KusionStack 和 KCL 开源项目开发和推广工作。 时间:Thought Leadership / October 18, 2022 零、背景 WebAssembly(简称Wasm)是一个自诞生之日起就充满潜力的技术,从 "JavaScript杀手 "到 "云计算

2023-07-20

rdpress 等框架结合使用。 6、C/C++ 自 C 语言的首次发布至今已有 50 年的历史,从后来 C++ 的诞生到现在也已经过去了 37 年,C++ 最初的名字是 "C with Classes"。在这个漫长的时间窗口中,C/C++ 通过对语言的定期补充和改进保

2022-07-01

月份划分的 Ruby 工作占比: 6. C/C++ 从 C 语言的首次发布到现在已经过去了 50 年,而从后来 C++ 的出现到现在也已经过去了 37 年,C++ 最初的名字是 "C with Classes"。C/C++ 通过对语言的定期补充和改进保持了其受欢迎程度,现代

2023-05-24

文章:《OS in Go? Why Not?》,探讨了为什么像 C 这样的编程语言在 OS 开发中占据优势,以及是否可以使用 Go 编写 OS。此外还提到了用 Go 开发操作系统的可行性、局限性,以及目前的部分成果。 操作系统 (OS) 是计算机系统的心

2022-11-12

Go 来说,2022 是非常重要的一年,这一年  Go 发布了 Go 1.18 和 Go 1.19 版本,下面回顾一下今年 Go 发布的新功能: Go 1.18 为语言本身带来了一项重大功能:泛型,其次还有 Go 工作区、模糊测试等重要功能。 泛型