web-dev-qa-db-ja.com

IOS13の壊れた<audio>タグは、オーディオコンテキストに接続されたオーディオバッファーとして使用されていますか?

現在、オーディオコンテキストに接続されたシンプルなオーディオタグを再生できるWebサイトを開発しています。 IOSなど、ユーザーのジェスチャーによって開始される再生など)に関する技術的な問題を認識しています。IOS12まではすべて正常に機能しています。IOS13がリリースされたため、何も動作しなくなりました。

AndroidおよびIOS IOS13まで。

何が起こっているかについての考えはありますか?

IPhoneに接続されたデスクトップ上のSafariでデバッグするときに、コンソールにエラーメッセージはありません。

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>

8
JohnLoyd

残念ながら、AudioContext.createMediaElementSourceはiOS 13のリリース以降壊れていました。バグは修正されました https://bugs.webkit.org/show_bug.cgi?id=203435Safari Technology Preview 99 にあります。

2

この問題は、iOS 13.3.1(2020年1月28日)で修正済みと誤って報告されました。それにもかかわらず、誰でもこれを読むことができる WebKitバグレポート203435 、問題はiOS 13.4.1のリリース日である2020年4月7日の時点でもまだ存在しています。

バグレポートには、このバグが修正される予定の日付に関する詳細情報は含まれていません。悲しいことに、iOSユーザーの80%(Statcounterによると、モバイル市場全体の約14%)は、数か月間、デバイスでWebAudioを誤って使用できなくなっています。

開発者にとって事態を悪化させるのは、Safariがエラーを報告しないことです。したがって、とにかく、フォールバックを想像することは不可能であるか、非常に困難です。

0
Luigi Pulcini