代码之家  ›  专栏  ›  技术社区  ›  user1688726

webRTC真的有可能在没有噪音的情况下传输高质量的音频吗?

  •  9
  • user1688726  · 技术社区  · 8 年前

    我用最高质量的设置和多个眩晕/转身服务器进行了测试,但没有找到真正高质量的流。

    有没有人找到了用webRTC提供真正高带宽音频流的方法,或者现在实际上不可能?

    2 回复  |  直到 8 年前
        1
  •  21
  •   Kim T    5 年前

    WebRTC的默认音频设置非常低。它默认为42 kb/s左右的单声道音频,因为它似乎是为语音设计的。我通过配置一些设置来提高质量。

    1. autoGainControl , echoCancellation noiseSuppression
    navigator.mediaDevices.getUserMedia({
      audio: {
        autoGainControl: false,
        channelCount: 2,
        echoCancellation: false,
        latency: 0,
        noiseSuppression: false,
        sampleRate: 48000,
        sampleSize: 16,
        volume: 1.0
      }
    });
    
    1. 添加 stereo maxaveragebitrate SDP属性:
    let answer = await peer.conn.createAnswer(offerOptions);
    answer.sdp = answer.sdp.replace('useinbandfec=1', 'useinbandfec=1; stereo=1; maxaveragebitrate=510000');
    await peer.conn.setLocalDescription(answer);
    

    实际比特率取决于网络速度和信号强度。

    有关SDP的更多信息:

    会话描述协议(SDP)[RFC4566]以与传输无关的方式描述多媒体会话的各个方面,例如媒体能力、传输地址和相关元数据,用于会话公告、会话邀请和参数协商。

    https://tools.ietf.org/id/draft-nandakumar-rtcweb-sdp-01.html#rfc.section.3

    https://github.com/kmturley/webrtc-radio

        2
  •  10
  •   Mick    8 年前

    首先,值得一提的是,Web RTC建立在底层网络连接的基础上,如果网络连接很差,那么更高的层几乎无法避免这种情况。

    查看您强调的特定比较,有几个因素是VoIP语音质量的关键(假设您关注问题中的语音):

    • 延迟:为了避免延迟和回声,语音通信需要较低的端到端延迟。高质量VoIP系统的目标通常是低于200毫秒的延迟。
    • 抖动-这本质上是一次延迟的变化,即端到端延迟如何随时间变化。

    与steamed radio等相比,关键点是延迟——流开始播放通常需要等待几秒钟。

    因此,与流音频相比,您看到的质量差异很可能与通信的实时性有关,而不是与固有的WebRTC故障有关——或者更准确地说,即使WebRTC是完美的,实时双向VoIP也很容易受到网络条件的影响。

    像需要注意的是,video cleary需要更多的带宽,并且也受到网络的影响,但人们往往对视频“口吃”比多媒体通话中的语音质量问题更宽容(目前是这样)。