Commit Graph

434 Commits

Author SHA1 Message Date
xia-chu
39dd886ec1 优化获取播放器列表相关功能 2023-09-02 12:07:42 +08:00
xia-chu
d286ac1d73 NoticeCenter支持安全类型转换,解决监听者参数类型不一致导致的bug 2023-09-02 11:22:28 +08:00
Dw9
81966f2c48
修复未开启sctp时,webrtc datachannel sdp交换相关bug (#2791)
主要优化如下:
1、通过设置port为0 声明不支持datachannel(而不是inactive)。
2、设置正确的ice用户名和密码,防止ice建联失败。
3、group attribute移除datachannel的mid。
3、datachannel 相关sdp移除rtcp相关描述。
2023-08-29 11:22:30 +08:00
xia-chu
a7d95461ee 过滤掉不支持的webrtc rtp ext,提高webrtc转发兼容性
在测试obs simulcast推流时,发现chrome无法正常播放,
分析rtp ext扩展,发现是rtp mid ext未过滤导致,
zlmediakit在回复answer sdp时,已申明不支持mid扩展,
但是obs并未理会还是发送mid扩展。
根据answer sdp过滤rtp ext可兼容此问题。
2023-08-12 15:25:16 +08:00
夏楚
73c8a5faf4
统一设置单字节对齐方式 (#2716)
__attribute__((packed)) 替换为 #pragma pack(push, 1)
2023-07-29 13:07:22 +08:00
夏楚
5464313b41
修复webrtc推流互斥锁重入死锁bug (#2713)
simulcast推流时,在onRecvRtp函数中可能触发对totalReaderCount的调用,从而导致死锁。
2023-07-29 13:04:24 +08:00
夏楚
09aa38334e
H264 rtsp sdp生成正确的packetization-mode (#2691) 2023-07-22 17:30:39 +08:00
Dw9
eb382c3fc9
修复whip delete_webrtc未注销流 (#2688)
bug触发条件:
1、obs whip 推流到zlm
2、关闭推流
3、zlm 未注销流
2023-07-22 10:46:17 +08:00
yogo-zhangyingzhe
9e8568e753
添加rtp ext: av1-rtp-spec (#2609)
Co-authored-by: xia-chu <771730766@qq.com>
2023-07-08 23:28:34 +08:00
夏楚
fad8dd74e7
修复webrtc开启simulcast推流时,统计观看人数线程安全相关bug (#2640) 2023-07-08 21:33:07 +08:00
johzzy
03770ff409
Replace the tuple (vhost/app/stream) with MediaTuple. (#2560) 2023-06-17 10:28:01 +08:00
xia-chu
af0ebf4633 优化Parser代码命名 2023-06-10 14:55:40 +08:00
Johnny
0232caf068 add MediaTuple 2023-05-30 11:01:27 +08:00
Johnny
f4ee607feb add RtspMediaSource::Clone 2023-05-30 11:01:27 +08:00
a-ucontrol
51e9313275
Make available the media_info variable for the class inherited from WebRtcSession and HttpSession. (#2505 #2461) 2023-05-29 14:48:13 +08:00
Johnny
bfec1b1e0e fix typo 2023-05-02 20:41:13 +08:00
xia-chu
2708c85d57 修复编译问题 2023-04-28 23:08:59 +08:00
xia-chu
8c049d4e28 实现whip/whep delete相关功能
通过whip/whep 回复http头中的Location url进行删除资源
新增delete token随机数实现删除鉴权
2023-04-28 22:36:58 +08:00
xia-chu
d2349f01bd 使用static_pointer_cast优化性能 2023-04-28 22:04:38 +08:00
xia-chu
cdf97e7605 更新zltoolkit,适配最新代码 2023-04-28 22:04:09 +08:00
xiongziliang
c8a20f85f6 直接打印SockException类 2023-04-23 00:10:18 +08:00
xiongziliang
de8249592e Session类构造析构跟踪日志统一在底层网络框架打印 2023-04-22 23:58:17 +08:00
Johnny
82bc416546 add exchangeSdp 2023-04-21 20:40:37 +08:00
xia-chu
fcb0124f29 适配更新zltoolkit,优化增强网络库:#2397 2023-04-19 13:12:39 +08:00
xia-chu
70ad9cb0b6 设置webrtc端口缺省配置为0(不开启) 2023-03-13 21:00:00 +08:00
ahaooahaz
37cb29fa8e
increase sdp rel-addr length limit: #2330 #2302 2023-03-13 17:38:08 +08:00
xia-chu
4cc2982a2c 重写jitter buffer算法,修复seq回环时可能丢包的bug 2023-03-11 10:17:31 +08:00
xia-chu
c301ecd207 限定nack rtt时间有效值范围 2023-03-11 10:16:44 +08:00
xiongguangjie
cba46e2c87 Merge remote-tracking branch 'origin/master' 2023-03-08 19:34:01 +08:00
xiongguangjie
a7c7470d46 compitable for rtc ipv6 candidate and ice-lite sdp global session 2023-03-08 19:33:52 +08:00
ziyue
23296ae5fa 加大参数冗余,提高webrtc抗丢包能力 2023-03-07 10:37:44 +08:00
xiongziliang
4942a0f574 优化nack重传rtt间隔时间估算逻辑 2023-03-05 21:54:27 +08:00
xiongziliang
3bc75d6ba8 注释过多的日志 2023-03-05 20:55:57 +08:00
xiongziliang
280ee30aac 优化webrtc nack响应速度且精简代码 2023-03-03 22:13:59 +08:00
ziyue
8ab3e0a4d4 初始化selectedTuple为nullptr, 修复webrtc ice建连状态错误 2023-03-03 15:25:15 +08:00
ziyue
56d6eb0f28 批量替换tab为4个空格 2023-03-03 15:24:12 +08:00
mtdxc
4783ac0808
修复webrtc多候选地址无法来回切换的bug (#2266)
最后一个连通的候选地址会被赋值并锁定为_selected_session,如果之前的候选地址再发送数据,将通过_selected_session回复,导致无法切换为旧的候选地址。
2023-03-03 11:18:21 +08:00
xiongziliang
c2e1083493 复用rtp/rtcp判断逻辑过滤非rtp包: #2247 2023-02-28 22:23:30 +08:00
ziyue
a981ce8cb3 优化webrtc nack算法:#2249 2023-02-25 00:19:00 +08:00
Talus
46842e6f29
修复WebRTC播放导致媒体延迟注销问题 (#2246)
因WebRtcPlayer中使用RtspMediaSource的共享指针,特定情况下引起媒体注销无法触发的问题。

- 重现步骤
    在ZL的webrtc demo页面推流
    浏览器打开如下html
    webrtc.html
    关闭推流器页面,推流器停止推流
    webrtc.htm浏览器console->network将观察到:即使推流停止,但webrtc sdp请求一直能成功获取sdp,且流媒体一直不注销

- 原因
        因为每个WebRtc 播放 SDP请求都会产生 WebRtcPlayer,产生RtspMediaSource的共享指针,产生强引用。
        而DTLS超时释放需要一定的时间,WebRtcPlayer销毁需要超时。如果请求sdp的时间足够短,强引用会一直存在。将永远无法触发媒体注销

- 场景
        webrtc播放存在重试,但是udp不通。DTLS无法创建
        有人对ZLM执行恶意攻击,短时间内不断请求SDP但是不建立WebRTC通信
2023-02-20 16:23:29 +08:00
Alexandr
8bcc2cddc8 Build without usrsctp 2022-12-30 08:51:37 +03:00
xiongguangjie
96f549ab32 avoid bug for #2159 2022-12-15 19:17:09 +08:00
monktan89
f6a36180b4 修复webrtc转发可能内存越界的bug: #2159 2022-12-14 15:08:59 +08:00
Dw9
9d40c82141 修复手机推rtc,其他协议拉流画面旋转 2022-12-08 21:52:55 +08:00
老衲不出家
f05a9501fa
Unified code style (#2137) 2022-12-02 14:43:06 +08:00
monktan89
a12b7c8021 修正代码拼写错误 2022-11-30 18:24:35 +08:00
mtdxc
754073918a
Header refactor (#2115)
* 优化MultiMediaSourceMuxer头文件包含

* 将MediaSinkDelegate和Demux移到MediaSink中

* MediaSource头文件重构, 独立出PacketCache.h
精简Frame和Track的头文件

* Rtmp头文件重构

* Rtsp头文件重构

* webrtc头文件重构

* 规范.h头文件包含,并将其移到.cpp中:
- 尽量不包含Common\config.h
- Util\File.h
- Rtsp/RtspPlayer.h
- Rtmp/RtmpPlayer.h

* 删除多余的Stamp.h和Base64包含
2022-11-29 11:07:13 +08:00
Johnny
59ecdd13e5 fix: WebRtcTransport 切换 poller 线程时,创建 WebRtcSession 不需要加锁 2022-11-28 17:54:16 +08:00
johzzy
bc4fa2bc53
fix(rtcp/bye): 收到rtcp bye时不断开webrtc连接 (#2123)
bye(203) 会在 sender audio track mute 时出现, 不能作为 shutdown 的依据
2022-11-28 17:52:37 +08:00
Dw9
fef9d31631
webrtc支持通过http参数指定是否优先tcp模式 (#2105)
* webrtc push/play支持通过http参数指定tcp

* force_tcp改成perferred_tcp

Co-authored-by: xiongziliang <771730766@qq.com>
2022-11-27 12:43:16 +08:00
ziyue
9fd5152aa1 确保webrtc关闭udp模式时可用 2022-11-19 09:52:10 +08:00
ziyue
d910c80a00 优化webrtc iceandidate端口相关代码 2022-11-19 09:46:04 +08:00
xiongguangjie
0d6fa1281a add rtc tcp port config and ignore candidate when port is 0 2022-11-19 01:51:53 +08:00
Dw9
47530ce830
新增支持webrtc over tcp模式 (#2092)
* webrtc server/session/cadidate 改为tcp

* 先屏蔽检查isCurrentThread

* 接受和发送的数据处理tcp 2字节头

* 处理rtc tcp 分片

* 完善webrtc over tcp

* 精简rtp服务器相关代码

* 适配webrtc AV1编码: #2091

* webrtc tcp模式支持Firefox

* webrtc tcp模式支持线程安全

* c sdk支持webrtc tcp

Co-authored-by: ziyue <1213642868@qq.com>
2022-11-18 22:52:57 +08:00
ziyue
fc433de9ac 适配webrtc AV1编码: #2091 2022-11-18 16:47:02 +08:00
ziyue
520945c2e9 提高线程安全性 2022-11-01 10:53:38 +08:00
baiyfcu
4a51d6b488 修复第三方引用ZLM编译webrtc避免生成dll文件 2022-10-17 10:53:39 +08:00
xiongziliang
a916760ac3 整理webrtc c接口 2022-10-06 12:35:14 +08:00
ziyue
0b355759de 整理webrtc相关代码命名空间 2022-09-18 21:03:05 +08:00
ziyue
15affeff1d 优化关闭媒体源相关逻辑: #1963 2022-09-18 20:36:47 +08:00
xiongguangjie
d04a6d4355 rtc receive sr reset alive ticker 2022-09-09 23:04:28 +08:00
夏楚
4a35ddbddb
Merge pull request #1942 from mtdxc/reduce_code
简化代码
2022-09-09 11:10:55 +08:00
xiongguangjie
7f86299c80 rtc stop push unregister mediasource 2022-09-07 19:10:06 +08:00
xiongguangjie
96c19ac85f 修复webrtcsession getIdentifier 为空的bug,导致GetAllSession webrtcsession的id 为空 2022-09-07 13:58:26 +08:00
cqm
999e0b274e 简化代码:
- MediaSource引入shortUrl和getUrl来简化日志输出
- WebApi引入fillSockInfo
2022-09-07 11:47:15 +08:00
xiongziliang
20f1275c58 rtsp拉流、rtp单端口推流新增支持获取丢包率: #1877 2022-09-03 16:32:09 +08:00
custompal
0d6509ce03 统一部分变量名和代码样式风格 2022-08-30 21:24:25 +08:00
custompal
04aa3ef41f 增加获取媒体流播放器列表功能 2022-08-30 21:05:19 +08:00
xiongzilaing
679c79802f 整理媒体事件相关代码,删除无须重载时的多余代码逻辑 2022-08-28 17:25:56 +08:00
Dw9
b7ef766701
支持单独的datachannel通道 (#1894)
* 支持单独的datachannel 通道

* 当仅有datachannel时 ,忽略rtp和rtcp超时

* 单独开启datachannel时,通过dtls包维持心跳

Co-authored-by: xiongziliang <771730766@qq.com>
2022-08-20 10:28:19 +08:00
gongluck
0764e48f6c
兼容安卓平台,to_string模板处理pt值 2022-08-18 19:13:22 +08:00
ziyue
ba947cb6b5 调整switch case语句缩进 2022-08-05 17:42:17 +08:00
Xiaofeng Wang
c14a777598 修正启用 SCTP 后编译问题 2022-07-28 23:15:22 +08:00
Xiaofeng Wang
0fc38bbadb 避免对外传递 srtp 依赖 2022-07-26 00:04:03 +08:00
Xiaofeng Wang
9d3ead61de 整理 CMakeLists.txt 2022-07-25 00:22:30 +08:00
xiongguangjie
cffc0743d7 format code use clang-format 2022-07-14 22:49:31 +08:00
xiongguangjie
602b475a3c for rtc send can receive rtcp xr, player can calculate rtt , for metaRTC player send rtcp xr 2022-07-12 19:26:17 +08:00
Haibo Chen
576056c465
get ip from env, for externIP in file 'config.ini' (#1786) 2022-07-09 21:44:57 +08:00
bin-work
2e1a45895a
修改webrtc码率带宽约束字段 (#1771, #1768) 2022-07-07 16:44:42 +08:00
xiongziliang
2490fd2115 MS_ASSERT改成抛异常 2022-06-18 21:09:57 +08:00
xiongziliang
94839fd93c 添加bom头 2022-06-18 14:34:58 +08:00
xiongziliang
df7a3242bb 修复获取webrtc推流丢包率除0的bug 2022-06-11 14:23:43 +08:00
xiongziliang
b6d3ec5251 完善获取丢包率pull request; 新增MediaSource::getOwnerPoller接口 2022-06-11 12:56:03 +08:00
Leon
be995f9cd2 !17 【功能请求】 /index/api/getMediaList接口 增加LOSS字段用于统计每个轨道丢包率反馈
* update webrtc/WebRtcPusher.h.
* update webrtc/WebRtcPusher.cpp.
* update webrtc/WebRtcTransport.h.
* update webrtc/WebRtcTransport.cpp.
* update src/Common/MediaSource.h.
* update src/Common/MediaSource.cpp.
* update server/WebApi.cpp.
2022-06-11 04:31:06 +00:00
sha-long-ba-si
3a9408bcec
webrtc answer m-lines次序错误 (#1695)
Co-authored-by: james <mrjamesli@126.com>
2022-06-11 12:26:31 +08:00
xiongziliang
b23cbaa0f8 on_publish hook新增continue_push_ms参数,用于断连续推延时控制 2022-06-04 11:06:35 +08:00
xiongziliang
b0f0bdb6ae 调整优化webrtc sdp处理相关代码 2022-05-20 22:14:21 +08:00
cqm
2b29e58f71 sdp代码重构, 增加addItem和addAttr 2022-05-18 18:56:09 +08:00
cqm
9d9315d8c6 支持SDP munging方式simulicast 2022-05-18 09:21:21 +08:00
xiongziliang
4f768cacf1 修复编译警告 2022-05-14 18:46:50 +08:00
xiongziliang
b0f15c9647 sctp关闭编译时,关闭datachannel相关功能 2022-05-13 20:45:27 +08:00
xiongziliang
7e58d91a57 修复rtp two byte ext解析相关bug: #1631 2022-05-13 20:01:57 +08:00
mtdxc
301cbf0a83
支持多个rtc候选地址 (#1622)
* 支持多个rtc候选地址

* fixed missing extern_ips check
2022-05-12 15:21:09 +08:00
xiongziliang
d66845425c 完善ipv6网络适配 2022-05-08 00:26:01 +08:00
xiongziliang
fb003714e9 新增webrtc datachannel功能: #1216 2022-05-04 22:15:21 +08:00
xiongziliang
1ed793fe97 初步实现webrtc datachannel sdp握手 2022-04-03 17:12:23 +08:00
xiongziliang
03dfcbad36 优化webrtc sdp处理相关代码 2022-04-03 17:10:39 +08:00
xiongziliang
b0af3334c1 修复firefox上webrtc echo测试无法通过的问题: #1493 2022-03-26 22:11:50 +08:00
xiongziliang
4314006551 调整nack相关参数 2022-03-13 19:22:19 +08:00
xiongziliang
aef2ae65af 优化代码 2022-03-12 19:29:58 +08:00