You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lal/CHANGELOG.md

160 lines
7.3 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#### v0.12.0
- [feat] lalserver增加回源功能
- [fix] rtmp.AMF0.ReadObject函数内部增加解析子类型EcmaArray。避免向某些rtmp服务器推流时触发断言错误
- [fix] 解析rtmp metadata时兼容Object和Array两种外层格式
- [refactor] 重写了lalserver的中继转推的代码
#### v0.11.0
- [feat] lalserver增加中继转推(relay push)功能,可将接收到的推流(pub)转推(push)到其他rtmp类型的服务器支持1对n的转推
- [feat] package rtmp: 新增函数amf0::ReadArray用于解析amf array数据
- [refactor] `rtmp/client_push_session`增加当前会话连接状态
- [fix] demo/analyseflv: 修复解析metadata的bug
- [perf] httpflv协议关闭时不做httpflv的GOP缓存
- [refactor] logic中的配置变更为全局变量
- [refactor] lal/demo移动到lal/app/demo
- [refactor] 日志整理
#### v0.10.0
- [refactor] app/lals重命名为app/lalserver避免描述时容易和lal造成混淆
- [refactor] 将app/lalserver的大部分逻辑代码移入pkg/logic中
- [test] 将所有package的Server、Session等内容的实例测试收缩至package innertest中多个package都可以共用它做单元测试
- [refactor] lalserver配置中增加显式enable字段用于开启关闭特定协议
- [refactor] 各package的Server对象增加独立的Listen函数使得绑定监听端口失败时上层可以第一时间感知
- [feat] demo/analyseflv增加I帧间隔检查增加metadata分析
- [fix] package avc: 修复函数CalcSliceType解析I、P、B帧类型的bug
- [fix] package hls: 检查输入的rtmp message是否完整避免非法数据造成崩溃
- [perf] gop缓存使用环形队列替换FIFO动态切片队列
- [refactor] package aac: 函数ADTS::PutAACSequenceHeader检查输入切片长度
- [refactor] package aac: 删除函数CaptureAAC
- [feat] 增加demo/learnrtsppkg/rtsp开始学习rtsp
#### v0.9.0
- [feat] 新增HLS直播功能
- [fix] 接收rtmp数据时同一个message的多个chunk混合使用fmt12时可能出现时间戳多加的情况
- [refactor] 将app目录下除lals的其他应用移入demo目录下
- [feat] 新增两个demoanalyseflv和analysehls分别用于拉取HTTP-FLV和HLS的流并进行分析
- [fix] 修改rtmp简单握手修复macOS ffmpeg 4.2.2向lals推rtmp流时的握手警告
#### v0.8.1
- [feat] 新package hevc
- [fix] windows平台缺少USER1信号导致编译失败
- [fix] gop缓存时不以I帧开始的流会崩溃
- [chore] 提供各平台二进制可执行文件的压缩包
- [doc] package aac增加一些注释
- [refactor] 使用naza v0.10.0
#### v0.8.0
- [feat] 支持H265/HEVC
- [feat] 支持GOP缓存
#### v0.7.0
- [fix] package logic: 转发 rtmp metadata 时message header 中的 len 字段可能和 body 实际长度不一致
- [feat] rtmp.AVMsg 增加判断包中音视频数据是否为 seq header 等函数
- [feat] app/httpflvpull 使用 naza/bitrate 来统计音频和视频的带宽
- [refactor] logic config 的部分配置移动至 app/lals 中
- [refactor] logic 增加 LazyChunkDivider 组织代码
- [log] package rtmp: 一些错误情况下,对接收到包 dump hex
- [test] 测试推送 n 路 rtmp 流至 lals再从 lals 拉取这 n 路 rtmp 流的性能消耗
- [doc] README 中增加测试过的推拉流客户端
- [dep] update naza -> v0.7.1
#### v0.6.0
- package rtmp: 结构体的属性重命名 AVMsg.Message -> AVMsg.Payload
- app/flvfile2rtmppush: 支持推送多路 rtmp 流,相当于一个压测工具
- app/rtmppull: 支持对特定的一路流并发拉取多份,相当于一个压测工具
- README 中补充性能测试结果
#### v0.5.0
- package rtmp:
- 增加结构体 ClientSessionOptionPushSessionOptionPullSessionOption
- 增加结构体 AVMsg
- ClientSession 作为 PushSession 和 PullSession 的私有成员
- 将绝对时间戳移入到 Header 结构体中
- PullSession::Pull OnReadAVMsg with AVMsg
- AVMsgObserver::ReadRTMPAVMsgCB -> OnReadRTMPAVMsg
- package httpflv:
- PullSessionOption
- OnReadFLVTag
- some func use Tag instead of *Tag
- 整个包的代码做了一次整理
- FlvFileReader 在 ReadTag 中懒读取 flv header
- package logic:
- 使用 rtmp.AVMsg
- 增加两个函数 MakeDefaultRTMPHeaderFLVTagHeader2RTMPHeader
#### v0.4.0
- [功能] 将 rtmp pub session 的音视频转发给httpflv sub session
- [依赖] httpflv ServerSubSession 使用 naza connection
- [其他] 增加测试加载flv文件后使用rtmp推流至服务器然后分别使用rtmp和httpflv将流拉取下来存成文件判断和输入文件是否相等
#### v0.3.2
- [功能] 默认的rtmp地址
- [依赖] naza 更新为 0.4.3
- [架构调整] lal 中的服务器更名为 lals
- [其他] 从远端下载 flv 测试文件,跑单元测试
- [其他] test.sh 中加入更多 go tool
- [其他] 所有源码文件添加 MIT 许可证
#### v0.3.1
- [功能] 读取配置文件时,部分未配置的字段设置初始值
- [其他] build.sh 中 git信息单引号替换成双引号
- [其他] test.sh 中 加入 gofmt 检查
- [其他] 更新 naza -> 0.4.0
#### v0.3.0
- [功能] package logic: 增加 func FlvTag2RTMPMsg
- [代码调整] package rtmp: ClientSession 和 ServerSession 使用 nezha 中的 connection 做连接管理
- [代码调整] package rtmp: 增加 struct ChunkDivider
- [代码调整] package rtmp: 调整一些接口
- [代码调整] package httpflv: 删除了 group gop 相关的代码,后续会放入 package logic 中
- [测试] package rtmp: 增加 `example_test.go` 用于测试整个 rtmp 包的流程
- [其他] 更新 nezha -> 0.3.0
#### v0.2.0
- [结构调整] 将 app/lal 的部分代码抽离到 pkg/logic 中,使得其他 app 可以使用
- [结构调整] 将协议层 rtmp.Group 和 应用层 app/lal 中的 GroupManager 合并为 逻辑层 pkg/logic 的 Group以后只在逻辑层维护一个 Group用于处理各种具体协议的输入输出流的挂载
- [功能] pkg/logic 中新增 trans.go: RTMPMsg2FlvTag
- [功能] PubSession 退出时,清空缓存的 meta、avc header、aac header
- [功能] PubSession 已经存在时,后续再连接的 Pub 直接关闭掉
- [功能] app/rtmppull 存储为flv文件
- [优化] chunk divider: calcHeader 在原地计算
- [其他] rtmp 中所有 typeid 相关的类型 int -> uint8msgLen 相关的类型 int -> uint32
- [其他] 更新 nezha新版本的日志库
- [其他] 整理日志
- [其他] pprof web 地址放入配置文件中
- [测试] 使用一些开源工具对 app/lal 做推流、拉流测试
#### v0.1.0
- /app/flvfile2rtmppush 优化推流平稳性
- bugfix rtmp 推拉流信令时可以携带 url 参数,并且在做上下行匹配时去掉 url 参数
- rtmp.ServerSession 处理 typeidAck
- 增加 amf0.WriteNull 和 amf0.WriteBooleanWriteObject 中增加 bool 类型bugfix: ReadString 当长度不足时返回 ErrAMFTooShort 而不是 ErrAMFInvalidType
- app lal 接收 USER1 USER2 信号,优雅退出
- 日志相关的配置放入配置文件中
- 整理代码;整理日志;整理 build.sh
- 增加 rtmp.HandshakeClientComplex 复杂握手模式
- 整理一些 struct 的 Dispose 方法
- CaptureAVC 添加错误返回值
- 增加一些单元测试和 benchmark
- 更新 nezha 0.1.0
- errors.PanicIfErrorOccur -> log.FatalIfErrorNotNil
#### v0.0.1
1. 提供 `/app/flvfile2rtmppush` 给业务方使用