有没有一种方法可以下载捕获的显示视频和音频内容的webM / mp4视频?

时间:2019-07-30 20:50:37

标签: javascript html webcam mp4

我正在尝试创建一个工具,使人们可以使用网络摄像头直接在浏览器中捕获视频,然后在本地下载该视频。现在,他们捕获的视频将保存在浏览器中,并完全显示在窗口中,但是在下载时,仅保存了mp4文件的音频内容,而没有视觉组件。我在下面粘贴了我的代码,任何建议将不胜感激。谢谢!

navigator.mediaDevices.getUserMedia({audio: true, video: true})
    .then(function(mediaStreamObj) {
        let video = document.querySelector('video');
        if ("srcObject" in video) {
            video.srcObject = mediaStreamObj;
        } else {
            video.src = window.URL.createObjectURL(mediaStreamObj);
        }
        video.onloadedmetadata = function(ev) {
            video.play();
        };
        let start = document.getElementById('btnStart');
        let stop = document.getElementById('btnStop');
        let vidSave = document.getElementById('vid2');
        let mediaRecorder = new MediaRecorder(mediaStreamObj);
        let chunks = [];
        let blob = undefined
        start.addEventListener('click', (ev) => {
            mediaRecorder.start();
            console.log(mediaRecorder.state);
        })
        stop.addEventListener('click', (ev) => {
            mediaRecorder.stop();
            console.log(mediaRecorder.state);
        });
        mediaRecorder.ondataavailable = function(ev) {
            chunks.push(ev.data);
        }
        mediaRecorder.onstop = (ev) => {
            blob = new Blob(chunks);
            chunks = [];
            let videoURL = window.URL.createObjectURL(blob);
            vidSave.src = videoURL;
            document.getElementById("download").onclick = function() {
                document.getElementById("downloadLink").href = videoURL;
                document.getElementById("downloadLink").download = "video.mp4";
                document.getElementById("downloadLink").click();
            }
        }
    })
    .catch(function(err) {
        console.log(err.name, err.message);
    });

0 个答案:

没有答案