WebRCT initial pc has msg connecting no incoming video

作者报告了在使用WebRTC进行视频通话时接收端无法启动视频捕获的问题,并提供了复现步骤和日志文件。此外,作者提出可能的修复方案并请求验证。
Issue 217:Peerconnection sample application, receiver doesn't start video capture
 1 person starred this issue and may be notified of changes.Back to list
Status: New
Owner: ----


Sign in to add a comment
 
Reported by zhangyin...@gmail.com, Jan 4, 2012
What steps will reproduce the problem?
1. Checkout latest webrtc code
2. Build peerconnection sample
3. Run peerconnection sample (server and 2 clients)

What is the expected output? What do you see instead?
Expected to be able to do video call, but no video (local and remote) on initiator side, and no local video on receiver side (only remote video seen).

What version of the product are you using? On what operating system?
Windows 7

Please provide any additional information below.
There is no problem when test with server_test.html

Comment 1 by zhangyin...@gmail.com, Jan 25, 2012
Two log files attached. Both are logged on same machine by same peerconenction_client app. One is recorded when acting as initiator, the other is as receiver.

Is there any update on this issue?
Thanks.
peerconnection_client_receiver.log
147 KB   View   Download
peerconnection_client_initiator.log
277 KB   View   Download
Comment 2 by zhangyin...@gmail.com, Feb 2 (2 days ago)
Just checked out latest webrtc code and tried again, the issue is still there.

The issue could be fixed by adding two lines to "PeerConnectionImpl::SignalingMessage()" in peerconnectionimpl.cc, but I'm not sure if the fix is correct or not, could anybody help to take a look? Thanks.

Here is the code:
-----------------------------------------------
bool PeerConnectionImpl::SignalingMessage(
    const std::string& signaling_message) {
  // Deserialize signaling message
  cricket::SessionDescription* incoming_sdp = NULL;
  std::vector<cricket::Candidate> candidates;
  if (!ParseJsonSignalingMessage(signaling_message,
                                 &incoming_sdp, &candidates)) {
    return false;
  }

  bool ret = false;
  if (GetReadyState() == NEW) {
    // set direction to incoming, as message received first
    session_->set_incoming(true);
    ret = session_->OnInitiateMessage(incoming_sdp, candidates);
    // MY FIX - start
    if(ret)
      ret = session_->Connect();
    // MY FIX - end
  } else {
    ret = session_->OnRemoteDescription(incoming_sdp, candidates);
  }
  return ret;
}
  Sign in to add a comment
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
### 关于Nginx出现'no live upstreams while connecting'错误的解决方案 当遇到`no live upstreams while connecting to upstream`错误时,通常意味着Nginx无法连接到配置中的上游服务器。这可能是由多种原因引起的,包括但不限于网络问题、服务未启动或健康检查失败。 #### 1. 检查上游服务器状态 确认所有上游服务器是否正常运行并能够响应请求。可以通过命令行工具如`curl`或浏览器直接测试上游URL来验证其可用性[^1]。 ```bash curl http://upstream-server-ip:port/path ``` 如果发现某些节点不可达,则需进一步排查这些节点的服务状况及其所在主机的状态。 #### 2. 配置文件审查 仔细检查Nginx配置文件中定义的upstream部分是否有误。确保地址正确无拼写错误,并且端口号匹配实际监听情况。另外还需注意负载均衡算法设置是否合理以及最大并发数等参数调整得当[^3]。 对于Kubernetes环境下的API Server访问问题特别需要注意的是VIP(虚拟IP)配置与Keepalived的工作机制之间的协调一致。因为这里提到的情况涉及到通过保持活动(VRRP)协议管理浮动IP用于高可用部署场景下对多个后端实例提供冗余支持的功能实现方式之一——即利用Keepalived创建了一个指向apiserver集群成员机器上的6443端口(默认HTTPS通信端口) 的 VIP (10.4.7.10),而该 IP 地址被映射到了 Nginx 反向代理所使用的自定义端口之上 (例如案例中的7443)。 因此,在这种特定情况下还需要额外关注两点: - **VRRP Master选举过程**:保证只有当前处于Master角色的节点才会接收来自客户端的数据包;其他Slave节点不应该处理任何流量直到它们成为新的领导者为止。 - **防火墙规则和安全组策略**:允许必要的TCP/IP层通讯路径畅通无阻地穿越整个基础设施栈直至目标应用进程层面。 #### 3. 增加超时时间和重试次数 适当增加proxy_read_timeout、proxy_connect_timeout 和 proxy_send_timeout 参数值可以给下游更多时间完成操作而不至于过早中断会话。同时也可以考虑提高尝试建立连接的最大次数(proxy_next_upstream_tries), 这样即使第一次握手失败也还有机会切换至备用资源继续尝试[^2]。 ```nginx location / { proxy_pass http://backend; # 设置更长的时间限制以适应较慢的应用程序响应速度 proxy_read_timeout 300s; proxy_connect_timeout 60s; proxy_send_timeout 300s; # 当前端收到HTTP 5XX错误码时自动转向下一个有效的UpStream成员重新发起请求最多三次 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_next_upstream_tries 3; } ``` #### 4. 启用健康监测功能 启用主动式的Health Check可以帮助及时识别出不健康的后端并将之暂时移除出轮询池之外等待恢复后再加入进来参与分发任务。这对于维持整体系统的稳定性和可靠性非常有帮助。 ```nginx upstream backend { server 192.168.1.1 max_fails=3 fail_timeout=30s; server 192.168.1.2 max_fails=3 fail_timeout=30s; health_check uri=/healthz match=named_matcher interval=5s falls=3 passes=2; } server { ... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值