q191201771
|
3b6ae774e8
|
[feat] lalserver: HTTP API新增start_relay_pull接口,并同时支持rtmp和rtsp
|
3 years ago |
q191201771
|
f551dbfa65
|
[patch] prev pr patch
|
3 years ago |
joestarzxh
|
6107a5ecd4
|
[feat]rtmp ack PeerWinAckSize属性修正一下
|
3 years ago |
joestarzxh
|
b0e201d4d4
|
[feat]rtmp ack PeerWinAckSize改由options设置
|
3 years ago |
joestarzxh
|
4385e40bec
|
[feat]rtmp pull增加ack应答提高兼容性
|
3 years ago |
q191201771
|
8824038415
|
- [refactor] 转换mpegts使用remux.Rtmp2MpegtsRemuxer不再依赖hls.Muxer - [opt] lalserver: relay push增加超时检查,增加带宽统计 - [refactor] 所有interface类型以i字母开头
|
3 years ago |
q191201771
|
93302705c7
|
[feat] httpts支持gop缓冲,提高秒开 #129
|
3 years ago |
q191201771
|
aa480aa3ec
|
[log] rtmp: 优化定位问题的日志 #135
|
3 years ago |
q191201771
|
11c412cf84
|
- [refactor] 将rtmp转ts的代码从hls重构至remux中 - [fix] mpegts: 修复单音频场景,有一帧音频重复的问题
|
3 years ago |
q191201771
|
8c0d272fad
|
1. [refactor] 重构logic.Group 2. [test] 修复CI环境的innertest
|
3 years ago |
q191201771
|
abf50b107d
|
- [refactor] 规范所有导出符号的注释 - [refactor] base.ReadableNowTime()
|
3 years ago |
q191201771
|
0f21334964
|
[opt] 支持pkg层面控制日志 #62
|
3 years ago |
q191201771
|
fdaf48528e
|
[opt] rtmp和rtsp收包时添加trace级别日志 #63
|
3 years ago |
q191201771
|
57ad766d34
|
[feat] 新增simple auth鉴权功能,rtmp,httpflv支持md5鉴权
|
3 years ago |
q191201771
|
ca3797c822
|
[refactor] prev pr patch
|
3 years ago |
joestarzxh
|
db2950ac69
|
[fix] rtmp 解决未处理PingRequest 回应
|
3 years ago |
q191201771
|
03ccfa0e5f
|
1. rtmp.PushSession和PullSession可配置WriteBuf和ReadBuf大小,以及WriteChanSize 2. 整理完所有error返回值 3. 提高测试覆盖率
|
3 years ago |
q191201771
|
83aa44eebe
|
[refactor] error信息更友好
|
3 years ago |
q191201771
|
ad547d0010
|
[test] 提高测试覆盖
|
3 years ago |
q191201771
|
875569edb3
|
[refactor] 把base.Buffer移到naza库中
|
3 years ago |
q191201771
|
39ccc1b911
|
[refactor] rtmp: 使用base.Buffer
|
3 years ago |
q191201771
|
7d6c38a66b
|
[feat] package rtmp: ServerSession增加Writev函数
|
3 years ago |
q191201771
|
812cfd8a55
|
[chore] 增强健壮性:package rtmp: 对端协议错误时,主动关闭对端连接而不是主动panic
|
3 years ago |
q191201771
|
6d2bf2556d
|
[feat] 优化和统一所有client类型session的使用方式:session由于内部或对端原因导致关闭,外部不再需要显式调用Dispose函数释放资源
|
4 years ago |
q191201771
|
528444e582
|
messages:
- [refactor] 使用httpflv.Tag.Payload()
- [refactor] 新增函数remux.FlvTag2RtmpChunks()
|
4 years ago |
q191201771
|
bf9c621d60
|
(#102) [test] rtmp amf object中包含null类型的单元测试
|
4 years ago |
ShiBen
|
ac70d57bac
|
fix#102
|
4 years ago |
q191201771
|
cf489cf16d
|
prev commit patch
|
4 years ago |
q191201771
|
1db76a4e46
|
[fix] rtmp信令打包参考本地chunk size
|
4 years ago |
q191201771
|
1f97f1ef50
|
[fix] rtmp client session兼容对端回复两次publish或play信令的情况
|
4 years ago |
q191201771
|
0e409102a0
|
(#83) [feat] package rtprtcp: 支持h265 rtp打包
|
4 years ago |
q191201771
|
731bed099a
|
(#87) [refactor] 重构lal整个项目的命名规则
|
4 years ago |
q191201771
|
a41dc6d8ee
|
messages:
1. #86 [fix] gop缓存设置为0时,可能花屏
2. #84 [fix] rtmp merge write开启时,可能给新加入的sub session发送错误的数据
|
4 years ago |
q191201771
|
e4df7af23b
|
[refactor] package rtmp: rtmp.ClientSession支持配置选择简单握手或者复杂握手, 默认使用简单握手 (#68)
|
4 years ago |
q191201771
|
158811d0e8
|
[fix] rtmp ClientSession握手,c2的发送时机,由收到s0s1s2改为收到s0s1就发送,解决握手失败的case #42
|
4 years ago |
q191201771
|
b180363f76
|
patch
|
4 years ago |
q191201771
|
ad4f458899
|
prev commit patch: fix aggregate message
|
4 years ago |
q191201771
|
f3078efc3c
|
prev commit patch: fix aggregate stream
|
4 years ago |
q191201771
|
7ce0ad4f35
|
prev commit patch: fix aggregate timestamp
|
4 years ago |
q191201771
|
f4c5b91794
|
[refactor] rtmp aggregate message
|
4 years ago |
joestarzxh
|
3fa57acfc7
|
[fix]修正RTMP aggregate 时间戳问题
|
4 years ago |
joestarzxh
|
efdd0eaa6b
|
[fix]忘记的文件,rtmp 支持Aggregate Message
|
4 years ago |
joestarzxh
|
55a690a989
|
[feat]rtmp 支持Aggregate Message
|
4 years ago |
q191201771
|
3df6ee4027
|
1. [refactor] 使用新的unique id生成器,提高性能 2. [refactor] 统一各Session接口
|
4 years ago |
q191201771
|
e1b89c7eff
|
messages:
- [feat] http notify,session增加完整url字段
- [feat] http notify,补全所有session类型
- [refactor] 重构/app/demo/pullrtmp2pushrtmp
|
4 years ago |
q191201771
|
37d8d1738d
|
messages:
- [doc] 启动lal官方文档页: https://pengrl.com/lal
- [doc] 新增文档《rtmp url,以及vhost》: http://pengrl.com/lal/#/RTMPURLVhost
- [feat] demo,新增/app/demo/pullrtmp2pushrtmp,从远端服务器拉取RTMP流,并使用RTMP转推出去,支持1对n转推
- [fix] rtsp,setup信令header中的transport字段区分record和play,record时添加mode=record
|
4 years ago |
q191201771
|
766573741e
|
messages:
- [feat] rtsp,实现PushSession
- [feat] demo,新增app/demo/pullrtsp2pushrtsp,可拉取rtsp流,并使用rtsp转推出去
- [refactor] rtsp,重构部分逻辑,聚合至sdp.LogicContext中
|
4 years ago |
q191201771
|
942b5da52d
|
messages:
- [feat] rtsp,pull支持interleaved(over tcp)模式。demo/pullrtsp2pushrtmp和demo/pullrtsp可通过运行参数选择是否使用over tcp模式
- [feat] rtsp,pull支持auth digest验证
- [feat] rtsp,pull支持定时发送GET_PARAMETER rtsp message进行保活(对端支持的情况下)
- [fix] rtsp,输入流音频不是AAC格式时,保证视频流可正常remux成其他封装协议
- [fix] rtsp,pull开始时发送dummy rtp/rtcp数据,保证对端能成功发送数据至本地
- [fix] rtsp,将以下包返回给上层:rtsp pub h265, single rtp packet, VPS, SPS, PPS, SEI
- [fix] rtsp,修改rtsp.AVPacketQueue的行为:当音频或者视频数量队列满了后,直接出队而不是丢弃
- [fix] sdp,修复解析及使用sdp错误的一些case
- [refactor] rtmp/httpflv/rtsp,统一所有PullSession:超时形式;Pull和Wait函数
- [fix] avc,尝试解析scaling matrix
|
4 years ago |
q191201771
|
89f0442ee1
|
commit messages:
- 增加demo程序:`/app/demo/pullrtsp2pushrtmp`,可拉取rtsp流,并使用rtmp转推出去
- 所有session实现ISessionURLContext接口,用于获取流url相关的信息
- 所有session实现ISessionStat接口,用于计算、获取bitrate等流相关的信息
- 重构所有client session解析url的地方
|
4 years ago |
q191201771
|
5df6f4b94e
|
commit messages:
- [feat] 新增rtsp pull拉流客户端,`/app/demo/pullrtsp`
- [feat] 实现rtsp pull session
- [feat] rtsp sub支持interleaved模式
- [feat] 新增package remux
- [refactor] 整体重构package rtsp
- [fix] 正确处理大于2字节的AudioSpecificConfig
|
4 years ago |
q191201771
|
fa6599deff
|
messages:
- [feat] rtsp pub -> rtsp sub
- [refactor] 整体重构package rtsp,未完成
- [feat] rtsp pub -> relay rtmp push
|
4 years ago |
q191201771
|
34bd5cf004
|
commit messages:
- `/app/demo/dispatch`处理`on_update`事件回调
- HTTP Notify增加新事件回调`/on_server_start`
- HTTP API `/api/stat/lal_info` 中增加`server_id`字段
- 增加`gen_tag.sh`,用于打tag
|
4 years ago |
q191201771
|
a58a2ce60c
|
1. [feat] 配置文件中支持配置是否清除过期流的HLS文件 2. [feat] 增加HTTP API接口`/api/ctrl/kick_out_session`,用于踢掉指定的session 3. [feat] HTTP Notify事件回调中的session结构体都增加session id字段
|
4 years ago |
q191201771
|
c3aac90cc9
|
1. [feat] lalserver的session增加存活检查,10秒没有数据会主动断开连接 2. [feat] lalserver的group没有sub拉流时,停止对应的pull回源 3. [feat] HTTP Notify事件回调中,增加`on_rtmp_connect`
|
4 years ago |
q191201771
|
1e3358c80b
|
1. [feat] 增加HTTP Notify事件回调功能,见 https://pengrl.com/p/10101 2. [feat] HTTP API中,增加`/api/ctrl/start_pull`接口,可向lalserver发送命令,主动触发pull回源拉流 3. [feat] HTTP API中,group结构体中增加pull结构体,包含了回源拉流的信息 4. [fix] 通过配置文件静态relay push转推时,push rtmp url透传pub rtmp url的参数
|
4 years ago |
q191201771
|
f2fc9a741a
|
增加HTTP API接口,获取服务信息
|
4 years ago |
q191201771
|
5be88179e9
|
prev pr patch
|
4 years ago |
joestarzxh
|
31f092cbb3
|
[fix] 支持srs.player.js
|
4 years ago |
q191201771
|
e5845e2d3b
|
1. [fix] 修复rtsp pub无法接收IPv6 RTP数据的问题 2. [feat] 部分rtsp pub支持h265的代码
|
4 years ago |
q191201771
|
0f94f8d4b2
|
1. [feat] 支持HTTP-TS长连接拉流 2. [feat] 在hls直播基础上,同时支持hls录制回放功能
|
4 years ago |
q191201771
|
2b67df6d12
|
messages:
- [refactor] 新增package mpegts,将部分package hls中代码抽离出来
- [feat] 在各协议的标准字段中写入lal版本信息
- [log] 整理所有session的日志
|
5 years ago |
q191201771
|
afb7850b87
|
messages:
- [feat] lalserver集成rtsp pub功能。支持接收rtsp(rtp/rtcp)推流,转换为rtmp,httpflv,hls格式供拉流使用
- [refactor] 新增package sdp,rtprtcp,将package rtsp中对应的内容独立出来
- [refactor] 新增package base,整理lal项目中各package的依赖关系。该工作还在进行中
- [feat] package rtmp: 增加BuildMetadata函数
|
5 years ago |
q191201771
|
a11723bde7
|
1. [feat] package rtsp: 开始处理收到的rtp数据 2. [style] Nalu更改为NALU
|
5 years ago |
q191201771
|
5576b6659d
|
[fix] rtmp打包时的扩展时间戳
|
5 years ago |
q191201771
|
4f8757579f
|
messages:
- [feat] 部分rtsp代码,目前已经粗略完成pub的前期交互,可接收到rtp,rtcp数据
- [test] innertest中对hls生成的文件做md5验证
- [refactor] 整理日志
- [doc] 增加PR规范
- [chore] 下载单元测试用的test.flv失败,本地文件大小为0时,去备用地址下载
- [refactor] 所有回调函数的名字,从CB后缀改为On前缀
|
5 years ago |
q191201771
|
353f837c8e
|
messages:
- [feat] lalserver增加回源功能
- [fix] rtmp.AMF0.ReadObject函数内部,增加解析子类型EcmaArray。避免向某些rtmp服务器推流时,触发断言错误
- [fix] 解析rtmp metadata时,兼容Object和Array两种外层格式
- [refactor] 重写了lalserver的中继转推的代码
|
5 years ago |
q191201771
|
b3024c8a4e
|
messages:
- [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] 日志整理
|
5 years ago |
q191201771
|
9af3b44753
|
Changes:
- [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
- [refactor] package aac: 函数ADTS::PutAACSequenceHeader检查输入切片长度
- [reafactor] package aac: 删除函数CaptureAAC
- [feat] 增加demo/learnrtsp,pkg/rtsp,开始学习rtsp
|
5 years ago |
q191201771
|
41cdddbe2f
|
1. [feat] 完成package hls的基础功能,并做了小范围重构 2. [feat] lals服务接入hls功能 3. [refactor] 将app目录下除lals的其他应用移入demo目录下 4. [feat] 新增两个demo:analyseflv和analysehls,分别用于拉取HTTP-FLV和HLS的流,并进行分析v0.12.3 -> CHANGELOG.md
|
5 years ago |
q191201771
|
99ab8df79a
|
[fix] package rtmp: 接收rtmp数据时,同一个message的多个chunk混合使用fmt1,2时,可能出现时间戳多加的情况
|
5 years ago |
yoko
|
9e80735f1a
|
Merge pull request #1 from ShimmerGuest/master
[fix] simple handshake:数据包s2发送完整的c1包内容,避免mac上4.2.2版本ffmpeg推流时警告签名不匹配
|
5 years ago |
q191201771
|
da29f9866c
|
[feat] HLS: RTMP格式的视频数据转换成TS格式基本完成
|
5 years ago |
liquanqing
|
706c907911
|
[fix]simple handshake:数据包s2发送完整的c1包内容,避免mac上4.2.2版本ffmpeg推流时警告签名不匹配
|
5 years ago |
q191201771
|
e1f6ebdc14
|
1. [feat] RTMP和HTTP-FLV支持H265 2. [feat] logic支持GOP缓存
|
5 years ago |
q191201771
|
570228f18d
|
1. [fix] package logic: 转发 rtmp metadata 时,message header 中的 len 字段可能和 body 实际长度不一致 2. [log] package rtmp: 一些错误情况下,对接收到包 dump hex 3. [dep] update naza -> v0.7.1
|
5 years ago |
q191201771
|
3986683396
|
- 测试推送 n 路流至 lals,再从 lals 拉取这 n 路流的性能消耗
- rtmp.AVMsg 增加判断包中音视频数据是否为 seq header 等函数
- app/httpflvpull 使用 naza/bitrate 来统计音频和视频的带宽
- logic config 的部分配置移动至 app/lals 中
- logic 增加 LazyChunkDivider 组织代码
- gop cache 写了一点,没完成
|
5 years ago |
q191201771
|
e89ff9992b
|
- package rtmp: 结构体的属性重命名 AVMsg.Message -> AVMsg.Payload
- app/flvfile2rtmppush: 支持推送多路 rtmp 流,相当于一个压测工具
- app/rtmppull: 支持对特定的一路流并发拉取多份,相当于一个压测工具
- README 中补充性能测试结果
|
5 years ago |
q191201771
|
5ec728359c
|
- package rtmp:
- 增加结构体 ClientSessionOption,PushSessionOption,PullSessionOption
- 增加结构体 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
- 增加两个函数 MakeDefaultRTMPHeader,FLVTagHeader2RTMPHeader
|
5 years ago |
q191201771
|
24f56530e9
|
- package logic: 将 rtmp pub session 的音视频转发给httpflv sub session
- package httpflv: ServerSubSession 使用 naza connection
- package logic: 增加 `example_test`,加载flv文件后使用rtmp推流至服务器,然后分别使用rtmp和httpflv将流拉取下来,存成文件,判断和输入文件是否相等
|
5 years ago |
q191201771
|
17a053c3c2
|
- [代码] 默认的rtmp地址
- [代码] naza 更新为 0.4.3
- [架构调整] lal 中的服务器更名为 lals
- [其他] 从远端下载 flv 测试文件,跑单元测试
- [其他] 所有源码文件添加 MIT 许可证
- [其他] test.sh 中加入更多 go tool
|
5 years ago |
q191201771
|
083d05a771
|
1. 从远端下载flv文件做单元测试 2. 添加微信图片 3. 所有源码文件头部添加MIT许可证
|
5 years ago |
q191201771
|
747a529124
|
修改内容:
- 适配 naza,读取配置文件时,部分未配置的字段设置初始值
- build.sh 中 git信息单引号替换成双引号
- test.sh 中 加入 gofmt 检查
|
5 years ago |
q191201771
|
84fdaa84f5
|
修改内容:
- package logic: 增加 func FlvTag2RTMPMsg
- package rtmp:
- 增加 `example_test.go` 开启了一个 Server,一个 PushSession,一个 PullSession,用于测试整个 rtmp 包的流程
- ClientSession 和 ServerSession 使用 nezha 中的 connection
- 增加 struct ChunkDivider
- 调整一些接口
- package httpflv:
- 删除了 group, gop 相关的代码,后续会放入 package logic 中
- 更新 nezha -> 0.3.0
|
5 years ago |
q191201771
|
7f1a48ce9b
|
修改内容如下:
- [结构调整] 将 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 -> uint8,msgLen 相关的类型 int -> uint32
- [其他] 更新 nezha,新版本的日志库
- [其他] 整理日志
- [其他] pprof web 地址放入配置文件中
- [测试] 使用一些开源工具对 app/lal 做推流、拉流测试
|
5 years ago |
q191201771
|
25523bcf6c
|
-) 增加 rtmp.HandshakeClientComplex 复杂握手模式 -) 整理一些 struct 的 Dispose 方法 -) 整理日志 -) 增加一些单元测试和 benchmark -) 整理 lal 项目的 roadmap -) 更新 nezha 版本至 0.1.0
|
5 years ago |
q191201771
|
bce56313ae
|
app lal: 接收 USER1 USER2 信号,优雅退出
|
5 years ago |
q191201771
|
07a6e6702e
|
整理代码
|
5 years ago |
q191201771
|
49668ea9b5
|
prev commit patch
|
5 years ago |
q191201771
|
af4a30fd36
|
package rtmp: 1). pack.go 重命名为 message_packer.go 2). 增加 amf0.WriteNull 和 amf0.WriteBoolean 3). WriteObject 中增加 bool 类型 4). bugfix: ReadString 当长度不足时返回 ErrAMFTooShort 而不是 ErrAMFInvalidType 5). pkg/rtmp/amf0_test.go 增加一些 case
|
5 years ago |
q191201771
|
da1bca5a10
|
更新 nezha 版本,使用其中的 MockWriter
|
5 years ago |
q191201771
|
062c25c016
|
package rtmp: pack_test.go 测试覆盖率上升至 100% 注意,方法 writeMessageHeader 有不兼容修改
|
5 years ago |
q191201771
|
982ad1e9f4
|
增加 pkg/rtmp/pack_test.go
|
5 years ago |
q191201771
|
5135067a73
|
只对 /pkg 做单元测试
|
5 years ago |
q191201771
|
8741d6b3dc
|
1). rtmp.ServerSession bugfix: 做 group 匹配时使用去除 url 参数的 streamName 2). rtmp.Group 增加 UniqueKey
|
5 years ago |
q191201771
|
8830ef6db6
|
1). app/flvfile2rtmppush 优化平稳推流 2). app/modflvfile 使用 log.FatalIfErrorNotNil 3). rtmp.ClientSession bugfix 信令中的 streamName 携带 url 参数,匹配 group 时不携带 4). rtmp.ServerSession 中处理 typeidAck
|
5 years ago |
q191201771
|
1394663101
|
1). flvfile2rtmppush 增加 bininfo 2). flvfile2rtmppush error 时 panic -> log & os exit 3). build_linux.sh 直接调用 build.sh
|
5 years ago |
q191201771
|
0f5d5ab395
|
新增 go.mod 和 go.sum 文件
|
5 years ago |
q191201771
|
8136c5b620
|
1. httpflv 抽象出 readTag 函数 2. rtmp.ClientSession 读取 typeidAck
|
5 years ago |
q191201771
|
994d9d2e14
|
1. bugfix: 打rtmp chunk时,如果时间戳超过3字节,数组越界了,没有预留扩展时间戳的位置 2. rtmp.ClientSession 增加更多的超时方式
|
5 years ago |
q191201771
|
eeb47bbd92
|
1. 所有时间戳类型 int -> uint32 2. app/flvfile2rtmppush 循环推送音视频数据
|
5 years ago |