对WebRTC是如何处理音频的感兴趣?本文包括一个简单的WebRTC音频demo,会给你展示如何获取音频设备,如何实时的检测数据流中产生的变化。
引文
设想一个场景:你等了好久的重要视频通话终于要进行了,花了几分钟检查一下头发是不是凌乱,牙缝上没有菜叶,自己打扮的光鲜亮丽。现在你打开了浏览器,粘贴会议链接。你看到另一端的人已经上线了,所以你非常兴奋的点了“加入”按钮,清清嗓子打个招呼。你看见对方的嘴巴在动可是你却听不见任何声音,能看出来他说的是“你能听见我说话吗?”但还是没有声音。
两个人都在疯狂的对着麦克风说“你现在能听见我了吗”,而且弄明白哪出问题了浪费了宝贵的时间。对方很有可能还不会用这个会议应用,不知道是麦克风静音了还是根本就没有音频数据。
和上述场景差不多的情况发生时,很有可能是因为多种原因造成的,需要进行一些故障排除工作。可能是因为网络不好,可能是硬件问题,也有可能是第八层出现的错误。不管原因是什么,作为开发人员我们都必须确保在这种情况发生时,我们的应用能尽可能的帮助到用户。
我们必须要问自己这三个问题:
# 我们要如何确认有输入音频?
# 这个问题要如何监控?
# 有什么标准内置函数或者开源资源可以用吗?
在回答这些问题之前,让我们花几分钟的时间来回顾一下WebRTC是如何处理媒体设备的。
获取用户媒体(getUserMedia)
正如我们知道的那样,WebRTC有三个过程:
1. 浏览器获取媒体设备(麦克风,摄像头)的权限
2. 信令服务器交换两个对等端的握手消息
3. 端到端连接建立
我们现在要专注分析第一步,这步是通过GetUserMedia() API完成的。获取媒体设备的权限就是调用下面这个函数这么简单:
getUserMedia()返回一个Promise。有趣的是数据流要如何被获取,取决于作为参数传递给API的约束变量。
让我们看看上述变量
WebRTC中的音频
最新推荐文章于 2025-06-28 17:35:30 发布