Releases: q191201771/lal
Releases · q191201771/lal
v0.27.1
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中的测试用例
v0.26.0
- [perf] rtmp合并发送功能使用writev实现
- [feat] 兼容性: 运行时动态检查所有配置项是否存在
- [refactor] 可定制性: logic: 抽象出ILalServer接口;业务方可在自身代码中创建server,选择是否获取notify通知,以及使用api控制server
- [refactor] 兼容性: 两个不太标准的sdp格式(a=fmtp的前面或后面有多余的分号)
- [refactor] 兼容性: aac解析失败日志; 输入的rtp包格式错误; 输入的rtmp包格式错误; hls中分割nalu增加日志; base.HttpServerManager增加日志
- [refactor] 兼容性: 再增加一个配置文件默认搜索地址
- [refactor] 可读性: logic: ServerManager和Config不再作为全局变量使用;去除entry.go中间层;iface_impl.go移入innertest中;signal_xxx.go移入base中
- [refactor] 易用性: demo/pullrtsp2pushrtsp: 抽象出RtspTunnel结构体,一个对象对应一个转推任务
- [refactor] logic: 新增GroupManager,管理所有Group
- [chore] 配置文件中httpflv和httpts的url_pattern初始值改为没有限制
- [chore] 使用github actions做CI(替换掉之前的travisCI)
- [chore] 修复build.sh在linux下获取git tag信息失败报错的问题;去掉单元测试时不必要的错误日志
- [chore] 增加docker运行脚本run_docker.sh
v0.25.0
v0.25.0 (2021-08-28)
- [feat] 为rtmp pub推流添加静音AAC音频(可动态检测是否需要添加;配置文件中可开启或关闭这个功能)
- [feat] 优化和统一所有client类型session的使用方式:session由于内部或对端原因导致关闭,外部不再需要显式调用Dispose函数释放资源
- [feat] 增强兼容性:rtsp digest auth时,如果缺少algorithm字段,回复时该字段默认设置为MD5
- [refactor] package avc: 重新实现sps的解析
- [refactor] 新增函数remux.FlvTag2RtmpChunks()
- [refactor] 增强健壮性:package rtmp: 对端协议错误时,主动关闭对端连接而不是主动panic
- [refactor] 整理logic/group的代码
- [refactor] httpflv.Sub和httpts.Sub显式调用base.HttpSubSession的函数
- [fix] rtsp信令打包中部分字段缺少空格
- [chore] 增强易用性:修改配置文件中的默认配置:hls、flv、mpegts的文件输出地址由绝对路径/tmp修改为相对路径./lal_record
v0.24.0
v0.24.0 (2021-07-31)
- [feat] lalserver支持用rtsp sub协议拉取rtmp的pub推流 (#97)
- [feat] 新增demo pullrtmp2pushrtsp,可以从远端拉取rtmp流并使用rtsp转推出去 (#96)
- [feat] package rtprtcp: 支持h264,h265,aac rtp打包 (#83)
- [feat] package sdp: 支持sdp打包 (#82)
- [fix] 确保rtsp sub拉流从关键帧开始发送数据,避免因此引起的花屏
- [fix] rtsp: 提高兼容性。兼容rtsp auth同时存在Digest和Basic两种字段的情况
- [fix] rtsp: 提高兼容性。兼容rtsp摄像头的sdp中包含aac,但是没有config字段(后续也没有aac rtp包)的情况
- [fix] rtmp: 提高兼容性。兼容rtmp client session处理对端回复两次publish或play信令的情况
- [fix] rtmp: 提高兼容性。修复没有解析amf object中null类型数据导致和其他rtmp开源服务无法建连的问题 (#102)
- [fix] rtmp: 信令打包参考本地chunk size
- [fix] rtsp: 修复rtsp sub session没有正常释放导致协程泄漏的问题
- [fix] 修复lalserver arm32编译失败的问题 (#92)
- [fix] 修复lalserver http服务全部配置为不使用时崩溃的问题 (#58)
- [fix] 修复hls.Muxer没有设置回调会导致崩溃的问题 (#101)
- [fix] 修复demo calcrtmpdelay码率计算大了5倍的问题 (#58)
- [refactor] package httpflv: 新增FlvFilePump,可循环匀速读取flv文件
- [refactor] package aac: 增加adts, asc, seqheader间的转换代码;重构了整个包
- [refactor] package avc: 部分函数提供复用传入参数内存和新申请内存两种实现
- [refactor] demo benchrtmpconnect: 关闭日志,超时时长改为30秒,优化建连时长小于1毫秒的展示 (#58)
- [chore] 增加Dockerfile (#91)
v0.23.0
v0.23.0 (2021-06-06)
- [feat] HTTP端口复用:HTTP-FLV, HTTP-TS, HLS可使用相同的监听端口。HTTPS也支持端口复用 #64
- [feat] HTTPS:HTTP-FLV,HTTP-TS,HLS都支持HTTPS。WebSocket-FLV,WebSocket-TS都支持WebSockets #76
- [feat] 配置HTTP流的URL路径: HTTP-FLV,HTTP-TS,HLS的URL路由路径可以在配置文件中配置 #77
- [feat] RTMP支持合并发送 #84
- [refactor] 重构整个项目的命名风格 #87
- [fix] RTMP GOP缓存设置为0时,可能花屏 #86
- [feat] 支持海康威视NVR、大华IPC的RTSP流(SDP不包含SPS、PPS等数据,而是通过RTP包发送) #74 #85
- [feat] 配置灵活易用话。增加
default_http
。HTTP-FLV,HTTP-TS,HLS可以独立配置监听地址相关的项,也可以使用公共的default_http
- [feat] HLS默认提供两种播放URL地址 #64
- [refactor] package hls: 将HTTP URL路径格式,文件存储路径格式,文件命名格式,映射关系抽象出来,业务方可在外层实现IPathSolver接口做定制 #77
- [feat] 增加几个默认的配置文件加载路径
- [feat] package rtprtcp: 增加用于将H264 Nalu包切割成RTP包的代码 #83
- [refactor] package avc: 增加拆分AnndexB和AVCC Nalu包的代码 #79
- [refactor] 重构httpflv.SubSession和httpts.SubSession的重复代码
v0.22.0
v0.22.0 (2021-05-03)
- [feat] 录制新增支持:flv和mpegts文件。 录制支持列表见: https://pengrl.com/lal/#/LALServer (#14)
- [feat] h265新增支持: hls拉流,hls录制;http-ts拉流,mpegts录制。h265支持列表见: https://pengrl.com/lal/#/LALServer (#65)
- [feat] 拉流新增支持:websocket-flv,websocket-ts。拉流协议支持列表见: https://pengrl.com/lal/#/LALServer
- [feat] hls: 支持内存切片。 (#50)
- [fix] rtmp ClientSession握手,c2的发送时机,由收到s0s1s2改为收到s0s1就发送,解决握手失败的case。 (#42)
- [fix] rtsp h265: 转rtmp时处理错误导致无法播放
- [fix] rtsp h265: ffmpeg向lalserver推送rtsp h265报错。 (#55)
- [test] travis ci: 自动化单元测试os增加osx, windows, arch增加arm64, ppc64le, s390x。 (#59)
- [feat] rtmp ClientSession支持配置使用简单握手,复杂握手 (#68)
v0.21.0
v0.21.0 (2021-04-11)
- [feat] package rtmp: 支持Aggregate Message
- [feat] lalserver: 新增配置项hls.cleanup_mode,支持三种清理hls文件的模式,具体说明见 https://pengrl.com/lal/#/ConfigBrief
- [feat] package rtsp: 支持aac fragment格式(一个音频帧被拆分成多个rtp包),之前这种aac格式可能导致崩溃
- [doc] 新增文章《rtmp中的各种ID》,见 https://pengrl.com/lal/#/RTMPID
- [doc] 新增文章《rtmp handshake握手之简单模式和复杂模式》,见 https://pengrl.com/lal/#/RTMPHandshake
- [fix] rtsp推流时,rtp包时间戳翻转导致的错误(比如长时间推流后hls一直强制切片)
- [fix] lalserver的group中,rtsp sub超时时,锁重入导致服务器异常阻塞不响应
- [fix] 修复mipsle架构下rtsp崩溃
- [fix] 修复lalserver中(rtsp.BaseInSession以及logic.Group)的一些竞态读写,#47
- [fix] demo: 两个拉httpflv流的demo,main函数退出前忘记等待拉流结束
- [refactor] package rtprtcp: 重构一些函数名
- [refactor] package rtprtcp: 重构rtp unpacker,业务方可以使用默认的container,protocol策略,也可以自己实现特定的协议解析组包策略
- [refactor] lalserver: 整理配置文件加载与日志初始化部分的代码
- [doc] 启用英文版本README.md作为github首页文档展示
- [doc] lalserver: 新增配置项conf_version,用于表示配置文件的版本号
- [doc] lalserver: 启动时日志中增加lal logo
v0.20.0
v0.20.0 (2021-03-21)
- [feat] 新增app/demo/calcrtmpdelay,可用于测量rtmp服务器的转发延时,拉流支持rtmp/httpflv
- [feat] app/demo/pushrtmp 做压测时,修改为完全并行的模式
- [fix] 修复32位arm环境使用rtsp崩溃
- [refactor] 统一各Session接口
- [refactor] 使用新的unique id生成器,提高性能
- [doc] 新增文档 ffplay播放rtsp花屏 https://pengrl.com/lal/#/RTSPFFPlayBlur
v0.19.1
- [fix] 获取group中播放者数量时锁没有释放,导致后续无法转发数据
v0.19.0
v0.19.0 (2021-01-24)
- [feat] demo,新增app/demo/pullrtsp2pushrtsp,可拉取rtsp流,并使用rtsp转推出去
- [feat] demo,新增/app/demo/pullrtmp2pushrtmp,从远端服务器拉取RTMP流,并使用RTMP转推出去,支持1对n转推
- [feat] lalserver,运行参数中没指定配置文件时,尝试从几个常见位置读取
- [feat] windows平台下,执行程序缺少运行参数时,等待用户键入回车再退出程序,避免用户双击打开程序时程序闪退,看不到提示信息
- [feat] rtsp,支持auth basic验证
- [feat] rtsp,实现PushSession
- [feat] rtsp,所有Session类型都支持auth,interleaved
- [fix] rtsp,只有输入流中的音频和视频格式都支持时才使用queue,避免只有音频或视频时造成延迟增加
- [fix] rtsp,输入流只有单路音频或视频时,接收对象设置错误导致崩溃
- [fix] rtsp,client session的所有信令都处理401 auth
- [fix] rtsp,in session使用rtp over tcp时,收到sr回复rr
- [fix] rtsp,setup信令header中的transport字段区分record和play,record时添加mode=record
- [fix] avc,整体解析sps数据失败时,只解析最基础部分
- [refactor] rtsp,重构部分逻辑,聚合至sdp.LogicContext中
- [refactor] rtsp,新增ClientCommandSession,将PushSession和PullSession中共用的信令部分抽离出来
- [refactor] rtsp,新增BaseOutSession,将PushSession和SubSession中共用的发送数据部分抽离出来
- [refactor] rtsp,整理所有session,包含生命周期,ISessionStat、IURLContext、Interleaved收发等函数,整理debug日志
- [doc] 启动lal官方文档页: https://pengrl.com/lal
- [doc] 新增文档《rtmp url,以及vhost》: http://pengrl.com/lal/#/RTMPURLVhost
- [chore] Go最低版本要求从1.9上升到1.13