Miau Lightouch
a9e0e1a81e
fix(webrtc): fix GStreamer WHEP interop ( #4720 )
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
DockerPy / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
## Summary
This PR fixes GStreamer interoperability issues during WebRTC/WHEP
negotiation with ZLMediaServer.
GStreamer could fail to establish the connection for two separate
reasons:
1. ZLMediaServer generated a non-compliant ICE `ufrag`. The generated
value contained `_`, which is not a valid ICE character, so GStreamer
rejected the SDP.
2. ZLMediaServer did not correctly handle `bundle-only` offers and could
answer an accepted bundled m-line with `port=0`, which caused the later
WHEP negotiation to fail.
## Changes
- Generate ICE `ufrag` values using ICE-compliant characters only.
- Preserve and handle `a=bundle-only` correctly during SDP parsing and
answer generation.
- Return `port=9` instead of `port=0` for accepted bundled m-lines.
- Add regression coverage for `bundle-only` SDP handling.
- URL-encode `delete_webrtc` query parameters in the returned `Location`
header so ICE-safe identifiers remain round-trippable over HTTP.
## Validation
- Built with WebRTC and SCTP enabled.
- Added regression test: `test_webrtc_regression`
- Verified:
- ICE-safe identifier round-trip through `delete_webrtc`
- `bundle-only` SDP answer generation
2026-04-21 11:37:08 +08:00
XiaoYan Lin
c3c0fb4448
支持rtsp回放控制 ( #4691 )
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
目前对接过很多第三方系统(海康ISC、大华ICC、华为IVS、中维等)都支持rtsp回放,觉得有必要支持该功能
2026-04-01 20:42:32 +08:00
xia-chu
899d9653a4
新增更新流代理的功能,支持修改已有拉流代理的URL和参数
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-03-20 21:59:55 +08:00
xia-chu
22dcde4bf3
支持同时cookie登陆与secret硬编码鉴权两种方式
2026-03-19 19:32:58 +08:00
xia-chu
e1d3c21529
新增add_stream_proxy python接口
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
Linux_Python / build (push) Waiting to run
macOS / build (push) Waiting to run
macOS_Python / build (push) Waiting to run
Windows / build (push) Waiting to run
Windows_Python / build (push) Waiting to run
2026-03-18 18:47:18 +08:00
xia-chu
fa7b0639d8
listStreamProxy与listStreamPusherProxy支持key筛选参数
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
Linux_Python / build (push) Waiting to run
macOS / build (push) Waiting to run
macOS_Python / build (push) Waiting to run
Windows / build (push) Waiting to run
Windows_Python / build (push) Waiting to run
2026-03-18 11:25:24 +08:00
xia-chu
3b54168b44
listStreamProxy接口支持返回track、status_str信息
2026-03-17 19:43:50 +08:00
xia-chu
4e170e9281
addStreamProxy新增force,支持强制重试拉流
2026-03-17 19:33:43 +08:00
xia-chu
ca47a1f8b2
http access事件新增文件绝对路径参数
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-03-09 18:01:48 +08:00
xia-chu
f48caf90e8
downloadFile http api支持secret鉴权
2026-03-09 17:07:23 +08:00
xia-chu
725fdf1786
http api请求有json body才解析
2026-02-25 12:21:43 +08:00
xia-chu
0ead9b6945
优化cookie登录逻辑
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-02-25 12:01:49 +08:00
xia-chu
3514376a97
修复videostack开启后编译失败问题
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-02-22 18:45:16 +08:00
xia-chu
3a35144243
新增cookie登录鉴权模式,避免secret硬编码鉴权安全缺陷
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-02-19 23:09:37 +08:00
liangjianhua
8ca4b4d92a
Add optional subnet_prefix parameter to searchOnvifDevice interface
2026-02-13 23:11:37 +08:00
夏楚
6d520ea6a3
新增支持Python混合编程模式 ( #4579 )
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
Linux_Python / build (push) Has been cancelled
macOS / build (push) Has been cancelled
macOS_Python / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Windows_Python / build (push) Has been cancelled
2026-02-10 13:28:42 +08:00
xia-chu
9cc4563fae
getAllSession接口返回链接类型
2026-01-09 11:34:40 +08:00
xia-chu
adb844032d
初步添加onvif客户端
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-11-22 08:40:25 +08:00
xia-chu
68cc757708
修复getMediaList接口线程安全问题 ( #4526 )
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-10-30 11:20:04 +08:00
xia-chu
5c58f39046
优化getMediaList接口,新增返回currentStamp字段,获取单个流时确保返回loss字段 ( #4260 )
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
macOS / build (push) Waiting to run
Windows / build (push) Waiting to run
2025-10-18 13:00:54 +08:00
xia-chu
6d01aa6389
loadMP4File接口新增支持seek_ms与speed参数 ( #4261 )
2025-10-18 12:36:46 +08:00
baigao-X
3fb43c5fef
feat: 增加webrtc代理拉流 ( #4389 )
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
- 增加客户端模式,支持主动拉流、推流:
- addStreamProxy接口新增支持whep主动拉流,拉流地址目前只兼容zlm的whep url。
- addStreamPusherProxy接口新增支持whip主动推流,推流地址目前只兼容zlm的whip url。
- 以上推流url格式为webrtc[s]://server_host:server_port/app/stream_id?key=value, 内部会自动转换为http[s]://server_host:server_port/index/api/[whip/whep]?app=app&stream=stream_id&key=value。
- 增加WebRtc p2p 模式:
- 增加 ICE FULL模式。
- 增加STUN/TURN 服务器。
- 增加websocket 信令。
- 增加P2P代理拉流。
---------
Co-authored-by: xia-chu <771730766@qq.com>
Co-authored-by: mtdxc <mtdxc@126.com>
Co-authored-by: cqm <cqm@97kid.com>
2025-09-20 16:23:30 +08:00
xia-chu
88b422db08
优化pauseRtpCheck接口,新增pause_seconds参数
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
macOS / build (push) Waiting to run
Windows / build (push) Waiting to run
2025-09-09 23:11:48 +08:00
xia-chu
5686027fc2
修复MediaSource::close线程安全问题
...
主动或无人观看关闭流可能会由于线程安全问题导致崩溃
2025-09-09 22:02:20 +08:00
ShineSea
c89caf560a
优化WebApi ListRtpServer接口实现 ( #4436 )
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-09-08 19:00:45 +08:00
yingxiaodong
2faa04da30
bug-fix: rtpserver死锁 ( #4421 )
...
Android / build (push) Waiting to run
CodeQL / Analyze (cpp) (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
Docker / build (push) Waiting to run
Linux / build (push) Waiting to run
macOS / build (push) Waiting to run
Windows / build (push) Waiting to run
1、RtpServer对应的socket在读取数据后,会加锁后进行数据处理
a) LOCK_GUARD(_mtx_event);
b) _on_multi_read
当_on_multi_read处理中出现问题,会通过回调,调用 s_rtp_server.erase(key); ,
这里锁的调用顺序为:_mtx_event -> s_rtp_server._mtx
2、当外部调用api关闭RtpServer时,会先调用 s_rtp_server.erase(key);
,释放RtpServer对象时,会调用Socket的 setOnRead(nullptr),这里会调用Socket的 _mtx_event。
这里的锁调用顺序为:s_rtp_server._mtx -> _mtx_event
以上两种情况,存在 交叉调用两把锁的问题,会出现死锁。
2025-09-01 11:35:50 +08:00
xia-chu
652ac9fe82
新增获取poller监听fd个数方法
2025-08-10 12:15:56 +08:00
xia-chu
5d9ced2cf3
startSendRtp相关接口新增enable_origin_recv_limit参数控制是否开启源端限流
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
多倍速rtp转发时,在tcp模式下,如果转发速度跟不上接收速度将导致转发失败,通过开启该参数,可以确保历史视频多倍速下载成功
2025-08-02 21:14:42 +08:00
xia-chu
c9a0025620
新增startRecordTask接口,支持录制事件视频
...
用户可以录制当前时间前后一定时间内的视频,配置文件gop_cache设置较大时历史视频才能录全
2025-08-02 21:00:30 +08:00
xia-chu
b1e1a0f174
新增deleteSnapDirectory删除截图接口
2025-08-02 21:00:30 +08:00
PioLing
7b1f8fedac
Add network traffic statistics ( #4239 )
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Co-authored-by: xiongguangjie <xiong_panda@163.com>
Co-authored-by: xia-chu <771730766@qq.com>
2025-05-02 16:23:25 +08:00
PioLing
ab14adb94d
Add loadMP4File respond "durations" ( #4262 #4260 )
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-04-26 19:58:48 +08:00
PioLing
beff8c0527
修复编译失败的问题 ( #4249 ) #4252
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-04-15 09:48:00 +08:00
xia-chu
41bdfa0755
addStreamProxy、addStreamPusherProxy接口确保线程负载均衡
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-04-13 19:42:30 +08:00
custompal
f0204ea3b3
播放器(reader)setGetInfoCB时统一使用Session对象 ( #4195 )
...
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
Co-authored-by: custompal <chenrengen@gosuncn.com>
2025-03-21 15:22:48 +08:00
ziyuexiachu
52ca731392
修复http api可能导致死锁的bug
Android / build (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Docker / build (push) Has been cancelled
Linux / build (push) Has been cancelled
macOS / build (push) Has been cancelled
Windows / build (push) Has been cancelled
2025-02-26 11:34:53 +08:00
PioLing
a8507d9ecc
Optimize the code related to decoding and screenshot ( #4106 )
...
Co-authored-by: xia-chu <771730766@qq.com>
2025-01-19 20:18:32 +08:00
baigao-X
1c8ed1c55a
Add srt caller mode and stream encryption support. ( #4088 )
...
Add srt caller mode and stream encryption support.
1. Support srt caller mode, realize srt proxy pull stream proxy push
stream;
url parameter format such as: srt://127.0.0.1:9000?streamid=#!
::r=live/test11
2. Support srt stream encrypted transmission in caller and listener
mode.
---------
Co-authored-by: xiongguangjie <xiong_panda@163.com>
2024-12-28 20:21:29 +08:00
xia-chu
87b42ab492
优化代码
...
除1024改成右移10位
2024-11-29 23:51:34 +08:00
xia-chu
ef11c66fb8
新增语音对讲接口(startSendRtpTalk)
2024-11-09 19:29:04 +08:00
mtdxc
901c381300
新增获取推流推流代理列表和ffmpeg源列表接口 ( #3992 )
2024-11-01 10:47:18 +08:00
alex
4152dcd409
AI automatically translates all comments in the code into English ( #3917 )
2024-09-19 14:53:50 +08:00
PioLing
ab22cac85b
新增兼容whip接口http头的 Authorization 的Bearer令牌 ( #3849 )
...
新增兼容whip接口http头的 Authorization 的Bearer令牌 转成 webhook 的 params的参数 ,
即也支持rtc应用业务层回调推流 Authorization Bearer鉴权
2024-08-29 10:58:51 +08:00
waken
df9dd3d17a
修复startSendRtp接口开启收流时vhost设置错误的问题 ( #3848 )
2024-08-28 12:28:01 +08:00
wEnchanters
bd40c24745
startSendRtp接口支持指定接收流的app和vhost参数 ( #3841 )
2024-08-22 19:50:29 +08:00
u7ko4
e3cad7f8fa
支持绑定到指定网卡 ( #3760 )
2024-08-01 11:03:26 +08:00
xia-chu
81aef25583
整理startSendRtp相关接口,新增支持udp被动模式
...
startSendPassive接口指定is_udp为1时则为开启udp被动模式, 被动模式下需要对方先发数据给zlmediakit,然后才能回复rtp数据;
同时在被动模式指定src_port时,不再等待对方连接成功后再返回(而是直接返回成功和端口号,失败通知请监听on_send_rtp_stopped hook)。
2024-07-28 23:37:13 +08:00
mtdxc
d735aa1797
Media tuple refactor ( #3715 )
...
Co-authored-by: cqm <cqm@97kid.com>
2024-07-14 09:32:41 +08:00
autoantwort
f24802d0e4
WebAPI: Fix build if ENABLE_MP4=false ( #3699 )
...
The class `MP4Reader` is only defined if the macro is ON
2024-07-09 10:43:34 +08:00
zhang2349
c72e576420
rtp server新增支持自定义vhost和app名称 ( #3693 )
...
代码来自https://github.com/ZLMediaKit/ZLMediaKit/pull/3446 , 增加了vhost
2024-07-09 10:42:10 +08:00