从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

02 | 如何通过WebRTC进行音视频设备检测呢?

YUV格式
DSP优化处理
模数转换
采样大小
采样率
enumerateDevices方法
Promise
MediaDeviceInfo
MediaDevices接口
视频设备
音频设备
音视频设备检测模块
设备检测
获取音视频设备列表
WebRTC设备管理的基本概念
音视频设备的基本原理
WebRTC处理过程
思考时间
WebRTC音视频设备检测
参考文章

该思维导图由 AI 生成,仅供参考

使用过音视频会议或在线教育等实时互动软件的同学都知道,在打开摄像头(Camera)或麦克风(Micphone)的时候,首先要对其进行检测,检测的内容包括:
电脑 / 手机上都有那些音视频设备?
我们选中的音视频设备是否可用?
以手机为例,它一般会包括前置摄像头和后置摄像头。我们可以根据自己的需要,选择打开不同的摄像头。当然,手机上不单有多个摄像头,麦克风的种类就更多了, 如:
系统内置麦克
外插的耳机
蓝牙耳机
……
以上这些设备,我们都可以通过手动或自动的方式打开它们。
那么,WebRTC 是否提供了相关的接口,以便我们查询自己机子上都有哪些音视频设备呢?答案是肯定的。
下面我们就来看看如何使用浏览器下 WebRTC API 来显示我们的音视频设备吧。

WebRTC 处理过程

在正式讲解之前,咱们先回顾一下 WebRTC 的整体处理过程图,以便让你清楚地知道咱们这篇文章在整个处理过程中的位置。
WebRTC 1 对 1 音视频实时通话过程示意图
上面这幅图与第一篇文章中的图几乎是一模一样的。其差别在于,我将图中两个音视频设备检测模块置红了。
这样,我们本文所讲的内容在整个 WebRTC 处理过程中的位置就一目了然了!

音视频设备的基本原理

既然说到音视频设备,那么我们再顺便介绍一下音视频设备的基本工作原理,对于这些设备工作原理的了解,会为你后续学习音视频相关知识提供很大的帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC音视频设备检测技术概述 WebRTC技术可用于音视频设备检测,对于实时互动软件如音视频会议或在线教育具有重要意义。本文介绍了WebRTC的处理过程和音视频设备的基本原理,以及WebRTC设备管理的基本概念,包括MediaDevices接口、MediaDeviceInfo对象和Promise对象。通过调用enumerateDevices方法,可以轻松获取设备信息。文章还详细介绍了设备检测的步骤,包括对音频设备和视频设备进行分类和检测,以及如何通过getUserMedia API进行设备检测。此外,文章提出了一些思考问题,如设备拔出后的处理和设备切换等,并指出WebRTC已经处理得非常好。总的来说,WebRTC技术在音视频设备检测方面表现出色,读者可以通过本文快速了解WebRTC音视频设备检测的基本原理和操作方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(33)

  • 最新
  • 精选
  • 曙光
    1 我测试的结果没有videooutput(显示器不算么?) 2 default和communications 有啥区别?如何显示它们的id信息? 3 ()是lable,老师说需要HTTPS才能看到,有其他方法么? 谷歌浏览器,测试结果如下: audioinput:(): id = default audioinput:(): id = communications audioinput:(): id = 101a8..... videoinput:(): id = f9b4..... audiooutput:(): id = default audiooutput:(): id = communications audiooutput:(): id = 71b3....

    作者回复: 显示器明明是输出设备,啥时候变成了输入设备哈?只能用 HTTPS...,不要在这方面浪费时间了,在国外买个云服务器(花不了几个钱的),这样可以省去域名备案的时间。能用钱解决的问题就不要用时间去解决,因为这些时间可以用来挣更多的钱哈

    2019-07-29
    6
  • 宇宙之王
    请问老师,我用的自己生成的证书https和阿里云的ECS主机(CentOS系统),用第一讲和第三讲,第四讲(后面还没试)的代码可以正常获取摄像头的图像,采集视频,并实现保存下载视频功能,但是这一讲的代码我获取label也是为空,是不是还有什么别的限制,最关键的是本地运行也获取不到,是什么原因呢?谢谢老师!

    作者回复: 自已生成的证书不行,要用正式的证书!

    2020-08-22
    2
    4
  • 李跃爱学习
    老师音频采样率解释得很清楚,可是采样大小没有深入解释,能否补充一下,不同采样大小意味着什么差别?

    作者回复: 如果采样大小太小的话,你的声音的振幅又很大,这时就会对声音产生损失呀!

    2019-07-18
    4
    3
  • Keep-Moving
    想问一下,后续的实例代码也都是js语言的吗?

    作者回复: 基本都是,服务端会有一点 C/C++的

    2019-07-18
    2
    3
  • 在水一方
    移动端(安卓,iOS)有没有一种浏览器,能完美支持webrtc?

    作者回复: iOS用safari, android安装chrome

    2020-07-25
    2
  • 我这通过 navigator.mediaDevices.enumerateDevices() 获取到的设备列表想请教下老师: 1: 对于每个设备 还有个 groupId ,这个字段是干什么用的? 每一组的设备还有特殊的含义吗? 2: 获取的设备分为 InputDeviceInfo 和 MediaDeviceInfo ,这里 InputDeviceInfo 是指输入设备信息,那么MediaDeviceInfo(下面的kind:都是 "audiooutput" 没有 videooutput)是指输出的设备信息吗?

    作者回复: 举个例子,对于耳机,它即是音频输入设备又是音频输出设备,因此它们属于同一个 groupID,你可以自己做个实验验证一下哈。对于第二个问题不同的浏览器表现不一样,其中chrome与webrtc规范是最接近的,你可以用chrome实验一下,是可以区分出音频的输入与输出设置的。

    2019-07-18
    2
  • Geek_a6a976
    作业: 应该可以用上一节课讲的MediaStreamConstraints中的MediaTrackConstraints设置要读取的deviceId, groupId来选择要获取的设备的stream。 想问老师,设备掉线后,是否有类似onchange事件来异步通知

    作者回复: 有的,ondevicechange。 例如: navigator.mediaDevices.ondevicechange = function(event) { updateDeviceList(); }

    2020-08-09
    1
  • chong-de.fang
    请问在本地,用域名的方式可以获取到设备信息,但是label值为空,这是什么问题?

    作者回复: 调用一下 getUserMedia方法就好了

    2020-01-22
    1
  • 月光伴奏
    我本地测试不用https也能拿到lable 哈哈

    作者回复: 本地是可以的,但真正的产品不会放在本地。另外,只测试本地有可能很多环节在真实环境是是打不通的。

    2019-11-15
    1
  • 赵健
    需要注意的是,出于安全原因,除非用户已被授予访问媒体设备的权限,否则 label 字段始终为空 --- 老师,您好,不太明白何为用户已被授予访问媒体设备的权限?比如,第一节课里面的电脑的摄像头已经被打开了,这个还不算有访问设备的权限吗?

    作者回复: 要满足两个条件,一是使用https;二是调用getUserMedia

    2019-07-21
    3
    1
收起评论
显示
设置
留言
33
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部