Commit Graph

275 Commits (af1a6cc32e513d4685833d01b23df740b7a57856)

Author SHA1 Message Date
q191201771 0935c58a0d [patch] prev commit patch 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 08287e7b8b [patch] http notify v0.0.3 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 adcb4935ad [fix] relay push with url param 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 e5788aeadd [feat] 一部分rtsp sub的代码 4 years ago
q191201771 61e0c78f89 v0.16.0 version 4 years ago
q191201771 9351c3a1d0 [fix] 修复rtsp pub推流时,纯视频(没有音频)流处理的问题 4 years ago
q191201771 678dd5c8f2 [feat] HTTP API增加/api/list页面,展示所有接口的列表 4 years ago
q191201771 f2fc9a741a 增加HTTP API接口,获取服务信息 4 years ago
q191201771 d7df4d9623 [feat] 支持rtsp pub h265 (lalserver支持接收rtsp h265的推流) 4 years ago
q191201771 bb9cbb9481 [feat] 解析hevc的vps, sps, pps,使用vpsspspps构造seq header 4 years ago
q191201771 5be88179e9 prev pr patch 4 years ago
joestarzxh 31f092cbb3 [fix] 支持srs.player.js 4 years ago
q191201771 ed5471e745 v0.15.1 4 years ago
q191201771 63843ad377 [fix] 配置文件没有开启HTTPS-FLV时,错误使用nil对象导致崩溃 4 years ago
q191201771 1aa40271fa build v0.15.0 4 years ago
q191201771 e5845e2d3b 1. [fix] 修复rtsp pub无法接收IPv6 RTP数据的问题 2. [feat] 部分rtsp pub支持h265的代码 4 years ago
q191201771 80e4a83067 [fix] windows undefined syscall.Kill, use logic.Dispose in pkg innertest directly 4 years ago
q191201771 993cc13a44 messages:
- [feat] HTTP-FLV支持HTTPS播放
- [feat] demo pullrtmp2hls: 新增demo,从远端服务器拉取rtmp流,存储为本地hls文件
- [feat] package stun: 完成基础的server功能
- [feat] package hevc: 增加函数,从HVCC SeqHeader解析出VPS,SPS,PPS
- [feat] package hevc: 增加函数,将HVCC SeqHeader转换为AnnexB格式
- [fix] package hls: 修复record m3u8文件无法更新的问题
4 years ago
q191201771 5f4ec663da messages:
- [feat] httpflv, httpts, hls支持跨域请求播放
- [feat] 新增package alpha/stun,学习stun协议
4 years ago
q191201771 0f94f8d4b2 1. [feat] 支持HTTP-TS长连接拉流 2. [feat] 在hls直播基础上,同时支持hls录制回放功能 4 years ago
q191201771 23f3b5e636 [log] off hls debug log 5 years ago
q191201771 86c53800b4 [fix] Go1.9 undefined: strings.ReplaceAll 5 years ago
q191201771 2b67df6d12 messages:
- [refactor] 新增package mpegts,将部分package hls中代码抽离出来
- [feat] 在各协议的标准字段中写入lal版本信息
- [log] 整理所有session的日志
5 years ago
q191201771 af21aabcfc [fix] package logic: Group.DelRTMPPubSession中打印日志时,group.rtmpPubSession为nil时解引用崩溃的bug 5 years ago
q191201771 ee8de29f7e messages:
- [feat] package rtsp: 支持rtp h264 STAP-A格式
- [fix] package avc: 修复解析sps中PicOrderCntType为2无法解析的bug
- [fix] package sdp: 修复解析sdp fmtp中aac config长度大于4无法解析的bug
- [refactor] package logic: 重构Group,将不同类型的输入流、输出流进行抽象,逻辑统一
- [refactor] package rtprtcp: 将RTPComposer重命名为RTPUnpacker
- [test] 使用wontcry30s.flv作为单元测试用的音视频文件
- [chore] 使用Makefile管理build, test
- [chore] CI跑1.9和master两个Go版本,跑linux、macos、windows三个平台,跑build和test两个脚本
- [doc] 增加文档: https://pengrl.com/p/20080/
5 years ago
q191201771 0509ec5fdd messages:
- [fix] rtsp: rtp和rtcp使用两个连续的端口
- [feat] 增加rtsp.AVPacketQueue,用于处理时间戳问题
- [feat] 处理发送者报告SR,并生成接收者报告RR回复
- [refactor] 整理rtsp.Server代码
- [refactor] 使用nazanet.AvailUDPConnPool和nazanet.UDPConnection
- [feat] rtsp.PubSession资源释放
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
Ilya Galimyanov 61a266d2ef
HLS: close playlist after Muxer.Dispose
Put #EXT-X-ENDLIST
5 years ago
q191201771 374c3e4655 [doc] comment about func logic::Group::Dispose 5 years ago
q191201771 c3785f33b2 [fix] group Dispose主动释放所有内部资源,与中继转推回调回来的消息,做同步处理,避免崩溃 5 years ago
q191201771 3e8c71f607 messages:
- [feat] rtsp server,将推流上来的h264和aac的rtp数据转换成es流,基本跑通了
- [refactor] package aac,相当于重写了
- [refactor] app/demo下的flvfile2rtmppush,rtmppull,httpflvpull重命名为pushrtmp,pullrtmp,pullhttpflv
5 years ago
q191201771 7e4e3816ac messages:
- [feat] package avc: 提供一些AVCC转AnnexB相关的代码。学习解析SPS、PPS内部的字段
- [refactor] package hls: 使用package avc
- [feat] package rtsp: 部分解析SDP的代码。从SDP中解析sps,pps
- [feat] package rtsp: 将AVC类型的RTP包合成帧数据。未完成
5 years ago
q191201771 a11723bde7 1. [feat] package rtsp: 开始处理收到的rtp数据 2. [style] Nalu更改为NALU 5 years ago
q191201771 5576b6659d [fix] rtmp打包时的扩展时间戳 5 years ago
bigbao9494 ca823864e1 [perf] remove msg copy,remove goroutine in getOrCreateGroup 5 years ago
ljy 70dc566f45 pull with new-master.modify WriteFrame. 5 years ago
ljy f9b9ec8231 ljy test 5 years ago
ljy ef7db542a1 ljy add note for hls,add clearTS 5 years ago
ljy de26ec7973 modify getOrCreateGroup 5 years ago
ljy e2e4d19cf9 modify WriteFrame 5 years ago
q191201771 23f386fce7 [feat] 部分rtsp代码 5 years ago
q191201771 d0ff67ffb9 [feat] httpflv pull拉流时,携带url参数 5 years ago
q191201771 6d2368f4c6 [fix] hls写ts视频数据时,流中没有spspps导致崩溃 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 c7f89b0ad3 [fix] package hls: 检查输入的rtmp message是否完整,避免非法数据造成崩溃 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
lqq 7e804f5f9e 修改在feedNewGOP时先判断是否队列是否满,在添加数据 5 years ago
lqq 69958df6b6 修改一个判断GOPRing是否满的bug,调整代码格式 5 years ago
liquanqing 2fd4b858ba 统封装环形队列GopEmpty的逻辑 5 years ago
liquanqing 2347363a18 在gop_cache中简单的对环形队列缓存进行封装 5 years ago
liquanqing 3d8c1c3d58 [refactor]:将环形队列结构删除,将环形队列逻辑写在GOgop_cache中 5 years ago
lqq c93237e29f [perf]:缓存一个GOP时复用之前的GOP对象和GOP中的帧列表 5 years ago
lqq 950ed48529 [chore]:修改两个换行,对齐格式 5 years ago
lqq 9ad87393b6 [fix]:将测试文件的缩进由空格修改为一个tab 5 years ago
lqq 59871d9f6d [fix]:修改计算环形队列长度计算方式 5 years ago
lqq b4f470a798 [fix]:修改发送gop时多发送了一个gop 5 years ago
lqq 720085efaa [refactor]:将gop缓存的数据结构由切片改为环形队列 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 d7e77299b2 [feat] HLS: rtmp音视频数据转换成m3u8+ts格式并落盘部分基本完成了 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 a6d68e8ca0 [feat] 部分rtmp video message转成mpegts的代码,还没有完成 5 years ago
q191201771 bde11a9524 [refactor] use nazabits 5 years ago
q191201771 4336627955 [feat] 新package hevc [doc] package aac增加一些注释 [fix] windows平台缺少USER1信号 [fix] gop缓存时,不以I帧开始的流会崩溃 [chore] 提供各平台二进制可执行文件的压缩包 [refactor] 使用naza 0.10.0[refactor] naza 0.10.0 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 054fcc935b [feat] 把 httpflv pull session 的接收 buff 缓存大小调小了,这个地方后续还要修改 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 823ff165fa nezha -> v0.2.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 696b090fbf 1). CaptureAVC 添加错误返回值 2). 新增 pkg/avc/avc_test.go 5 years ago
q191201771 2de67da06a 1). errors.PanicIfErrorOccur -> log.FatalIfErrorNotNil 2). 新增 pkg/aac/aac_test.go 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
q191201771 89af181710 1. stream.msgLen -> stream.header.MsgLen 2. rtmp stream name with url raw query 3. 6 years ago
q191201771 750e7adce0 rtmp.ClientSession: ModWriteBufSize 6 years ago
q191201771 7ec3b9c0e1 pkg/httpflv/client_pull_session.go 更新 nezha 中的 connection 6 years ago
q191201771 5648cab5e4 增加 httpflv.PullSessionConfig 6 years ago
q191201771 97b5a05973 整理 pkg/httpflv/client_pull_session.go 6 years ago
q191201771 99a776106a httpflv.PullSession 中使用 nezha/connection 做 net.Conn 的管理 6 years ago
q191201771 e14a18e4a3 删除 /pkg/util ,这部分内容移入至另一个仓库 github.com/q191201771/nezha 6 years ago
q191201771 60c2d11f78 assert.Equal 的 msg 参数可选是否填入 6 years ago
q191201771 0437993a24 提交信息:
* rtmp音频直接转发,不等待视频
* 新增 /pkg/util/assert 用于替换单元测试中的 stretchr/testify/assert
* 补充一些单元测试
6 years ago
q191201771 8dc82bf27a 兼容srs-bench, rtmp message中的非首个 chunk 使用fmt3 而非 fmt0 6 years ago
q191201771 472b299124 log 6 years ago
q191201771 b770eeb48b 增加 /app/httpflvpull , http-flv拉流客户端 6 years ago
q191201771 3a12daab80 日志按大小翻滚 6 years ago
q191201771 1be33f77f5 修改内容如下:
- 去除对第三方日志库seelog的依赖,自己实现了一个简单的日志模块 /pkg/util/log
- 去除对 github.com/pkg/errors 的依赖,至此,lal不依赖任何第三方库
- 从flv文件中抽取aac数据写成aac es流格式文件
- 增加 app/rtmppull,一个rtmp拉流客户端
6 years ago
q191201771 03208d5a55 添加 app/flvfile2es 用于从flv文件中抽取h264 es流并写入文件 6 years ago
q191201771 8ae5a84133 COMMIT MSG:
* 增加 /app/modflvfile 用于修改flv文件
* 解决ffmpeg推rtmp时,时间戳过大fmt为3,依然有ext ts字段的问题
* 去除 /pkg/rtmp 下的 server_pub_session.go 和 server_sub_session.go,都
聚合在 server_session.go 中
6 years ago
q191201771 c737f95fa0 添加app/flvfile2rtmppush,可读取一个flv文件,使用rtmp协议推送出去 6 years ago
q191201771 79ebdbe8c8 commit messages:
* rtmp.ServerSession 使用channel发送数据,增加Dispose方法
* rtmp.Group 缓存avc header,aac header
6 years ago
q191201771 fda375ab60 fix ut 6 years ago
q191201771 ca27679b9d commit messages:
* 加入编译时信息bininfo
* 将rtmp.PubSession的数据转发给rtmp.SubSession,目前先sub再pub可以播放了
* 将lal.Group的功能拆分成httpflv.Group和rtmp.Group两部分
* 整理pkg和/pkg/util包
6 years ago
q191201771 27d12599a2 add func Message2Chunks 6 years ago
q191201771 e1f81de2c2 add unique_test.go 6 years ago
q191201771 9950b1484f 整理目录,源码放入app/和pkg/下 6 years ago