| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 
 | <!DOCTYPE html><html lang="en">
 <head>
 <meta charset="UTF-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <script type="text/javascript" src="https://unpkg.com/mediainfo.js/dist/mediainfo.min.js"></script>
 
 <style>
 html, body{
 margin:0;
 padding:0;
 }
 body * {
 box-sizing: border-box;
 }
 #wrapper {
 display: flex;
 flex-direction: column;
 height: 100%;
 padding: 8px;
 position: absolute;
 width: 100%;
 }
 #fileinput {
 padding-bottom: 8px;
 }
 #output {
 height: 100%;
 }
 
 </style>
 </head>
 <body>
 <div id="wrapper">
 <input type="file" id="fileinput" name="fileinput" />
 <textarea id="output"></textarea>
 </div>
 
 <script>
 const fileinput = document.getElementById('fileinput')
 const output = document.getElementById('output')
 const onChangeFile = (e, mediainfo) => {
 const file = fileinput.files[0]
 if (file) {
 output.value = 'Working…'
 const getSize = () => file.size
 const readChunk = (chunkSize, offset) =>{
 return new Promise((resolve, reject) => {
 const reader = new FileReader()
 reader.onload = (event) => {
 if (event.target.error) {
 reject(event.target.error)
 }
 resolve(new Uint8Array(event.target.result))
 }
 reader.readAsArrayBuffer(file.slice(offset, offset + chunkSize))
 })
 }
 
 mediainfo
 .analyzeData(getSize, readChunk)
 .then((result) => {
 output.value = result
 })
 .catch((error) => {
 output.value = `An error occured:\n${error.stack}`
 })
 }
 }
 
 MediaInfo({
 format: 'object',
 locateFile: (path, prefix) => prefix + path,
 }, (mediainfo) => {
 fileinput.addEventListener('change', (e) => onChangeFile(e, mediainfo))
 })
 
 </script>
 
 </body>
 </html>
 
 |