Monibuca v4.6.3 发布 —— 开源 Go 语言流媒体开发框架


发布摘要

本次发布带来如下更新:

  • 预览插件引入jessibuca pro demo

  • 启动工程引入conf目录,添加若干常用配置示例

  • 启动工程修改默认配置文件,增加https协议配置,以及hls、llhls

  • 可以自定义favicon.ico

  • 引擎中Stream增加Pause和Resume方法

  • 引擎引入sync.Cond替代伪自旋锁

  • jessica插件引入对http/ws-h264/h265 裸流支持

  • 录制插件在无法创建文件时日志中增加提示

  • ps插件修复一个单端口使用后无法重复使用的bug

  • webtransport通过内置证书方式默认启动

  • gb28181 插件增加ptz的友好接口,已经录像的暂停快进快退接口

详细说明

预览插件更新

预览插件重大更新:引入jessibuca pro demo

本地流的预览更加方便,jessibuca pro demo无需使用本地ng部署,同时解决了公网页面无法访问本地流的问题。

增加更多协议演示

pro demo 中新增支持了HLS-265

其他协议演示可以点击协议切换下拉框选择

 

 

 

自动填入播放地址

在预览插件首页中http://localhost:8080/preview/ 

点击某个流后,会自动跳转到预览地址,并且将播放地址自动填入地址栏中,点击播按钮即可播放

Webtrasnport协议体验也更简单

先默认启动了https以及Webtransport插件,本地只需要修改一下host配置127.0.0.1 local.monibuca.com。即可快速一键体验Webtrasnport协议播放

启动工程更新

增加若干常用配置示例

为了方便快速理解配置文件的格式,本次加入了几个常见配置:

 

  • hls.yaml 配置了hls的纯转发模式,关闭了其他功能

  • https.yaml 配置https监听

  • rtmp.yaml 配置了纯rtmp转发,关闭了其他功能

  • rtmps.yaml 配置rtmps协议监听

  • rtsp.yaml 配置了rtsp远端按需拉流,无人订阅自动停止

文件位置在github.com/langhuihui/monibuca/conf

自定义favicon.ico

在启动工程目录下现在可以放置了一个favicon.ico文件,用于内置页面的图标显示,可以自行替换

修改默认的配置文件

global:
  http:
    listenaddrtls: :8081
    certfile: local.monibuca.com_bundle.pem
    keyfile: local.monibuca.com.key
llhls:
  enable: false
hls:
  enable: false
monitor:
  enable: false

引擎更新

引擎中Stream增加Pause和Resume方法

这两个方法可以在需要暂停超时检测的时候使用,例如GB协议中录像播放用到的,详细见下文。

引擎引入sync.Cond替代伪自旋锁

伪自旋锁每个10ms检测一次数据是否可读,会增加协程唤醒的次数,虽然相比使用锁的消耗要小很多了,但和单线程模型的相比性能还是差了一些。因此经过尝试,发现sync.Cond可以解决这个问题。但是sync.Cond中也有锁,只不过可以通过一个欺骗的手段,让这个锁形同虚设,因此定义了一个什么也不干的锁给它用:

type EmptyLocker struct{}

func (EmptyLocker) Lock()   {}
func (EmptyLocker) Unlock() {}

空结构体在go里面不占用任何资源,并且多次调用sync.CondBroadcast并不会引起错误,不像WaitGroupDone无法多次调用。

经过替换后,性能提升大概10~20%。

插件更新

jessica插件引入对http/ws-h264/h265 裸流支持

具体可以在preview插件中体验

record插件增加文件创建失败的提示

部分机器有写入权限,导致录制文件创建失败,之前没有加错误提示。

修复ps插件在单端口调用后没有删除调用者

单端口为了判断是否已经在拉流了,所以有一个map来存放已经拉的流,流结束后没有从map中删除,导致再次拉流失败。

webtransport通过内置证书方式默认启动

由于webtransport协议必须使用https和证书才能使用,所以为了方便体验,将local.monibuca.com证书内置嵌入到了插件中,无需配置即可使用。唯一需要做的就是将127.0.0.1 local.monibuca.com写入host中。

gb28181 插件增加ptz的友好接口,已经录像的暂停快进快退接口

这里感谢@ogofly的贡献,提供了更多友好的http接口

 


相關推薦

2023-08-08

时无法拖放。这是由于fmp4的格式导致的,fmp4格式是一种流媒体格式,适合直播场景。本次修改为录制原始mp4格式。值得注意的时候,这种格式需要在录制完成的时候对文件再次修改,因此如果在文件没有写完时直接关闭进程会

2023-02-03

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

2023-11-27

特别说明 平台公云版及企业私云版已经发布,增加多人团队协作支持,点击这里了解 [PDManer 元数建模 - v4],历时五年,持续升级,工匠精神,做一款简单好用的数据库建模平台。 元数建模平台,使用 React+Electron+Java 技

2022-04-02

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

2022-10-15

序言 距上次发版刚过一周时间,Furion 的下载量又增加了 80多万次,总项目安装量也近 370万,几乎各行各业的系统都使用上了 Furion。查看 Nuget 统计总安装量 每天睁眼闭眼手机都是 Furion 邮件提醒消息,两年来未曾停歇过,

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++ 通过对语言的定期补充和改进保持了其受欢迎程度,现代