From 42eb35571d156a2fc63c53629bfd243bf15b42cc Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Thu, 20 Dec 2018 19:58:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0metadata=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/uncompiled/artplayer-plugin-flv.js | 290 +++++++++++++++++- docs/uncompiled/artplayer-plugin-flv.js.map | 2 +- .../src/flvParse/getMetaData.js | 200 ++++++++++++ .../src/flvParse/index.js | 8 + .../src/flvParse/readFile.js | 1 + .../artplayer-plugin-flv/src/utils/index.js | 37 +++ 6 files changed, 536 insertions(+), 2 deletions(-) create mode 100644 packages/artplayer-plugin-flv/src/flvParse/getMetaData.js diff --git a/docs/uncompiled/artplayer-plugin-flv.js b/docs/uncompiled/artplayer-plugin-flv.js index 5cf265e24..98e7741cf 100644 --- a/docs/uncompiled/artplayer-plugin-flv.js +++ b/docs/uncompiled/artplayer-plugin-flv.js @@ -170,6 +170,36 @@ }; var tinyEmitter = E; + function _arrayWithoutHoles(arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { + arr2[i] = arr[i]; + } + + return arr2; + } + } + + var arrayWithoutHoles = _arrayWithoutHoles; + + function _iterableToArray(iter) { + if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); + } + + var iterableToArray = _iterableToArray; + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance"); + } + + var nonIterableSpread = _nonIterableSpread; + + function _toConsumableArray(arr) { + return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); + } + + var toConsumableArray = _toConsumableArray; + function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } @@ -292,13 +322,56 @@ return totle + num * Math.pow(256, arr.length - index - 1); }, 0); } + function string2Bin(str) { + var result = []; + + for (var i = 0; i < str.length; i += 1) { + result.push(Number(str.charCodeAt(i).toString(10))); + } + + return result; + } + function bin2String(array) { + var _String$fromCharCode; + + return (_String$fromCharCode = String.fromCharCode).call.apply(_String$fromCharCode, [String].concat(toConsumableArray(array))); + } + function bin2Float(array) { + var view = new DataView(new ArrayBuffer(array.length)); + array.forEach(function (b, i) { + view.setUint8(i, b); + }); + return view.getFloat64(0); + } + function bin2Boolean(bin) { + return bin === 1; + } + function readUint8(uint8) { + var index = 0; + return function read(length) { + var result = []; + + for (var i = 0; i < length; i += 1) { + result.push(uint8[index]); + index += 1; + } + + read.index = index; + return result; + }; + } var utils = /*#__PURE__*/Object.freeze({ FlvError: FlvError, errorHandle: errorHandle, mergeTypedArrays: mergeTypedArrays, sleep: sleep, - getUint8Sum: getUint8Sum + getUint8Sum: getUint8Sum, + string2Bin: string2Bin, + bin2String: bin2String, + bin2Float: bin2Float, + bin2Boolean: bin2Boolean, + readUint8: readUint8 }); function checkSupport(options) { @@ -535,6 +608,7 @@ } function readFile(flv, file) { + console.log(file); flv.emit('flvFetchStart'); var proxy = flv.events.proxy; var reader = new FileReader(); @@ -546,6 +620,213 @@ reader.readAsArrayBuffer(file); } + function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; + } + + var arrayWithHoles = _arrayWithHoles; + + function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + var iterableToArrayLimit = _iterableToArrayLimit; + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + + var nonIterableRest = _nonIterableRest; + + function _slicedToArray(arr, i) { + return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); + } + + var slicedToArray = _slicedToArray; + + function getMetaData(scripTag) { + var readMetaData = readUint8(scripTag.body); + var metadata = Object.create(null); + var amf1 = Object.create(null); + var amf2 = Object.create(null); + + var _readMetaData = readMetaData(1); + + var _readMetaData2 = slicedToArray(_readMetaData, 1); + + amf1.type = _readMetaData2[0]; + amf1.size = getUint8Sum(readMetaData(2)); + amf1.string = bin2String(readMetaData(amf1.size)); + + var _readMetaData3 = readMetaData(1); + + var _readMetaData4 = slicedToArray(_readMetaData3, 1); + + amf2.type = _readMetaData4[0]; + amf2.size = getUint8Sum(readMetaData(4)); + amf2.metaData = Object.create(null); + console.log(scripTag.body.slice(13)); + var nameLength = getUint8Sum(readMetaData(2)); + var name = bin2String(readMetaData(nameLength)); + var type = readMetaData(1)[0]; + var valueLength = getUint8Sum(readMetaData(2)); + var value = bin2String(readMetaData(valueLength)); + console.log(type, name, value); + var nameLength2 = getUint8Sum(readMetaData(2)); + var name2 = bin2String(readMetaData(nameLength2)); + var type2 = readMetaData(1)[0]; + var valueLength2 = getUint8Sum(readMetaData(2)); + var value2 = bin2String(readMetaData(valueLength2)); + console.log(type2, name2, value2); + var nameLength3 = getUint8Sum(readMetaData(2)); + var name3 = bin2String(readMetaData(nameLength3)); + var type3 = readMetaData(1)[0]; + var value3 = bin2Boolean(readMetaData(1)[0]); + console.log(type3, name3, value3); + var nameLength4 = getUint8Sum(readMetaData(2)); + var name4 = bin2String(readMetaData(nameLength4)); + var type4 = readMetaData(1)[0]; + var value4 = bin2Boolean(readMetaData(1)[0]); + console.log(type4, name4, value4); + var nameLength5 = getUint8Sum(readMetaData(2)); + var name5 = bin2String(readMetaData(nameLength5)); + var type5 = readMetaData(1)[0]; + var value5 = bin2Boolean(readMetaData(1)[0]); + console.log(type5, name5, value5); + var nameLength6 = getUint8Sum(readMetaData(2)); + var name6 = bin2String(readMetaData(nameLength6)); + var type6 = readMetaData(1)[0]; + var value6 = bin2Boolean(readMetaData(1)[0]); + console.log(type6, name6, value6); + var nameLength7 = getUint8Sum(readMetaData(2)); + var name7 = bin2String(readMetaData(nameLength7)); + var type7 = readMetaData(1)[0]; + var value7 = bin2Boolean(readMetaData(1)[0]); + console.log(type7, name7, value7); + var nameLength8 = getUint8Sum(readMetaData(2)); + var name8 = bin2String(readMetaData(nameLength8)); + var type8 = readMetaData(1)[0]; + var value8 = bin2Float(readMetaData(8)); + console.log(type8, name8, value8); + var nameLength9 = getUint8Sum(readMetaData(2)); + var name9 = bin2String(readMetaData(nameLength9)); + var type9 = readMetaData(1)[0]; + var value9 = bin2Float(readMetaData(8)); + console.log(type9, name9, value9); + var nameLength10 = getUint8Sum(readMetaData(2)); + var name10 = bin2String(readMetaData(nameLength10)); + var type10 = readMetaData(1)[0]; + var value10 = bin2Float(readMetaData(8)); + console.log(type10, name10, value10); + var nameLength11 = getUint8Sum(readMetaData(2)); + var name11 = bin2String(readMetaData(nameLength11)); + var type11 = readMetaData(1)[0]; + var value11 = bin2Float(readMetaData(8)); + console.log(type11, name11, value11); + var nameLength12 = getUint8Sum(readMetaData(2)); + var name12 = bin2String(readMetaData(nameLength12)); + var type12 = readMetaData(1)[0]; + var value12 = bin2Float(readMetaData(8)); + console.log(type12, name12, value12); + var nameLength13 = getUint8Sum(readMetaData(2)); + var name13 = bin2String(readMetaData(nameLength13)); + var type13 = readMetaData(1)[0]; + var value13 = bin2Float(readMetaData(8)); + console.log(type13, name13, value13); + var nameLength14 = getUint8Sum(readMetaData(2)); + var name14 = bin2String(readMetaData(nameLength14)); + var type14 = readMetaData(1)[0]; + var value14 = bin2Float(readMetaData(8)); + console.log(type14, name14, value14); + var nameLength15 = getUint8Sum(readMetaData(2)); + var name15 = bin2String(readMetaData(nameLength15)); + var type15 = readMetaData(1)[0]; + var value15 = bin2Float(readMetaData(8)); + console.log(type15, name15, value15); + var nameLength16 = getUint8Sum(readMetaData(2)); + var name16 = bin2String(readMetaData(nameLength16)); + var type16 = readMetaData(1)[0]; + var value16 = bin2Float(readMetaData(8)); + console.log(type16, name16, value16); + var nameLength17 = getUint8Sum(readMetaData(2)); + var name17 = bin2String(readMetaData(nameLength17)); + var type17 = readMetaData(1)[0]; + var value17 = bin2Float(readMetaData(8)); + console.log(type17, name17, value17); + var nameLength18 = getUint8Sum(readMetaData(2)); + var name18 = bin2String(readMetaData(nameLength18)); + var type18 = readMetaData(1)[0]; + var value18 = bin2Float(readMetaData(8)); + console.log(type18, name18, value18); + var nameLength19 = getUint8Sum(readMetaData(2)); + var name19 = bin2String(readMetaData(nameLength19)); + var type19 = readMetaData(1)[0]; + var value19 = bin2Float(readMetaData(8)); + console.log(type19, name19, value19); + var nameLength20 = getUint8Sum(readMetaData(2)); + var name20 = bin2String(readMetaData(nameLength20)); + var type20 = readMetaData(1)[0]; + var value20 = bin2Float(readMetaData(8)); + console.log(type20, name20, value20); + var nameLength21 = getUint8Sum(readMetaData(2)); + var name21 = bin2String(readMetaData(nameLength21)); + var type21 = readMetaData(1)[0]; + var value21 = bin2Boolean(readMetaData(1)[0]); + console.log(type21, name21, value21); + var nameLength22 = getUint8Sum(readMetaData(2)); + var name22 = bin2String(readMetaData(nameLength22)); + var type22 = readMetaData(1)[0]; + var value22 = bin2Float(readMetaData(8)); + console.log(type22, name22, value22); + var nameLength23 = getUint8Sum(readMetaData(2)); + var name23 = bin2String(readMetaData(nameLength23)); + var type23 = readMetaData(1)[0]; + var value23 = bin2Float(readMetaData(8)); + console.log(type23, name23, value23); + var nameLength24 = getUint8Sum(readMetaData(2)); + var name24 = bin2String(readMetaData(nameLength24)); + var type24 = readMetaData(1)[0]; + var value24 = bin2Float(readMetaData(8)); + console.log(type24, name24, value24); + var nameLength25 = getUint8Sum(readMetaData(2)); + var name25 = bin2String(readMetaData(nameLength25)); + var type25 = readMetaData(1)[0]; + var value25 = bin2Float(readMetaData(8)); + console.log(type25, name25, value25); + var nameLength26 = getUint8Sum(readMetaData(2)); + var name26 = bin2String(readMetaData(nameLength26)); + var type26 = readMetaData(1)[0]; + console.log(scripTag.body.slice(readMetaData.index)); + console.log(type26, name26); // while (readMetaData.index < scripTag.body.length) { + // } + + metadata.amf1 = amf1; + metadata.amf2 = amf2; + return metadata; + } + var FlvParse = /*#__PURE__*/ function () { @@ -558,6 +839,7 @@ this.uint8 = new Uint8Array(0); this.index = 0; this.header = null; + this.metadata = null; this.tags = []; this.done = false; flv.on('flvFetchStart', function () { @@ -582,6 +864,7 @@ _this.uint8 = uint8; _this.index = 0; _this.header = null; + _this.metadata = null; _this.tags = []; _this.parse(); @@ -620,6 +903,10 @@ this.tags.push(tag); this.read(4); } + + if (this.tags.length > 1 && this.tags[0].tagType[0] === 18 && !this.metadata) { + this.metadata = getMetaData(this.tags[0]); + } } }, { key: "read", @@ -647,6 +934,7 @@ } }); console.log(this.header); + console.log(this.metadata); console.log(this.tags); console.log(types); } diff --git a/docs/uncompiled/artplayer-plugin-flv.js.map b/docs/uncompiled/artplayer-plugin-flv.js.map index cdfa61259..25d288451 100644 --- a/docs/uncompiled/artplayer-plugin-flv.js.map +++ b/docs/uncompiled/artplayer-plugin-flv.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer-plugin-flv.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../packages/artplayer-plugin-flv/node_modules/tiny-emitter/index.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../packages/artplayer-plugin-flv/src/utils/index.js","../../packages/artplayer-plugin-flv/src/utils/checkSupport.js","../../packages/artplayer-plugin-flv/src/eventProxy.js","../../packages/artplayer-plugin-flv/src/creatWorker.js","../../packages/artplayer-plugin-flv/src/config.js","../../packages/artplayer-plugin-flv/src/creatMediaSource.js","../../packages/artplayer-plugin-flv/src/flvParse/fetchStream.js","../../packages/artplayer-plugin-flv/src/flvParse/readFile.js","../../packages/artplayer-plugin-flv/src/flvParse/index.js","../../packages/artplayer-plugin-flv/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export class FlvError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'FlvError';\n }\n}\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new FlvError(msg);\n }\n}\n\nexport function mergeTypedArrays(a, b) {\n const c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n\nexport function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function getUint8Sum(arr) {\n return arr.reduce((totle, num, index) => totle + num * 256 ** (arr.length - index - 1), 0);\n}\n","import { errorHandle } from '.';\n\nexport default function checkSupport(options) {\n const { mediaElement, url } = options;\n errorHandle(mediaElement instanceof HTMLVideoElement, 'The first parameter is not a video tag element');\n errorHandle(\n typeof url === 'string' || (url instanceof File && url.type === 'video/x-flv'),\n 'The second parameter is not a string type or flv file',\n );\n\n const MP4H264MimeCodec = 'video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"';\n const canPlay = mediaElement.canPlayType(MP4H264MimeCodec);\n errorHandle(\n window.MediaSource &&\n window.MediaSource.isTypeSupported(MP4H264MimeCodec) &&\n (canPlay === 'probably' || canPlay === 'maybe'),\n `Unsupported MIME type or codec: ${MP4H264MimeCodec}`,\n );\n\n errorHandle(typeof window.Promise === 'function', \"Unsupported 'Promise' method\");\n errorHandle(typeof window.fetch === 'function', \"Unsupported 'fetch' method\");\n errorHandle(typeof window.Worker === 'function', \"Unsupported 'Worker' method\");\n errorHandle(typeof window.ReadableStream === 'function', \"Unsupported 'ReadableStream' method\");\n}\n","export default class EventProxy {\n constructor() {\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n target.addEventListener(name, callback, option);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback, option);\n });\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}","export default class CreatWorker {\n constructor() {\n this.workers = new Map();\n }\n\n static fnToStr(fn) {\n return `\n self.onmessage = event => {\n return self.postMessage((${fn}).apply(null, event.data));\n }\n `;\n }\n\n static create(fn) {\n const blob = new Blob([CreatWorker.fnToStr(fn)], {\n type: 'application/javascript',\n });\n const objectURL = window.URL.createObjectURL(blob);\n const worker = new Worker(objectURL);\n worker.kill = () => {\n URL.revokeObjectURL(objectURL);\n worker.terminate();\n };\n worker.post = args =>\n new Promise((resolve, reject) => {\n worker.onmessage = event => {\n resolve(event.data);\n };\n worker.onerror = error => {\n reject(error);\n };\n worker.postMessage(args);\n });\n return worker;\n }\n\n add(name, fn) {\n if (!this.workers.has(name)) {\n this.workers.set(name, CreatWorker.create(fn));\n }\n }\n\n run(name, ...args) {\n const worker = this.workers.get(name);\n return worker.post(args);\n }\n\n kill(name) {\n const worker = this.workers.get(name);\n worker.kill();\n }\n\n killAll() {\n this.workers.forEach(worker => {\n worker.kill();\n });\n }\n}\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers',\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange',\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen',\n ],\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults',\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove',\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart',\n ],\n },\n sourceBufferList: {\n propertys: [\n 'length',\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer',\n ],\n },\n};\n","import config from './config';\n\nexport default class CreatMediaSource {\n constructor(flv) {\n this.flv = flv;\n this.creatUrl();\n this.eventBind();\n }\n\n creatUrl() {\n const {\n options: { mediaElement },\n events: { destroyEvents },\n } = this.flv;\n this.mediaSource = new MediaSource();\n const url = URL.createObjectURL(this.mediaSource);\n destroyEvents.push(() => {\n URL.revokeObjectURL(url);\n });\n mediaElement.src = url;\n }\n\n eventBind() {\n const {\n events: { proxy },\n } = this.flv;\n\n config.mediaSource.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.flv.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n config.sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.flv.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.flv.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default function fetchStream(flv, url) {\n flv.emit('flvFetchStart');\n fetch(url).then(response => {\n errorHandle(\n response.ok && response.status >= 200 && response.status <= 299,\n `${response.status} ${response.statusText}`,\n );\n const contentType = response.headers.get('content-type');\n errorHandle(contentType.includes('x-flv'), 'The resource does not seem to be a flv file');\n return new Response(\n new ReadableStream({\n start(controller) {\n const reader = response.body.getReader();\n\n flv.on('destroy', () => {\n reader.cancel();\n });\n\n flv.on('readerCancel', () => {\n reader.cancel();\n });\n\n (function read() {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n flv.emit('flvFetchEnd');\n controller.close();\n return;\n }\n flv.emit('flvFetching', new Uint8Array(value));\n controller.enqueue(value);\n read();\n })\n .catch(error => {\n flv.emit('flvFetchError', error);\n });\n })();\n },\n cancel() {\n flv.emit('flvFetchCancel');\n },\n }),\n );\n });\n}\n","export default function readFile(flv, file) {\n flv.emit('flvFetchStart');\n const { proxy } = flv.events;\n const reader = new FileReader();\n proxy(reader, 'load', e => {\n const buffer = e.target.result;\n const uint8 = new Uint8Array(buffer);\n flv.emit('flvFetchEnd', uint8);\n });\n reader.readAsArrayBuffer(file);\n}\n","import fetchStream from './fetchStream';\nimport readFile from './readFile';\nimport { mergeTypedArrays, getUint8Sum } from '../utils';\n\nexport default class FlvParse {\n constructor(flv) {\n const { url } = flv.options;\n this.uint8 = new Uint8Array(0);\n this.index = 0;\n this.header = null;\n this.tags = [];\n this.done = false;\n\n flv.on('flvFetchStart', () => {\n console.log('[flv-fetch-start]');\n });\n\n flv.on('flvFetchCancel', () => {\n console.log('[flv-fetch-cancel]');\n });\n\n flv.on('flvFetchError', error => {\n console.log('[flv-fetch-error]', error);\n });\n\n flv.on('flvFetching', uint8 => {\n this.uint8 = mergeTypedArrays(this.uint8, uint8);\n this.parse();\n });\n\n flv.on('flvFetchEnd', uint8 => {\n console.log('[flv-fetch-end]');\n this.done = true;\n if (uint8) {\n this.uint8 = uint8;\n this.index = 0;\n this.header = null;\n this.tags = [];\n this.parse();\n }\n this.verify();\n });\n\n if (typeof url === 'string') {\n fetchStream(flv, url);\n } else {\n readFile(flv, url);\n }\n }\n\n parse() {\n if (this.uint8.length >= 13 && !this.header) {\n const header = Object.create(null);\n header.signature = this.read(3);\n header.version = this.read(1);\n header.flags = this.read(1);\n header.headersize = this.read(4);\n this.header = header;\n this.read(4);\n }\n\n while (this.index < this.uint8.length) {\n const tag = Object.create(null);\n tag.tagType = this.read(1);\n tag.dataSize = this.read(3);\n tag.timestamp = this.read(4);\n tag.streamID = this.read(3);\n tag.body = this.read(getUint8Sum(tag.dataSize));\n this.tags.push(tag);\n this.read(4);\n }\n }\n\n read(length) {\n const tempUint8 = [];\n for (let i = 0; i < length; i += 1) {\n tempUint8.push(this.uint8[this.index]);\n this.index += 1;\n }\n return tempUint8;\n }\n\n verify() {\n const types = Object.create(null);\n this.tags.forEach(item => {\n const tagType = item.tagType[0];\n if (types[tagType]) {\n types[tagType] += 1;\n } else {\n types[tagType] = 1;\n }\n });\n console.log(this.header);\n console.log(this.tags);\n console.log(types);\n }\n}\n","import Emitter from 'tiny-emitter';\nimport checkSupport from './utils/checkSupport';\nimport EventProxy from './eventProxy';\nimport CreatWorker from './creatWorker';\nimport CreatMediaSource from './creatMediaSource';\nimport FlvParse from './flvParse';\nimport * as utils from './utils';\nimport config from './config';\n\nlet id = 0;\nclass Flv extends Emitter {\n constructor(options) {\n super();\n this.options = Object.assign({}, Flv.DEFAULTS, options);\n checkSupport(this.options);\n this.events = new EventProxy(this);\n this.workers = new CreatWorker(this);\n this.mediaSource = new CreatMediaSource(this);\n this.flvData = new FlvParse(this);\n id += 1;\n this.id = id;\n Flv.instances.push(this);\n }\n\n static get DEFAULTS() {\n return {\n mediaElement: '',\n url: '',\n };\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get utils() {\n return utils;\n }\n\n destroy() {\n this.events.destroy();\n this.workers.killAll();\n Flv.instances.splice(Flv.instances.indexOf(this), 1);\n this.emit('destroy');\n }\n}\n\nObject.defineProperty(Flv, 'instances', {\n value: [],\n});\n\nwindow.Flv = Flv;\nexport default Flv;\n"],"names":["_typeof","E","prototype","on","name","callback","ctx","e","push","fn","once","self","listener","off","apply","arguments","_","emit","data","slice","call","evtArr","i","len","length","evts","liveEvents","FlvError","message","context","Error","captureStackTrace","constructor","errorHandle","condition","msg","mergeTypedArrays","a","b","c","set","sleep","ms","Promise","resolve","setTimeout","getUint8Sum","arr","reduce","totle","num","index","checkSupport","options","mediaElement","url","HTMLVideoElement","File","type","MP4H264MimeCodec","canPlay","canPlayType","window","MediaSource","isTypeSupported","fetch","Worker","ReadableStream","EventProxy","destroyEvents","proxy","bind","target","option","addEventListener","removeEventListener","forEach","event","CreatWorker","workers","Map","has","create","worker","get","args","post","kill","blob","Blob","fnToStr","objectURL","URL","createObjectURL","revokeObjectURL","terminate","reject","onmessage","onerror","error","postMessage","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","CreatMediaSource","flv","creatUrl","eventBind","src","config","eventName","sourceBuffers","activeSourceBuffers","fetchStream","then","response","ok","status","statusText","contentType","headers","includes","Response","start","controller","reader","body","getReader","cancel","read","done","value","close","Uint8Array","enqueue","catch","readFile","file","FileReader","buffer","result","uint8","readAsArrayBuffer","FlvParse","header","tags","console","log","parse","verify","Object","signature","version","flags","headersize","tag","tagType","dataSize","timestamp","streamID","tempUint8","types","item","id","Flv","assign","DEFAULTS","flvData","instances","destroy","killAll","splice","indexOf","utils","Emitter","defineProperty"],"mappings":";;;;;;EAAA,SAAS,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE;IAC9C,IAAI,EAAE,QAAQ,YAAY,WAAW,CAAC,EAAE;MACtC,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;KAC1D;GACF;;EAED,kBAAc,GAAG,eAAe;;ECNhC,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACrC,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;MAC1B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;MACvD,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;MAC/B,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;MACtD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAC3D;GACF;;EAED,SAAS,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;IAC1D,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrE,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAC7D,OAAO,WAAW,CAAC;GACpB;;EAED,eAAc,GAAG,YAAY;;;;;;;EChB7B,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,EAAE,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;;EAErW,SAAS,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE;MAC1E,cAAc,GAAG,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE;QAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB,CAAC;KACH,MAAM;MACL,cAAc,GAAG,OAAO,GAAG,SAAS,OAAO,CAAC,GAAG,EAAE;QAC/C,OAAO,GAAG,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;OACjI,CAAC;KACH;;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;GACrB;;EAED,cAAc,GAAG,OAAO;;;EChBxB,SAAS,sBAAsB,CAAC,IAAI,EAAE;IACpC,IAAI,IAAI,KAAK,KAAK,CAAC,EAAE;MACnB,MAAM,IAAI,cAAc,CAAC,2DAA2D,CAAC,CAAC;KACvF;;IAED,OAAO,IAAI,CAAC;GACb;;EAED,yBAAc,GAAG,sBAAsB;;ECJvC,SAAS,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE;IAC9C,IAAI,IAAI,KAAKA,SAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,UAAU,CAAC,EAAE;MACtE,OAAO,IAAI,CAAC;KACb;;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;GACpC;;EAED,6BAAc,GAAG,0BAA0B;;;ECZ3C,SAAS,eAAe,CAAC,CAAC,EAAE;IAC1B,cAAc,GAAG,eAAe,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE;MAC7G,OAAO,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;KAChD,CAAC;IACF,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;GAC3B;;EAED,cAAc,GAAG,eAAe;;;;ECPhC,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,cAAc,GAAG,eAAe,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;MACzF,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;MAChB,OAAO,CAAC,CAAC;KACV,CAAC;;IAEF,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B;;EAED,cAAc,GAAG,eAAe;;;ECPhC,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;IACvC,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;MAC3D,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;KAC3E;;IAED,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;MACrE,WAAW,EAAE;QACX,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;OACnB;KACF,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;GACtD;;EAED,YAAc,GAAG,SAAS;;ECjB1B,SAASC,CAAT,GAAc;;EAGb;;EAEDA,CAAC,CAACC,SAAF,GAAc;EACZC,EAAAA,EAAE,EAAE,YAAUC,IAAV,EAAgBC,QAAhB,EAA0BC,GAA1B,EAA+B;EACjC,QAAIC,CAAC,GAAG,KAAKA,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAR;EAEA,KAACA,CAAC,CAACH,IAAD,CAAD,KAAYG,CAAC,CAACH,IAAD,CAAD,GAAU,EAAtB,CAAD,EAA4BI,IAA5B,CAAiC;EAC/BC,MAAAA,EAAE,EAAEJ,QAD2B;EAE/BC,MAAAA,GAAG,EAAEA;EAF0B,KAAjC;EAKA,WAAO,IAAP;EACD,GAVW;EAYZI,EAAAA,IAAI,EAAE,cAAUN,IAAV,EAAgBC,QAAhB,EAA0BC,GAA1B,EAA+B;EACnC,QAAIK,IAAI,GAAG,IAAX;;EACA,aAASC,QAAT,GAAqB;EACnBD,MAAAA,IAAI,CAACE,GAAL,CAAST,IAAT,EAAeQ,QAAf;EACAP,MAAAA,QAAQ,CAACS,KAAT,CAAeR,GAAf,EAAoBS,SAApB;EACD;EAEDH,IAAAA,QAAQ,CAACI,CAAT,GAAaX,QAAb;EACA,WAAO,KAAKF,EAAL,CAAQC,IAAR,EAAcQ,QAAd,EAAwBN,GAAxB,CAAP;EACD,GArBW;EAuBZW,EAAAA,IAAI,EAAE,cAAUb,IAAV,EAAgB;EACpB,QAAIc,IAAI,GAAG,GAAGC,KAAH,CAASC,IAAT,CAAcL,SAAd,EAAyB,CAAzB,CAAX;EACA,QAAIM,MAAM,GAAG,CAAC,CAAC,KAAKd,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAD,EAA0BH,IAA1B,KAAmC,EAApC,EAAwCe,KAAxC,EAAb;EACA,QAAIG,CAAC,GAAG,CAAR;EACA,QAAIC,GAAG,GAAGF,MAAM,CAACG,MAAjB;;EAEA,SAAKF,CAAL,EAAQA,CAAC,GAAGC,GAAZ,EAAiBD,CAAC,EAAlB,EAAsB;EACpBD,MAAAA,MAAM,CAACC,CAAD,CAAN,CAAUb,EAAV,CAAaK,KAAb,CAAmBO,MAAM,CAACC,CAAD,CAAN,CAAUhB,GAA7B,EAAkCY,IAAlC;EACD;;EAED,WAAO,IAAP;EACD,GAlCW;EAoCZL,EAAAA,GAAG,EAAE,aAAUT,IAAV,EAAgBC,QAAhB,EAA0B;EAC7B,QAAIE,CAAC,GAAG,KAAKA,CAAL,KAAW,KAAKA,CAAL,GAAS,EAApB,CAAR;EACA,QAAIkB,IAAI,GAAGlB,CAAC,CAACH,IAAD,CAAZ;EACA,QAAIsB,UAAU,GAAG,EAAjB;;EAEA,QAAID,IAAI,IAAIpB,QAAZ,EAAsB;EACpB,WAAK,IAAIiB,CAAC,GAAG,CAAR,EAAWC,GAAG,GAAGE,IAAI,CAACD,MAA3B,EAAmCF,CAAC,GAAGC,GAAvC,EAA4CD,CAAC,EAA7C,EAAiD;EAC/C,YAAIG,IAAI,CAACH,CAAD,CAAJ,CAAQb,EAAR,KAAeJ,QAAf,IAA2BoB,IAAI,CAACH,CAAD,CAAJ,CAAQb,EAAR,CAAWO,CAAX,KAAiBX,QAAhD,EACEqB,UAAU,CAAClB,IAAX,CAAgBiB,IAAI,CAACH,CAAD,CAApB;EACH;EACF,KAV4B;;;;;EAgB5BI,IAAAA,UAAU,CAACF,MAAZ,GACIjB,CAAC,CAACH,IAAD,CAAD,GAAUsB,UADd,GAEI,OAAOnB,CAAC,CAACH,IAAD,CAFZ;EAIA,WAAO,IAAP;EACD;EAzDW,CAAd;EA4DA,eAAc,GAAGH,CAAjB;;ECjEA,SAAS,iBAAiB,CAAC,EAAE,EAAE;IAC7B,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;GACnE;;EAED,oBAAc,GAAG,iBAAiB;;;ECFlC,SAAS,wBAAwB,GAAG;IAClC,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IACvE,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,OAAO,IAAI,CAAC;;IAE7C,IAAI;MACF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;MAC1E,OAAO,IAAI,CAAC;KACb,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,KAAK,CAAC;KACd;GACF;;EAED,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;IACvC,IAAI,wBAAwB,EAAE,EAAE;MAC9B,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;KACjD,MAAM;MACL,cAAc,GAAG,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;QACrE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACtB,IAAI,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;OACjB,CAAC;KACH;;IAED,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;GAC1C;;EAED,cAAc,GAAG,UAAU;;;;ECxB3B,SAAS,gBAAgB,CAAC,KAAK,EAAE;IAC/B,IAAI,MAAM,GAAG,OAAO,GAAG,KAAK,UAAU,GAAG,IAAI,GAAG,EAAE,GAAG,SAAS,CAAC;;IAE/D,cAAc,GAAG,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,KAAK,EAAE;MACnE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;;MAE7D,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;OAC3E;;MAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;QAEhD,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;OAC5B;;MAED,SAAS,OAAO,GAAG;QACjB,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;OACtE;;MAED,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE;QACjD,WAAW,EAAE;UACX,KAAK,EAAE,OAAO;UACd,UAAU,EAAE,KAAK;UACjB,QAAQ,EAAE,IAAI;UACd,YAAY,EAAE,IAAI;SACnB;OACF,CAAC,CAAC;MACH,OAAO,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACvC,CAAC;;IAEF,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;GAChC;;EAED,cAAc,GAAG,gBAAgB;;;MC1CpB0B,QAAb;EAAA;EAAA;EAAA;;EACI,oBAAYC,OAAZ,EAAqBC,OAArB,EAA8B;EAAA;;EAAA;;EAC1B,gFAAMD,OAAN;;EACA,QAAI,OAAOE,KAAK,CAACC,iBAAb,KAAmC,UAAvC,EAAmD;EAC/CD,MAAAA,KAAK,CAACC,iBAAN,sDAA8BF,OAAO,IAAI,MAAKG,WAA9C;EACH;;EACD,UAAK5B,IAAL,GAAY,UAAZ;EAL0B;EAM7B;;EAPL;EAAA,kBAA8B0B,KAA9B;AAUA,EAAO,SAASG,WAAT,CAAqBC,SAArB,EAAgCC,GAAhC,EAAqC;EACxC,MAAI,CAACD,SAAL,EAAgB;EACZ,UAAM,IAAIP,QAAJ,CAAaQ,GAAb,CAAN;EACH;EACJ;AAED,EAAO,SAASC,gBAAT,CAA0BC,CAA1B,EAA6BC,CAA7B,EAAgC;EACnC,MAAMC,CAAC,GAAG,IAAIF,CAAC,CAACL,WAAN,CAAkBK,CAAC,CAACb,MAAF,GAAWc,CAAC,CAACd,MAA/B,CAAV;EACAe,EAAAA,CAAC,CAACC,GAAF,CAAMH,CAAN;EACAE,EAAAA,CAAC,CAACC,GAAF,CAAMF,CAAN,EAASD,CAAC,CAACb,MAAX;EACA,SAAOe,CAAP;EACH;AAED,EAAO,SAASE,KAAT,GAAuB;EAAA,MAARC,EAAQ,uEAAH,CAAG;EAC1B,SAAO,IAAIC,OAAJ,CAAY,UAAAC,OAAO;EAAA,WAAIC,UAAU,CAACD,OAAD,EAAUF,EAAV,CAAd;EAAA,GAAnB,CAAP;EACH;AAED,EAAO,SAASI,WAAT,CAAqBC,GAArB,EAA0B;EAC7B,SAAOA,GAAG,CAACC,MAAJ,CAAW,UAACC,KAAD,EAAQC,GAAR,EAAaC,KAAb;EAAA,WAAuBF,KAAK,GAAGC,GAAG,YAAG,GAAH,EAAWH,GAAG,CAACvB,MAAJ,GAAa2B,KAAb,GAAqB,CAAhC,CAAlC;EAAA,GAAX,EAAiF,CAAjF,CAAP;EACH;;;;;;;;;;EC3Bc,SAASC,YAAT,CAAsBC,OAAtB,EAA+B;EAAA,MAClCC,YADkC,GACZD,OADY,CAClCC,YADkC;EAAA,MACpBC,GADoB,GACZF,OADY,CACpBE,GADoB;EAE1CtB,EAAAA,WAAW,CAACqB,YAAY,YAAYE,gBAAzB,EAA2C,gDAA3C,CAAX;EACAvB,EAAAA,WAAW,CACP,OAAOsB,GAAP,KAAe,QAAf,IAA4BA,GAAG,YAAYE,IAAf,IAAuBF,GAAG,CAACG,IAAJ,KAAa,aADzD,EAEP,uDAFO,CAAX;EAKA,MAAMC,gBAAgB,GAAG,4CAAzB;EACA,MAAMC,OAAO,GAAGN,YAAY,CAACO,WAAb,CAAyBF,gBAAzB,CAAhB;EACA1B,EAAAA,WAAW,CACP6B,MAAM,CAACC,WAAP,IACID,MAAM,CAACC,WAAP,CAAmBC,eAAnB,CAAmCL,gBAAnC,CADJ,KAEKC,OAAO,KAAK,UAAZ,IAA0BA,OAAO,KAAK,OAF3C,CADO,4CAI4BD,gBAJ5B,EAAX;EAOA1B,EAAAA,WAAW,CAAC,OAAO6B,MAAM,CAACnB,OAAd,KAA0B,UAA3B,EAAuC,8BAAvC,CAAX;EACAV,EAAAA,WAAW,CAAC,OAAO6B,MAAM,CAACG,KAAd,KAAwB,UAAzB,EAAqC,4BAArC,CAAX;EACAhC,EAAAA,WAAW,CAAC,OAAO6B,MAAM,CAACI,MAAd,KAAyB,UAA1B,EAAsC,6BAAtC,CAAX;EACAjC,EAAAA,WAAW,CAAC,OAAO6B,MAAM,CAACK,cAAd,KAAiC,UAAlC,EAA8C,qCAA9C,CAAX;EACH;;MCvBoBC;;;EACjB,wBAAc;EAAA;;EACV,SAAKC,aAAL,GAAqB,EAArB;EACA,SAAKC,KAAL,GAAa,KAAKA,KAAL,CAAWC,IAAX,CAAgB,IAAhB,CAAb;EACH;;;;4BAEKC,QAAQpE,MAAMC,UAAuB;EAAA,UAAboE,MAAa,uEAAJ,EAAI;EACvCD,MAAAA,MAAM,CAACE,gBAAP,CAAwBtE,IAAxB,EAA8BC,QAA9B,EAAwCoE,MAAxC;EACA,WAAKJ,aAAL,CAAmB7D,IAAnB,CAAwB,YAAM;EAC1BgE,QAAAA,MAAM,CAACG,mBAAP,CAA2BvE,IAA3B,EAAiCC,QAAjC,EAA2CoE,MAA3C;EACH,OAFD;EAGH;;;gCAES;EACN,WAAKJ,aAAL,CAAmBO,OAAnB,CAA2B,UAAAC,KAAK;EAAA,eAAIA,KAAK,EAAT;EAAA,OAAhC;EACH;;;;;;MCfgBC;;;EACjB,yBAAc;EAAA;;EACV,SAAKC,OAAL,GAAe,IAAIC,GAAJ,EAAf;EACH;;;;0BAiCG5E,MAAMK,IAAI;EACV,UAAI,CAAC,KAAKsE,OAAL,CAAaE,GAAb,CAAiB7E,IAAjB,CAAL,EAA6B;EACzB,aAAK2E,OAAL,CAAavC,GAAb,CAAiBpC,IAAjB,EAAuB0E,WAAW,CAACI,MAAZ,CAAmBzE,EAAnB,CAAvB;EACH;EACJ;;;0BAEGL,MAAe;EACf,UAAM+E,MAAM,GAAG,KAAKJ,OAAL,CAAaK,GAAb,CAAiBhF,IAAjB,CAAf;;EADe,wCAANiF,IAAM;EAANA,QAAAA,IAAM;EAAA;;EAEf,aAAOF,MAAM,CAACG,IAAP,CAAYD,IAAZ,CAAP;EACH;;;2BAEIjF,MAAM;EACP,UAAM+E,MAAM,GAAG,KAAKJ,OAAL,CAAaK,GAAb,CAAiBhF,IAAjB,CAAf;EACA+E,MAAAA,MAAM,CAACI,IAAP;EACH;;;gCAES;EACN,WAAKR,OAAL,CAAaH,OAAb,CAAqB,UAAAO,MAAM,EAAI;EAC3BA,QAAAA,MAAM,CAACI,IAAP;EACH,OAFD;EAGH;;;8BAnDc9E,IAAI;EACf,yGAEkCA,EAFlC;EAKH;;;6BAEaA,IAAI;EACd,UAAM+E,IAAI,GAAG,IAAIC,IAAJ,CAAS,CAACX,WAAW,CAACY,OAAZ,CAAoBjF,EAApB,CAAD,CAAT,EAAoC;EAC7CiD,QAAAA,IAAI,EAAE;EADuC,OAApC,CAAb;EAGA,UAAMiC,SAAS,GAAG7B,MAAM,CAAC8B,GAAP,CAAWC,eAAX,CAA2BL,IAA3B,CAAlB;EACA,UAAML,MAAM,GAAG,IAAIjB,MAAJ,CAAWyB,SAAX,CAAf;;EACAR,MAAAA,MAAM,CAACI,IAAP,GAAc,YAAM;EAChBK,QAAAA,GAAG,CAACE,eAAJ,CAAoBH,SAApB;EACAR,QAAAA,MAAM,CAACY,SAAP;EACH,OAHD;;EAIAZ,MAAAA,MAAM,CAACG,IAAP,GAAc,UAAAD,IAAI;EAAA,eACd,IAAI1C,OAAJ,CAAY,UAACC,OAAD,EAAUoD,MAAV,EAAqB;EAC7Bb,UAAAA,MAAM,CAACc,SAAP,GAAmB,UAAApB,KAAK,EAAI;EACxBjC,YAAAA,OAAO,CAACiC,KAAK,CAAC3D,IAAP,CAAP;EACH,WAFD;;EAGAiE,UAAAA,MAAM,CAACe,OAAP,GAAiB,UAAAC,KAAK,EAAI;EACtBH,YAAAA,MAAM,CAACG,KAAD,CAAN;EACH,WAFD;;EAGAhB,UAAAA,MAAM,CAACiB,WAAP,CAAmBf,IAAnB;EACH,SARD,CADc;EAAA,OAAlB;;EAUA,aAAOF,MAAP;EACH;;;;;;AClCL,eAAe;EACXkB,EAAAA,WAAW,EAAE;EACTC,IAAAA,SAAS,EAAE,CACP,qBADO,EAEP,UAFO,EAGP,YAHO,EAIP,eAJO,CADF;EAOTC,IAAAA,OAAO,EAAE,CACL,iBADK,EAEL,aAFK,EAGL,oBAHK,EAIL,wBAJK,EAKL,sBALK,CAPA;EAcTC,IAAAA,MAAM,EAAE,CACJ,aADI,EAEJ,aAFI,EAGJ,YAHI;EAdC,GADF;EAqBXC,EAAAA,YAAY,EAAE;EACVH,IAAAA,SAAS,EAAE,CACP,MADO,EAEP,UAFO,EAGP,UAHO,EAIP,iBAJO,EAKP,aALO,EAMP,aANO,EAOP,YAPO,EAQP,mBARO,EASP,iBATO,EAUP,eAVO,CADD;EAaVC,IAAAA,OAAO,EAAE,CACL,cADK,EAEL,cAFK,EAGL,OAHK,EAIL,QAJK,CAbC;EAmBVC,IAAAA,MAAM,EAAE,CACJ,OADI,EAEJ,OAFI,EAGJ,QAHI,EAIJ,WAJI,EAKJ,aALI;EAnBE,GArBH;EAgDXE,EAAAA,gBAAgB,EAAE;EACdJ,IAAAA,SAAS,EAAE,CACP,QADO,CADG;EAIdE,IAAAA,MAAM,EAAE,CACJ,iBADI,EAEJ,oBAFI;EAJM;EAhDP,CAAf;;MCEqBG;;;EACjB,4BAAYC,GAAZ,EAAiB;EAAA;;EACb,SAAKA,GAAL,GAAWA,GAAX;EACA,SAAKC,QAAL;EACA,SAAKC,SAAL;EACH;;;;iCAEU;EAAA,sBAIH,KAAKF,GAJF;EAAA,UAEQtD,YAFR,aAEHD,OAFG,CAEQC,YAFR;EAAA,UAGOe,aAHP,aAGHmC,MAHG,CAGOnC,aAHP;EAKP,WAAKgC,WAAL,GAAmB,IAAItC,WAAJ,EAAnB;EACA,UAAMR,GAAG,GAAGqC,GAAG,CAACC,eAAJ,CAAoB,KAAKQ,WAAzB,CAAZ;EACAhC,MAAAA,aAAa,CAAC7D,IAAd,CAAmB,YAAM;EACrBoF,QAAAA,GAAG,CAACE,eAAJ,CAAoBvC,GAApB;EACH,OAFD;EAGAD,MAAAA,YAAY,CAACyD,GAAb,GAAmBxD,GAAnB;EACH;;;kCAEW;EAAA;;EAAA,UAEMe,KAFN,GAGJ,KAAKsC,GAHD,CAEJJ,MAFI,CAEMlC,KAFN;EAKR0C,MAAAA,MAAM,CAACX,WAAP,CAAmBG,MAAnB,CAA0B5B,OAA1B,CAAkC,UAAAqC,SAAS,EAAI;EAC3C3C,QAAAA,KAAK,CAAC,KAAI,CAAC+B,WAAN,EAAmBY,SAAnB,EAA8B,UAAApC,KAAK,EAAI;EACxC,UAAA,KAAI,CAAC+B,GAAL,CAAS3F,IAAT,uBAA6B4D,KAAK,CAACnB,IAAnC,GAA2CmB,KAA3C;EACH,SAFI,CAAL;EAGH,OAJD;EAMAmC,MAAAA,MAAM,CAACN,gBAAP,CAAwBF,MAAxB,CAA+B5B,OAA/B,CAAuC,UAAAqC,SAAS,EAAI;EAChD3C,QAAAA,KAAK,CAAC,KAAI,CAAC+B,WAAL,CAAiBa,aAAlB,EAAiCD,SAAjC,EAA4C,UAAApC,KAAK,EAAI;EACtD,UAAA,KAAI,CAAC+B,GAAL,CAAS3F,IAAT,yBAA+B4D,KAAK,CAACnB,IAArC,GAA6CmB,KAA7C;EACH,SAFI,CAAL;EAGAP,QAAAA,KAAK,CAAC,KAAI,CAAC+B,WAAL,CAAiBc,mBAAlB,EAAuCF,SAAvC,EAAkD,UAAApC,KAAK,EAAI;EAC5D,UAAA,KAAI,CAAC+B,GAAL,CAAS3F,IAAT,+BAAqC4D,KAAK,CAACnB,IAA3C,GAAmDmB,KAAnD;EACH,SAFI,CAAL;EAGH,OAPD;EAQH;;;;;;ECvCU,SAASuC,WAAT,CAAqBR,GAArB,EAA0BrD,GAA1B,EAA+B;EAC1CqD,EAAAA,GAAG,CAAC3F,IAAJ,CAAS,eAAT;EACAgD,EAAAA,KAAK,CAACV,GAAD,CAAL,CAAW8D,IAAX,CAAgB,UAAAC,QAAQ,EAAI;EACxBrF,IAAAA,WAAW,CACPqF,QAAQ,CAACC,EAAT,IAAeD,QAAQ,CAACE,MAAT,IAAmB,GAAlC,IAAyCF,QAAQ,CAACE,MAAT,IAAmB,GADrD,YAEJF,QAAQ,CAACE,MAFL,cAEeF,QAAQ,CAACG,UAFxB,EAAX;EAIA,QAAMC,WAAW,GAAGJ,QAAQ,CAACK,OAAT,CAAiBvC,GAAjB,CAAqB,cAArB,CAApB;EACAnD,IAAAA,WAAW,CAACyF,WAAW,CAACE,QAAZ,CAAqB,OAArB,CAAD,EAAgC,6CAAhC,CAAX;EACA,WAAO,IAAIC,QAAJ,CACH,IAAI1D,cAAJ,CAAmB;EACf2D,MAAAA,KADe,iBACTC,UADS,EACG;EACd,YAAMC,MAAM,GAAGV,QAAQ,CAACW,IAAT,CAAcC,SAAd,EAAf;EAEAtB,QAAAA,GAAG,CAACzG,EAAJ,CAAO,SAAP,EAAkB,YAAM;EACpB6H,UAAAA,MAAM,CAACG,MAAP;EACH,SAFD;EAIAvB,QAAAA,GAAG,CAACzG,EAAJ,CAAO,cAAP,EAAuB,YAAM;EACzB6H,UAAAA,MAAM,CAACG,MAAP;EACH,SAFD;;EAIA,SAAC,SAASC,IAAT,GAAgB;EACbJ,UAAAA,MAAM,CACDI,IADL,GAEKf,IAFL,CAEU,gBAAqB;EAAA,gBAAlBgB,IAAkB,QAAlBA,IAAkB;EAAA,gBAAZC,KAAY,QAAZA,KAAY;;EACvB,gBAAID,IAAJ,EAAU;EACNzB,cAAAA,GAAG,CAAC3F,IAAJ,CAAS,aAAT;EACA8G,cAAAA,UAAU,CAACQ,KAAX;EACA;EACH;;EACD3B,YAAAA,GAAG,CAAC3F,IAAJ,CAAS,aAAT,EAAwB,IAAIuH,UAAJ,CAAeF,KAAf,CAAxB;EACAP,YAAAA,UAAU,CAACU,OAAX,CAAmBH,KAAnB;EACAF,YAAAA,IAAI;EACP,WAXL,EAYKM,KAZL,CAYW,UAAAvC,KAAK,EAAI;EACZS,YAAAA,GAAG,CAAC3F,IAAJ,CAAS,eAAT,EAA0BkF,KAA1B;EACH,WAdL;EAeH,SAhBD;EAiBH,OA7Bc;EA8BfgC,MAAAA,MA9Be,oBA8BN;EACLvB,QAAAA,GAAG,CAAC3F,IAAJ,CAAS,gBAAT;EACH;EAhCc,KAAnB,CADG,CAAP;EAoCH,GA3CD;EA4CH;;EChDc,SAAS0H,QAAT,CAAkB/B,GAAlB,EAAuBgC,IAAvB,EAA6B;EACxChC,EAAAA,GAAG,CAAC3F,IAAJ,CAAS,eAAT;EADwC,MAEhCqD,KAFgC,GAEtBsC,GAAG,CAACJ,MAFkB,CAEhClC,KAFgC;EAGxC,MAAM0D,MAAM,GAAG,IAAIa,UAAJ,EAAf;EACAvE,EAAAA,KAAK,CAAC0D,MAAD,EAAS,MAAT,EAAiB,UAAAzH,CAAC,EAAI;EACvB,QAAMuI,MAAM,GAAGvI,CAAC,CAACiE,MAAF,CAASuE,MAAxB;EACA,QAAMC,KAAK,GAAG,IAAIR,UAAJ,CAAeM,MAAf,CAAd;EACAlC,IAAAA,GAAG,CAAC3F,IAAJ,CAAS,aAAT,EAAwB+H,KAAxB;EACH,GAJI,CAAL;EAKAhB,EAAAA,MAAM,CAACiB,iBAAP,CAAyBL,IAAzB;EACH;;MCNoBM;;;EACjB,oBAAYtC,GAAZ,EAAiB;EAAA;;EAAA;;EAAA,QACLrD,GADK,GACGqD,GAAG,CAACvD,OADP,CACLE,GADK;EAEb,SAAKyF,KAAL,GAAa,IAAIR,UAAJ,CAAe,CAAf,CAAb;EACA,SAAKrF,KAAL,GAAa,CAAb;EACA,SAAKgG,MAAL,GAAc,IAAd;EACA,SAAKC,IAAL,GAAY,EAAZ;EACA,SAAKf,IAAL,GAAY,KAAZ;EAEAzB,IAAAA,GAAG,CAACzG,EAAJ,CAAO,eAAP,EAAwB,YAAM;EAC1BkJ,MAAAA,OAAO,CAACC,GAAR,CAAY,mBAAZ;EACH,KAFD;EAIA1C,IAAAA,GAAG,CAACzG,EAAJ,CAAO,gBAAP,EAAyB,YAAM;EAC3BkJ,MAAAA,OAAO,CAACC,GAAR,CAAY,oBAAZ;EACH,KAFD;EAIA1C,IAAAA,GAAG,CAACzG,EAAJ,CAAO,eAAP,EAAwB,UAAAgG,KAAK,EAAI;EAC7BkD,MAAAA,OAAO,CAACC,GAAR,CAAY,mBAAZ,EAAiCnD,KAAjC;EACH,KAFD;EAIAS,IAAAA,GAAG,CAACzG,EAAJ,CAAO,aAAP,EAAsB,UAAA6I,KAAK,EAAI;EAC3B,MAAA,KAAI,CAACA,KAAL,GAAa5G,gBAAgB,CAAC,KAAI,CAAC4G,KAAN,EAAaA,KAAb,CAA7B;;EACA,MAAA,KAAI,CAACO,KAAL;EACH,KAHD;EAKA3C,IAAAA,GAAG,CAACzG,EAAJ,CAAO,aAAP,EAAsB,UAAA6I,KAAK,EAAI;EAC3BK,MAAAA,OAAO,CAACC,GAAR,CAAY,iBAAZ;EACA,MAAA,KAAI,CAACjB,IAAL,GAAY,IAAZ;;EACA,UAAIW,KAAJ,EAAW;EACP,QAAA,KAAI,CAACA,KAAL,GAAaA,KAAb;EACA,QAAA,KAAI,CAAC7F,KAAL,GAAa,CAAb;EACA,QAAA,KAAI,CAACgG,MAAL,GAAc,IAAd;EACA,QAAA,KAAI,CAACC,IAAL,GAAY,EAAZ;;EACA,QAAA,KAAI,CAACG,KAAL;EACH;;EACD,MAAA,KAAI,CAACC,MAAL;EACH,KAXD;;EAaA,QAAI,OAAOjG,GAAP,KAAe,QAAnB,EAA6B;EACzB6D,MAAAA,WAAW,CAACR,GAAD,EAAMrD,GAAN,CAAX;EACH,KAFD,MAEO;EACHoF,MAAAA,QAAQ,CAAC/B,GAAD,EAAMrD,GAAN,CAAR;EACH;EACJ;;;;8BAEO;EACJ,UAAI,KAAKyF,KAAL,CAAWxH,MAAX,IAAqB,EAArB,IAA2B,CAAC,KAAK2H,MAArC,EAA6C;EACzC,YAAMA,MAAM,GAAGM,MAAM,CAACvE,MAAP,CAAc,IAAd,CAAf;EACAiE,QAAAA,MAAM,CAACO,SAAP,GAAmB,KAAKtB,IAAL,CAAU,CAAV,CAAnB;EACAe,QAAAA,MAAM,CAACQ,OAAP,GAAiB,KAAKvB,IAAL,CAAU,CAAV,CAAjB;EACAe,QAAAA,MAAM,CAACS,KAAP,GAAe,KAAKxB,IAAL,CAAU,CAAV,CAAf;EACAe,QAAAA,MAAM,CAACU,UAAP,GAAoB,KAAKzB,IAAL,CAAU,CAAV,CAApB;EACA,aAAKe,MAAL,GAAcA,MAAd;EACA,aAAKf,IAAL,CAAU,CAAV;EACH;;EAED,aAAO,KAAKjF,KAAL,GAAa,KAAK6F,KAAL,CAAWxH,MAA/B,EAAuC;EACnC,YAAMsI,GAAG,GAAGL,MAAM,CAACvE,MAAP,CAAc,IAAd,CAAZ;EACA4E,QAAAA,GAAG,CAACC,OAAJ,GAAc,KAAK3B,IAAL,CAAU,CAAV,CAAd;EACA0B,QAAAA,GAAG,CAACE,QAAJ,GAAe,KAAK5B,IAAL,CAAU,CAAV,CAAf;EACA0B,QAAAA,GAAG,CAACG,SAAJ,GAAgB,KAAK7B,IAAL,CAAU,CAAV,CAAhB;EACA0B,QAAAA,GAAG,CAACI,QAAJ,GAAe,KAAK9B,IAAL,CAAU,CAAV,CAAf;EACA0B,QAAAA,GAAG,CAAC7B,IAAJ,GAAW,KAAKG,IAAL,CAAUtF,WAAW,CAACgH,GAAG,CAACE,QAAL,CAArB,CAAX;EACA,aAAKZ,IAAL,CAAU5I,IAAV,CAAesJ,GAAf;EACA,aAAK1B,IAAL,CAAU,CAAV;EACH;EACJ;;;2BAEI5G,QAAQ;EACT,UAAM2I,SAAS,GAAG,EAAlB;;EACA,WAAK,IAAI7I,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGE,MAApB,EAA4BF,CAAC,IAAI,CAAjC,EAAoC;EAChC6I,QAAAA,SAAS,CAAC3J,IAAV,CAAe,KAAKwI,KAAL,CAAW,KAAK7F,KAAhB,CAAf;EACA,aAAKA,KAAL,IAAc,CAAd;EACH;;EACD,aAAOgH,SAAP;EACH;;;+BAEQ;EACL,UAAMC,KAAK,GAAGX,MAAM,CAACvE,MAAP,CAAc,IAAd,CAAd;EACA,WAAKkE,IAAL,CAAUxE,OAAV,CAAkB,UAAAyF,IAAI,EAAI;EACtB,YAAMN,OAAO,GAAGM,IAAI,CAACN,OAAL,CAAa,CAAb,CAAhB;;EACA,YAAIK,KAAK,CAACL,OAAD,CAAT,EAAoB;EAChBK,UAAAA,KAAK,CAACL,OAAD,CAAL,IAAkB,CAAlB;EACH,SAFD,MAEO;EACHK,UAAAA,KAAK,CAACL,OAAD,CAAL,GAAiB,CAAjB;EACH;EACJ,OAPD;EAQAV,MAAAA,OAAO,CAACC,GAAR,CAAY,KAAKH,MAAjB;EACAE,MAAAA,OAAO,CAACC,GAAR,CAAY,KAAKF,IAAjB;EACAC,MAAAA,OAAO,CAACC,GAAR,CAAYc,KAAZ;EACH;;;;;;ECtFL,IAAIE,EAAE,GAAG,CAAT;;MACMC;;;;;EACF,eAAYlH,OAAZ,EAAqB;EAAA;;EAAA;;EACjB;EACA,UAAKA,OAAL,GAAeoG,MAAM,CAACe,MAAP,CAAc,EAAd,EAAkBD,GAAG,CAACE,QAAtB,EAAgCpH,OAAhC,CAAf;EACAD,IAAAA,YAAY,CAAC,MAAKC,OAAN,CAAZ;EACA,UAAKmD,MAAL,GAAc,IAAIpC,UAAJ,qDAAd;EACA,UAAKW,OAAL,GAAe,IAAID,WAAJ,qDAAf;EACA,UAAKuB,WAAL,GAAmB,IAAIM,gBAAJ,qDAAnB;EACA,UAAK+D,OAAL,GAAe,IAAIxB,QAAJ,qDAAf;EACAoB,IAAAA,EAAE,IAAI,CAAN;EACA,UAAKA,EAAL,GAAUA,EAAV;EACAC,IAAAA,GAAG,CAACI,SAAJ,CAAcnK,IAAd;EAViB;EAWpB;;;;gCAqBS;EACN,WAAKgG,MAAL,CAAYoE,OAAZ;EACA,WAAK7F,OAAL,CAAa8F,OAAb;EACAN,MAAAA,GAAG,CAACI,SAAJ,CAAcG,MAAd,CAAqBP,GAAG,CAACI,SAAJ,CAAcI,OAAd,CAAsB,IAAtB,CAArB,EAAkD,CAAlD;EACA,WAAK9J,IAAL,CAAU,SAAV;EACH;;;0BAxBqB;EAClB,aAAO;EACHqC,QAAAA,YAAY,EAAE,EADX;EAEHC,QAAAA,GAAG,EAAE;EAFF,OAAP;EAIH;;;0BAEoB;EACjB,aAAO,OAAP;EACH;;;0BAEmB;EAChB,aAAOyD,MAAP;EACH;;;0BAEkB;EACf,aAAOgE,KAAP;EACH;;;;IA/BaC;;EAyClBxB,MAAM,CAACyB,cAAP,CAAsBX,GAAtB,EAA2B,WAA3B,EAAwC;EACpCjC,EAAAA,KAAK,EAAE;EAD6B,CAAxC;EAIAxE,MAAM,CAACyG,GAAP,GAAaA,GAAb;;;;;;;;;;;;"} \ No newline at end of file +{"version":3,"file":"artplayer-plugin-flv.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../packages/artplayer-plugin-flv/node_modules/tiny-emitter/index.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../packages/artplayer-plugin-flv/src/utils/index.js","../../packages/artplayer-plugin-flv/src/utils/checkSupport.js","../../packages/artplayer-plugin-flv/src/eventProxy.js","../../packages/artplayer-plugin-flv/src/creatWorker.js","../../packages/artplayer-plugin-flv/src/config.js","../../packages/artplayer-plugin-flv/src/creatMediaSource.js","../../packages/artplayer-plugin-flv/src/flvParse/fetchStream.js","../../packages/artplayer-plugin-flv/src/flvParse/readFile.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../packages/artplayer-plugin-flv/src/flvParse/getMetaData.js","../../packages/artplayer-plugin-flv/src/flvParse/index.js","../../packages/artplayer-plugin-flv/src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export class FlvError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'FlvError';\n }\n}\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new FlvError(msg);\n }\n}\n\nexport function mergeTypedArrays(a, b) {\n const c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n\nexport function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport function getUint8Sum(arr) {\n return arr.reduce((totle, num, index) => totle + num * 256 ** (arr.length - index - 1), 0);\n}\n\nexport function string2Bin(str) {\n const result = [];\n for (let i = 0; i < str.length; i += 1) {\n result.push(Number(str.charCodeAt(i).toString(10)));\n }\n return result;\n}\n\nexport function bin2String(array) {\n return String.fromCharCode.call(String, ...array);\n}\n\nexport function bin2Float(array) {\n const view = new DataView(new ArrayBuffer(array.length));\n array.forEach((b, i) => {\n view.setUint8(i, b);\n });\n return view.getFloat64(0);\n}\n\nexport function bin2Boolean(bin) {\n return bin === 1;\n}\n\nexport function readUint8(uint8) {\n let index = 0;\n return function read(length) {\n const result = [];\n for (let i = 0; i < length; i += 1) {\n result.push(uint8[index]);\n index += 1;\n }\n read.index = index;\n return result;\n };\n}\n","import { errorHandle } from '.';\n\nexport default function checkSupport(options) {\n const { mediaElement, url } = options;\n errorHandle(mediaElement instanceof HTMLVideoElement, 'The first parameter is not a video tag element');\n errorHandle(\n typeof url === 'string' || (url instanceof File && url.type === 'video/x-flv'),\n 'The second parameter is not a string type or flv file',\n );\n\n const MP4H264MimeCodec = 'video/mp4; codecs=\"avc1.42001E, mp4a.40.2\"';\n const canPlay = mediaElement.canPlayType(MP4H264MimeCodec);\n errorHandle(\n window.MediaSource &&\n window.MediaSource.isTypeSupported(MP4H264MimeCodec) &&\n (canPlay === 'probably' || canPlay === 'maybe'),\n `Unsupported MIME type or codec: ${MP4H264MimeCodec}`,\n );\n\n errorHandle(typeof window.Promise === 'function', \"Unsupported 'Promise' method\");\n errorHandle(typeof window.fetch === 'function', \"Unsupported 'fetch' method\");\n errorHandle(typeof window.Worker === 'function', \"Unsupported 'Worker' method\");\n errorHandle(typeof window.ReadableStream === 'function', \"Unsupported 'ReadableStream' method\");\n}\n","export default class EventProxy {\n constructor() {\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n target.addEventListener(name, callback, option);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback, option);\n });\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}","export default class CreatWorker {\n constructor() {\n this.workers = new Map();\n }\n\n static fnToStr(fn) {\n return `\n self.onmessage = event => {\n return self.postMessage((${fn}).apply(null, event.data));\n }\n `;\n }\n\n static create(fn) {\n const blob = new Blob([CreatWorker.fnToStr(fn)], {\n type: 'application/javascript',\n });\n const objectURL = window.URL.createObjectURL(blob);\n const worker = new Worker(objectURL);\n worker.kill = () => {\n URL.revokeObjectURL(objectURL);\n worker.terminate();\n };\n worker.post = args =>\n new Promise((resolve, reject) => {\n worker.onmessage = event => {\n resolve(event.data);\n };\n worker.onerror = error => {\n reject(error);\n };\n worker.postMessage(args);\n });\n return worker;\n }\n\n add(name, fn) {\n if (!this.workers.has(name)) {\n this.workers.set(name, CreatWorker.create(fn));\n }\n }\n\n run(name, ...args) {\n const worker = this.workers.get(name);\n return worker.post(args);\n }\n\n kill(name) {\n const worker = this.workers.get(name);\n worker.kill();\n }\n\n killAll() {\n this.workers.forEach(worker => {\n worker.kill();\n });\n }\n}\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers',\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange',\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen',\n ],\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults',\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove',\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart',\n ],\n },\n sourceBufferList: {\n propertys: [\n 'length',\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer',\n ],\n },\n};\n","import config from './config';\n\nexport default class CreatMediaSource {\n constructor(flv) {\n this.flv = flv;\n this.creatUrl();\n this.eventBind();\n }\n\n creatUrl() {\n const {\n options: { mediaElement },\n events: { destroyEvents },\n } = this.flv;\n this.mediaSource = new MediaSource();\n const url = URL.createObjectURL(this.mediaSource);\n destroyEvents.push(() => {\n URL.revokeObjectURL(url);\n });\n mediaElement.src = url;\n }\n\n eventBind() {\n const {\n events: { proxy },\n } = this.flv;\n\n config.mediaSource.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.flv.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n config.sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.flv.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.flv.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default function fetchStream(flv, url) {\n flv.emit('flvFetchStart');\n fetch(url).then(response => {\n errorHandle(\n response.ok && response.status >= 200 && response.status <= 299,\n `${response.status} ${response.statusText}`,\n );\n const contentType = response.headers.get('content-type');\n errorHandle(contentType.includes('x-flv'), 'The resource does not seem to be a flv file');\n return new Response(\n new ReadableStream({\n start(controller) {\n const reader = response.body.getReader();\n\n flv.on('destroy', () => {\n reader.cancel();\n });\n\n flv.on('readerCancel', () => {\n reader.cancel();\n });\n\n (function read() {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n flv.emit('flvFetchEnd');\n controller.close();\n return;\n }\n flv.emit('flvFetching', new Uint8Array(value));\n controller.enqueue(value);\n read();\n })\n .catch(error => {\n flv.emit('flvFetchError', error);\n });\n })();\n },\n cancel() {\n flv.emit('flvFetchCancel');\n },\n }),\n );\n });\n}\n","export default function readFile(flv, file) {\n console.log(file);\n flv.emit('flvFetchStart');\n const { proxy } = flv.events;\n const reader = new FileReader();\n proxy(reader, 'load', e => {\n const buffer = e.target.result;\n const uint8 = new Uint8Array(buffer);\n flv.emit('flvFetchEnd', uint8);\n });\n reader.readAsArrayBuffer(file);\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","import { getUint8Sum, readUint8, bin2String, bin2Boolean, bin2Float } from '../utils';\n\nfunction getValueLength(type) {\n return {\n 0: 8, // Number\n 1: 1, // Boolean\n 2: 200, // String\n 3: 1, // Object\n 4: 1, // MovieClip\n 5: 1, // Null\n 6: 1, // Undefined\n 7: 1, // Reference\n 8: 1, // ECMA array\n 9: 1, // Object end marker\n 10: 4, // Strict array\n 11: 8, // Date\n 12: 4, // Long string\n }[type];\n}\n\nexport default function getMetaData(scripTag) {\n const readMetaData = readUint8(scripTag.body);\n const metadata = Object.create(null);\n const amf1 = Object.create(null);\n const amf2 = Object.create(null);\n [amf1.type] = readMetaData(1);\n amf1.size = getUint8Sum(readMetaData(2));\n amf1.string = bin2String(readMetaData(amf1.size));\n [amf2.type] = readMetaData(1);\n amf2.size = getUint8Sum(readMetaData(4));\n amf2.metaData = Object.create(null);\n\n console.log(scripTag.body.slice(13));\n\n const nameLength = getUint8Sum(readMetaData(2));\n const name = bin2String(readMetaData(nameLength));\n const type = readMetaData(1)[0];\n const valueLength = getUint8Sum(readMetaData(2));\n const value = bin2String(readMetaData(valueLength));\n console.log(type, name, value);\n\n const nameLength2 = getUint8Sum(readMetaData(2));\n const name2 = bin2String(readMetaData(nameLength2));\n const type2 = readMetaData(1)[0];\n const valueLength2 = getUint8Sum(readMetaData(2));\n const value2 = bin2String(readMetaData(valueLength2));\n console.log(type2, name2, value2);\n\n const nameLength3 = getUint8Sum(readMetaData(2));\n const name3 = bin2String(readMetaData(nameLength3));\n const type3 = readMetaData(1)[0];\n const value3 = bin2Boolean(readMetaData(1)[0]);\n console.log(type3, name3, value3);\n\n const nameLength4 = getUint8Sum(readMetaData(2));\n const name4 = bin2String(readMetaData(nameLength4));\n const type4 = readMetaData(1)[0];\n const value4 = bin2Boolean(readMetaData(1)[0]);\n console.log(type4, name4, value4);\n\n const nameLength5 = getUint8Sum(readMetaData(2));\n const name5 = bin2String(readMetaData(nameLength5));\n const type5 = readMetaData(1)[0];\n const value5 = bin2Boolean(readMetaData(1)[0]);\n console.log(type5, name5, value5);\n\n const nameLength6 = getUint8Sum(readMetaData(2));\n const name6 = bin2String(readMetaData(nameLength6));\n const type6 = readMetaData(1)[0];\n const value6 = bin2Boolean(readMetaData(1)[0]);\n console.log(type6, name6, value6);\n\n const nameLength7 = getUint8Sum(readMetaData(2));\n const name7 = bin2String(readMetaData(nameLength7));\n const type7 = readMetaData(1)[0];\n const value7 = bin2Boolean(readMetaData(1)[0]);\n console.log(type7, name7, value7);\n\n const nameLength8 = getUint8Sum(readMetaData(2));\n const name8 = bin2String(readMetaData(nameLength8));\n const type8 = readMetaData(1)[0];\n const value8 = bin2Float(readMetaData(8));\n console.log(type8, name8, value8);\n\n const nameLength9 = getUint8Sum(readMetaData(2));\n const name9 = bin2String(readMetaData(nameLength9));\n const type9 = readMetaData(1)[0];\n const value9 = bin2Float(readMetaData(8));\n console.log(type9, name9, value9);\n\n const nameLength10 = getUint8Sum(readMetaData(2));\n const name10 = bin2String(readMetaData(nameLength10));\n const type10 = readMetaData(1)[0];\n const value10 = bin2Float(readMetaData(8));\n console.log(type10, name10, value10);\n\n const nameLength11 = getUint8Sum(readMetaData(2));\n const name11 = bin2String(readMetaData(nameLength11));\n const type11 = readMetaData(1)[0];\n const value11 = bin2Float(readMetaData(8));\n console.log(type11, name11, value11);\n\n const nameLength12 = getUint8Sum(readMetaData(2));\n const name12 = bin2String(readMetaData(nameLength12));\n const type12 = readMetaData(1)[0];\n const value12 = bin2Float(readMetaData(8));\n console.log(type12, name12, value12);\n\n const nameLength13 = getUint8Sum(readMetaData(2));\n const name13 = bin2String(readMetaData(nameLength13));\n const type13 = readMetaData(1)[0];\n const value13 = bin2Float(readMetaData(8));\n console.log(type13, name13, value13);\n\n const nameLength14 = getUint8Sum(readMetaData(2));\n const name14 = bin2String(readMetaData(nameLength14));\n const type14 = readMetaData(1)[0];\n const value14 = bin2Float(readMetaData(8));\n console.log(type14, name14, value14);\n\n const nameLength15 = getUint8Sum(readMetaData(2));\n const name15 = bin2String(readMetaData(nameLength15));\n const type15 = readMetaData(1)[0];\n const value15 = bin2Float(readMetaData(8));\n console.log(type15, name15, value15);\n\n const nameLength16 = getUint8Sum(readMetaData(2));\n const name16 = bin2String(readMetaData(nameLength16));\n const type16 = readMetaData(1)[0];\n const value16 = bin2Float(readMetaData(8));\n console.log(type16, name16, value16);\n\n const nameLength17 = getUint8Sum(readMetaData(2));\n const name17 = bin2String(readMetaData(nameLength17));\n const type17 = readMetaData(1)[0];\n const value17 = bin2Float(readMetaData(8));\n console.log(type17, name17, value17);\n\n const nameLength18 = getUint8Sum(readMetaData(2));\n const name18 = bin2String(readMetaData(nameLength18));\n const type18 = readMetaData(1)[0];\n const value18 = bin2Float(readMetaData(8));\n console.log(type18, name18, value18);\n\n const nameLength19 = getUint8Sum(readMetaData(2));\n const name19 = bin2String(readMetaData(nameLength19));\n const type19 = readMetaData(1)[0];\n const value19 = bin2Float(readMetaData(8));\n console.log(type19, name19, value19);\n\n const nameLength20 = getUint8Sum(readMetaData(2));\n const name20 = bin2String(readMetaData(nameLength20));\n const type20 = readMetaData(1)[0];\n const value20 = bin2Float(readMetaData(8));\n console.log(type20, name20, value20);\n\n const nameLength21 = getUint8Sum(readMetaData(2));\n const name21 = bin2String(readMetaData(nameLength21));\n const type21 = readMetaData(1)[0];\n const value21 = bin2Boolean(readMetaData(1)[0]);\n console.log(type21, name21, value21);\n\n const nameLength22 = getUint8Sum(readMetaData(2));\n const name22 = bin2String(readMetaData(nameLength22));\n const type22 = readMetaData(1)[0];\n const value22 = bin2Float(readMetaData(8));\n console.log(type22, name22, value22);\n\n const nameLength23 = getUint8Sum(readMetaData(2));\n const name23 = bin2String(readMetaData(nameLength23));\n const type23 = readMetaData(1)[0];\n const value23 = bin2Float(readMetaData(8));\n console.log(type23, name23, value23);\n\n const nameLength24 = getUint8Sum(readMetaData(2));\n const name24 = bin2String(readMetaData(nameLength24));\n const type24 = readMetaData(1)[0];\n const value24 = bin2Float(readMetaData(8));\n console.log(type24, name24, value24);\n\n const nameLength25 = getUint8Sum(readMetaData(2));\n const name25 = bin2String(readMetaData(nameLength25));\n const type25 = readMetaData(1)[0];\n const value25 = bin2Float(readMetaData(8));\n console.log(type25, name25, value25);\n\n const nameLength26 = getUint8Sum(readMetaData(2));\n const name26 = bin2String(readMetaData(nameLength26));\n const type26 = readMetaData(1)[0];\n console.log(scripTag.body.slice(readMetaData.index));\n console.log(type26, name26);\n\n // while (readMetaData.index < scripTag.body.length) {\n\n // }\n\n metadata.amf1 = amf1;\n metadata.amf2 = amf2;\n return metadata;\n}\n","import fetchStream from './fetchStream';\nimport readFile from './readFile';\nimport getMetaData from './getMetaData';\nimport { mergeTypedArrays, getUint8Sum } from '../utils';\n\nexport default class FlvParse {\n constructor(flv) {\n const { url } = flv.options;\n this.uint8 = new Uint8Array(0);\n this.index = 0;\n this.header = null;\n this.metadata = null;\n this.tags = [];\n this.done = false;\n\n flv.on('flvFetchStart', () => {\n console.log('[flv-fetch-start]');\n });\n\n flv.on('flvFetchCancel', () => {\n console.log('[flv-fetch-cancel]');\n });\n\n flv.on('flvFetchError', error => {\n console.log('[flv-fetch-error]', error);\n });\n\n flv.on('flvFetching', uint8 => {\n this.uint8 = mergeTypedArrays(this.uint8, uint8);\n this.parse();\n });\n\n flv.on('flvFetchEnd', uint8 => {\n console.log('[flv-fetch-end]');\n this.done = true;\n if (uint8) {\n this.uint8 = uint8;\n this.index = 0;\n this.header = null;\n this.metadata = null;\n this.tags = [];\n this.parse();\n }\n this.verify();\n });\n\n if (typeof url === 'string') {\n fetchStream(flv, url);\n } else {\n readFile(flv, url);\n }\n }\n\n parse() {\n if (this.uint8.length >= 13 && !this.header) {\n const header = Object.create(null);\n header.signature = this.read(3);\n header.version = this.read(1);\n header.flags = this.read(1);\n header.headersize = this.read(4);\n this.header = header;\n this.read(4);\n }\n\n while (this.index < this.uint8.length) {\n const tag = Object.create(null);\n tag.tagType = this.read(1);\n tag.dataSize = this.read(3);\n tag.timestamp = this.read(4);\n tag.streamID = this.read(3);\n tag.body = this.read(getUint8Sum(tag.dataSize));\n this.tags.push(tag);\n this.read(4);\n }\n\n if (this.tags.length > 1 && this.tags[0].tagType[0] === 18 && !this.metadata) {\n this.metadata = getMetaData(this.tags[0]);\n }\n }\n\n read(length) {\n const tempUint8 = [];\n for (let i = 0; i < length; i += 1) {\n tempUint8.push(this.uint8[this.index]);\n this.index += 1;\n }\n return tempUint8;\n }\n\n verify() {\n const types = Object.create(null);\n this.tags.forEach(item => {\n const tagType = item.tagType[0];\n if (types[tagType]) {\n types[tagType] += 1;\n } else {\n types[tagType] = 1;\n }\n });\n console.log(this.header);\n console.log(this.metadata);\n console.log(this.tags);\n console.log(types);\n }\n}\n","import Emitter from 'tiny-emitter';\nimport checkSupport from './utils/checkSupport';\nimport EventProxy from './eventProxy';\nimport CreatWorker from './creatWorker';\nimport CreatMediaSource from './creatMediaSource';\nimport FlvParse from './flvParse';\nimport * as utils from './utils';\nimport config from './config';\n\nlet id = 0;\nclass Flv extends Emitter {\n constructor(options) {\n super();\n this.options = Object.assign({}, Flv.DEFAULTS, options);\n checkSupport(this.options);\n this.events = new EventProxy(this);\n this.workers = new CreatWorker(this);\n this.mediaSource = new CreatMediaSource(this);\n this.flvData = new FlvParse(this);\n id += 1;\n this.id = id;\n Flv.instances.push(this);\n }\n\n static get DEFAULTS() {\n return {\n mediaElement: '',\n url: '',\n };\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get utils() {\n return utils;\n }\n\n destroy() {\n this.events.destroy();\n this.workers.killAll();\n Flv.instances.splice(Flv.instances.indexOf(this), 1);\n this.emit('destroy');\n }\n}\n\nObject.defineProperty(Flv, 'instances', {\n value: [],\n});\n\nwindow.Flv = Flv;\nexport default Flv;\n"],"names":["_typeof","E","prototype","on","name","callback","ctx","e","push","fn","once","self","listener","off","apply","arguments","_","emit","data","slice","call","evtArr","i","len","length","evts","liveEvents","FlvError","message","context","Error","captureStackTrace","constructor","errorHandle","condition","msg","mergeTypedArrays","a","b","c","set","sleep","ms","Promise","resolve","setTimeout","getUint8Sum","arr","reduce","totle","num","index","string2Bin","str","result","Number","charCodeAt","toString","bin2String","array","String","fromCharCode","bin2Float","view","DataView","ArrayBuffer","forEach","setUint8","getFloat64","bin2Boolean","bin","readUint8","uint8","read","checkSupport","options","mediaElement","url","HTMLVideoElement","File","type","MP4H264MimeCodec","canPlay","canPlayType","window","MediaSource","isTypeSupported","fetch","Worker","ReadableStream","EventProxy","destroyEvents","proxy","bind","target","option","addEventListener","removeEventListener","event","CreatWorker","workers","Map","has","create","worker","get","args","post","kill","blob","Blob","fnToStr","objectURL","URL","createObjectURL","revokeObjectURL","terminate","reject","onmessage","onerror","error","postMessage","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","CreatMediaSource","flv","creatUrl","eventBind","src","config","eventName","sourceBuffers","activeSourceBuffers","fetchStream","then","response","ok","status","statusText","contentType","headers","includes","Response","start","controller","reader","body","getReader","cancel","done","value","close","Uint8Array","enqueue","catch","readFile","file","console","log","FileReader","buffer","readAsArrayBuffer","getMetaData","scripTag","readMetaData","metadata","Object","amf1","amf2","size","string","metaData","nameLength","valueLength","nameLength2","name2","type2","valueLength2","value2","nameLength3","name3","type3","value3","nameLength4","name4","type4","value4","nameLength5","name5","type5","value5","nameLength6","name6","type6","value6","nameLength7","name7","type7","value7","nameLength8","name8","type8","value8","nameLength9","name9","type9","value9","nameLength10","name10","type10","value10","nameLength11","name11","type11","value11","nameLength12","name12","type12","value12","nameLength13","name13","type13","value13","nameLength14","name14","type14","value14","nameLength15","name15","type15","value15","nameLength16","name16","type16","value16","nameLength17","name17","type17","value17","nameLength18","name18","type18","value18","nameLength19","name19","type19","value19","nameLength20","name20","type20","value20","nameLength21","name21","type21","value21","nameLength22","name22","type22","value22","nameLength23","name23","type23","value23","nameLength24","name24","type24","value24","nameLength25","name25","type25","value25","nameLength26","name26","type26","FlvParse","header","tags","parse","verify","signature","version","flags","headersize","tag","tagType","dataSize","timestamp","streamID","tempUint8","types","item","id","Flv","assign","DEFAULTS","flvData","instances","destroy","killAll","splice","indexOf","utils","Emitter","defineProperty"],"mappings":"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"} \ No newline at end of file diff --git a/packages/artplayer-plugin-flv/src/flvParse/getMetaData.js b/packages/artplayer-plugin-flv/src/flvParse/getMetaData.js new file mode 100644 index 000000000..04eb0c10a --- /dev/null +++ b/packages/artplayer-plugin-flv/src/flvParse/getMetaData.js @@ -0,0 +1,200 @@ +import { getUint8Sum, readUint8, bin2String, bin2Boolean, bin2Float } from '../utils'; + +function getValueLength(type) { + return { + 0: 8, // Number + 1: 1, // Boolean + 2: 200, // String + 3: 1, // Object + 4: 1, // MovieClip + 5: 1, // Null + 6: 1, // Undefined + 7: 1, // Reference + 8: 1, // ECMA array + 9: 1, // Object end marker + 10: 4, // Strict array + 11: 8, // Date + 12: 4, // Long string + }[type]; +} + +export default function getMetaData(scripTag) { + const readMetaData = readUint8(scripTag.body); + const metadata = Object.create(null); + const amf1 = Object.create(null); + const amf2 = Object.create(null); + [amf1.type] = readMetaData(1); + amf1.size = getUint8Sum(readMetaData(2)); + amf1.string = bin2String(readMetaData(amf1.size)); + [amf2.type] = readMetaData(1); + amf2.size = getUint8Sum(readMetaData(4)); + amf2.metaData = Object.create(null); + + console.log(scripTag.body.slice(13)); + + const nameLength = getUint8Sum(readMetaData(2)); + const name = bin2String(readMetaData(nameLength)); + const type = readMetaData(1)[0]; + const valueLength = getUint8Sum(readMetaData(2)); + const value = bin2String(readMetaData(valueLength)); + console.log(type, name, value); + + const nameLength2 = getUint8Sum(readMetaData(2)); + const name2 = bin2String(readMetaData(nameLength2)); + const type2 = readMetaData(1)[0]; + const valueLength2 = getUint8Sum(readMetaData(2)); + const value2 = bin2String(readMetaData(valueLength2)); + console.log(type2, name2, value2); + + const nameLength3 = getUint8Sum(readMetaData(2)); + const name3 = bin2String(readMetaData(nameLength3)); + const type3 = readMetaData(1)[0]; + const value3 = bin2Boolean(readMetaData(1)[0]); + console.log(type3, name3, value3); + + const nameLength4 = getUint8Sum(readMetaData(2)); + const name4 = bin2String(readMetaData(nameLength4)); + const type4 = readMetaData(1)[0]; + const value4 = bin2Boolean(readMetaData(1)[0]); + console.log(type4, name4, value4); + + const nameLength5 = getUint8Sum(readMetaData(2)); + const name5 = bin2String(readMetaData(nameLength5)); + const type5 = readMetaData(1)[0]; + const value5 = bin2Boolean(readMetaData(1)[0]); + console.log(type5, name5, value5); + + const nameLength6 = getUint8Sum(readMetaData(2)); + const name6 = bin2String(readMetaData(nameLength6)); + const type6 = readMetaData(1)[0]; + const value6 = bin2Boolean(readMetaData(1)[0]); + console.log(type6, name6, value6); + + const nameLength7 = getUint8Sum(readMetaData(2)); + const name7 = bin2String(readMetaData(nameLength7)); + const type7 = readMetaData(1)[0]; + const value7 = bin2Boolean(readMetaData(1)[0]); + console.log(type7, name7, value7); + + const nameLength8 = getUint8Sum(readMetaData(2)); + const name8 = bin2String(readMetaData(nameLength8)); + const type8 = readMetaData(1)[0]; + const value8 = bin2Float(readMetaData(8)); + console.log(type8, name8, value8); + + const nameLength9 = getUint8Sum(readMetaData(2)); + const name9 = bin2String(readMetaData(nameLength9)); + const type9 = readMetaData(1)[0]; + const value9 = bin2Float(readMetaData(8)); + console.log(type9, name9, value9); + + const nameLength10 = getUint8Sum(readMetaData(2)); + const name10 = bin2String(readMetaData(nameLength10)); + const type10 = readMetaData(1)[0]; + const value10 = bin2Float(readMetaData(8)); + console.log(type10, name10, value10); + + const nameLength11 = getUint8Sum(readMetaData(2)); + const name11 = bin2String(readMetaData(nameLength11)); + const type11 = readMetaData(1)[0]; + const value11 = bin2Float(readMetaData(8)); + console.log(type11, name11, value11); + + const nameLength12 = getUint8Sum(readMetaData(2)); + const name12 = bin2String(readMetaData(nameLength12)); + const type12 = readMetaData(1)[0]; + const value12 = bin2Float(readMetaData(8)); + console.log(type12, name12, value12); + + const nameLength13 = getUint8Sum(readMetaData(2)); + const name13 = bin2String(readMetaData(nameLength13)); + const type13 = readMetaData(1)[0]; + const value13 = bin2Float(readMetaData(8)); + console.log(type13, name13, value13); + + const nameLength14 = getUint8Sum(readMetaData(2)); + const name14 = bin2String(readMetaData(nameLength14)); + const type14 = readMetaData(1)[0]; + const value14 = bin2Float(readMetaData(8)); + console.log(type14, name14, value14); + + const nameLength15 = getUint8Sum(readMetaData(2)); + const name15 = bin2String(readMetaData(nameLength15)); + const type15 = readMetaData(1)[0]; + const value15 = bin2Float(readMetaData(8)); + console.log(type15, name15, value15); + + const nameLength16 = getUint8Sum(readMetaData(2)); + const name16 = bin2String(readMetaData(nameLength16)); + const type16 = readMetaData(1)[0]; + const value16 = bin2Float(readMetaData(8)); + console.log(type16, name16, value16); + + const nameLength17 = getUint8Sum(readMetaData(2)); + const name17 = bin2String(readMetaData(nameLength17)); + const type17 = readMetaData(1)[0]; + const value17 = bin2Float(readMetaData(8)); + console.log(type17, name17, value17); + + const nameLength18 = getUint8Sum(readMetaData(2)); + const name18 = bin2String(readMetaData(nameLength18)); + const type18 = readMetaData(1)[0]; + const value18 = bin2Float(readMetaData(8)); + console.log(type18, name18, value18); + + const nameLength19 = getUint8Sum(readMetaData(2)); + const name19 = bin2String(readMetaData(nameLength19)); + const type19 = readMetaData(1)[0]; + const value19 = bin2Float(readMetaData(8)); + console.log(type19, name19, value19); + + const nameLength20 = getUint8Sum(readMetaData(2)); + const name20 = bin2String(readMetaData(nameLength20)); + const type20 = readMetaData(1)[0]; + const value20 = bin2Float(readMetaData(8)); + console.log(type20, name20, value20); + + const nameLength21 = getUint8Sum(readMetaData(2)); + const name21 = bin2String(readMetaData(nameLength21)); + const type21 = readMetaData(1)[0]; + const value21 = bin2Boolean(readMetaData(1)[0]); + console.log(type21, name21, value21); + + const nameLength22 = getUint8Sum(readMetaData(2)); + const name22 = bin2String(readMetaData(nameLength22)); + const type22 = readMetaData(1)[0]; + const value22 = bin2Float(readMetaData(8)); + console.log(type22, name22, value22); + + const nameLength23 = getUint8Sum(readMetaData(2)); + const name23 = bin2String(readMetaData(nameLength23)); + const type23 = readMetaData(1)[0]; + const value23 = bin2Float(readMetaData(8)); + console.log(type23, name23, value23); + + const nameLength24 = getUint8Sum(readMetaData(2)); + const name24 = bin2String(readMetaData(nameLength24)); + const type24 = readMetaData(1)[0]; + const value24 = bin2Float(readMetaData(8)); + console.log(type24, name24, value24); + + const nameLength25 = getUint8Sum(readMetaData(2)); + const name25 = bin2String(readMetaData(nameLength25)); + const type25 = readMetaData(1)[0]; + const value25 = bin2Float(readMetaData(8)); + console.log(type25, name25, value25); + + const nameLength26 = getUint8Sum(readMetaData(2)); + const name26 = bin2String(readMetaData(nameLength26)); + const type26 = readMetaData(1)[0]; + console.log(scripTag.body.slice(readMetaData.index)); + console.log(type26, name26); + + // while (readMetaData.index < scripTag.body.length) { + + // } + + metadata.amf1 = amf1; + metadata.amf2 = amf2; + return metadata; +} diff --git a/packages/artplayer-plugin-flv/src/flvParse/index.js b/packages/artplayer-plugin-flv/src/flvParse/index.js index 5156bbc8c..71c7fc536 100644 --- a/packages/artplayer-plugin-flv/src/flvParse/index.js +++ b/packages/artplayer-plugin-flv/src/flvParse/index.js @@ -1,5 +1,6 @@ import fetchStream from './fetchStream'; import readFile from './readFile'; +import getMetaData from './getMetaData'; import { mergeTypedArrays, getUint8Sum } from '../utils'; export default class FlvParse { @@ -8,6 +9,7 @@ export default class FlvParse { this.uint8 = new Uint8Array(0); this.index = 0; this.header = null; + this.metadata = null; this.tags = []; this.done = false; @@ -35,6 +37,7 @@ export default class FlvParse { this.uint8 = uint8; this.index = 0; this.header = null; + this.metadata = null; this.tags = []; this.parse(); } @@ -69,6 +72,10 @@ export default class FlvParse { this.tags.push(tag); this.read(4); } + + if (this.tags.length > 1 && this.tags[0].tagType[0] === 18 && !this.metadata) { + this.metadata = getMetaData(this.tags[0]); + } } read(length) { @@ -91,6 +98,7 @@ export default class FlvParse { } }); console.log(this.header); + console.log(this.metadata); console.log(this.tags); console.log(types); } diff --git a/packages/artplayer-plugin-flv/src/flvParse/readFile.js b/packages/artplayer-plugin-flv/src/flvParse/readFile.js index d7ddbcc39..0fe6a77d8 100644 --- a/packages/artplayer-plugin-flv/src/flvParse/readFile.js +++ b/packages/artplayer-plugin-flv/src/flvParse/readFile.js @@ -1,4 +1,5 @@ export default function readFile(flv, file) { + console.log(file); flv.emit('flvFetchStart'); const { proxy } = flv.events; const reader = new FileReader(); diff --git a/packages/artplayer-plugin-flv/src/utils/index.js b/packages/artplayer-plugin-flv/src/utils/index.js index 744422dde..d3f01006a 100644 --- a/packages/artplayer-plugin-flv/src/utils/index.js +++ b/packages/artplayer-plugin-flv/src/utils/index.js @@ -28,3 +28,40 @@ export function sleep(ms = 0) { export function getUint8Sum(arr) { return arr.reduce((totle, num, index) => totle + num * 256 ** (arr.length - index - 1), 0); } + +export function string2Bin(str) { + const result = []; + for (let i = 0; i < str.length; i += 1) { + result.push(Number(str.charCodeAt(i).toString(10))); + } + return result; +} + +export function bin2String(array) { + return String.fromCharCode.call(String, ...array); +} + +export function bin2Float(array) { + const view = new DataView(new ArrayBuffer(array.length)); + array.forEach((b, i) => { + view.setUint8(i, b); + }); + return view.getFloat64(0); +} + +export function bin2Boolean(bin) { + return bin === 1; +} + +export function readUint8(uint8) { + let index = 0; + return function read(length) { + const result = []; + for (let i = 0; i < length; i += 1) { + result.push(uint8[index]); + index += 1; + } + read.index = index; + return result; + }; +}