開発環境 |
メモ帳 |
実行環境 |
Internet Explorer 11 |
WavePlayer1.html
<!doctype html>
<head>
<title>WavePlayer1</title>
<script>
var wavfile;
function onDragOver(event)
{
event.preventDefault();
}
function onDrop(event)
{
event.preventDefault();
var files = event.dataTransfer.files;
var file = files[0];
var drop = document.getElementById("drop");
var str = "";
str += "name=[" + file.name + "]<br>";
str += "type=[" + file.type + "]<br>";
str += "size=[" + file.size + "]<br>";
drop.innerHTML = str;
if (file.type != "audio/wav") {
drop.innerHTML += "wavファイルではありません。";
return;
}
var reader = new FileReader();
reader.onload = onLoad;
reader.readAsArrayBuffer(file);
}
function onLoad(event)
{
var buf = event.target.result;
var dv = new DataView(buf);
var pos = 0;
var drop = document.getElementById("drop");
wavfile = new Uint8Array(buf);
// RIFFチャンク
{
var ckid = fourcc(dv, 0); // RIFF
var cksize = dv.getUint32(4, true);
var fccType = fourcc(dv, 8); // WAVE
pos += 12;
var str = "";
str += "<br>";
str += "ckid=[" + ckid + "]<br>";
str += "cksize=[" + cksize + "]<br>";
str += "fccType=[" + fccType + "]<br>";
drop.innerHTML += str;
}
}
function fourcc(dv, pos)
{
var str = "";
for (var i = 0; i < 4; i++) {
str += String.fromCharCode(dv.getUint8(pos + i));
}
return str;
}
function download()
{
// var st = [0x30, 0x31, 0x0d, 0x0a];
// var ar = new Uint8Array(st);
var blob = new Blob([wavfile]);
navigator.msSaveOrOpenBlob(blob, "sample.wav");
}
</script>
</head>
<body>
<div id="drop" style="width:800px; height:480px; padding:10px; border:3px solid"
ondragover="onDragOver(event)" ondrop="onDrop(event)">
ここにwavファイルをドロップします。
</div>
<br>
<button onclick="download()">download</button>
</body>
最終更新:2015年02月06日 05:59