LAL v0.36.7发布,Customize Sub,我有的都给你
Go语言流媒体开源项目 LAL 今天发布了v0.36.7版本。
LAL 项目地址:https://github.com/q191201771/lal
老规矩,简单介绍一下:
▦ Customize Sub,我有的都给你
这是提供给用lalserver做二次开发的小伙伴们的一个重要的功能,业务方可以通过设置回调函数的方式获取lalserver内部的流。
获取到流有什么用呢,拿lal的衍生项目lalmax来举例,它基于lalserver的Customize Sub,为所有输入lalserver中的流扩展了srt和webrtc播放的能力。
这里也简单介绍一下lalmax,它将会是lal整体版图中的一个重要项目,它基于lalserver提供的二次开发接口,与第三方库结合,支持更多的协议、实现更丰富的功能。
相应的,lal项目会持续保持自身无第三方依赖,高性能等特点。
lalmax项目地址: https://github.com/q191201771/lalmax
如果你想更好的理解Custmize Sub,可以先看看与Customize二次开发相关的另外两篇文档:
如果你想直接看代码:
- lal中相应的API签名: https://github.com/q191201771/lal/blob/master/pkg/logic/logic.go#L43
- lalmax使用示例: https://github.com/q191201771/lalmax/blob/master/main.go#L39
▦ rtmp兼容性优化
- amf编码中有两个不包含有效内容、没什么实际卵用的格式叫Undefined和Unsupported,之前lal没有解析,而现实中竟然真的有客户端会用它。
- 兼容publish信令中没有pubType字段的情况。是的,有的客户端就是这么任性,关键用的人还不少,不兼容还不行,气不气。
- 处理音频格式写在metadata中,而非单独seq header包的情况。
- Rtmp2AvPacketRemuxer增加参数用于指定是否需要丢弃SEI
▦ rtsp优化
- 支持处理时间戳翻滚的情况。也就是时间戳递增到一个非常大的数后,重新回到一个小的数继续递增。
- package rtsp中新增加了一个配置变量BaseInSessionTimestampFilterFlag,用于决定rtsp合成的帧级别packet的时间戳是使用rtp中的时间戳,还是重置成从0开始。
▦ lalserver优化
- 将NotifyHandler回调异步化到独立协程中。目的是方便业务方在回调中自由的调用lalserver的其他API接口
- http api中的流信息中增加fps字段
- 在业务方WithOnHookSession的情况下,停用auto stop relay pull功能
▦ bug修复
首先是一个比较严重的bug,会导致hls无法播放,这是在上个版本v0.35.4引入的,原因是转ts时,pmt中的avc标志笔误写错了写成aac了。。
然后是协议处理上的bug:
- rtp: 修复解析ext扩展数据的bug
- remux: Rtmp2AvPacketRemuxer多slice时append sps错误导致花屏
- rtmp2mpegts: 确保pts有值
- rtmp: 当ClientSession配置项WriteChanSize为0时,不必要开启异步发送
lalserver中释放资源的bug:
播放不存在的rtsp流,超时没有彻底释放
其他一些小bug:
使用hls中的回调对象IMuxerObserver前,先检查是否为nil
▦ 更多
还有一些修改不逐个介绍了,大致如下:
- [chore] all shell file go to script folder
- [chore] 所有脚本+x增加执行权限,保证CI正常运行
- [chore] 修复macos平台readlink没有-f参数导致脚本执行失败的问题
- [fix] webui: read null when no group
- [fix] connection: not working set ModWriteChanSize
- [fix] not working timout for RTMP server session
- [test] dump rtsp test support video
- [refactor] 整理所有跨域的代码
- [refactor] 整理所有超时相关的代码
- [refactor] hevc: 暴露hevc.Context中的所有字段
- [refactor] avc: 暴露avc.Context中的Sps结构体字段
以上内容摘取自 《lal CHANGELOG版本日志》 ,你可以通过源文档获取更详细的内容。
▦ 开发者
感谢参与这个版本的开源贡献者:yoko(阿亮), ZSC714725(阿响), HustCoderHu(小虎), Jae-Sung Lee(阿韩)
▦ 进一步了解lal
微信扫码加我好友(进微信群):

本文完,祝你今天开心。
yoko, 202307
LAL v0.36.7发布,Customize Sub,我有的都给你的更多相关文章
- LAL v0.32.0发布,更好的支持纯视频流
Go语言流媒体开源项目 LAL 今天发布了v0.32.0版本.距离上个版本刚好一个月时间,LAL 依然保持着高效迭代的状态. LAL 项目地址:https://github.com/q19120177 ...
- LAL v0.34.3发布,G711音频来了,Web UI也来了
Go语言流媒体开源项目 LAL 今天发布了v0.34.3版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. 音频G711 新 ...
- LAL v0.35.4发布,OBS支持RTMP H265推流,我跟了
Go语言流媒体开源项目 LAL 今天发布了v0.35.4版本. LAL 项目地址:https://github.com/q191201771/lal 老规矩,简单介绍一下: ▦ 一. OBS支持RTM ...
- jQuery WeUI V0.4.2 发布
http://www.oschina.net/news/71590/jquery-weui-v0-4-2 jQuery WeUI V0.4.2 发布了! jQuery WeUI 中使用的是官方WeUI ...
- [译]基于ASP.NET Core 3.0的ABP v0.21已发布
基于ASP.NET Core 3.0的ABP v0.21已发布 在微软发布仅仅一个小时后, 基于ASP.NET Core 3.0的ABP v0.21也紧跟着发布了. v0.21没有新功能.它只是升级到 ...
- KCL v0.4.5 发布 - 更好的编写便利性改进,稳定性,体验提升与多平台支持
简介 KCL 团队很高兴地宣布 KCL v0.4.5 版本现在已经可用!本次发布主要为 KCL 语言编写便利性和稳定性提升,错误信息改进以及更多平台包括 windows 版本支持以及更多下载方式支持. ...
- Visual Studio Code v0.9.1 发布
微软的跨平台编辑器 Visual Studio Code v0.9.1 已经发布,官方博客上发布文章Visual Studio Code – October Update (0.9.1):http:/ ...
- 轻量级模块化开发框架 Hasor 核心模块 v0.0.2 发布
首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架.它是为了解决企业模块化开发中复杂性而创建的.Hasor遵循简单的依赖.单一职责,在开发多模块企业项目中更加有调理.然 而Ha ...
- 关于ML.NET v0.8的发布说明
ML.NET允许您创建和使用针对场景的机器学习模型,以实现常见任务,如情绪分析,问题分类,预测,推荐,欺诈检测,图像分类等.您可以使用ML.NET示例在GitHub仓库中查看这些常见任务 .ML.NE ...
- 关于ML.NET v0.6的发布说明
ML.NET 0.6版本提供了几项令人兴奋的新增功能: 用于构建和使用机器学习模型的新API 我们主要关注的是发布用于构建和使用模型的新ML.NET API的第一次迭代.这些新的,更灵活的API支持新 ...
随机推荐
- 链式描述线性表(C++实现)
在链式描述中,线性表的元素在内存中的存储位置是随机的,每个元素都有一个明确的指针或链指向下一个元素的位置 chain类 在此使用单向链表实现了线性表,其中最后一个节点的指针域为NULL,即它用单向链接 ...
- ARL:资产侦察灯塔系统
资产灯塔,不仅仅是域名收集 功能简介 "挖洞神器"资产安全灯塔(ARL),旨在快速侦察与目标关联的互联网资产,构建基础资产信息库. 协助甲方安全团队或者渗透测试人员有效侦察和检索资 ...
- 我的第一个项目(十二) :分数和生命值的更新(后端增删查改的"改")
好家伙,写后端,这多是一件美逝. 关于这个项目的代码前面的博客有写 我的第一个独立项目 - 随笔分类 - 养肥胖虎 - 博客园 (cnblogs.com) 现在,我们登陆进去了,我开始和敌人战斗,诶 ...
- 点&边双连通分量
双连通分量 参考博客:https://www.cnblogs.com/jiamian/p/11202189.html#_2 概念 双连通分量有点双连通分量和边双连通分量两种.若一个无向图中的去掉任意一 ...
- C++ Primer 5th 阅读笔记:变量和基本类型
一些语言的公共特性 内建类型,如整型,字符型等: 变量,为值绑定的一个名字: 表达式和语句,操作值. 分支和循环,允许我们条件执行和重复执行: 函数,定义抽象计算单元. 扩展语言的方式 自定义类型: ...
- jQuery控制文本框只能输入数字[兼容IE、火狐等浏览器]
$.fn.numeral=function(bl){//限制金额输入.兼容浏览器.屏蔽粘贴拖拽等 $(this).keypress(function(e){ var keyCode=e.keyCode ...
- 2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间。 给定一个正数m,表示有m个人等位。 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n<=
2022-05-21:给定一个数组arr,长度为n, 表示n个服务员,每个人服务一个人的时间. 给定一个正数m,表示有m个人等位. 如果你是刚来的人,请问你需要等多久? 假设:m远远大于n,比如n&l ...
- 2022-02-14:k8s安装gogs,yaml如何写?
2022-02-14:k8s安装gogs,yaml如何写? 答案2022-02-14: yaml如下: apiVersion: v1 kind: Service metadata: labels: a ...
- 2022-01-31:迷宫 III。 由空地和墙组成的迷宫中有一个球。球可以向上(u)下(d)左(l)右(r)四个方向滚动,但在遇到墙壁前不会停止滚动。当球停下时,可以选择下一个方向。迷宫中还有一个洞
2022-01-31:迷宫 III. 由空地和墙组成的迷宫中有一个球.球可以向上(u)下(d)左(l)右(r)四个方向滚动,但在遇到墙壁前不会停止滚动.当球停下时,可以选择下一个方向.迷宫中还有一个洞 ...
- ue全家桶进阶之路30:Vue3定义组件和常用指令
要定义 Vue 3 组件,你可以使用 Vue 3 提供的 defineComponent 函数. 例如,以下是一个简单的 Vue 3 组件定义: import { defineComponent } ...