mediainfo.js 670 B

1234567891011121314151617181920212223242526
  1. // web-worker
  2. self.importScripts('mediainfo.min.js')
  3. self.onmessage = async e => {
  4. calculate(e.data)
  5. }
  6. function readChunk (file, chunkSize, offset) {
  7. return file.slice(offset, offset + chunkSize).arrayBuffer().then(arrayBuffer => new Uint8Array(arrayBuffer))
  8. }
  9. async function calculate (obj) {
  10. self.MediaInfo().then(mediaInfo => {
  11. const { totalSize, file } = obj
  12. mediaInfo
  13. .analyzeData(() => totalSize, (...args) => readChunk(file, ...args))
  14. .then(result => {
  15. self.postMessage({ media: result.media })
  16. })
  17. .catch(e => {
  18. self.postMessage({ error: e })
  19. })
  20. }, e => {
  21. self.postMessage({ error: e })
  22. })
  23. }