采集本地媒体
- navigator.mediaDevices.getUserMedia 使用摄像头和音频
- navigator.mediaDevices.getDisplayMedia 共享屏幕
- navigator.mediaDevices.enumerateDevices 列出可用的媒体
- [HTMLMediaElement|HTMLCanvasElement].captureStream 捕获媒体流
播放媒体流
<video id="myMedia" width="500" height="500" autoplay controls></video>
<script>
const myMedia = document.querySelector("#myMedia")
function getUserMedia() {
navigator.mediaDevices
.getUserMedia({ video: true })
.then(mediaSteam => {
myMedia.srcObject = mediaSteam
})
.catch(err => {
console.log(err)
})
}
getUserMedia()
</script>
录制媒体流
- 通过MediaRecorder APi对获取到的媒体流进行处理
- 实例👇
function getRecorder(stream) {
let chunk = [];
const recorder = new MediaRecorder(stream);
recorder.ondataavailable = ({ data }) => {
chunk.push(data);
};
recorder.start();
setTimeout(() => {
recorder.stop();
}, 5 * 1000);
}
理解媒体流 MediaStream
- 媒体流是采用流式传输的方式,使得流式媒体在Internet上播放的技术。通过网络传输的音频、视频或多媒体文件在播放前并不下载整个文件,数据流随时传送随时播放,只是在开始时有一些延迟
- 媒体流可以被采集、传输和播放,通常一个媒体路包含多个媒体轨道
MediaStreamTrack(如音频轨道 视频轨道)
- 媒体流通过MediaStream接口管理
- MDN介绍
媒体约束和媒体能力
- 媒体约束:限制媒体的特性(分辨率 帧率 等等)
- 媒体能力:当前设备能够支持哪些约束
- 处理媒体特性的方法
- MediaDevices.getSupportedConstraints():获取当前浏览器支持的约束数组。
- MediaStreamTrack.getCapabilities():有了支持的约束数组,使用该方法获取这些约束的取值范围。
- MediaStreamTrack.applyConstraints():根据应用程序的需要,调用该方法为约束指定自定义的值。
- MediaStreamTrack.getConstraints():获取上述applyConstraints方法传入的值。
- MediaStreamTrack.getSettings():获取当前轨道上所有约束的实际值。
- 具体约束
参考文献
- MDN
- webRTC技术详解 - 栗伟