|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="UTF-8">
|
|
|
|
<title>Opus to PCM</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="container" style="width: 400px; margin: 0 auto; font-size: 30px;">
|
|
|
|
It should play audio if everying went well!
|
|
|
|
</div>
|
|
|
|
<script>
|
|
|
|
window.onload = function() {
|
|
|
|
var orgSampleRate = 8000,
|
|
|
|
channels = 1,
|
|
|
|
configFlag = false,
|
|
|
|
socketURL = 'ws://localhost:8080';
|
|
|
|
|
|
|
|
var decoder = new Decoder.OpusToPCM({
|
|
|
|
channels: channels
|
|
|
|
});
|
|
|
|
|
|
|
|
var player = new PCMPlayer();
|
|
|
|
|
|
|
|
var ws = new WebSocket(socketURL);
|
|
|
|
ws.binaryType = 'arraybuffer';
|
|
|
|
ws.addEventListener('message',function(event) {
|
|
|
|
var data = new Uint8Array(event.data);
|
|
|
|
decoder.decode(data).then(function(pcmData) {
|
|
|
|
|
|
|
|
/*
|
|
|
|
Sample rate in opus is not fixed.
|
|
|
|
It can vary depending on hardware rate. But
|
|
|
|
we need sample rate for playing PCM data using audio context,
|
|
|
|
so lets set sampelRate here returned by decoder.
|
|
|
|
*/
|
|
|
|
if (!configFlag) {
|
|
|
|
var samppleRate = decoder.getSampleRate();
|
|
|
|
player.setConfig(samppleRate, channels);
|
|
|
|
configFlag = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
player.feed(pcmData);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
<script type="text/javascript" src="../dist/opus_to_pcm.js"></script>
|
|
|
|
<script type="text/javascript" src="player/pcm_player.js"></script>
|
|
|
|
</body>
|
|
|
|
</html>
|