[010]音视频直播系统构建(二) | 设备检测

WebRTC里面存在API,以便我们查询自己机子上都有哪些音视频设备。

音视频设备基本原理

1、音频设备

音频输入设备的主要工作是采集音频数据,而采集音频数据的本质就是模数转换(A/D),即将模似信号转换成数字信号。

重要概念:

  • 采样率
  • 采样大小

模数转换使用的采集原理:奈奎斯特定理

在进行模拟 / 数字信号的转换过程中,当采样率大于信号中最高频率的 2 倍时,采样之后的数字信号就完整地保留了原始信号中的信息。

例子:
人类听觉范围的频率是 20Hz~20kHz 之间。对于日常语音交流(像电话),8kHz 采样率就可以满足人们的需求。但为了追求高品质、高保真,你需要将音频输入设备的采样率设置在 40kHz 以上,这样才能完整地将原始信号保留下来。例如我们平时听的数字音乐,一般其采样率都是 44.1k、48k 等,以确保其音质的无损。

音频设备的工作

采集到的数据再经过量化、编码,成为数字信号

2、视频设备

与音频类似。当实物光通过镜头进入到摄像机后,通过视频设备的模数转化(A/D)模块,即:光学传感器,将光->数字信号,即RGB(Red、Green、Blue)数据

获得 RGB 数据后,还要通过 DSP(Digital Signal Processer)进行优化处理,如自动增强、白平衡、色彩饱和等都属于这一阶段要做的事情。优化处理之后,就得到了24位的真彩色(Red、Green、Blue 每种颜色由8位组成)的图片。

注意:

获得的 RGB 图像只是临时数据。因最终的图像数据还要进行压缩、传输,而编码器一般使用的输入格式为 YUV I420,所以在摄像头内部还有一个专门的模块用于将 RGB 图像转为 YUV 格式的图像。

备注:YUV 也是一种色彩编码方法,主要用于电视系统以及模拟视频领域。它将亮度信息(Y)与色彩信息(UV)分离,即使没有 UV 信息一样可以显示完整的图像,只不过是黑白的,这样的设计很好地解决了彩色电视机与黑白电视的兼容问题。

设备管理基本概念

WebRTC获取音视频设备列表的API:

MediaDevices.enumerateDevices()

MediaDeviceInfo包含以下三个重要的属性:

  • deviceID,设备的唯一标识
  • label,设备名称
  • kind,设备种类,可用于识别出是音频设备还是视频设备,是输入设备还是输出设备。

需要注意的是,出于安全原因,除非用户已被授予访问媒体设备的权限(要想授予权限需要使用 HTTPS 请求),否则 label 字段始终为空

例子:

if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {  //判断浏览器是否支持MediaDevice接口(老版本浏览器可能不支持)
  console.log("enumerateDevices() not supported.");
  return;
}

// List cameras and microphones.

navigator.mediaDevices.enumerateDevices()
.then(function(devices) {
  devices.forEach(function(device) {
    console.log(device.kind + ": " + device.label +
                " id = " + device.deviceId);
  });
})
.catch(function(err) {
  console.log(err.name + ": " + err.message);
});
设备检测

可通过MediaDeviceInfo结构中的kind字段,将设备分类为音频设备或者视频设备。如果需要细分的话,Kind也可分为输出/输入设备。例如:耳机(兼有音频、视频输出设备功能)。除此之外,每种不同种类的设备还会设置各自默认的设备。例如:耳机插入电脑后,耳机成为了音频默认设备;拔出耳机,默认设备有切换成为了系统的音频设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值