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中也有锁,只不过可以通过一个欺骗的手段,让这个锁形同虚设,因此定义了一个什么也不干的锁给它用: typeEmptyLockerstruct{} func(EmptyLocker)Lock(){} func(EmptyLocker)Unlock(){} 空结构体在go里面不占用任何资源,并且多次调用sync.Cond的Broadcast并不会引起错误,不像WaitGroup的Done无法多次调用。 经过替换后,性能提升大概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接口