首页 文章 精选 留言 我的

精选列表

搜索[模型开源],共10000篇文章
优秀的个人博客,低调大师

Monibuca v4.6.5 发布 —— 开源 Go 语言流媒体服务器

发布摘要 启动工程增加对流的发布订阅的单元测试和基准测试 修复发布和订阅并发创建流产生的panic 修复IdleTimeout无效问题 修复订阅者阻塞导致读写并发问题 preview插件修复https默认端口 gb28181插件PR合并 升级模块 升级后版本 engine 4.13.5 gb28181 4.3.6 hls 4.3.1 preview 4.1.2 record 4.3.7 详细说明 单元测试和基准测试 测试用例所在目录:github.com/langhuihui/monibuca工程下的test目录 推荐使用vscode打开工程,方便一键测试单个用例,也可以通过vscode侧边栏里的单元测试栏目管理。 TestPubAndSub funcTestPubAndSub(t*testing.T){ t.Cleanup(FreeEngine) UseEngine() t.Run("publish",func(t*testing.T){ t.Parallel() varpubUnitTestPublisher unitTestPlugin.Publish("test/001",&pub) }) t.Run("subscribe",func(t*testing.T){ t.Parallel() varsubUnitTestSubsciber sub.TB=t err:=unitTestPlugin.Subscribe("test/001",&sub) iferr!=nil{ t.Fatal(err) }else{ sub.PlayRaw() } }) } 该用例会启动一个发布者和一个订阅者,发布者将会写入假数据,订阅者读取后会校验数据是否正确。 BenchmarkPubAndSub funcBenchmarkPubAndSub(b*testing.B){ b.Cleanup(FreeEngine) UseEngine() fori:=0;i<10;i++{ i:=i gofunc(iint){ varpubUnitTestPublisher unitTestPlugin.Publish(fmt.Sprintf("testb/%d",i),&pub) }(i) gob.RunParallel(func(pb*testing.PB){ varsubUnitTestSubsciber sub.TB=b err:=unitTestPlugin.Subscribe(fmt.Sprintf("testb/%d",i),&sub) iferr!=nil{ //b.Fatal(err) }else{ sub.PlayRaw() } }) } time.Sleep(time.Second*10) } 该用例为基准测试,启动10个发布者,每个流会批量订阅,以测试并发性能以及稳定性。 TestSlowSubscriber funcTestSlowSubscriber(t*testing.T){ t.Cleanup(FreeEngine) UseEngine() varpubUnitTestPublisher unitTestPlugin.Publish("test/slow",&pub) varsuberSlowSubsciber unitTestPlugin.Subscribe("test/slow",&suber) suber.PlayRaw() } 这个用例会模拟一个订阅者被阻塞(sleep)后导致发布者写入的位置追上,此时engine通过标记这个写入点废弃来避免并发读写问题,废弃后订阅者如果被唤醒就会自动停止订阅。 通常出现这种情况是订阅者进行了某种耗时操作,比如写文件,或者网络阻塞等。 其他修复问题 并发创建流 修复如下: funcfindOrCreateStream(streamPathstring,waitTimeouttime.Duration)(s*Stream,createdbool){ p:=strings.Split(streamPath,"/") iflen(p)<2{ log.Warn(Red("StreamPathFormatError:"),streamPath) returnnil,false } actual,loaded:=Streams.LoadOrStore(streamPath,&Stream{ Path:streamPath, AppName:p[0], StreamName:strings.Join(p[1:],"/"), StartTime:time.Now(), +Logger:log.LocaleLogger.With(zap.String("stream",streamPath)), +timeout:time.NewTimer(waitTimeout), }) ifs:=actual.(*Stream);loaded{ s.Debug("StreamFound") returns,false }else{ -s.timeout=time.NewTimer(waitTimeout) s.Subscribers.Init() -s.Logger=log.LocaleLogger.With(zap.String("stream",streamPath)) -s.Info("created") s.actionChan.Init(1) +s.Info("created") gos.run() returns,true } } 原理:当并发调用findOrCreateStream函数时,前者尚未来得及对Logger赋值,后者就调用了s.Debug导致空指针错误。 修复读写并发问题 这个问题在前面的单元测试中已经提到,就是订阅者阻塞引起的。 订阅者阻塞后,读取点移动很慢或者不移动,导致写入点追上 由于RingBuffer是由链表结构实现,因此很容易将节点剥离主环 废弃后,这个订阅者将无法再读取主环内容,也将遭到抛弃 抛弃 https默认端口 默认https端口已经设置为8443,preview插件在选择WebTransport的时候跳转错了端口号。 https证书已经嵌入到程序里面,可以直接设置host文件127.0.0.1 local.monibuca.com访问https://local.monibuca.com:8443/preview/ gb28181 合并PR #95 本次PR主要修改了定时任务相关功能,包括: 定时删除超时设备 修改注册有效期配置默认值为3600s 设备状态变更处理 具体可以看代码变动

优秀的个人博客,低调大师

Shotcut v23.06.14 发布,开源跨平台视频编辑器

错误修复 修正了在使用 h264_nvenc 时的 H.264 输出 修正了过滤器中的文件对话框在 Linux AppImage 或 KDE 上崩溃 修正了文本中的崩溃 修正了在GPU特效开启的情况下用计数发生器改变视频模式的崩溃 修正了在开启 GPU 特效的情况下,尝试 Open MLT XML as Clip 时的崩溃 修正了加载超过 3200 万像素的 JPEG 图像 修正了如果在以前的版本中使用了设置>播放器>外部显示器,则播放器无法工作 修正了时间线 > 替换片段会破坏一些视频过滤器 修正了在 Mask: Simple Shape 过滤器中改变关键帧类型或关键帧的时间位置 修正了时间线或关键帧右键菜单中的自定义键盘快捷方式 修正了属性>复制填充文件路径在 Windows 上使用不正确的目录分隔符 改进 改进了快进(最高 64 倍)播放的流畅性。 改进了时间线的性能和自动滚动 更多详情可查看:https://github.com/mltframework/shotcut/releases/tag/v23.06.14

优秀的个人博客,低调大师

开源跨平台划词翻译软件 Pot 1.1.0 版本发布,支持 OCR

Pot是一款基于Tauri开发的桌面应用程序,可以在Windows、macOS和Linux上运行。它提供了一种简单而实用的方式,让用户可以在任何地方快速翻译单词或短语。 在1.1.0版本中,Pot增加了大家所期待的OCR功能,这意味着用户可以直接截图来识别文本,然后进行翻译。这个功能对于需要翻译图片或者PDF文档的用户来说非常实用。 此外,Pot还支持多种翻译引擎,包括OpenAI、百度翻译、谷歌翻译和有道翻译等。用户可以根据自己的需求选择不同的翻译引擎。 Pot的界面简洁明了,用户可以通过设置快捷键来方便地调用它。 官网地址:https://pot.pylogmon.com Github地址:https://github.com/pot-app/pot-desktop

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册