Чи IOS13 зламав теги <audio>, використовувані як аудіобуфери, підключені до аудіо контексту?


9

Зараз ми розробляємо веб-сайт, який дозволяє користувачам відтворювати прості звукові теги, підключені до аудіоконтексту. Нам відомі технічні проблеми з IOS, такі як відтворення, ініційоване жестами користувача. Все працює добре до IOS12. Тепер, коли IOS13 не працює, більше нічого не працює.

Він працює на всіх настільних комп'ютерах, Android та IOS аж до IOS13.

Будь-яка ідея про те, що відбувається?

Немає повідомлень про помилки в консолі під час налагодження програми Safari на Desktop, підключеної до iphone.

https://codepen.io/gchad/pen/WNNvzzd

<!DOCTYPE html>
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<body>

<div>
  <h1>Play Audio Tag connected to audio context</h1>
  <div id="playbutton" style="width:100px; height:100px; background:blue; color:white; margin:auto; text-align: center; font-size: 30px; cursor: pointer;">
    Play
  </div>

  <audio  id="myPlayer" crossorigin="anonymous" >
    <source src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/858/outfoxing.mp3"/>
      <!--http://commondatastorage.googleapis.com/codeskulptor-assets/week7-brrring.m4a-->
  </audio> 
</div>

<script>

var player = document.getElementById('myPlayer'),
playbutton = document.getElementById('playbutton'),
playStatus = 'paused';

var audioContext = new(window.AudioContext || window.webkitAudioContext)();
var audioSource = audioContext.createMediaElementSource(player); 
audioSource.connect(audioContext.destination); 

playbutton.addEventListener('click',function(ev){

  if( playStatus == 'paused'){

    audioContext.resume();
    player.play();
    playbutton.innerHTML = "Pause";
    playStatus = 'isPlaying';

  } else {

      player.pause();
      playbutton.innerHTML = "Play";
      playStatus = 'paused';
  }
});
</script>

</body>


1
Зломана програма також. Але я бачу, що ви створюєте звуковий контекст перед клацанням, його також не було дозволено в ios 12.
shukshin.ivan

У цьому audioContext.resume();рядку слід потурбуватися про це, але я думаю, що наступне має бути у вирішенні обіцянки, як це: audioContext.resume (). Тоді (функція () {player.play () playbutton.innerHTML = "Пауза"; playStatus = 'isPlaying';}
Полі

Я вже додав обіцянку в кодек. Але з обіцянками чи без них це нічого не змінює.
ДжонЛойд

У мене така ж проблема. Різниця полягає лише в тому, що звуковий тег динамічно відображається в додатку на одній сторінці. Я частково працював, зробивши srcстатику з повною URL-адресою. Однак він працює лише в тому випадку, якщо ви залишите Safari і знову відкриєте його. Дуже дивна поведінка.
Штани

Відповіді:


2

На жаль, AudioContext.createMediaElementSourceз часу випуску iOS 13. помилка була виправлена ​​у програмі Safari Technology Preview 99 : https://bugs.webkit.org/show_bug.cgi?id=203435 , але вона все ще зламана в останній час випуск iOS, тому був поданий новий звіт про помилку, який можна знайти тут: https://bugs.webkit.org/show_bug.cgi?id=211394


Схоже, розроблені веб-камери виправили це кілька днів тому, проте я все ще відчуваю проблему в останній версії iOS. Чи буде це виправлено наступним випуском ios або випуском webkit? Я збентежений.
Парасолька

@Umbrella Я відредагував свою відповідь останніми оновленнями.
Джорді ван Дормонт

0

Про це питання було помилково повідомлено, як виправлено у iOS 13.3.1 (28 січня 2020 року). Тим не менше, як з цього може прочитати кожен звіту про помилку WebKit 203435 , проблема все ще існує станом на 7 квітня 2020 року, датою випуску iOS 13.4.1.

Звіт про помилку не надає додаткової інформації щодо прогнозованої дати виправлення цієї помилки. На жаль, 80% користувачів iOS (близько 14% всього ринку мобільних телефонів, за даними Statcounter) вже кілька місяців помилково не мають можливості використовувати WebAudio на своїх пристроях.

Що гірше для нас, розробників, це те, що Safari не повідомляє про помилки. Таким чином, навіть намагатися уявити собі запас не можна чи дуже важко, все одно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.