微信的语音段传输

原理

  • 使用 webRTC 技术获取麦克风设备和录制音频

  • 使用 webSocket 技术传输音频流

  • 备注:webRTC与webSocket的区别

    • WebSockets允许浏览器和Web服务器之间的全双工通信

    • WebRTC的PeerConnection允许两个浏览器之间的全双工通信

webRTC的使用

获取麦克风/摄像头设备

// 获取媒体设备
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
  /* 使用这个stream stream */
})
.catch(function(err) {
  /* 处理error */
});

// constrains配置参数
var constrains = {
  // 获取麦克风
  audio: true,
  // 获取摄像头
  video: {
    width: { min: 1024, ideal: 1280, max: 1920 },
    height: { min: 776, ideal: 720, max: 1080 },
    // 优先前置摄像头
    facingMode: "user",
    // 强制后置摄像头
    facingMode: { exact: "environment" },
    // 帧率
    frameRate: { ideal: 10, max: 15 }
  }
}

适配旧的浏览器

webSocket的使用

Github地址

效果展示

Last updated