Skip to content

Commit

Permalink
1 新增LL-HLS支持
Browse files Browse the repository at this point in the history
该协议为苹果公司推出的低延迟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的用于广播消息的流,此时可以在发布成功后,对流设置这个属性
  • Loading branch information
langhuihui committed Jun 4, 2023
1 parent dd01ce0 commit ebc7e90
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 28 deletions.
23 changes: 14 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,36 @@ module monibuca
go 1.19

require (
m7s.live/engine/v4 v4.13.0
m7s.live/engine/v4 v4.13.1
m7s.live/plugin/debug/v4 v4.0.0
m7s.live/plugin/edge/v4 v4.0.5
m7s.live/plugin/fmp4/v4 v4.0.3
m7s.live/plugin/gb28181/v4 v4.3.3
m7s.live/plugin/hdl/v4 v4.1.6
m7s.live/plugin/hls/v4 v4.2.8
m7s.live/plugin/hls/v4 v4.3.0
m7s.live/plugin/hook/v4 v4.0.2
m7s.live/plugin/jessica/v4 v4.1.4
m7s.live/plugin/logrotate/v4 v4.0.4
m7s.live/plugin/monitor/v4 v4.0.2
m7s.live/plugin/preview/v4 v4.0.4
m7s.live/plugin/record/v4 v4.3.4
m7s.live/plugin/record/v4 v4.3.5
m7s.live/plugin/room/v4 v4.0.9
m7s.live/plugin/rtmp/v4 v4.2.0
m7s.live/plugin/rtmp/v4 v4.2.1
m7s.live/plugin/rtsp/v4 v4.2.2
m7s.live/plugin/snap/v4 v4.0.6
m7s.live/plugin/webrtc/v4 v4.1.5
m7s.live/plugin/webtransport/v4 v4.0.4
m7s.live/plugin/webrtc/v4 v4.1.6
m7s.live/plugin/webtransport/v4 v4.0.5
)

require (
github.com/abema/go-mp4 v0.10.1 // indirect
github.com/aler9/gortsplib/v2 v2.2.2 // indirect
github.com/aler9/writerseeker v0.0.0-20220601075008-6f0e685b9c82 // indirect
github.com/asticode/go-astikit v0.30.0 // indirect
github.com/asticode/go-astits v1.11.0 // indirect
github.com/bluenviron/gohlslib v0.2.5 // indirect
github.com/bluenviron/gortsplib/v3 v3.2.1 // indirect
github.com/bluenviron/mediacommon v0.2.1 // indirect
github.com/bluenviron/mediacommon v0.5.0 // indirect
github.com/cnotch/ipchub v1.1.0 // indirect
github.com/denisbrodbeck/machineid v1.0.1 // indirect
github.com/discoviking/fsm v0.0.0-20150126104936-f4a273feecca // indirect
Expand All @@ -46,7 +51,7 @@ require (
github.com/lufia/plan9stats v0.0.0-20220913051719-115f729f3c8c // indirect
github.com/marten-seemann/qpack v0.3.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/mattn/go-isatty v0.0.17 // indirect
github.com/mcuadros/go-defaults v1.2.0 // indirect
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
github.com/onsi/ginkgo/v2 v2.2.0 // indirect
Expand Down Expand Up @@ -97,5 +102,5 @@ require (
golang.org/x/text v0.9.0 // indirect
golang.org/x/tools v0.6.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
m7s.live/plugin/ps/v4 v4.0.3 // indirect
m7s.live/plugin/ps/v4 v4.0.4 // indirect
)
Loading

0 comments on commit ebc7e90

Please sign in to comment.