WMAudioUtil.js (getAutoPlayFunction) 作りました
従来から iOS にはブラウザ上でのサウンド再生に制限があり、
などをご覧いただけると分かるのですが、
(ε・◇・)з o O ( はっ!? なんだか毎回似たようなコード書いてるし!
と、やっと気づいたので、WebModule にしました。
タッチ(クリック)イベントハンドラの中で一回呼んでもらえれば、あとは楽ができます。
https://github.com/uupaa/WMAudioUtil.js/wiki/WMAudioUtil
// demo var ctx = window.AudioContext ? new window.AudioContext() : window.webkitAudioContext ? new window.webkitAudioContext() : null; var autoPlay = WMAudioUtil.getAutoPlayFunction(ctx); var buffer = {}; // decodedBuffer. { url: buffer, ... } var source = {}; // AudioBufferSourceNode. { url: node ... } function _loadAndAutoPlay(url, play) { var xhr = new XMLHttpRequest(); xhr.onload = function() { ctx.decodeAudioData(xhr.response, function(buffer) { buffer[url] = buffer; source[url] = ctx.createBufferSource(); source[url].buffer = buffer; source[url].connect(ctx.destination); if (play) { source[url].start(0); } }); }; xhr.responseType = "arraybuffer"; xhr.open("GET", url); xhr.send(); } _loadAndAutoPlay("demo.m4a", true); // Auto play, supports iOS Devices. <input type="button" value="enable auto play" onclick="autoPlay()"></input>
あ、そうそう iOS 8 は <audio>
の実装が iOS 7 と違ってる気配があるAudio と WebAudio と、残された寿命について考えてみる ので、色々と調べてる最中です。