超自己満足プログラミング このページをアンテナに追加 RSSフィード

2010-08-06

[][] iPhone Safariだとaudio/videoタグのautoplay, autobuffer属性が効かない

Resources - Safari - Apple Developer

User Control of Downloads Over Cellular Networks」の部分

In Safari on iPhone OS (for all devices, including iPad), where the user may be on a cellular network and be charged per data unit, autobuffering and autoplay are disabled. No data is loaded until the user initiates it. This means the JavaScript play() and load() methods are also inactive until the user initiates playback, unless the play() method is triggered by user action. In other words, a user-initiated Play button works, but an onLoad play event does not.

携帯が従量課金とかの可能性があるから、autoplayとautobufferは無効にしてるよ。

ユーザ意図して再生を開始するまで、データはロードされないよ。

それは、ユーザアクションをトリガーにして再生を開始するまでは、JSのplay()とかload()も機能しないってことを意味するよ。

つまり、ユーザによって開始されたplay()は動作するけど、onloadとかのイベントだと動作しないよ。」

って感じでしょうか。


たしかに、実際以下のようなhtmlを書いても、再生されなかった。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>html5 audio test on iPhone</title>
</head>
<body>

<audio src="music.mp3" autoplay></audio>

</body>
</html>

でも、下のようなhtml再生されてはいけないはずなのだが再生された。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>html5</title>
<script type="text/javascript"><!--
function onload_play() {
    var aud = document.getElementById('aud');
    aud.load();
    aud.play();
}
//--></script>
</head>
<body onload="onload_play();">

<audio id="aud" src="music.mp3"></audio>

</body>
</html>

これがバグなのかどうかはわからない。


が、いずれにせよ、サイレントモードを無視して再生されるので、

音を鳴らすのは微妙

なんかいい方法はないのか。。。

トラックバック - http://d.hatena.ne.jp/favril/20100806/1281093059