发布摘要
本次发布带来如下更新:
-
预览插件引入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.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接口