Не удается запросить аудио / видео IE11

У меня проблема из-за кода, который я использовал для запроса аудио / видео, он работает в Chrome, Mozilla Firefox, но в IE11 он не работает.

Я уже читал это:

https://github.com/addyosmani/getUserMedia.js

и применил большинство изменений, чтобы заставить его работать в IE11, однако я не получаю результатов, что не так в моем коде, который не позволяет мне получить видео в этом браузере.

function initiateMedia(obj){
    constraint = "";

    if (obj.video= = "true" && obj.audio= = "true"){
        constraint = {
                audio:true,
                video:{
                    width:{max:380},
                    height:{max:260}
                    }

            }
        //Set Video Element
        $("#mediacontainer").html('<video id  = "io-videocam" muted = "muted"></video>');
        mediactrl = document.querySelector('video');
        mediaType = "video/webm";
        return "Audio and Video input found! You can now start recording!";

    }else if (obj.video= = "null" && obj.audio= = "true"){ //audio input only
        constraint = {audio:true, video: false}

        //Set Audio Element
        $("#mediacontainer").html('<audio id  = "io-audio" controls muted = "muted"></audio>');
        mediactrl = document.querySelector('audio');
        mediaType = "audio/mpeg";
        return ("Audio input found! You can now start recording!");

    }else if (obj.video= = "null" && obj.audio= = "null"){ //no audio or video input
        console.info("No Audio or Video input found");
        return false;
    }

}


function listUserMedia(){

    if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {
        console.info("enumerateDevices() not supported.");
        return;
    }

    var media = navigator.mediaDevices.enumerateDevices();

    media.then(function(devices) {

        var useVideo=null;
        var useAudio=null;
        devices.forEach(function(device) {

            //console.info(device.kind + ": " + device.label + " id = " + device.deviceId);

            if (device.kind= = "audioinput"){
                useAudio = "true";

            }

            if (device.kind= = "videoinput"){
                useVideo = "true";

            }

        });

        if (typeof(Storage) !== "undefined") {
            sessionStorage.setItem('useAudio', useAudio);
            sessionStorage.setItem('useVideo', useVideo);
        } else {
            console.info("Unable to set SessionStorage");
        }

    });

    media.catch(function(err) {
            console.info(err.name + ": " + err.message);
    });

    if (typeof(Storage) !== "undefined") {

        return {"audio":sessionStorage.getItem('useAudio'),"video":sessionStorage.getItem('useVideo')};
    } else {
        console.info("Unable to get SessionStorage");
    }

    return null;
}


navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

function requestMedia(string){

if (typeof MediaRecorder === 'undefined' || !navigator.getUserMedia){

        alert('MediaRecorder/getUserMedia no supported on your browser, kindly use Firefox 36+');
    }else{

        //initiateMedia(listUserMedia());
        //navigator.getUserMedia(constraint, startRecording, errorCallback);

        var media = navigator.mediaDevices.getUserMedia(constraint);

        media.then(function(mediaStream){
            stream=mediaStream;
            var url = window.URL || window.webkitURL;
            if (mediaType!=null){

                if (mediaType= = "video/webm"){
                    mediactrl.src = url ? url.createObjectURL(stream) : stream;
                    mediactrl.onloadedmetadata = function(e) {

                        mediactrl.play();
                    };
                }else{
                    mediactrl.src = url ? url.createObjectURL(stream) : stream;
                    mediactrl.onloadedmetadata = function(e) {

                        mediactrl.play();
                    }
                }
                $("#requestmedia").addClass("btndisabled faded-effect");
                $("#videocontrol").removeClass("btndisabled").prop("disabled",false);
                $("#mediaerror").html(string).css({"display":"block","color":"#003666"});
            }

        });

        media.catch(function(err){
            errorCallback(err);
        });
    }

}



function startRecording(stream){

    /*
    if (typeof MediaRecorder.isTypeSupported == 'function'){
        if (MediaRecorder.isTypeSupported('video/webm;codecs=vp9')) {
                var options = {mimeType: 'video/webm;codecs=vp9'};
        } else if (MediaRecorder.isTypeSupported('video/webm;codecs=vp8')) {
                var options = {mimeType: 'video/webm;codecs=vp8'};
        }

        mediaRecorder = new MediaRecorder(stream, options);

    }else{
        mediaRecorder = new MediaRecorder(stream); //Default codec for browser
    }
    */
    mediaRecorder = new MediaRecorder(stream);
    mediaRecorder.start(10);


    mediaRecorder.ondataavailable = function(e){
        chunks.push(e.data);
    };

    mediaRecorder.onerror = function(e){
        console.info("Error: "+e)    
    };

    mediaRecorder.onstop = function(){
        var blob = new Blob(chunks, {type: mediaType});
        chunks = [];
        var mediaURL = (window.webkitURL || window.URL).createObjectURL(blob);
        sendFileToServer(blob);
        //console.info(mediaURL);
    };



}

function errorCallback(error){
  console.info('navigator.getUserMedia error: ', error);
}

function releaseDevice(){

    if (stream && stream.stop){
        //stream.stop();

        if (mediaType= = "video/webm"){
        stream.getVideoTracks()[0].stop();  
        stream.getAudioTracks()[0].stop();
        }else{
        stream.getAudioTracks()[0].stop();
        }


    }

    stream=null;
}

Проверьте ссылку, которую я поместил, это обходной путь

Pedro Santos 15.03.2018 15:52

Да, вероятно, их .swf - это обходной путь в качестве запасного варианта. Вы пробовали это в своем коде?

choz 15.03.2018 15:56

Да, но я не могу это реализовать: \ Вот почему я спрашиваю

Pedro Santos 15.03.2018 17:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
499
0

Другие вопросы по теме