2714


Google Chrome上で動く(Firefoxでは動かない)簡単なWebアプリを作ってます。

FileAPIで取得したオーディオファイル(wav,
m4aなど)の中身を渡して、再生する`playSound`という関数があるのですが、たまに再生できない`m4a`音源があります。

コードは以下のような感じです。(余計な処理をのぞいたもの)

[code]

    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);
    }
    
[/code]

`m4p`が再生できないのであれば`DRM`のせいだろうと思うのですが、`m4a`で再生できない音源があるのはなぜでしょうか。

コードの問題なのか、音源の問題なのか(`iTunes`上で再生できます。別のアカウントが管理する`Mac`上でも再生できます)、何か良い解決案があればお願いします。

尚、再生できない音源についてですが

  * ファイル名は半角スペースあり英数字(半角スペースを消しても改善なし)
  * サイズは約25MB
  * 長さは約3分
  * 925kbps(?!)

です。


CC BY-SA 3.0
2014-12-22T03:15:28.897
2351
2014-12-27T18:25:52.410
2014-12-22T04:44:03.270
3313
3313
question
javascript web-audio
Web Audio APIを利用していて、再生できないm4a音源がある


どのタイミングでエラーがでているのか分かっていますか？
onLoadの際に、エラーが取得できるので、ファイルフォーマットの問題であれば、それをチェックすると分かるのではないでしょうか。


CC BY-SA 3.0
2014-12-22T05:06:27.657
2366
2014-12-22T05:06:27.657
4956
2351
answer


AACのプロファイルではないですか？

<http://www.chromium.org/audio-video>

AAC audio codec (Main only, not AAC-LC, AAC-SSR, HE-AAC)


CC BY-SA 3.0
2014-12-25T10:12:22.840
2567
2014-12-25T10:12:22.840
505
2351
answer


信頼度が足りずコメントを書けないのでこちらに書かせて頂きます。

ビットレートから察するに、もしかしてAACではなく可逆圧縮のApple Losslessのファイルではないでしょうか？ Apple
Losslessも拡張子`m4a`で保存されます。

iTunesで再生できるのであれば、iTunes上でファイルのプロパティを開けば「ファイル」タブでコーデックを確認することができます。

もしAACでないのであれば、そもそもChromeでは再生できないのではないでしょうか。


CC BY-SA 3.0
2014-12-27T18:25:52.410
2714
2014-12-27T18:25:52.410
2988
2351
answer