如何替换URL.createObjectURL

时间:2018-04-17 19:40:52

标签: javascript

我想在以下代码中替换URL.createObjectURL,因为它已被弃用。问题是我不知道如何替换它。

这是我的代码:

    var canvas = document.getElementById('canvas');
    var context = canvas.getContext('2d');
    var video = document.getElementById('video');
    var mediaConfig =  { video: true };
    var errBack = function(e) {
        console.log('An error has occurred!', e)
    };
    if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
        navigator.mediaDevices.getUserMedia(mediaConfig).then(function(stream) {
            video.src = window.URL.createObjectURL(stream);
            video.play();
        });
    }

    else if(navigator.getUserMedia) {
        navigator.getUserMedia(mediaConfig, function(stream) {
            video.src = stream;
            video.play();
        }, errBack);
    } else if(navigator.webkitGetUserMedia) {
        navigator.webkitGetUserMedia(mediaConfig, function(stream){
            video.src = window.webkitURL.createObjectURL(stream);
            video.play();
        }, errBack);
    } else if(navigator.mozGetUserMedia) {
        navigator.mozGetUserMedia(mediaConfig, function(stream){
            video.src = window.URL.createObjectURL(stream);
            video.play();
        }, errBack);
    }

    document.getElementById('snap').addEventListener('click', function() {
        context.drawImage(video, 0, 0, width, height);
    });

3 个答案:

答案 0 :(得分:0)

检查https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

  

注意:使用MediaStream对象(不要与MediaSource混淆)作为此方法的输入正在被弃用。正在讨论是否应该彻底删除它。因此,您应该尽量避免在MediaStreams中使用此方法,而应使用HTMLMediaElement.srcObject。

它明确告诉您使用HTMLMediaElement.srcObject

答案 1 :(得分:0)

不推荐使用功能 createObjectURL()

替换此:

video.src = window.URL.createObjectURL(stream);

对此:

video.srcObject = stream;

答案 2 :(得分:0)

因为大部分 chrome 和 Firefox 都弃用了一些 URL 调用,而不是使用 window.URL.createObjectURL, 你应该使用 HTMLMediaElement.srcObject。 check out this