avguesser
Version:
Guess the type of an AV file based on its header
2 lines (1 loc) • 1.42 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).AVGuesser={})}(this,(function(e){"use strict";e.guess=function(e){var r;if(e.buffer){var t=e;r=new Uint32Array(t.buffer,t.byteOffset,~~(t.byteLength/4))}else{r=new Uint32Array(e,0,~~(e.byteLength/4))}function s(e,r,t,s){return{success:!0,format:e,audio:!!r,video:!!t,image:!!s}}switch(r[0]){case 1297239878:return s("aiff",1,0,0);case 1974609456:return s("asf",1,1,0);case 1684960046:return s("au",1,0,0);case 1179011410:switch(r[2]){case 541677121:return s("avi",1,1,0);case 1163280727:return s("wav",1,0,0);case 1346520407:return s("webp",0,1,1)}break;case 1717985635:return s("caf",1,0,0);case 1130450022:return s("flac",1,0,0);case 22432838:return s("flv",1,1,0);case 944130375:return s("gif",0,1,1);case 2749318426:return s("matroska",1,1,0);case 1399285583:return s("ogg",1,1,0);case 1196314761:return s("png",0,0,1);case 1179472430:return s("rm",1,1,0);case 2771273:case 2836809:case 704662861:case 721440077:return s("tiff",0,0,1);case 1802532471:return s("wv",1,0,0)}switch(16777215&r[0]){case 1823:return s("dv",1,1,0);case 16767231:return s("jpeg",0,0,1);case 3359817:return s("mp3",1,0,0);case 65536:return s("mpeg",1,1,0)}return 1887007846===r[1]?s("mp4",1,1,0):71==(255&r[0])?s("mpegts",1,1,0):{success:!1}}}));