6

「終了」イベントを使用して最初のサウンドが終了すると、各サウンドを再生するように設計されたアプリを作成しました。

私の最初のバージョンでは、各サウンドに独自のオーディオ要素があり、次のようになります。

   function play_next_audio(){
        speaker = $('audio#' + sounds[i++]).get(0);
        speaker.addEventListener('ended',play_next_audio);
        speaker.play();
   }

これは、Safari を含むすべてのデスクトップ ブラウザーでうまく機能しますが、iOS では最初の文字を超えることはありません。

また、別のアプローチも試しました。つまり、各サウンドを順番にロードする単一のオーディオ要素です。そこで、「終了」イベントをバインドし、最初にロードして代わりに「canplaythrough」イベントをバインドして実験しました。どちらの場合も、デスクトップの Safari でも動作しません。今回は、最初の2文字の再生に成功しています。

分離されたテストは次のとおりです。

http://dev.connectfu.com:42001/app/test-sounds.html

audio.load() はいくつかの場所でコメントアウトされていることに注意してください - それを入れても入れなくても違いはないようです。

私は何を間違っていますか?iOS で一連のサウンドを再生するにはどうすればよいですか? 助けてくれてありがとう!

4

2 に答える 2

15

更新2017 年現在、iOS の Safari (または Chrome) でいくつかの条件下で、終了イベントが発生しません。詳細については、こちらを参照してください:ほぼ 2017 年ですが、HTML5 オーディオは iOS ではまだ壊れています。


iOS の Safari で「動作する」HTML5 オーディオ プレーヤー ( Chavah Messianic Radio ) を作成しました。

「動作する」とは、つまり、Apple の不自由な iOS の <audio> 実装で最高のパフォーマンスを発揮するということです。この記事の執筆時点では、これには iOS 5 が含まれます。私はこれを iPhone 3 以降、iPad オリジナル、iPad 2、および iPad 3 でテストしました。

ここに私の発見があります:

  • Apple では、ユーザーが操作するまで、音声で .play を呼び出すことを許可していません。私にとって、これは iOS を検出し、ユーザーが再生をクリックするまで音楽を一時停止として表示することを意味します。彼らの理由は、これがデータとバッテリーを消費するということです。ただし、実際には、それは Web アプリを無力化し、Web の進化を阻害するだけです。
  • 連続して (1 つずつ) サウンドを再生する場合は、1 つの要素を使用します。次のサウンドを再生するときは、existingAudio.src を設定し、次に existingAudio.load() を呼び出し、次に existingAudio.play() を呼び出します。これにより、連続したサウンドを再生できます。
  • Safari がバックグラウンドにある場合、オーディオ イベントは発生しません。. ユーザーが別のアプリに切り替えた場合、オーディオは引き続き再生されますが、.ended イベントは発生しません。つまり、音楽プレーヤー アプリを作成することは事実上不可能です。

お役に立てれば。

暴言

それまでの間: Apple さん、お願いします。iOS Safari での HTML5 のサポートを改善してください。これがあなたの行動項目です、Apple:

  1. HTML5 オーディオをバックグラウンドで動作させます。
  2. OGG をサポートします。
  3. オーディオのプリロードをサポートします。
  4. 同時オーディオをサポートします。
  5. ユーザーの操作なしでオーディオを再生しましょう。

そうすれば、Apple、あなたはモバイル HTML5 オーディオの業界リーダーになり、誰もがあなたをエミュレートし、あなたは再び業界をリードし、Web アプリはあなたのプラットフォームで完璧に動作しますが、他のモバイル プラットフォームでは機能しません。 . はい、これらの機能はデータとバッテリーを使用しますが、ネイティブ アプリは既にこれを行っています。Web アプリの機能を損なうのをやめて、リーダーになりましょう。HTML5 <audio> を iOS の第一級市民にします。

</rant>

于 2012-06-12T14:47:57.167 に答える
0

.play()メソッドがiOSのオーディオまたはビデオでサポートされているとは思いません。Appleは、ページにアクセスしたときにビデオやオーディオが自動的に再生されるという考えを好みません。

プラットフォーム間でのHTML5オーディオサポートの状態に関する参考資料は次のとおりです。http ://www.phoboslab.org/log/2011/03/the-state-of-html5-audio

于 2012-06-12T03:45:12.373 に答える