解决webrtc前端replaceTrack后ZLMediaKit断流问题
前端 解决 Webrtc 问题
2023-09-11 14:16:28 时间
解决webrtc前端replaceTrack断流问题
在前端replaceTrack时,会发送rtcp byte消息,而ZLM目前的处理是收到bye就关闭连接,所以前端新的流就推不上来。
查看源码WebRtcTransport.cpp
大约760行左右的处理rtcp的函数WebRtcTransportImp::onRtcp
的RtcpType::RTCP_BYE
case RtcpType::RTCP_BYE: {
// 对方汇报停止发送rtp
RtcpBye *bye = (RtcpBye *)rtcp;
for (auto ssrc : bye->getSSRC()) {
auto it = _ssrc_to_track.find(*ssrc);
if (it == _ssrc_to_track.end()) {
WarnL << "未识别的bye rtcp包:" << rtcp->dumpString();
continue;
}
_ssrc_to_track.erase(it);
}
onShutdown(SockException(Err_eof, "rtcp bye message received"));
break;
}
onShutdown会关闭掉当前的会话。注释掉此行代码重新测试即可
void WebRtcTransportImp::onShutdown(const SockException &ex) {
WarnL << ex.what();
unrefSelf();
for (auto &pr : _history_sessions) {
auto session = pr.second.lock();
if (session) {
session->shutdown(ex);
}
}
}
相关文章
- 对前端特效感兴趣的同学可以留意下这些例子,有点意思
- vue 前端解决跨域问题,
- 前端项目架构概述
- 前端切图
- EasyNVR摄像机网页无插件直播方案H5前端构建之:bootstrap弹窗功能的实现方案与代码
- 前端学习 -- Css -- 高度坍塌问题的产生以及解决
- Vue.js:轻量高效的前端组件化方案
- Atitit mybatis 翻页解决法 目录 1.1. 翻页模式还有js翻页前端翻页更加简单1 1.2. 逻辑分页使用类RowBounds vs 物理分页 offset模式1 1.3.
- Atitit 技术体系路线图与金字塔模型 前端技术层次金字塔 目录 1. 原理core >> 框架层 》》 模块 项目层1 1.1. 技术原理层1 1.2. 框架层1 1.3. 模块1 2.
- 前端性能优化-图像优化
- spring controller获取web前端post数据乱码解决
- 15分钟快速配置eslint,prettier,lint-staged,husky,commitizen实现前端项目代码规范化
- 前端网络基础-传输层UDP协议
- 20212022最新Web前端经典面试题笔试题之前端手写功能(含答案)史上最全【笔试题】
- 微前端的出现的背景和意义