Django/html Автовоспроизведение mp3

У меня есть приложение django, и один view, который проверяет некоторые данные, и передает переменную «play» в шаблон. Если play равен true - должен проигрываться короткий mp3 «bing», в противном случае он не проигрывается. Страница перезагружается каждые 10 секунд, чтобы вызвать представление, проверить, изменилось ли значение «play», и, возможно, воспроизвести звук. Проблема в том, что сразу после первой загрузки страницы ничего не проигрывается. Мне нужно один раз нажать кнопку воспроизведения на html-плеере, и после этого все работает отлично. Но без этого первого «ручного воспроизведения» он не работает. Есть идеи? Код шаблона django выглядит следующим образом.

 <html>
<head>
<script>
  window.onload = function() {
  
    var context = new AudioContext();
  } 
  function autoRefresh() { 
          window.location = window.location.href;  
      } 
      setInterval('autoRefresh()', 10000); 
  </script>

</head>
<body> 
     {%if play%} 
 
      <audio autoplay controls id="music" >

        <source src="{%static   'app1/stat1/d.mp3'%}" type="audio/mpeg">
      </audio>
      {%endif%} 
</body>
</html>

Not all browsers allow autoplaying, or at least not immediately. The documentation on the autoplay attribute [mdn-doc] says:

Autoplay availability

As a general rule, you can assume that media will be allowed to autoplay only if at least one of the following is true:

  • The audio is muted or its volume is set to 0
  • The user has interacted with the site (by clicking, tapping, pressing keys, etc.)
  • If the site has been allowlisted; this may happen either automatically if the browser determines that the user engages with media frequently, or manually through preferences or other user interface features
  • If the autoplay Permissions Policy [mdn-doc] is used to grant autoplay support to an <iframe> and its document.

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

Вернуться на верх