Невозможно изменить поток для выбранного идентификатора микрофона из списка - PullRequest
0 голосов
/ 03 октября 2018

Я использую приведенный ниже код для отображения визуализатора входа микрофона.Я не могу изменить выбранный микрофон из раскрывающегося списка моего приложения. Он принимает только значение по умолчанию, он принимает только поток микрофонов по умолчанию. Я отладил код, и из выпадающего списка получен обновленный deviceid выбранного микрофона.выдача любой ошибки.

Вот мой код: - var микрофон = ноль, анализатор = ноль, javascriptNode = ноль;

        if (window.stream) {
            window.stream.getTracks().forEach(function(track) {
                track.stop();
                track.ended;
            });
            window.stream=null;
        }
        if (browserName == "Chrome") {
            var audioContraints={
                audio: true,
                video:false,
                deviceId: { exact: inputSelectedDeviceID }  
            };
        }
        else{
            var audioContraints={
                audio: true,
                video:false 
            };
        }

        if (navigator.getUserMedia) {
            navigator.getUserMedia(audioContraints, 
                  function(stream) {
                      if (browserName == "Chrome") {
                          debugger;
                          window.stream = stream;
                      }
                      prevMICId=inputSelectedDeviceID;
                      alert('Got Stream'+inputSelectedDeviceID);
                      audioContext = new AudioContext();
                      //if(audioContext)
                      //    audioContext.close();
                      if (microphone) microphone.disconnect();
                      if (analyser) analyser.disconnect();
                      if (javascriptNode){ javascriptNode.disconnect();
                          javascriptNode.disconnect(audioContext.destination);
                      }
                      // AudioContext = window.AudioContext || window.webkitAudioContext;

                      microphone = audioContext.createMediaStreamSource(window.stream);   
                      // microphone = audioContext.createMediaElementSource(stream);  

                      analyser = audioContext.createAnalyser();
                      analyser.smoothingTimeConstant = 0.8;
                      analyser.fftSize = 1024;

                      javascriptNode = audioContext.createScriptProcessor(2048, 1, 1);
                      javascriptNode.connect(audioContext.destination);

                      microphone.connect(analyser);
                      analyser.connect(javascriptNode);
                      javascriptNode.onaudioprocess =null;
                      javascriptNode.onended = function(endded) {
                          console.log("endedd ho gaya" + JSON.stringify(endded));
                      }
                      javascriptNode.onaudioprocess = function(audioProcessingEvent) {
                          console.log(JSON.stringify(audioProcessingEvent));
                          var array = new Uint8Array(analyser.frequencyBinCount);
                          analyser.getByteFrequencyData(array);
                          var values = 0;

                          var length = array.length;
                          for (var i = 0; i < length; i++) {
                              values += (array[i]);
                          }

                          var average = values / length;
                          //console.log(average   + "  " +values + "  " + length );
                          $( "div[id^='spike']" ).addClass('Rectangle-Inactive').removeClass('Rectangle-21');
                          for (var i = 1; i < average/10; i++) {
                              $( "#spike" +i).addClass('Rectangle-21').removeClass('Rectangle-Inactive'); 
                          }
                      } // end fn stream
                  },
                  function(err) {
                      console.log("The following error occured: " + err.name)
                  });
        }
...