Commit Graph

339 Commits

Author SHA1 Message Date
langhuihui
29a13220bf feat: add auto build docker v4.7.5-beta01241500 2024-01-24 15:00:10 +08:00
langhuihui
06bf245f2b fix: global config not overide v4.7.5-beta01221628 2024-01-22 16:26:09 +08:00
langhuihui
90d8008e3b feat:
- add desc to config struct
- remove gen.go
v4.7.4
2024-01-03 09:47:50 +08:00
langhuihui
063e994328 chore: update preview plugin 2023-12-26 11:13:14 +08:00
langhuihui
52eacbaecb feat: remove gen.go v4.7.4-beta12201019 2023-12-20 10:18:28 +08:00
langhuihui
a8af274ec7 feat: upload to beta v4.7.4-beta12181406 2023-12-18 14:06:00 +08:00
langhuihui
2a2577b9f9 feat: add desc to config struct 2023-12-14 14:33:09 +08:00
langhuihui
3d28bed6f0 fix: h265 v4.7.3 2023-12-01 15:56:32 +08:00
langhuihui
f17db659dd chore: modify conf dir name 2023-11-27 20:48:20 +08:00
langhuihui
fdef232edc feat: add av1 and opus support v4.7.2 v4.7.2-beta11171757 2023-11-17 17:42:41 +08:00
langhuihui
eb3ffe6cd6 fix: repull will dead v4.7.2-beta11161930 2023-11-16 19:28:54 +08:00
langhuihui
9cbbee3f54 fix: record hls ts duration wrong v4.7.2-beta11071111 v4.7.1-beta11071111 2023-11-07 11:11:11 +08:00
langhuihui
3bdc5074e0 fix: rtsp relay 2023-11-03 14:12:56 +08:00
langhuihui
35a10e1c39 fix: rtsp repull bug v4.7.1 2023-11-03 09:45:51 +08:00
langhuihui
722f7d1a5e feat: 兼容不规范的 rtp 包和 sdp v4.7.1-beta10271805 2023-10-27 18:04:11 +08:00
langhuihui
1399beef60 - Engine aspect
1. Add a flow state
2. Add regular expressions to remote push pull
3. Add InviteTrack event
4. Fix several bugs

- In terms of plugins

1. GB 28181 Video Streaming Automatic Shutdown for Unmanned Viewing
2. HLS fixes playback issues and upgrades Gohlslib library
3. Record repairs HLS recording, fixes API method for passing fragment parameters
4. RTMP fixes issues caused by TCP connection failure
5. Upgrade gortsplib to v4 using rtsp
6. Webrtc fixes bug in subscription multiplexing
7. Webrtransport does not configure certificates to automatically use built-in certificates

- 引擎方面

1. 增加一个流状态
2. 远端推拉增加正则表达式
3. 增加 InviteTrack 事件
4. 修复若干 bug

- 插件方面

1. gb28181 录像流无人观看自动关闭
2. hls 修复播放问题,升级 gohlslib 库
3. record 修复 hls 录制,修复 api 方式传递 fragment 参数
4. rtmp 修复因tcp 连接失败导致的问题
5. rtsp 升级 gortsplib到 v4
6. webrtc 修复订阅多路的 bug
7. webrtransport 不配置证书自动使用内置证书
v4.7.0
2023-10-23 14:50:13 +08:00
langhuihui
84f9a02e0a fix: hls pull ts no content-length v4.6.13-beta10231009 2023-10-23 10:09:15 +08:00
langhuihui
7f97d26a2b fix: hls record and play v4.6.13-beta10181407 2023-10-18 14:06:35 +08:00
langhuihui
17dab13edf feat: pull and push support regexp
feat: add pagation support
 fix: stop subscribe when error
v4.6.13-beta09281546
2023-09-28 15:42:50 +08:00
langhuihui
1218158b3e fix: panic and hls record v4.6.13-beta09251513 2023-09-25 15:12:39 +08:00
langhuihui
42b8c6256f chore: update aurora and mp4ff lib v4.6.13-beta09211229 v4.6.12-beta09211229 v4.6.12 2023-09-20 19:29:03 +08:00
langhuihui
13654367d7 fix: pull will sleep at first v4.6.11-beta09181717 2023-09-18 17:17:16 +08:00
langhuihui
bae642096c fix: rtsp plugin memory leak v4.6.11-beta09151619 2023-09-15 16:19:15 +08:00
langhuihui
51c4cd6291 fix: stream close process v4.6.11-beta09141014 v4.6.11-beta09151618 2023-09-14 10:13:50 +08:00
langhuihui
8707d953fe 1. Retrying after remote streaming interruption increases waiting time and fixes retry failure issues
2. Fix concurrent request summary interface timeout
3. Parameters can be passed in during HLS subscription
4. Fix memory leaks in the monitor plugin
5. Fix panic caused by incorrect stream address during Disconnect

- 1、远端拉流中断后重试增加等待时间,修复重试失效问题
- 2、修复并发请求summary接口超时
- 3、hls订阅时可传入参数
- 4、修复monitor插件内存泄露
- 5、修复错误的流地址导致的Disconnect时panic
v4.6.11
2023-09-10 12:19:48 +08:00
dexter
95888790f0 Merge pull request #95 from dwdcth/patch-2
Update go.yml
2023-09-07 14:41:33 +08:00
langhuihui
dfd9af1efd fix: ps解析异常 tcp 逻辑,avoid repull too fast v4.6.11-beta09071313 2023-09-07 13:11:49 +08:00
banshan
475242ff6a Update go.yml 2023-09-06 21:09:31 +08:00
langhuihui
9933950f61 feat: gb的 channel增加输出字段,fix summary timeout v4.6.11-beta09061418 2023-09-06 14:18:27 +08:00
langhuihui
055eb6c022 feat: hls add args to subscriber 2023-08-31 13:41:44 +08:00
langhuihui
7d5b0fbb32 fix: rtsp 修复错误的流地址导致的Disconnect时panic v4.6.11-beta08310905 2023-08-31 09:05:13 +08:00
langhuihui
15da702fec fix: memory leak v4.6.11-beta08290944 2023-08-29 09:43:48 +08:00
langhuihui
e8dbdb4aef fix: engine Run func
- fix receive panic
- fix ps decode memory leak
- gortsplib upgrade to v3.10.0
v4.6.10
2023-08-25 15:05:52 +08:00
langhuihui
5a7aec092c fix: plugin-hls version must be 4.3.3 v4.6.9 2023-08-15 08:55:26 +08:00
langhuihui
4ab1f8e9a1 - API 现在可以返回{"data":xxx,"code":0,"msg":"ok"}
格式
- 按需拉流的事件的类型从`*Stream`修改为`InvitePublish`
- 远程拉流频繁重连后导致多路远程流同时写入同一个`track`
- 在并发序列化`Tracks`时导致错误,通过加锁解决
- 修复`Record`插件录制`fmp4`格式报错
- 更新`WebRTC`插件依赖库版本
- 更新依赖库`quic-go`版本
- 优化`ps`插件中的`tcp`收流逻辑
- 优化`rtmp`插件streamId计算方法
2023-08-14 12:39:57 +08:00
langhuihui
660886fc01 fix: record g711 in mp4 2023-08-07 09:12:47 +08:00
langhuihui
a71166937e - Refactoring the Record plugin to support mp4 format (non fmp4)
- Optimize HLS plugin memory usage
- Change the default remote streaming of RTSP to TCP protocol
- Reason for subscriber closure increase closure
- Reconstruct the summary to reduce invalid collection and prevent concurrent reads and writes
- Add API for mandatory closure of subscribers
- Remote streaming encountered an unreachable address and will no longer retry indefinitely

- 重构Record插件,支持mp4格式(非fmp4)
- 优化HLS插件内存使用
- rtsp远端拉流默认改成tcp协议
- 订阅者关闭增加关闭原因
- 重构summary,减少无效采集,防止并发读写
- 增加强制关闭订阅者的api
- 远端拉流遇到无法连接的地址不再无限重试
v4.6.8
2023-08-06 18:07:36 +08:00
langhuihui
dc54771200 update dockerfile 2023-07-14 16:46:32 +08:00
langhuihui
52bd4c54e7 - fix: record flv append not work
- fix: data track reader
- feat: ignore auth for internal subscriber
- chore: optimize webrtc subscribe

desc:
- 修复了flv的append不生效的问题
- data track读取问题
- 忽略内部订阅者的鉴权功能
- webrtc插件优化,配合webrtc视频墙功能
- gb插件默认开启范围端口
v4.6.7
2023-07-14 16:01:57 +08:00
langhuihui
e5c9cacd8b fix:
- data track push data panic
- g711 new track attach block
- didn't stop all publisher and subscriber when rtmp closed
- ps-plugin audio not enabled

desc:
- 数据轨道写入时引发panic
- 在事件回调中创建g711会导致阻塞
- rtmp关闭时没有停止所有发布者和订阅者
- ps-plugin音频未启用
v4.6.6
2023-07-07 15:45:07 +08:00
langhuihui
39c692a255 - feat: Initiate unit testing and benchmark testing for adding streaming publish subscriptions to the project
- fix: panic generated by concurrent creation of streams for publishing and subscribing
- fix: IdleTimeout invalid issue
- fix: read and write concurrency issues caused by subscriber blocking
- Preview plugin fixes the default port for https
- GB28181 plugin PR merge

- 启动工程增加对流的发布订阅的单元测试和基准测试
- 修复发布和订阅并发创建流产生的panic
- 修复IdleTimeout无效问题
- 修复订阅者阻塞导致读写并发问题
- preview插件修复https默认端口
- gb28181插件PR合并
v4.6.5
2023-06-30 11:31:23 +08:00
langhuihui
507caa1414 - preview plugin (Jessibuca Pro) WebRTC protocol supports H265 and AAC formats
- WebRTC plugin adds screen sharing test page
- WebRTC plugin push stream test page adds camera selection function
- The engine adds the function of dynamically inserting SEI frames
- The engine transforms DataTrack and MediaTrack, and reuses part of the code to reduce complexity
- The event bus adds the engine initialization completion event
- The default port for connecting to the remote console is changed to 44944
- Fix the problem caused by publishing the same StreamPath at the same time

- preview插件(Jessibuca Pro)WebRTC协议支持H265以及AAC格式
- WebRTC插件增加屏幕分享测试页面
- WebRTC插件推流测试页面增加摄像头选择功能
- ​engine增加动态插入SEI帧的功能
- engine对DataTrack改造,和MediaTrack复用部分代码,减少复杂度
- 事件总线增加引擎初始化完成事件
- 连接远程控制台默认端口更换为44944
- 修复同时发布同一个StreamPath引起的问题
v4.6.4
2023-06-17 22:04:08 +08:00
langhuihui
03070c68f6 chroe: gorelease v4.6.3 2023-06-11 15:20:21 +08:00
langhuihui
ec3cd569d1 feat: gb28181 add ptz api and record pause fastforword etc. 2023-06-11 14:48:27 +08:00
langhuihui
a9c433405b -Start the project and introduce the conf directory, adding several common configuration examples
-Customizable favicon.ico
-Adding Pause and Resume methods to Stream in the engine
-The engine introduces sync.Cond to replace the pseudo Spinlock
-Preview plugin introduction jessibuca pro demo
-Jessica plugin introduces support for HTTP/ws-h264/h265 bare streams
-Recording plugin adds a prompt in the log when the file cannot be created
-PS plugin fixes a bug where a single port cannot be reused after use
-Webtransport starts by default through built-in certificate mode

- 启动工程引入conf目录,添加若干常用配置示例
- 可以自定义favicon.ico
- 引擎中Stream增加Pause和Resume方法
- 引擎引入sync.Cond替代伪自旋锁
- 预览插件引入jessibuca pro demo
- jessica插件引入对http/ws-h264/h265 裸流支持
- 录制插件在无法创建文件时日志中增加提示
- ps插件修复一个单端口使用后无法重复使用的bug
- webtransport通过内置证书方式默认启动
v4.6.2
2023-06-11 14:11:28 +08:00
langhuihui
ebc7e9001a 1 新增LL-HLS支持
该协议为苹果公司推出的低延迟HLS协议,本次更新新增了对该协议播放支持。
同rtsp库一样,采用了第三方库来实现:**github.com/bluenviron/gohlslib**

1.1 使用方法

通过访问形如http://localhost:8080/llhls/live/test/index.m3u8来播放。
其中**live/test**为streamPath,可以替换成实际的值

1.2 插件配置

在llhls下可以配置http配置,用于修改端口号。插件配置方式可以参考文档

1.3 源码说明

llhls相关代码位于**github.com/Monibuca/plugin-hls** 的 **llhls.go** 中。hls和llhls两个插件共用一个代码仓库,因此引入hls时也同时引入了llhls插件。

2 新增HLS.js测试页面

HLS.js测试页面是将hls.js的编译后的代码嵌入到了hls插件仓库中,以方便调试hls流使用。

2.1 访问地址

http://localhost:8080/hls/index.html

该页面也可以用于测试llhls

3 新增对RTMPS协议支持

该协议为RTMP协议的衍生协议,是在TCP基础上增加了TLS安全加固,原理类似HTTPS。
该协议支持是rtmp插件的增强。需要通过配置TLS端口来开启该功能。

3.1 配置

```yaml
rtmp:
  tcp:
    listenaddrtls: :4443
```

3.2 推流测试
```
ffmpeg -i source -f flv rtmps://localhost:4443/live/test
```
如果配置成443端口,则可以省略端口号

3.3 对外推拉流

已经支持,既可以在配置pull或者push中使用rtmps的远程地址

4 其他更新内容

4.1 优化了HLS纯转发模式的资源消耗

> 当只需要将HLS拉流转发时,可以使用纯转发模式
> 纯转发模式由于不需要解析HLS协议中的TS格式,因此对资源消耗比较小。
> 通过配置HLS插件的 **relaymode: 1**开启

4.2 修复了当开启时光回溯功能时的内存泄漏

具体原因是,在进行时间戳判断时忽略了当时间戳超过最大值时的情况,导致ringbuffer无限扩大
> 所谓时光回溯功能,是指可以缓存较多的数据,以订阅当前画面更早一些的画面
> 通过配置**publish**配置中的**buffertime**来开启时光回溯
> 订阅流时需要指定订阅模式,即需要在订阅时加参数`?mode=2`
> 如果需要修改参数名称(有时可能会有冲突,可以通过配置submodeargname 来改变

4.3 WebRTC插件测试页面运行URL中带有参数

为了更方便测试WebRTC功能,允许在访问测试页面时,带上参数

4.3.1 推流测试页面

**http://localhost:8080/webrtc/test/publish?streamPath=live/test**
可以推送到**live/test**。不传该参数则推送到**live/webrtc**

测试房间功能是也可以带上token参数

4.3.2 播放测试页面

**http://localhost:8080/webrtc/test/subscribe?streamPath=live/test**
可以订阅**live/test**的流。不传该参数则订阅**live/webrtc**

4.4 Stream中增加NeverTimeout属性

该属性设置成true可以是的流不再判断超时,保持流永远存活,其目的是有些流并不会产生AudioTrack和VideoTrack,比如纯转发流,或者Room的用于广播消息的流,此时可以在发布成功后,对流设置这个属性
v4.6.1
2023-06-04 23:00:11 +08:00
langhuihui
dd01ce0bc4 1. Modifying the engine Streams global variable to sync.Map increases stability and performance
2. Add record plugin to record raw audio data function
3. Fix security issues where API reading log files may access files outside of the log directory
4. Fix noise issue during GB streaming sound playback
5. Fix a memory leak
6. The GB28181 plugin combines a PR for API query of video recordings and directly returns data, no longer through Channel data
7. GB28181 plugin list returns no more nulls
8. On demand pull and push trigger logic code optimization
9. Debug plugin adds HTTP configuration

1、引擎Streams全局变量修改为sync.Map增加了稳定性和性能
2、录制插件增加录制裸音频数据功能
3、修复API读取日志文件可能访问到日志目录外的安全问题
4、修复GB流声音播放有噪声问题
5、修复一处内存泄漏
6、GB28181插件合并一个PR用于API查询录像直接返回数据,不再通过Channel数据中返回
7、GB28181插件list返回不再出现null
8、按需拉流和推流触发逻辑代码优化
9、debug插件增加HTTP配置
v4.6.0
2023-05-25 20:30:31 +08:00
langhuihui
2a89629149 fix: change tracks to sync.Map to void dead lock
fix: ps plugin dump
fix: record plugin nil pointer
feat: config support yaml tag name

修复: 修改tracks为sync.Map,避免死锁
修复: ps插件dump
修复: record插件空指针
特性: 配置支持yaml tag name
v4.5.9
2023-05-21 22:20:33 +08:00
langhuihui
555b168cba 1. Add the global configuration item disableall to disable all plugins (a plugin can be individually enabled by configuring its enable)
2. Upgrade dataTrack to customTrack and freely add custom tracks
3. PS plugin adds a forwarding mode configuration item and the ability to pull PS streams through the ws protocol
4. Fix processing errors when dts exceeds the maximum value

1、增加全局配置项disableall 用于禁用全部插件(可通过配置插件的enable来单独开启某个插件)
2、dataTrack升级为customTrack,可自由添加自定义轨道
3、PS插件增加转发模式配置项,增加通过ws协议拉取ps流的功能
4、修复dts超过最大值后的处理错误
v4.5.8
2023-05-17 07:49:28 +08:00
langhuihui
f2e0963add 1. Add a new PS plugin, move PS processing logic into it, and provide APIs to connect to PS streams
2. Added idletimeout configuration, which can be used to automatically disconnect after the first idle release
3. Handling situations where subscribers consume too slowly
4. Optimize RTMP plugin and merge write operations
5. Snap plugin adds support for URL parameters
6. Fix plugin reference errors used when publishing monitor plugins
7. The default certificate configuration for the webtransport plugin is local.monibuca.com

1、新增PS插件,将PS处理逻辑移入该插件,并提供API可接PS流
2、新增idletimeout配置,可用于首次发布空闲后自动断开
3、增加订阅者消费过慢的情况处理
4、优化rtmp插件,合并写入操作
5、snap插件增加对url参数的支持
6、修复monitor插件发布时使用的插件引用错误
7、webtransport插件默认的证书配置采用local.monibuca.com
v4.5.7
2023-05-14 17:24:17 +08:00