草庐IT

LAL v0.35.4发布,OBS支持RTMP H265推流,我跟了

notokoy 2023-08-15 原文

Go语言流媒体开源项目 LAL 今天发布了v0.35.4版本。

LAL 项目地址:https://github.com/q191201771/lal

老规矩,简单介绍一下:

▦ 一. OBS支持RTMP H265推流

新出的标准,一般被称为enhanced RTMP,OBS新版(29.1+版本,点我去下载安装包)已经实现可以使用,LAL也做了相应的适配,换言之,你可以使用OBS推送H265的RTMP流给LAL了。

Tips: 使用H265的好处是相较于H264,占用更低的码率却拥有更高的图像质量。

值得注意的几点细节:

  1. LAL转换为其他封装协议(比如RTSP、HLS)后,输出的协议依然是标准协议,这点和之前没啥区别。
  2. LAL输出是RTMP/FLV时,依然保持enhanced RTMP格式,目前适配了enhanced RTMP的播放器只有mpegts.js,后续ffmpeg和VLC等播放器应该也会很快跟上支持。
  3. enhanced RTMP和之前金山云搞的HEVC over RTMP(就是codecid=12那个,国内大部分CDN产商都支持了)是两套东西,LAL两种格式都支持了,目前的策略是进来的RTMP/FLV是啥格式,出去的RTMP/FLV就是啥格式,后续可能会考虑转换(比如通过配置或url参数等)。

关于enhanced RTMP协议实现细节、OBS对应的使用方法可以看看我们的这篇文章: 《enhanced RTMP》

▦ 二. G711A/G711U

上个版本支持G711音频编码格式时留了个待完成的尾巴,RTSP转RTMP只有视频没有声音,这个版本支持了。

G711的整体情况我们正在整理中: https://www.yuque.com/pengrl/public/psxbp37r3yqopnxx

▦ 三. RTSP TCP/UDP 切换

一个优化: 有的RTSP源不支持TCP传输音视频数据,会在SETUP信令阶段给对端回复status code 461,用于表明自身不支持TCP,新版本的LAL收到461后会尝试切换UDP SETUP。反之UDP切TCP也是一样的道理。

▦ 更多

还有一些修改不逐个介绍了,大致如下:

  • [opt] mpegts根据编码格式打包patpmt(提高纯视频流的兼容性)
  • [opt] HTTP-API: 支持跨域
  • [fix] rtmp: 解析amf strict array
  • [fix] rtmp转mpegts处理时间戳错误,导致有b帧时ffplay播放hls报错
  • [fix] GetSamplingFrequency missing 24000
  • [fix] simplifing logic to enable fragment_duration_ms on configuration to be under thousands (but not below hundreds)
  • [fix] 解决CustomizePubSessionContext使用dumpFile空指针导致崩溃的问题
  • [test] unit test for base.DumpFile

以上内容摘取自 《lal CHANGELOG版本日志》 ,你可以通过源文档获取更详细的内容。

▦ 开发者

感谢参与这个版本的开源贡献者:yoko, ZSC714725, joaop, sanenchen, yang heng01~, penglh, LiH0820

▦ 进一步了解lal

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

本文完,祝你今天开心。

yoko, 202304

有关LAL v0.35.4发布,OBS支持RTMP H265推流,我跟了的更多相关文章

  1. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  2. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

  3. ruby - 如何使用 readline 支持重新安装 ruby​​? - 2

    我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent

  4. ruby-on-rails - "undefined method ` stub_request '"访问 RSpec 支持文件中的方法时 - 2

    我的Ruby-on-Rails项目中有以下文件结构,用于规范:/spec/msd/serviceservice_spec.rb/support/my_modulerequests_stubs.rb我的request_stubs.rb有:moduleMyModule::RequestsStubsmodule_functiondeflist_clientsurl="dummysite.com/clients"stub_request(:get,url).to_return(status:200,body:"clientsbody")endend在我的service_spec.rb我有:re

  5. ruby - Ruby 是否支持逐字字符串? - 2

    Ruby是否支持(找不到更好的词)非转义(逐字)字符串?就像在C#中一样:@"c:\ProgramFiles\"...或者在Tcl中:{c:\ProgramFiles\} 最佳答案 是的,您需要在字符串前加上%前缀,然后是描述其类型的单个字符。你想要的是%q{c:\programfiles\}。镐书很好地涵盖了这一点here,部分是通用分隔输入。 关于ruby-Ruby是否支持逐字字符串?,我们在StackOverflow上找到一个类似的问题: https:/

  6. ruby-on-rails - 获取 ActionController::RoutingError(当尝试使用 AngularJS 将数据发布到 Rails 服务器时,没有路由匹配 [OPTIONS] "/users" - 2

    尝试从我的AngularJS端将数据发布到Rails服务器时出现问题。服务器错误:ActionController::RoutingError(Noroutematches[OPTIONS]"/users"):actionpack(4.1.9)lib/action_dispatch/middleware/debug_exceptions.rb:21:in`call'actionpack(4.1.9)lib/action_dispatch/middleware/show_exceptions.rb:30:in`call'railties(4.1.9)lib/rails/rack/logg

  7. ruby - 在 Ruby 1.8 中支持 Ruby 1.9 的哈希语法 - 2

    我正在编写一个Rubygem,在我的代码中使用{key:'value'}哈希语法。我的测试都在1.9.x中通过,但我(可以理解)在1.8.7中得到syntaxerror,unexpected':',expecting')'。是否有支持1.8.x的最佳实践?我是否需要使用我们的老friend=>重写代码,还是有更好的策略? 最佳答案 我认为你运气不好,如果你想支持1.8,那么你必须使用=>。像往常一样,我会提到在1.9的某些情况下您必须使用=>:如果键不是一个符号。请记住,任何对象(符号、字符串、类、float……)都可以是Ruby哈

  8. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  9. ruby-on-rails - Rails 是否支持监听 UDP 套接字的简洁方式? - 2

    在Rails中,什么是集成更新模型某些元素的UDP监听过程的最佳方式(特别是它将向其中一个表添加行)。简单的答案似乎是在同一个进程中使用UDP套接字对象启动一个线程,但我什至不清楚我应该在哪里做适合Rails方式的事情。有没有一种巧妙的方法来开始收听UDP?具体来说,我希望能够编写一个UDPController并在每个数据报消息上调用一个特定的方法。理想情况下,我希望避免在UDP上使用HTTP(因为它会浪费一些在这种情况下非常宝贵的空间),但我完全控制消息格式,因此我可以为Rails提供它需要的任何信息。 最佳答案 Rails是一个

  10. ruby - 如何在 Ruby 中从内存中 HTTP 发布流数据? - 2

    我想上传我在运行时用Ruby生成的数据,就像从block中提供上传数据一样。我找到的所有示例仅展示了如何流式传输必须在请求之前位于磁盘上的文件,但我不想缓冲该文件。除了滚动我自己的套接字连接之外,最好的解决方案是什么?这是一个伪代码示例:post_stream('127.0.0.1','/stream/')do|body|generate_xmldo|segment|body 最佳答案 有效的代码。require'thread'require'net/http'require'base64'require'openssl'class

随机推荐