Commit Graph

4254 Commits

Author SHA1 Message Date
xia-chu
1bab0b8e31 修复WebSocket线程安全问题,同时新增内置客户端、服务端心跳机制。 2023-03-11 11:08:14 +08:00
xia-chu
c2a8d46a64 提高c sdk mk_media对象线程安全 2023-03-11 11:02:20 +08:00
xia-chu
ba4296e180 修复断连续推情况下线程迁移导致崩溃的bug:#2283
如果一个MultiMediaSourceMuxer对象上挂载了很多个RtpSender对象,
这些对象会绑定MultiMediaSourceMuxer的OwnerPoller(归属线程),
在断连续推发生时,对应的MultiMediaSourceMuxer对象OwnerPoller线程
将发生变更,导致与RtpSender对象的线程不一致。
2023-03-11 10:34:58 +08:00
xia-chu
9188ed1613 更新zltoolkit 2023-03-11 10:28:56 +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
ljx0305
1cc0f51c07
replace ffmpeg deprecated api avpicture_fill to av_image_fill_arrays (#2279) 2023-03-09 15:24:32 +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
ziyue
d05c9d5f51 重写jitter buffer长度控制算法,提高webrtc/rtp抗丢包能力 2023-03-06 21:04:50 +08:00
xiongguangjie
d6e9a4fb90 remove PSParser mistake comment 2023-03-06 19:33:34 +08:00
xiongziliang
9fdb3de8b2 优化rtp排序抖动缓存算法,提高webrtc/rtsp抗丢包性能 2023-03-06 00:31:11 +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
11870fb18e 更新zltoolkit 2023-03-03 15:25:25 +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
baiyfcu
a5c3db4ee1 修复逻辑判断不严禁XSS攻击,server在windows debug运行时拒绝服务攻击:#2213 2023-03-03 14:44:59 +08:00
mtdxc
4783ac0808
修复webrtc多候选地址无法来回切换的bug (#2266)
最后一个连通的候选地址会被赋值并锁定为_selected_session,如果之前的候选地址再发送数据,将通过_selected_session回复,导致无法切换为旧的候选地址。
2023-03-03 11:18:21 +08:00
gongluck
91efab281e
c sdk添加安装动态库到bin目录 (#2259) 2023-02-28 23:00:59 +08:00
xiongziliang
539d6299f0 rtp服务器单端口模式收到相同ssrc推流时延时关闭RtpSession对象(防止频繁创建销毁对象) 2023-02-28 22:56:29 +08:00
xiongziliang
c2e1083493 复用rtp/rtcp判断逻辑过滤非rtp包: #2247 2023-02-28 22:23:30 +08:00
xiongziliang
dc8508c58f 完善c sdk对象描述元信息,防止隐式指针转换错误
void* 类型指针很容易存在隐式转换错误,用户无法察觉
2023-02-26 21:45:14 +08:00
xiongziliang
8f108395a5 rtp服务器过滤非rtp包: #2247
防止非法数据干扰后续处理逻辑对rtp ssrc/pt等的绑定
2023-02-26 21:13:49 +08:00
ziyue
a981ce8cb3 优化webrtc nack算法:#2249 2023-02-25 00:19:00 +08:00
ziyue
a15053ff01 更新作者列表 2023-02-25 00:18:51 +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
ziyue
1f2ef82b46 新增支持获取gop大小与间隔信息: #1570
getMediaList/getMediaInfo接口、on_media_changed hook新增支持字段如下:
{
    "codec_id" : 0,
    "codec_id_name" : "H264",
    "codec_type" : 0,
    "fps" : 0.0,
    "frames" : 1119, #累计接收帧数,不包含sei/aud/sps/pps等不能解码的帧
    "gop_interval_ms" : 1993, #gop间隔时间,单位毫秒
    "gop_size" : 60, #gop大小,单位帧数
    "height" : 556,
    "key_frames" : 21, #累计接收关键帧数
    "ready" : true,
    "width" : 990
}
2023-02-20 16:11:10 +08:00
alexliyu7352
2f8dab66c5
http地址支持相对路径 (#2223)
* 部分hls中会出现类似[../]或者[./]的相对地址, 因此写了一个解析的方法

* 有时候上游http协议不规范会导致直接输出eof, 特别是在自动重试机制开启下, 容易造成定时器没办法初始化从而拉不到流但是session一直存在,所以需要做一个判断,如果没数据直接报错
2023-02-20 10:52:00 +08:00
xiongziliang
5bcfba1da4 startSendRtpPassive接口新增连接超时参数:close_delay_ms 2023-02-17 23:02:09 +08:00
xiongziliang
8f0ba6988b openRtpServer接口新增only_audio参数,优化语音对讲场景 2023-02-17 22:48:39 +08:00
ziyue
5cdaf982f3 更新zltoolkit,修复udp服务线程安全问题 2023-02-15 11:51:24 +08:00
zx
719b137208
修正macos持续集成运行目录 (#2234)
修改 macos 最后一步运行目录release/linux/Debug/ 改为release/darwin/Debug/ 
参看build log  
https://github.com/ZLMediaKit/ZLMediaKit/actions/runs/4150150582/jobs/7179611556
2023-02-12 22:44:37 +08:00
ziyue
2f090e33cf 新增c sdk api,防止user_data导致的内存泄露 2023-02-11 15:14:18 +08:00
ziyue
5078723236 新增mk_http_body无拷贝创建api 2023-02-11 11:55:06 +08:00
ziyue
56586189cf 完善h264/h265分帧逻辑,更新h264文件直播测试程序 2023-02-11 11:43:41 +08:00
ziyue
0773e79fd1 新增自定义转协议创建mk_media接口 2023-02-11 11:40:32 +08:00
ziyue
9629dbd969 新增mk_ini配置文件相关接口 2023-02-11 11:39:26 +08:00
ziyue
b3ba6d4214 完善mk_transcode相关接口 2023-02-11 11:35:37 +08:00
ziyue
f6cba98a8e 修复FrameDispatcher可能导致死锁的问题 2023-02-06 14:19:43 +08:00
xiongziliang
6eb36ec883 获取MediaSource信息相关接口返回帧数相关字段:#1570 2023-02-05 22:04:14 +08:00
xiongziliang
a0955d956a 优化代码风格 2023-02-05 22:00:36 +08:00
xiongziliang
fb5b31a85f 更新media-server,修复某些国标流兼容性问题 2023-02-05 21:39:10 +08:00
xiongguangjie
a52e9d6ba8 fix h264 no idr nal sps pps sei i slices 2023-02-04 18:17:06 +08:00
ziyue
878f1a556e 更新zltoolkit,减缓udp网络接收线程漂移问题 2023-02-02 11:59:40 +08:00
ziyue
6078ca3e81 修复hls注册抛异常可能导致的bug 2023-02-02 11:21:49 +08:00
xiongziliang
44f4e9acd4 openRtpServer udp多端口模式默认绑定发送端地址,防止多路同时推流时ssrc冲突问题 2023-01-08 21:35:50 +08:00
xiongziliang
fcf70c6ef1 startSendRtpPassive接口支持同时接收流 2023-01-08 21:24:29 +08:00