Lal Versions Save

🔥 Golang audio/video live streaming library/client/server. support RTMP, RTSP(RTP/RTCP), HLS, HTTP[S]/WebSocket-FLV/TS, GB28181, H264/H265/AAC/G711, relay, cluster, record, HTTP Notify/API/UI. 直播

v0.36.7

9 months ago

v0.34.3

1 year ago

v0.34.3 (2022-03)

版本介绍: https://pengrl.com/#/brief_v0.34.3 CHANGELOG: https://github.com/q191201771/lal/blob/master/CHANGELOG.md

  • [feat] rtmp2rtsp: 支持 G711A/G711U
  • [opt] rtsp: 兼容G711 SDP,支持RTSP G711间的转发
  • [feat] 增加Web页面(基于HTTP-API)
  • [fix] rtmp: 修复微信小程序推流卡的问题(绝对时间戳字段应该从属于stream维度而非connection)
  • [feat] rtmp: server session支持发送ack
  • [opt] rtmp: client session 只使用PeerWinAckSize的值作为是否发送ack的触发条件
  • [refactor] using Go embed to load lal.html
  • [refactor] remove deprecated io/ioutil packages
  • [opt] rtmp: ClientSession支持定制化tls.Config
  • [fix] 修复解析配置文件中sub_session_hash_key字段写错的bug
  • [log] add log when not caching frame by SingleGopMaxFrameNum
  • [chore] 增加检查版本的脚本check_versions.sh

v0.33.0

1 year ago

https://github.com/q191201771/lal/blob/master/CHANGELOG.md

v0.33.0 (2022-01)

  • [feat] debug dump,支持抓取流数据回放调试
  • [feat] http api & notify: 支持获取hls播放者数量、码率等信息;支持获取hls开始播放、结束播放的事件通知
  • [fix] rtp: 解析rtp extension扩展头,避免因此导致rtp解析失败
  • [chore] docker同时支持amd和arm架构
  • [feat] demo: analyseflv支持http flv流或flv文件作为输入
  • [feat] 插件化例子:增加读取flv文件再通过CustomPubSession将数据输入lalserver的例子
  • [opt] rtmp: 缩小打chunk时预分配的内存大小
  • [opt] 插件化:Cutsomize Pub支持AvPacket、RtmpMsg两种输入数据的方式
  • [opt] Gop缓冲功能支持配置单个Gop内的最大缓冲帧数量
  • [fix] 修复hls获取app name失败的问题
  • [fix] flv: 修复ReadAllTagsFromFlvFile中没有关闭文件的bug
  • [fix] rtmp: 接收buff解析前有效长度检查

v0.32.0

1 year ago

v0.32.0 (2022-11-10)

  • [feat] 自动叠加静音音频。所有协议、所有类型的输入流都已支持,文档见: https://pengrl.com/lal/#/dummy_audio
  • [feat] 支持rtmps、rtsps(server端)
  • [feat] rtp: 支持解析rtp header中的padding和csrc
  • [feat] demo: pullhttpflv拉取http-flv时可以存储为flv文件
  • [opt] 二次开发: 当DelCustomizePubSession后,调用被删除对象的FeedAvPacket方法将返回错误
  • [opt] 二次开发: 支持直接使用json字符串作为配置内容初始化ILalServer
  • [opt] 兼容性优化。转ts时,如果调整时间戳失败则使用调整前的时间戳。
  • [opt] 兼容性优化。当rtmps和rtsps加载签名文件失败时,只打印日志而不退出lalserver
  • [fix] rtsp: 修复aac rtp type不是标准值导致无法合帧的问题。提高兼容性
  • [fix] http-api: 修复sub http-flv remote_addr字段没有值的bug
  • [fix] rtsp: 修复auth可能失败的bug
  • [log] 打印rtsp信令。丰富多处错误日志,比如转hls异常
  • [doc] 新增文档:重要概念 https://pengrl.com/lal/#/concept

v0.31.1

1 year ago

v0.31.1 (2022-10-07)

  • [feat] HTTP-API增加start_rtp_pub接口,用于支持GB28181的ps流
  • [feat] 向外暴露IAuthentication,用于定制化鉴权
  • [feat] 向外暴露ModConfigGroupCreator,支持为特定的Group独立配置
  • [opt] rtsp: 允许rtsp先拉再推,也即没有输入流时,可以先创建rtsp SubSession
  • [feat] rtp: unpacker支持hevc ap格式
  • [fix] rtmp: 优化metadata @SetDataFrame的处理,解决flv录制文件用ffmpeg查看fps不准的问题 #201
  • [fix] rtmp: 修复PubSession发送publish信令中字段错误导致推流至youtube失败的问题 #199
  • [perf] rtmp: PullSession支持配置是否复用接收message时的内存块
  • [opt] rtmp: ClientSession推流兼容vhou url格式
  • [opt] rtmp: add float64 support to amf0::WriteObject
  • [opt] rtsp: PullSession在setup阶段如果对端没有回复server port,依然尝试继续拉流,增强兼容性
  • [fix] rtsp: server端没有收到前面的信令直接收到PLAY信令,主动关闭连接,避免崩溃
  • [fix] rtsp: 解析sdp中MPEG4-GENERIC大小写导致aac音频无法正常合帧的问题
  • [fix] hls: 修复hls鉴权时streamName取值错误导致无法正常鉴权的问题
  • [fix] hls: 修复流名称中包含-中划线时hls异常的问题
  • [opt] mpegts: rtmp2mpegts的时间戳重打从0开始,兼容时间戳太大时vlc播放不了的问题
  • [opt] remux: 新增RtspRemuxerAddSpsPps2KeyFrameFlag参数,用于强制在关键帧数据包前加sps、pps。目的是增强兼容性。
  • [opt] remux: Rtmp2AvPacketRemuxer可携带自定义参数
  • [fix] remux: avpacket2rtmp nal以00 00 01开头时崩溃,丢弃aud
  • [refactor] rtprtcp: 重构RtpPacketList
  • [chore] 构建windows可执行文件时增加.exe后缀
  • [opt] HTTP-API和Notify: bitrate重命名为bitrate_kbits
  • [opt] HTTP-API和Notify: StatGroup增加AppName字段
  • [opt] HTTP-Notify: session相关的回调增加ReadBytesSum和WroteBytesSum字段

v0.30.1

1 year ago

v0.30.1 (2022-06-15)

  • [feat] HTTP-API:新增start/stop_relay_pull接口,支持rtmp和rtsp,支持设置超时时间,自动关闭,重试次数,rtsp类型等参数
  • [feat] HTTP-API:kick_session接口支持踢掉pub/sub/pull类型的session
  • [feat] HTTP-Notify:增加on_relay_pull_start和on_relay_pull_stop回调
  • [feat] HTTP-Notify:增加hls生成ts文件的事件回调
  • [feat] rtmp: client端支持rtmps加密传输
  • [feat] rtmp: client端支持adobe auth验证
  • [feat] rtsp: server端支持basic/digest auth验证
  • [feat] lalserver: 运行参数-p可设置当前工作路径
  • [feat] package gb28181: 大体完成ps协议解析
  • [feat] 新增remux.Rtmp2AvPacketRemuxer,方便和ffmpeg库协作
  • [fix] rtsp: 修复url path路径不存在时,url解析失败的问题
  • [fix] rtmp: 解析amf, object中嵌套object导致崩溃
  • [fix] rtmp: ChunkComposer的error日志中的对象写错导致崩溃
  • [fix] 修复rtmp转ts时,265判断错误
  • [fix] lalserver: 修复竞态条件下接收rtsp流崩溃的bug
  • [fix] lalserver: relay push判空错误导致崩溃
  • [chore] release发版时,增加arm32, arm64, macos arm对应的二进制文件
  • [refactor] 新增package h2645
  • [refactor] 将所有session的ISessionStat的实现聚合到BasicSessionStat
  • [refactor] rename HttpSubSession -> BasicHttpSubSession
  • [refactor] HTTP-API: 所有事件都包含的公共字段聚合到EventCommonInfo中
  • [opt] aac: 补全AscContext.samplingFrequencyIndex采样率的取值
  • [log] 访问非法HTTP-API路径时打印警告日志

v0.29.1

1 year ago

v0.29.1 (2022-05-03)

  • [feat] lalserver: 支持集成第三方协议的输入流 https://pengrl.com/#/customize_pub
  • [feat] rtmp: pull session增加ack应答,提高兼容性
  • [opt] rtsp: lalserver增加配置项rtsp->out_wait_key_frame_flag,用于控制发送rtsp数据时,是否等待关键帧再发送
  • [opt] 增强健壮性,检查rtmp消息长度有效性
  • [fix] 增强兼容性,rtmp转mpegts时,使用nalu中的sps和pps
  • [fix] lalserver鉴权: 修复rtmp拉流鉴权的问题
  • [fix] 解析H265类型不够全面,导致推流失败 #140
  • [fix] lalserver录制: 是否创建mpegts录制根目录由mpegts录制开关控制
  • [fix] demo: dispatch调度程序检测保活时间单位错误
  • [perf] mpegts: 加大内存预分配大小

v0.28.0

2 years ago

v0.28.0 (2022-03-27)

  • [feat] httpts: 支持gop缓冲,提高秒开 #129
  • [opt] hls: 增加delete_threshold配置,用于配置过期TS文件的保存时间 #120
  • [opt] rtsp sub 改为异步发送
  • [opt] lalserver: relay push增加超时检查,增加带宽统计
  • [opt] lalserver: relay pull的rtmp流也转换为rtsp
  • [opt] lalserver: rtsp sub也支持触发relay pull
  • [fix] aac: 支持22050采样频率,修复该频率下转rtsp失败的问题
  • [fix] avc: 增强兼容性,处理单个seq header中存在多个sps的情况 #135
  • [fix] mpegts: 修复单音频场景,有一帧音频重复的问题
  • [fix] rtsp: Basic auth的base64编码
  • [fix] rtsp: 增强容错性,修复rtmp输入流没有seq header时,rtmp转rtsp内崩溃的问题
  • [fix] lalserver: 优雅关闭pprof和http server
  • [perf] mpegts: 优化转换mpegts的性能
  • [refactor] 将转换mpegts的代码从package hls独立出来,移动到package remux中
  • [refactor] lalserver: 大幅重构logic.Group,为支持插件化做准备
  • [log] 支持独立设置单个pkg的日志配置 #62
  • [log] rtmp和rtsp收包时添加trace级别日志 #63
  • [log] rtmp: 优化定位问题的日志 #135
  • [test] innertest增加单音频,单视频,httpts sub的测试

v0.27.1

2 years ago

v0.27.1 (2022-01-23)

  • [feat] 新增simple auth鉴权功能,见文档: https://pengrl.com/lal/#/auth
  • [feat] httpflv: PullSession支持https,支持302跳转
  • [feat] rtmp: client类型的session新增方法用于配置WriteBuf和ReadBuf大小,以及WriteChanSize
  • [opt] rtmp: 收到ping request回应ping response
  • [fix] rtmp: 增强兼容性,当收到的rtmp message中aac seq header payload长度为0时忽略,避免崩溃 #116
  • [fix] rtmp: 增强兼容性,当收到的rtmp message中的payload长度为0时忽略 #112
  • [opt] rtsp: 增强兼容性,处理rtsp信令中header存在没有转义的\r\n的情况
  • [fix] rtsp: 增强兼容性,修复读取http返回header解析失败的bug #110
  • [opt] https: 增强兼容性,服务初始化失败时打印错误日志而不是退出程序
  • [opt] avc: 增强兼容性,分隔avcc格式的nal时,如果存在长度为0的nal则忽略
  • [fix] sdp: 增强兼容性,fmtp内发生换行时做兼容性处理
  • [fix] httpflv: 修复httpflv多级路径下无法播放的问题
  • [opt] 整理完所有error返回值,error信息更友好
  • [log] 通过配置文件控制group调试日志
  • [log] rtsp: client信令增加错误日志
  • [fix] 修复logic.Option.NotifyHandler首字母小写外部无法设置的问题
  • [refactor] 将logic包中的DummyAudioFilter, GopCache, LazyRtmpChunkDivider, LazyRtmpMsg2FlvTag移入remux中
  • [refactor] rtmp: base.Buffer移入naza中
  • [chore] CI: 迁移到github action,已支持linux,macos平台,Go1.14和Go1.17,每次push代码和每周定时触发,并自动提交docker hub镜像
  • [chore] 修复go vet signal unbound channel的警告
  • [test] 提高测试覆盖,目前lal测试覆盖超过60%,文档中增加测试覆盖率徽章
  • [test] innertest增加m3u8文件检测,增加http api
  • [test] 测试各session的ISessionUrlContext接口
  • [test] 修复base/url_test.go中的测试用例