玩AAC Chunks时保持沉默

时间:2014-07-02 18:34:17

标签: javascript streaming audio-streaming aac aurora.js

我正在尝试使用Aurora.JS播放从流式AAC编码的来源收到的音频。我成功地提取了分块数据,并尝试将其提供给自定义发射器,但实际上没有播放音频。

也许我错过了很简单的事情。以下是我正在尝试做的一个示例:

http://jsfiddle.net/Rc6Su/4/

(当你点击“播放”时,你几乎肯定会收到一个CORS错误,因为源是跨域的。我可以轻松解决的唯一方法就是使用这个插件:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi/related?hl=en

在您提及它之前,这将进入PhoneGap应用程序,因此跨域问题不会成为问题。

问题代码就在这里:

var aurora_source = null;
var player = null;
function make_noise(chunk) {
    var uarr = (function (chunk) {
        var buf = new ArrayBuffer(chunk.length * 2); // 2 bytes for each character
        var bufView = new Uint8Array(buf);
        for (var i=0, strLen=chunk.length; i<strLen; i++) {
            bufView[i] = chunk.charCodeAt(i);
        }
        return buf;
    })(chunk);
    var abData = new AV.Buffer(uarr);

    if (!aurora_source) {
        var MySource = AV.EventEmitter.extend ({
            start   : function () {
                this.emit('data', abData);
            },
            pause   : function () {
            },
            reset   : function () {
            }
        });
        aurora_source = new MySource();
        asset = new AV.Asset(aurora_source);
        player = new AV.Player(asset);
        player.play();
    } else {
        $("#debug").append("emit data");
        $("#debug").append("\n");
        aurora_source.emit('data', abData);
    }
}

1 个答案:

答案 0 :(得分:0)

无法播放音频,但至少找到了

bufView[i] = chunk.charCodeAt(i);

可能必须由

取代
bufView[i] = chunk.charCodeAt(i) & 0xff;

请参阅What does charCodeAt(...) & 0xff accomplish?

希望它有所帮助。