0
votes

L'audiocontext n'a pas été autorisé à démarrer. Enregistreur angularjs chrome 71

J'utilise AngularAudiorecorder (angularjs) depuis 4 ans et avec la dernière mise à jour chrome, je reçois l'erreur suivante:

getPermission: function () {
      navigator.getUserMedia({
        "audio": true
      }, html5HandlerConfig.gotStream, html5HandlerConfig.failStream);
    },
    init: function () {
      service.isHtml5 = true;
      var AudioContext = window.AudioContext || window.webkitAudioContext;
      if (AudioContext && !html5AudioProps.audioContext) {
        html5AudioProps.audioContext = new AudioContext();
      }

      if (localStorage.getItem("permission") !== null) {
        //to get permission from browser cache for returning user
        html5HandlerConfig.getPermission();
      }
    }
  };


2 commentaires

Avez-vous vu cette? développeurs.google.com/web/updates/2017/ 09 / ...


Oui, j'ai essayé plusieurs fois de mettre en œuvre cela et a échoué.


3 Réponses :


0
votes

j'ai résolu le problème . A finalement repris la pause audiocontext avec: xxx

à l'intérieur de la fonction qui commence l'enregistrement.


0 commentaires

1
votes

le faire lorsque l'utilisateur appuie sur une touche ou touchez n'importe quel bouton

si (audio_context.state! == 'exécuter') { audio_context.Resume (); }


0 commentaires

0
votes

Ce problème n'est rien qui ne s'applique qu'aux angulaires; C'est beaucoup plus général et a à voir avec le fait que les navigateurs modernes ont désactivé les sons de jeu automatique (jusqu'à ce que l'utilisateur soit interagi 'suffisamment ») de sorte que vous n'êtes pas ennuyé par des sons de la page Web que vous venez d'ouvrir.

Voir cette ancienne question ici .

J'avais exactement le même message "non autorisé à démarrer", et je n'utilise pas angulaire; J'essayais simplement d'avoir JavaScript jouer un son (programmatique) avant d'interaction utilisateur "suffisante". Ce que j'ai fait pour résoudre ce problème, c'était de prendre soin de ce que ... = nouvel audiocontext () est exécuté uniquement une fois que l'utilisateur a appuyé sur un bouton ou interagi avec un curseur (natif). La réponse acceptée à une ancienne question ci-dessus suggère essentiellement la même stratégie.

Bien de voir que vous avez déjà résolu le problème. Probablement (Attention: non testé) Une solution alternative serait de retarder le chargement et / ou l'initialisation du code de l'enregistreur jusqu'à ce que l'utilisateur ait appuyé sur un bouton ou donc.


0 commentaires