效果
navigator.mediaDevices.enumerateDevices
请求媒体输入和输出设备的列表,例如麦克风,摄像机,耳机设备等文章来源:https://www.toymoban.com/news/detail-556060.html
navigator.mediaDevices.getUserMedia
会提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道(来自硬件或者虚拟视频源,比如相机、视频采集设备和屏幕共享服务等等)、一个音频轨道(同样来自硬件或虚拟音频源,比如麦克风、A/D 转换器等等),也可能是其他轨道类型文章来源地址https://www.toymoban.com/news/detail-556060.html
源码
<div id="app">
<select id="audio-select">
<option value="">请选择</option>
</select>
<select id="video-select">
<option value="">请选择</option>
</select>
<video id="video" autoplay controls></video>
</div>
<script>
window.onload = function () {
const audioSelect = document.getElementById('audio-select');
const videoSelect = document.getElementById('video-select');
const video = document.getElementById('video');
// 获取全部设备
navigator.mediaDevices.enumerateDevices()
.then(devices => {
devices.forEach(device => {
let option = document.createElement('option');
option.value = JSON.stringify(device);
option.innerText = device.label;
switch (device.kind) {
case 'audioinput':
case 'audiooutput':
audioSelect.appendChild(option);
break;
case 'videoinput':
videoSelect.appendChild(option);
break;
}
});
})
function videoChange(device) {
if (!device) return;
// 播放音视频
navigator.mediaDevices.getUserMedia({ audio: audioSelect.value ? JSON.parse(audioSelect.value) : false, video: device })
.then(stream => {
video.srcObject = stream;
})
}
videoSelect.onchange = function (e) { videoChange(JSON.parse(e.target.value)) }
}
</script>
到了这里,关于前端基础(三十六):读取本地音视频设备并进行播放的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!