webrtc 一------相关api获取音视频设备采集音视频数据

webrtc基础及相关api

什么是webrtc

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。

使用node搭建https服务

出于安全考虑,WebRTC只允许在HTTPS环境下使用,否则浏览器将不允许页面获取音频或视频设备
所以在开始之前我们要先搭建https服务
centos使用node搭建https服务

获取音视频设备

api
enumerateDevices//获取音视频设备
语法

var Promise = navigator.mediaDevices.enumerateDevices();

我们通过navigator.mediaDevices.enumerateDevices()获取设备的信息,他返回的是一个Promise。在返回的Promise中有一个结构体MediaDevicesInfo,MediaDevicesInfo中存放着设备的信息包括

属性描述
label设备的名字(内置音频输入设备,内置音频输出设备,耳机等)
deviceId设备id
kind设备种类(音频设备,视频设备)
groupId组id

示例

'use strict'
//先判断是否支持
if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices){
  console.log("你的设备不支持enumerateDevices!");  
}else{
  navigator.mediaDevices.enumerateDevices()
  .then(gotDevices)
  .catch(handleError);
}
// 成功
function gotDevices(deviceInfos) {
	deviceInfos.forEach(function (deviceInfo) {
		//成功后进行相应的操作
		console.log(deviceInfo.kind + ": label"
			+ deviceInfo.label + ":id= "
			+ deviceInfo.deviceId + ":  groupId = "
			+ deviceInfo.groupId
		);
	}

// 出错
function handleError(err) {
			      console.log(err.name + " : " + err.message);

		}

采集音视频数据

api
getUserMedia//采集音视频数据
getDisplayMedia //获取桌面音视频数据
语法

var promise = navigator.mediaDevices.getUserMedia(constraints);
var promise = navigator.mediaDevices.getDisplayMedia(constraints);

navigator.mediaDevices.getUserMedia()也是返回一个Promise,返回的结果中包含视频音频流
navigator.mediaDevices.getUserMedia(constraints)有一个参数constraints 是对音视频的配置

var  constraints={
     audio: true, //bollean 或者MediaStrackConstraints(可以设置具体的控制 分辨率、帧率等)
     video: true  //bollean 或者MediaStrackConstraints(可以设置具体的控制 音量大小、单声道或者双声道等)
}

复杂配置

var constraints = {
			video : {
				width: 640,	
				height: 480,
				frameRate:15,
				facingMode: 'enviroment',//强制使用后置摄像头
				deviceId : ****** 
			}, 
				audio : {
				echoCancellation:true,//回音消除
				noiseSuppression:true,//降噪
			} 
    }

具体使用

//html
<video autoplay playsinline  id="player"></video>
//autoplay拿到视频源世界播放
//playsinline在浏览器页面中播放
//js
'use strict'
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
	console.log("你的浏览器不支持getUserMedia")
} else {
	var constraints = {
		video: true,
		audio: true
	}
	navigator.mediaDevices.getUserMedia(constraints)
		.then(gotMediaStream)
		.catch(handleError);
}
function gotMediaStream(stream) {
	var videoplay = document.getElementById('player');
	videoplay.srcObject = stream;//将获取到的流赋给video标签
}
function handleError(err) {
	      console.log(err.name + " : " + err.message);

}

getUserMedia()适配

getUserMedia() w3c
webkitgetUserMedia() 谷歌
mozgetUserMedia()火狐
自己实现
var getUserMedia() =navigator.getUserMedia()||
navigator.webkitgetUserMedia()||
navigator.mozgetUserMedia()()||
使用谷歌开源库adapter.js

https://webrtc.github.io/adapter/adapter-latest.js    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值