Commit Graph

27 Commits (08487f9a9ff87413dc8115c5f49e2fc19cba58a5)

Author SHA1 Message Date
q191201771 0188225b8b reduce preallocate, patch for
kuabhish 2b7aae022a fix memory leak scenario
q191201771 b9bd066b84 new version gofmt to comment
q191201771 8d2886b65b todo rtmp Message2ChunksV
q191201771 11c412cf84 - [refactor] 将rtmp转ts的代码从hls重构至remux中 - [fix] mpegts: 修复单音频场景,有一帧音频重复的问题
q191201771 abf50b107d - [refactor] 规范所有导出符号的注释 - [refactor] base.ReadableNowTime()
q191201771 528444e582 messages:
- [refactor] 使用httpflv.Tag.Payload()
- [refactor] 新增函数remux.FlvTag2RtmpChunks()
q191201771 731bed099a () [refactor] 重构lal整个项目的命名规则
q191201771 89f0442ee1 commit messages:
- 增加demo程序:`/app/demo/pullrtsp2pushrtmp`,可拉取rtsp流,并使用rtmp转推出去
- 所有session实现ISessionURLContext接口,用于获取流url相关的信息
- 所有session实现ISessionStat接口,用于计算、获取bitrate等流相关的信息
- 重构所有client session解析url的地方
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函数
q191201771 5576b6659d [fix] rtmp打包时的扩展时间戳
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
q191201771 24f56530e9 - package logic: 将 rtmp pub session 的音视频转发给httpflv sub session
- package httpflv: ServerSubSession 使用 naza connection
- package logic: 增加 `example_test`,加载flv文件后使用rtmp推流至服务器,然后分别使用rtmp和httpflv将流拉取下来,存成文件,判断和输入文件是否相等
q191201771 083d05a771 1. 从远端下载flv文件做单元测试 2. 添加微信图片 3. 所有源码文件头部添加MIT许可证
q191201771 747a529124 修改内容:
- 适配 naza,读取配置文件时,部分未配置的字段设置初始值
- build.sh 中 git信息单引号替换成双引号
- test.sh 中 加入 gofmt 检查
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
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 做推流、拉流测试
q191201771 1394663101 1). flvfile2rtmppush 增加 bininfo 2). flvfile2rtmppush error 时 panic -> log & os exit 3). build_linux.sh 直接调用 build.sh
q191201771 0f5d5ab395 新增 go.mod 和 go.sum 文件
q191201771 994d9d2e14 1. bugfix: 打rtmp chunk时,如果时间戳超过3字节,数组越界了,没有预留扩展时间戳的位置 2. rtmp.ClientSession 增加更多的超时方式
q191201771 eeb47bbd92 1. 所有时间戳类型 int -> uint32 2. app/flvfile2rtmppush 循环推送音视频数据
q191201771 e14a18e4a3 删除 /pkg/util ,这部分内容移入至另一个仓库 github.com/q191201771/nezha
q191201771 8dc82bf27a 兼容srs-bench, rtmp message中的非首个 chunk 使用fmt3 而非 fmt0
q191201771 472b299124 log
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 中
q191201771 79ebdbe8c8 commit messages:
* rtmp.ServerSession 使用channel发送数据,增加Dispose方法
* rtmp.Group 缓存avc header,aac header
q191201771 ca27679b9d commit messages:
* 加入编译时信息bininfo
* 将rtmp.PubSession的数据转发给rtmp.SubSession,目前先sub再pub可以播放了
* 将lal.Group的功能拆分成httpflv.Group和rtmp.Group两部分
* 整理pkg和/pkg/util包