webrtc学习笔记2

音视频采集和播放

打开摄像头并将画面显示到页面

复制代码
1. 初始化button、video控件
2. 绑定"打开摄像头"响应事件onOpenCamera
3. 如果要打开摄像头则点击 "打开摄像头"按钮,以触发onOpenCamera事件的调用
4. 当触发onOpenCamera调用时
a. 设置约束条件,即是getUserMedia函数的入参
b. getUserMedia有两种情况,一种是正常打开摄像头,使用handleSuccess处理;一种是打开摄像头失败,使
用handleError处理
c. 当正常打开摄像头时,则将getUserMedia返回的stream对象赋值给video控件的srcObject即可将视频显示出
来
js 复制代码
<!DOCTYPE html>
<html >
    <body >
        <video id="local-video" autoplay playsinline></video>
        <button id="showVideo" >打开摄像头</button>
        <p>通过getUserMedia()获取视频</p>
    </body>
    <script >
        const constraints = {
            audio: false,
            video: true
        };

        // 处理打开摄像头成功
        function handleSuccess(stream) {
            const video = document.querySelector("#local-video");
            video.srcObject = stream;
        }

        // 异常处理
        function handleError(error) {
            console.error("getUserMedia error: " + error);
        }

        function onOpenCamera(e) {
            navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
        }
        document.querySelector("#showVideo").addEventListener("click", onOpenCamera);
    </script>
</html>

打开麦克风并在页面播放捕获的声音

复制代码
1. 初始化button、audio控件
2. 绑定"打开麦克风"响应事件onOpenMicrophone
3. 如果要打开麦克风则点击 "打开麦克风"按钮,以触发onOpenMicrophone事件的调用
4. 当触发onOpenCamera调用时
a. 设置约束条件,即是getUserMedia函数的入参
b. getUserMedia有两种情况,一种是正常打开麦克风,使用handleSuccess处理;一种是打开麦克风失败,使
用handleError处理
c. 当正常打开麦克风时,则将getUserMedia返回的stream对象赋值给audio控件的srcObject即可将声音播放出
来
js 复制代码
<!DOCTYPE html>

<html>
    <body>
        <audio id="local‐audio" autoplay controls>播放麦克风捕获的声音</audio>
        <button id="playAudio">打开麦克风</button>
        <p>通过getUserMedia()获取音频</p>


    </body>  
    <script>
        const constraints={
            audio:true,
            video:false
        };

        //处理打开麦克风成功
        function handleSuccess(stream){
            const audio =document.querySelector("#local-audio");
            audio.srcObject=stream;
        }

        // 异常处理
        function handleError(error){
            console.error("getUserMedia error: " + error);
        }
        function onOpenMicro(e) {
            navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
        }
        document.querySelector("#playAudio").addEventListener("click", onOpenMicrophone);
    </script>  

</html>

打开摄像头和麦克风

主要区别是

js 复制代码
const constraints = (window.constraints = {
                audio: true,
                video: true
            });
js 复制代码
<!DOCTYPE html>
<html>
    <body>
        //muted消除回声
        <video id="local‐video" autoplay playsinline muted></video>
        <button id="showVideo">打开音视频</button>

        <div id="errorMsg"></div>
        <p>通过 <code>getUserMedia()</code> 获取音视频.</p>

        <script>
            const constraints = (window.constraints = {
                audio: true,
                video: true
            });
            // 处理打开摄像头+麦克风成功
            function handleSuccess(stream) {
            const video = document.querySelector("#local‐video");
            video.srcObject = stream;
            }

            function handleError(error) {
                console.error("getUserMedia error: " + error);
            }

            async function onOpenAV(e) {
                navigator.mediaDevices.getUserMedia(constraints).then(handleSuccess).catch(handleError);
            }
            document.querySelector("#showVideo")
            .addEventListener("click",onOpenAV);
        </script>
    </body>
</html>
相关推荐
hmbbcsm2 分钟前
python 学习之路(八)
学习
搞机械的假程序猿22 分钟前
普中51单片机学习笔记-矩阵按键
笔记·学习·51单片机
却道天凉_好个秋39 分钟前
音视频学习(七十):SVC编码
学习·音视频
Mr.Jessy1 小时前
Web APIs 学习第六天:BOM、location对象与本地存储
开发语言·前端·javascript·学习·web api·bom
呜呜。2 小时前
WebSocket-学习调研
websocket·网络协议·学习
Tonya432 小时前
测开学习DAY28
学习
Lynnxiaowen2 小时前
今天我们开始学习ansible之playbook的简单运用
linux·运维·学习·云计算·ansible
心无旁骛~2 小时前
MotionTrans: 从人类VR数据学习机器人操作的运动级迁移
学习·机器人·vr
敲敲了个代码3 小时前
11月3-5年Web前端开发面试需要达到的强度
前端·vue.js·学习·react.js·面试·职场和发展·web
xinyu_Jina3 小时前
WebRTC的P2P实践:局域网文件传输中的信令、ICE与DataChannel架构解析
架构·webrtc·p2p