在webrtc视频聊天后,Chrome打包的应用程序崩溃了

时间:2014-08-19 12:35:02

标签: google-chrome webrtc google-chrome-app

我正在使用JavaScript IceLink库(http://www.frozenmountain.com/products/icelink)来实现webrtc视频聊天。应用程序有时会在视频聊天后崩溃。 Chrome日志显示下一个问题: [240:1520:0819/141151:VERBOSE1:webrtcsession.cc(1016)] SetAudioPlayoutVolume:不存在音频通道。

void WebRtcSession::SetAudioPlayoutVolume(uint32 ssrc, double volume) {
  ASSERT(signaling_thread()->IsCurrent());
  ASSERT(volume >= 0 && volume <= 10);
  if (!voice_channel_) {
    LOG(LS_ERROR) << "SetAudioPlayoutVolume: No audio channel exists.";
    return;
  }

  if (!voice_channel_->SetOutputScaling(ssrc, volume, volume))
    ASSERT(false);
}

https://code.google.com/p/webrtc/source/browse/trunk/talk/app/webrtc/webrtcsession.cc?r=6855#990

看起来 - 崩溃 - 是Chrome浏览器的预期行为,但它对我的应用程序来说是一种糟糕的用户体验。我能以某种方式处理这种情况吗?我需要摆脱这次崩溃。

1 个答案:

答案 0 :(得分:2)

崩溃是否是预期的行为&#34;是一个有趣的问题。

从语义上讲,assert(condition)语句意味着

  

除非condition为真,否则非常非常错误

显然,Chrome开发人员订阅Crash Early理念 - 如果您无法从故障状态中有意义地恢复,则应尽快终止。在这方面,它是预期的&#34;行为。


然后再次,如果一个断言被触发,这意味着程序中的错误。如果这是一个预期的状态,就不会有崩溃,而是有意义的反应。因此,您在Chrome中遇到了一个错误,而不是&#34;预期&#34;行为。即使您正在使用的库中存在错误,用户也不应该触发崩溃。

您应该使用最新的Chrome版本(dev / Canary版本)测试您的应用。如果错误仍然存​​在 - 那你明确错误should report。如果错误在Canary中没有重现,那么这是一个已经修复的错误,你所能做的就是等待修复它的下一个Chrome版本。