WebRTC音视频采集约束

一:视频相关

        1.width 宽

        2.height 高 (宽高一般就两种比例 4 : 3 和 16 : 9)

        3.aspectRatio 比例 一般情况只设置宽高就可以设置好分辨率

        4.frameRate 帧率

        5.facingMode 控制摄像头 一般用于手机
                5-1.user:前置摄像头
                5-2.environment:后置摄像头
                5-3.left:前置左侧摄像头
                5-4.right:前置右侧摄像头

        6.resizeMode 采集画面裁剪

二:音频相关

        1.volume 音量 (从 0-1)

        2.sampleRate 采样率(8000 16000 32000 ......)

        3.sampleSize 采样大小(每一个采样由多少位表示 一般用 16位 也就是2个字节)

        4.echoCancellation 是否开启回音消除 (就是采集数据之后 是否要开启回音消除) 

        5.autoGainControl 是否自动增益 (是否在原有的音频上是否自动增加音量)

        6.noiseSuppression 是否开启降噪功能

        7.latency 延迟大小 单位ms 设置小的好处是在实时通讯的时候延迟通讯小,但是当网络质量不好的时候,会出现卡顿花屏之类的问题。设置大的好处是画面和声音更平滑,但是即时性没那么好。一般来说最好是 200-500ms

        8.channelCount 声道设置 单声道 1 立体声 2

三:其他(音频和视频都有)

        1.deviceID 当存在多个输入输出设备的时候 可以进行设备的切换,改变deviceID 就行

        2 groupID 代表同一个物理设备,比如音频的输入和输出就是同一个物理设备

例子:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>WebRTC capture video and audio</title>
	</head>
	<body>
		<div>
			<label>audio input device</label><select id="audioinput"></select>
		</div>
		<div>
			<label>audio output device</label><select id="audiooutput"></select>
		</div>
		<div>
			<label>video input device</label><select id="videoinput"></select>
		</div>
		<video autoplay playsinline id="player"></video>
		<!-- 
			autoplay:拿到视频源的时候直接播放
			playsinline:表示在浏览器中播放,而不是调用第三方工具
		-->
		<script>
			var audioSource = document.querySelector("select#audioinput");
			var audiooutput = document.querySelector("select#audiooutput");
			var videoinput = document.querySelector("select#videoinput");
			
			function gotDevices(deviceInfos){
				deviceInfos.forEach(item => {
					console.log(item);
					var option = document.createElement('option');
					option.text = item.label;
					option.value = item.deviceId;
					if(item.kind === "audioinput"){
						audioSource.appendChild(option);
					}else if(item.kind === "audiooutput"){
						audiooutput.appendChild(option);
					}else if(item.kind === "videoinput"){
						videoinput.appendChild(option);
					}
				})
			}
			function gotMediaStream(stream){
				var videoplay = document.getElementById('player');
				videoplay.srcObject = stream;
				return navigator.mediaDevices.enumerateDevices();
			}
			
			function handleError(err){
				console.log("error:"+err);
			}
			
			function start(){
				if(!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia){
					console.log('getUserMedia is not support');
					return;
				}else{
					var deviceId = videoinput.value;
					console.log(deviceId);
					var constrains = {
						video : {
							width:640,
							height:480, 
							frameRate:30,
							//宽高帧率可以设置成对象 {max:XX,min:XX} 这样系统会在你设置的范围内自动选择一个较好的
							facingMode:'enviroment',
							deviceId : deviceId ? deviceId : undefined
						},
						audio : {
							echoCancellation : true,
							noiseSuppression : true
						}
						
					}
					navigator.mediaDevices.getUserMedia(constrains)
						.then(gotMediaStream)
						.then(gotDevices)
						.catch(handleError);
				}
			}
			start();
			videoinput.onchange = start;
		</script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值