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


9

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

これは、すべてのデスクトップ、Android、およびIOS13までのIOSで動作します。

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

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>


1
鉱山アプリも壊れています。しかし、クリックする前にオーディオコンテキストを作成するようです。iOS12でも許可されていません。
shukshin.ivan '10 / 10/19

audioContext.resume();ラインは、そのの世話をする必要がありますが、私はこのように、約束の解決である必要があり、以下のものを考える:。audioContext.resume()、その後(機能(){player.play()playbutton.innerHTML =「一時停止」; playStatus = 'isPlaying';}
Paulie

私はすでに約束をコードペンに追加しました。しかし、約束の有無にかかわらず、それは何かを変えます。
JohnLoyd

私は同じ問題を抱えています。唯一の違いは、オーディオタグが単一ページアプリで動的にレンダリングされることです。src完全なURLで静的にすることで、部分的に機能しました。ただし、Safariを終了してから再度開く場合にのみ機能します。非常に奇妙な行動。
パンツ

回答:


2

残念ながら、AudioContext.createMediaElementSourceiOS 13のリリース以降は壊れています。バグは修正されていますhttps : //bugs.webkit.org/show_bug.cgi?id=203435。それは中だサファリテクノロジープレビュー99


数日前にwebkitの開発者が修正したようですが、iOSの最新バージョンではまだ問題が発生しています。次のiOSリリースまたはWebkitリリースで修正される予定ですか?よくわかりません。

0

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.