首页 > 其他分享 >LAL v0.36.7发布,Customize Sub,我有的都给你

LAL v0.36.7发布,Customize Sub,我有的都给你

时间:2023-07-17 20:00:33浏览次数:38  
标签:LAL lal v0.36 lalserver Sub Customize 二次开发 lalmax bug

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二次开发相关的另外两篇文档:

如果你想直接看代码:

▦ 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

微信扫码加我好友(进微信群):

wechat

本文完,祝你今天开心。

yoko, 202307

标签:LAL,lal,v0.36,lalserver,Sub,Customize,二次开发,lalmax,bug
From: https://www.cnblogs.com/notokoy/p/17561033.html

相关文章

  • python: sqlalchemy ORM in mysql
     """StudengMaping.pyORM(ObjectRelationalMapping)学生表实体类对象关系映射one-oneone-moremore-onemore-moredate2023-06-23edit:GeovinDu,geovindu,涂聚文ide:PyCharm2023.1python11sqlalchemy2.0.1.6https://docs.sqlalchemy.org/en/20/cor......
  • Flask SQLALCHEMY Model 模型
    FlaskSQLALCHEMYModel模型classPerson(db.Model): __tablename__='person' id=db.Column(db.Integer,primary_key=True) name=db.Column(db.string(16),unique=True) def__repr__(self):return'<User{}>'.format(self......
  • Flask SQLAlchemy配置
    FlaskSQLAlchemy配置Flask模型Flask默认并没有提供任何数据库操作的API我们可以选择任何适合自己项目的数据库来使用Flask中可以自己的选择用原生语句实现功能,也可以选择ORM(SQLAlchemy,MongoEngine)原生sQL缺点代码利用率低,条件复杂代码谐句越长,有很多相似语句......
  • 使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查
    在 Flask 中使用SQLAlchemy库来实现对MySQL数据库的增删改查fromflaskimportFlask,request,jsonifyfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='mysql://username:password@localhost/dbname'ap......
  • sqlalchemy: pool_pre_ping
    问题设想这样一个场景:通过flask启动了一个REST服务,该服务需要访问数据库,且每天被定时请求一次(除此之外无请求)。按照上一节的讨论,由于两次请求间隔(24小时)超过了关闭阈值(8小时),因此在下一次发送请求时,会报出Lostconnection的错误。解决方案一个可选的解决方案是,增加wait_timeout......
  • VirtualAllocEx;WriteProcessMemory;CreateRemoteThread
    /*structStrParam{ HWNDhPwdEdit; unsignedintnLenth; char*buff;};//计算器为目标进程。staticDWORDWINAPIMyFunc(LPVOIDpData){//dosomething StrParam*param=(StrParam*)pData; HWNDhPwdEdit=param->hPwdEdit; char*buff=param->buff; ......
  • Jackson2ObjectMapperBuilderCustomizer
    //序列化时的命名策略——驼峰命名法builder.propertyNamingStrategy(PropertyNamingStrategy.LOWER_CAMEL_CASE);配置作用  ......
  • 【Linux】Customize for history
    echo'exportHISTTIMEFORMAT="%d/%m/%y/%T"'>>~/.bash_profile14318/03/23/08:16:15vi.bash_profile14418/03/23/08:16:40source.bash_profile14518/03/23/08:16:42history14618/03/23/08:16:52vi.bash_profile147......
  • VMware ESXi 7.0 Update 3m - 领先的裸机 Hypervisor (All OEM Customized Installer
    VMwareESXi7.0Update3m-领先的裸机Hypervisor(AllOEMCustomizedInstallerCDs)ESXi7.0U3mStandard(标准版)ESXi7.0U3mDell(戴尔)定制版OEMCustomInstallerCDESXi7.0U3mHPE(慧与)定制版OEMCustomInstallerCDESXi7.0U3mLenovo(联想)定制......
  • 关于SQLAlchemy中update的使用参数synchronize_session
    update语句带上synchronize_session="fetch"或者带上synchronize_session=False是啥区别在SQLAlchemy中,当您使用update语句更新数据库中的记录时,可以使用`synchronize_session`参数来指定要同步的会话对象。-当`synchronize_session`设置为`False`时,会话对象不会自动同步,这意......