Web Audio APIを利用していて、再生できないm4a音源がある
Google Chrome上で動く(Firefoxでは動かない)簡単なWebアプリを作ってます。
FileAPIで取得したオーディオファイル(wav, m4aなど)の中身を渡して、再生するplaySound
という関数があるのですが、たまに再生できないm4a
音源があります。
コードは以下のような感じです。(余計な処理をのぞいたもの)
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new window.AudioContext();
var source;
function playSound(arraybuffer) {
context.decodeAudioData(arraybuffer, function (buf) {
this.source = context.createBufferSource();
this.source.connect(context.destination);
this.source.buffer = buf;
this.source.start(0);
});
}
// 関数の呼び出し部
function playFile(file) {
var freader = new FileReader();
freader.onload = function (e) {
playSound(e.target.result);
};
freader.readAsArrayBuffer(file);
}
m4p
が再生できないのであればDRM
のせいだろうと思うのですが、m4a
で再生できない音源があるのはなぜでしょうか。
コードの問題なのか、音源の問題なのか(iTunes
上で再生できます。別のアカウントが管理するMac
上でも再生できます)、何か良い解決案があればお願いします。
尚、再生できない音源についてですが
- ファイル名は半角スペースあり英数字(半角スペースを消しても改善なし)
- サイズは約25MB
- 長さは約3分
- 925kbps(?!)
です。