uupaa.aac.js
Version:
AAC-LC/HE-AAC parser.
159 lines (129 loc) • 6.75 kB
HTML
<html><head><title>AAC test</title>
<meta name="viewport" content="width=device-width, user-scalable=no">
<meta charset="utf-8"></head><body>
<script src="../../lib/WebModule.js"></script>
<script>
WebModule.VERIFY = true;
WebModule.VERBOSE = true;
WebModule.PUBLISH = true;
</script>
<script src="../../node_modules/uupaa.task.js/lib/Task.js"></script>
<script src="../../node_modules/uupaa.task.js/lib/TaskMap.js"></script>
<script src="../../node_modules/uupaa.webaudio.js/lib/WebAudio.js"></script>
<script src="../../node_modules/uupaa.fileloader.js/node_modules/uupaa.uri.js/lib/URISearchParams.js"></script>
<script src="../../node_modules/uupaa.fileloader.js/node_modules/uupaa.uri.js/lib/URI.js"></script>
<script src="../../node_modules/uupaa.fileloader.js/lib/FileLoader.js"></script>
<script src="../../node_modules/uupaa.fileloader.js/lib/FileLoaderQueue.js"></script>
<script src="../../node_modules/uupaa.hash.js/node_modules/uupaa.bit.js/lib/Bit.js"></script>
<script src="../../node_modules/uupaa.hash.js/node_modules/uupaa.bit.js/lib/BitView.js"></script>
<script src="../../node_modules/uupaa.hash.js/lib/Hash.js"></script>
<script src="../wmtools.js"></script>
<script src="../../lib/AAC.js"></script>
<script src="../../lib/ADTS.js"></script>
<script src="../../lib/ADTSRawData.js"></script>
<script src="../../release/AAC.b.min.js"></script>
<script src="../testcase.js"></script>
<input type="button" value="AAC-LC" onclick="playAAC()" disabled></input>
<input type="button" value="HE-AAC" onclick="playV2()" disabled></input>
<input type="button" value="Packing" onclick="playPakings()" disabled></input>
<p>Touch the below text.</p>
<br>
Lorem ipsum dolor sit amet, illum dictas interpretaris an per. His labore deserunt eleifend ex. Pro ut ignota democritum, eos bonorum moderatius interpretaris no. An offendit salutatus vulputate quo, omnis reque definitionem ex usu, ad sed velit ridens fabellas.
Imperdiet persecuti duo te, his ei iriure appetere. Mea eu lorem admodum invenire. Ne sea audire dolorum fierent, quot paulo sit at, eos enim latine convenire an. Omnis congue est ad, ei qui numquam molestie, vis vitae deterruisset et. An adhuc scriptorem pri, unum indoctum sapientem nec ex, ei duo clita diceret rationibus.
Congue tation mediocrem no his. Per fugit propriae officiis an, postulant elaboraret scribentur nam ut. Duis laboramus gloriatur an has, eos corpora accusamus cotidieque in, ex omnes erroribus usu. Ei dicunt consequuntur mel, sed ea numquam nonumes senserit. Ad probo prima intellegebat quo, duo cu invenire hendrerit torquatos. Munere postulant ea usu, ei timeam pertinax argumentum vel.
Vix te erant tacimates scripserit, cu congue intellegat usu, ius esse tamquam necessitatibus ei. Vel ut inani suscipit. Ad aeque maluisset eum, ne his mutat postea invenire. Ea sed qualisque democritum. Nec tibique quaestio consequat in, possit salutatus dissentiunt ei per.
Mei scaevola conclusionemque id, iudico aperiri placerat qui te, nec omnium vituperata ea. Probo justo omittantur vim id, luptatum apeirian incorrupte et eos, dicat pertinax an qui. Ignota utamur definitionem quo ad, et error graece civibus mel, meis dolorum id mel. Pro alia oblique expetendis eu.
</p>
<script>
/*
var AudioContext = window["AudioContext"] || // [Chrome][Firefox][Edge]
window["webkitAudioContext"] || null; // [iOS Safari 6+]
var audioContext = new AudioContext();
*/
var audioContext = null;
window.onload = function() {
WebAudio.init(function() {
if (WebAudio.ready) {
audioContext = WebAudio.getContext();
document.body.style.backgroundColor = "lime"; // playable
[].slice.call(document.querySelectorAll("input[type=button]")).forEach(function(node) {
node.disabled = false;
});
} else {
alert("WebAudio not function");
}
}, document.body);
};
function playAAC() {
var files = [
"../assets/sin0.aac",
];
_play(files);
}
function playV2() {
var files = [
"../assets/sin2.aac",
];
_play(files);
}
function playPakings() {
audioContext.decodeAudioData(AAC.AAC_44100_LR_2.buffer, function(audioBuffer) { // @arg AudioBuffer - PCM data
var source = audioContext.createBufferSource();
var pcm = audioBuffer.getChannelData(0);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.loop = true;
source.start(0);
audioContext.decodeAudioData(AAC.AAC_44100_LR_5.buffer, function(audioBuffer) { // @arg AudioBuffer - PCM data
var source = audioContext.createBufferSource();
var pcm = audioBuffer.getChannelData(0);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.loop = true;
source.start(0);
audioContext.decodeAudioData(AAC.AAC_44100_LR_29.buffer, function(audioBuffer) { // @arg AudioBuffer - PCM data
var source = audioContext.createBufferSource();
var pcm = audioBuffer.getChannelData(0);
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.loop = true;
source.start(0);
});
});
});
}
function _play(files) {
_toAudioBuffer(files, function(buffer) { // [ArrayBuffer, ...]
buffer.forEach(function(audioBuffer, index, array) {
var source = audioContext.createBufferSource();
source.buffer = audioBuffer;
source.connect(audioContext.destination);
source.start(0);
//when += audioBuffer.duration;
});
});
}
function _toAudioBuffer(files, callback) {
var task = new Task("AAC loader", files.length, function(error, buffer) {
callback(buffer);
});
files.forEach(function(file, index) {
console.log(file);
FileLoader.toArrayBuffer(file, function(arrayBuffer, file) {
audioContext.decodeAudioData(arrayBuffer, function(audioBuffer) { // @arg AudioBuffer - PCM data
console.dir({
duration: audioBuffer.duration,
length: audioBuffer.length,
sampleRate: audioBuffer.sampleRate,
numberOfChannels: audioBuffer.numberOfChannels
});
task.buffer[index] = audioBuffer;
task.pass();
}, function(error) {
console.error("decodeAudioData error", error);
});
});
});
}
</script>
</body></html>