web-dev-qa-db-ja.com

iOS> = 4.2.1 Mobile Safariでメディアを自動再生するにはどうすればよいですか?

ユーザーが実行したクリックイベントのハンドラー以外の状況では、iOS 4.2.1のMobile Safariでオーディオメディアを再生できないようです。それでも、player.play()が非同期で呼び出された場合(_ajax, setTimeout_など)は機能しません。

player.load()の前にplayer.play()を呼び出してみました。ハンドラーがplayer.play()を呼び出すdom要素でクリックイベントをトリガーしようとしました。オーディオとビデオの両方のタグを使用してみました。

IOS 4.2.1より前に機能していた抜け穴はすべて閉じられているようです。何か案は?

23
David Gouldin

IOS 4.2.x以降、タッチスタートなどのユーザー入力イベントがない場合、メディアのダウンロードは開始されません。

したがって、答えはnoです。JavaScriptなどでメディアを自動再生する方法はありません。

16
Yu Jianrong

4.2.1でビデオ/オーディオファイルを自動的に再生する方法が1つあります。 iframeを作成し、そのソースをメディアファイルのURLに設定して、iframeを本文に追加します。自動再生されます。

var ifr=document.createElement("iframe");
ifr.setAttribute('src', "http://mysite.com/myvideo.mp4");
ifr.setAttribute('width', '1px');
ifr.setAttribute('height', '1px');
ifr.setAttribute('scrolling', 'no');
ifr.style.border="0px";
document.body.appendChild(ifr);
14
bhups

他の人がここで述べたように、Appleのドキュメントによると、MobileSafariはビデオタグのautoplay属性をサポートしていません。ただし、iOS 6では機能します。これは、iOS 6.0.1(およびおそらくiOS 6.1)でAppleが修正したバグのようです。

IOS 6.0で動作している偶然に遭遇した場合でも、iOS 6で動作している自動再生に依存しないでください。

-マイケル

6

回避策として、load()/ play()コードをクリックイベントに関連付け、プログラムでクリックイベントをトリガーしてみました。このアプローチはデスクトップサファリでは機能しましたが、モバイルサファリでは機能しませんでした。

4
mshafrir

これはどう?

サウンドマネージャー2でオーディオスプライトを作成し、最初のユーザー操作からプリロードしてキャッシュし、必要に応じて再生します。

それはうまくいくでしょうか?

1
mousedown

これは、昨夜の4.2アップグレードまでiPadで機能していました。

_$(function() {
    var Beep = document.createElement('audio');
    Beep.setAttribute('src', 'beep-23.mp3');
    Beep.load();
    Beep.play();
}
_

私のBeep.play();は引き続きクリックイベントで機能しますが、最初のBeep.play()は機能しなくなりました...

1
steve

自動再生は、ヘッドフォンジャックを使用したiPhone 5(iOS 6)で(私のテストでは)サポートされています。

0

実行中の第3世代iPadでIOS 6、HTML5タグの自動再生が突然機能し始めました!(IOS 6を数週間インストールしました、そして私がこの機能をすぐにテストしたと確信していますが、今夜は機能していることに気づきました。)モバイルSafariがファイルのアップロードをサポートする機能を許可されていたことがわかりましたが、Appleからこの通知があったことは覚えていません

<form><input type="file" .../></form>

-私が必要としたもう1つの機能ですがApple=は保留されていました。

0
dkurland