gemercheung 3 anos atrás
pai
commit
783d9d25ca
100 arquivos alterados com 2422 adições e 14 exclusões
  1. 6 0
      dist/index.css
  2. 657 0
      dist/js/video.js
  3. 1 0
      dist/js/video.js.map
  4. 1371 0
      dist/libs/decoder copy.js
  5. 1 0
      dist/libs/decoder.js
  6. 217 0
      dist/texture.html
  7. BIN
      dist/video/0
  8. BIN
      dist/video/0_1_0.mp4
  9. BIN
      dist/video/264/0
  10. BIN
      dist/video/264/1
  11. BIN
      dist/video/264/1.jpg
  12. BIN
      dist/video/264/10
  13. BIN
      dist/video/264/10.jpg
  14. BIN
      dist/video/264/11
  15. BIN
      dist/video/264/11.jpg
  16. BIN
      dist/video/264/12
  17. BIN
      dist/video/264/12.jpg
  18. BIN
      dist/video/264/13
  19. BIN
      dist/video/264/13.jpg
  20. BIN
      dist/video/264/14
  21. BIN
      dist/video/264/14.jpg
  22. BIN
      dist/video/264/15
  23. BIN
      dist/video/264/15.jpg
  24. BIN
      dist/video/264/16
  25. BIN
      dist/video/264/16.jpg
  26. BIN
      dist/video/264/17
  27. BIN
      dist/video/264/17.jpg
  28. BIN
      dist/video/264/18
  29. BIN
      dist/video/264/18.jpg
  30. BIN
      dist/video/264/19
  31. BIN
      dist/video/264/19.jpg
  32. BIN
      dist/video/264/2
  33. BIN
      dist/video/264/2.jpg
  34. BIN
      dist/video/264/20
  35. BIN
      dist/video/264/20.jpg
  36. BIN
      dist/video/264/21
  37. BIN
      dist/video/264/21.jpg
  38. BIN
      dist/video/264/22
  39. BIN
      dist/video/264/22.jpg
  40. BIN
      dist/video/264/23
  41. BIN
      dist/video/264/23.jpg
  42. BIN
      dist/video/264/24
  43. BIN
      dist/video/264/24.jpg
  44. BIN
      dist/video/264/25
  45. BIN
      dist/video/264/25.jpg
  46. BIN
      dist/video/264/26
  47. BIN
      dist/video/264/26.jpg
  48. BIN
      dist/video/264/27
  49. BIN
      dist/video/264/27.jpg
  50. BIN
      dist/video/264/28
  51. BIN
      dist/video/264/28.jpg
  52. BIN
      dist/video/264/29
  53. BIN
      dist/video/264/29.jpg
  54. BIN
      dist/video/264/3
  55. BIN
      dist/video/264/3.jpg
  56. BIN
      dist/video/264/30
  57. BIN
      dist/video/264/30.jpg
  58. BIN
      dist/video/264/31
  59. BIN
      dist/video/264/31.jpg
  60. BIN
      dist/video/264/32
  61. BIN
      dist/video/264/32.jpg
  62. BIN
      dist/video/264/33
  63. BIN
      dist/video/264/33.jpg
  64. BIN
      dist/video/264/34
  65. BIN
      dist/video/264/34.jpg
  66. BIN
      dist/video/264/35
  67. BIN
      dist/video/264/35.jpg
  68. BIN
      dist/video/264/36
  69. BIN
      dist/video/264/36.jpg
  70. BIN
      dist/video/264/37
  71. BIN
      dist/video/264/37.jpg
  72. BIN
      dist/video/264/38
  73. BIN
      dist/video/264/38.jpg
  74. BIN
      dist/video/264/39
  75. BIN
      dist/video/264/39.jpg
  76. BIN
      dist/video/264/4
  77. BIN
      dist/video/264/4.jpg
  78. BIN
      dist/video/264/40
  79. BIN
      dist/video/264/40.jpg
  80. BIN
      dist/video/264/41
  81. BIN
      dist/video/264/41.jpg
  82. BIN
      dist/video/264/42
  83. BIN
      dist/video/264/42.jpg
  84. BIN
      dist/video/264/5
  85. BIN
      dist/video/264/5.jpg
  86. BIN
      dist/video/264/6
  87. BIN
      dist/video/264/6.jpg
  88. BIN
      dist/video/264/7
  89. BIN
      dist/video/264/7.jpg
  90. BIN
      dist/video/264/8
  91. BIN
      dist/video/264/8.jpg
  92. BIN
      dist/video/264/9
  93. BIN
      dist/video/264/9.jpg
  94. 1 0
      dist/video/out.yuv
  95. BIN
      dist/video/test.h264
  96. BIN
      dist/video/tt.mp4
  97. 90 11
      package-lock.json
  98. 8 3
      package.json
  99. 70 0
      rollup.config.ba.js
  100. 0 0
      rollup.config.js

+ 6 - 0
dist/index.css

@@ -9,3 +9,9 @@ body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxyge
     top:0;
     left:0;
 } */
+#test_canvas{
+    position: fixed;
+    top:0;
+    left: 0;
+    z-index: 100;
+}

Diferenças do arquivo suprimidas por serem muito extensas
+ 657 - 0
dist/js/video.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
dist/js/video.js.map


Diferenças do arquivo suprimidas por serem muito extensas
+ 1371 - 0
dist/libs/decoder copy.js


+ 1 - 0
dist/libs/decoder.js

@@ -1052,6 +1052,7 @@ if ('function' === typeof importScripts) {
   }
 
   Decoder.prototype.decodeFrame = function (data) {
+   // printConsole.log('decodeFrame'+JSON.stringify(data))
     var content = data.media
     if (typeof content == 'undefined') {
       printConsole.error('null content in decoder', '5999')

+ 217 - 0
dist/texture.html

@@ -0,0 +1,217 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+        <title>Babylon.js sample code</title>
+
+        <!-- Babylon.js -->
+    <!-- Babylon.js -->
+    <script src="./libs/jquery-1.10.2.min.js"></script>
+    <script src="./libs/dat.gui.min.js"></script>
+    <script src="./libs/ammo.js"></script>
+    <script src="./libs/cannon.js"></script>
+    <script src="./libs/Oimo.js"></script>
+    <script src="./libs/earcut.min.js"></script>
+    <script src="./libs/recast.js"></script>
+
+    <script src="./libs/babylon.js"></script>
+    <script src="./libs/babylonjs.materials.min.js"></script>
+    <script src="./libs/babylonjs.proceduralTextures.min.js"></script>
+    <script src="./libs/babylonjs.postProcess.min.js"></script>
+    <script src="./libs/babylonjs.loaders.js"></script>
+    <script src="./libs/babylonjs.serializers.min.js"></script>
+    <script src="./libs/babylon.gui.min.js"></script>
+    <script src="./libs/babylon.inspector.bundle.js"></script>
+        <script src="js/video.js"></script>
+        <style>
+            html, body {
+                overflow: hidden;
+                width: 100%;
+                height: 100%;
+                margin: 0;
+                padding: 0;
+            }
+
+            #renderCanvas {
+                width: 100%;
+                height: 100%;
+                touch-action: none;
+            }
+        </style>
+    </head>
+<body>
+    <canvas id="renderCanvas"></canvas>
+    <script>
+        var canvas = document.getElementById("renderCanvas");
+
+        var startRenderLoop = function (engine, canvas) {
+            engine.runRenderLoop(function () {
+                if (sceneToRender && sceneToRender.activeCamera) {
+                    sceneToRender.render();
+                }
+            });
+        }
+
+        var engine = null;
+        var scene = null;
+        var sceneToRender = null;
+        var createDefaultEngine = function() { return new BABYLON.Engine(canvas, true, { preserveDrawingBuffer: true, stencil: true,  disableWebGL2Support: false}); };
+        var createScene = function () {
+    // This creates a basic Babylon Scene object (non-mesh)
+    var scene = new BABYLON.Scene(engine);
+
+    scene.debugLayer.show({embedMode: true})
+
+    // This creates and positions a free camera (non-mesh)
+    var camera = new BABYLON.FreeCamera("camera1", new BABYLON.Vector3(0, 5, -10), scene);
+
+    // This targets the camera to scene origin
+    camera.setTarget(BABYLON.Vector3.Zero());
+
+    // This attaches the camera to the canvas
+    camera.attachControl(canvas, true);
+
+    // This creates a light, aiming 0,1,0 - to the sky (non-mesh)
+    var light = new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene);
+
+    // Default intensity is 1. Let's dim the light a small amount
+    light.intensity = 0.7;
+
+    // Our built-in 'ground' shape.
+    var ground = BABYLON.MeshBuilder.CreateGround("ground", {width: 6, height: 6}, scene);
+
+
+
+
+BABYLON.Effect.ShadersStore['customVertexShader'] = `
+precision highp float; 
+attribute vec2 uv;
+attribute vec3 position;
+
+varying vec2 vUV;
+ 
+uniform mat4 view;
+uniform mat4 projection; 
+uniform mat4 world;
+uniform mat4 worldViewProjection;
+void main()
+{ 
+    vUV = uv;
+    gl_Position = projection * view * world * vec4(position , 1.0); 
+}
+`;
+
+
+BABYLON.Effect.ShadersStore["customFragmentShader"]=`
+    precision highp float;
+ 
+varying vec2 vUV;
+uniform sampler2D chrominanceYTexture;
+
+void main()
+{    
+    vec2 uv = vUV;
+    vec3 color = vec3(0,0,0);
+
+    color = texture2D(chrominanceYTexture, uv).rgb;     
+
+    gl_FragColor = vec4( color, 1.0); 
+}
+
+
+`;
+
+
+    var width=512;
+    var height=1024;
+    window._videoRawYTexture = BABYLON.RawTexture.CreateLuminanceTexture(
+          null,
+          width,
+          height,
+          scene,
+          true,
+          true,
+        )
+
+    /*
+    var selfShader = new BABYLON.ShaderMaterial(
+      'customShader',
+      scene,
+      { 
+        vertex: "custom",
+        fragment: "custom",
+      },
+      {
+        attributes: ['uv', 'position'],
+        uniforms: ['view', 'projection', 'worldViewProjection', 'world'],
+      },
+    )
+    
+    selfShader.setTexture('chrominanceYTexture', _videoRawYTexture)
+*/
+
+    var selfShader = new BABYLON.StandardMaterial("xsttest",this.scene);
+    selfShader.diffuseTexture = window._videoRawYTexture
+    ground.material = selfShader
+    return scene;
+};
+
+
+window.generateRandomArray = ()=>{
+      var rnd=[];
+        for(let i=0;i< 512*1024;i++)
+        {
+            rnd[i] = Math.floor(Math.random()*255);
+        }
+        return rnd;
+}
+
+window.updateTexture = (yuv)=>
+{
+        let Y = yuv.subarray(0, 512*1024);
+        window._videoRawYTexture.update(Y)
+        window._videoRawYTexture.updateSamplingMode(BABYLON.Texture.BILINEAR_SAMPLINGMODE)
+        Y = undefined;
+}
+
+window.changeTexture = (data)=>{ 
+        for(let i=0;i< 512*1024;i++)
+        {
+            data[i] = Math.floor(Math.random()*255);
+        }
+        return data;
+}
+
+window.data = new Uint8Array(window.generateRandomArray());
+// start 
+// window.setInterval( ()=>{ 
+//     data = window.changeTexture(data);
+//     window.updateTexture( data );
+// }, 60);
+                window.initFunction = async function() {
+                    
+                    
+                    var asyncEngineCreation = async function() {
+                        try {
+                        return createDefaultEngine();
+                        } catch(e) {
+                        console.log("the available createEngine function failed. Creating the default engine instead");
+                        return createDefaultEngine();
+                        }
+                    }
+
+                    window.engine = await asyncEngineCreation();
+        if (!engine) throw 'engine should not be null.';
+        startRenderLoop(engine, canvas);
+        window.scene = createScene();};
+        initFunction().then(() => {sceneToRender = scene                    
+        });
+
+        // Resize
+        window.addEventListener("resize", function () {
+            engine.resize();
+        });
+    </script>
+</body>
+</html>

BIN
dist/video/0


BIN
dist/video/0_1_0.mp4


BIN
dist/video/264/0


BIN
dist/video/264/1


BIN
dist/video/264/1.jpg


BIN
dist/video/264/10


BIN
dist/video/264/10.jpg


BIN
dist/video/264/11


BIN
dist/video/264/11.jpg


BIN
dist/video/264/12


BIN
dist/video/264/12.jpg


BIN
dist/video/264/13


BIN
dist/video/264/13.jpg


BIN
dist/video/264/14


BIN
dist/video/264/14.jpg


BIN
dist/video/264/15


BIN
dist/video/264/15.jpg


BIN
dist/video/264/16


BIN
dist/video/264/16.jpg


BIN
dist/video/264/17


BIN
dist/video/264/17.jpg


BIN
dist/video/264/18


BIN
dist/video/264/18.jpg


BIN
dist/video/264/19


BIN
dist/video/264/19.jpg


BIN
dist/video/264/2


BIN
dist/video/264/2.jpg


BIN
dist/video/264/20


BIN
dist/video/264/20.jpg


BIN
dist/video/264/21


BIN
dist/video/264/21.jpg


BIN
dist/video/264/22


BIN
dist/video/264/22.jpg


BIN
dist/video/264/23


BIN
dist/video/264/23.jpg


BIN
dist/video/264/24


BIN
dist/video/264/24.jpg


BIN
dist/video/264/25


BIN
dist/video/264/25.jpg


BIN
dist/video/264/26


BIN
dist/video/264/26.jpg


BIN
dist/video/264/27


BIN
dist/video/264/27.jpg


BIN
dist/video/264/28


BIN
dist/video/264/28.jpg


BIN
dist/video/264/29


BIN
dist/video/264/29.jpg


BIN
dist/video/264/3


BIN
dist/video/264/3.jpg


BIN
dist/video/264/30


BIN
dist/video/264/30.jpg


BIN
dist/video/264/31


BIN
dist/video/264/31.jpg


BIN
dist/video/264/32


BIN
dist/video/264/32.jpg


BIN
dist/video/264/33


BIN
dist/video/264/33.jpg


BIN
dist/video/264/34


BIN
dist/video/264/34.jpg


BIN
dist/video/264/35


BIN
dist/video/264/35.jpg


BIN
dist/video/264/36


BIN
dist/video/264/36.jpg


BIN
dist/video/264/37


BIN
dist/video/264/37.jpg


BIN
dist/video/264/38


BIN
dist/video/264/38.jpg


BIN
dist/video/264/39


BIN
dist/video/264/39.jpg


BIN
dist/video/264/4


BIN
dist/video/264/4.jpg


BIN
dist/video/264/40


BIN
dist/video/264/40.jpg


BIN
dist/video/264/41


BIN
dist/video/264/41.jpg


BIN
dist/video/264/42


BIN
dist/video/264/42.jpg


BIN
dist/video/264/5


BIN
dist/video/264/5.jpg


BIN
dist/video/264/6


BIN
dist/video/264/6.jpg


BIN
dist/video/264/7


BIN
dist/video/264/7.jpg


BIN
dist/video/264/8


BIN
dist/video/264/8.jpg


BIN
dist/video/264/9


BIN
dist/video/264/9.jpg


Diferenças do arquivo suprimidas por serem muito extensas
+ 1 - 0
dist/video/out.yuv


BIN
dist/video/test.h264


BIN
dist/video/tt.mp4


+ 90 - 11
package-lock.json

@@ -9,7 +9,10 @@
       "version": "4.0.37",
       "license": "GLP",
       "dependencies": {
-        "axios": "^0.26.1"
+        "axios": "^0.26.1",
+        "buffer": "^5.2.1",
+        "eventemitter3": "^3.1.0",
+        "tinyh264": "^0.0.7"
       },
       "devDependencies": {
         "@babel/core": "^7.13.14",
@@ -33,7 +36,8 @@
         "minimist": "^1.2.5",
         "npm-run-all": "^4.1.5",
         "rollup": "^2.44.0",
-        "rollup-plugin-terser": "^7.0.2"
+        "rollup-plugin-terser": "^7.0.2",
+        "rollup-plugin-web-worker-loader": "^1.6.1"
       }
     },
     "node_modules/@ampproject/remapping": {
@@ -2185,6 +2189,11 @@
       "dev": true,
       "license": "MIT"
     },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+    },
     "node_modules/basic-auth": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -2430,6 +2439,15 @@
         "node": ">=4"
       }
     },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -2770,11 +2788,9 @@
       }
     },
     "node_modules/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true,
-      "license": "MIT"
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-3.1.2.tgz",
+      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
     },
     "node_modules/execa": {
       "version": "5.1.1",
@@ -3048,6 +3064,12 @@
         "node": ">=8.0.0"
       }
     },
+    "node_modules/http-proxy/node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
     "node_modules/http-server": {
       "version": "14.1.0",
       "resolved": "https://registry.npmmirror.com/http-server/-/http-server-14.1.0.tgz",
@@ -3099,6 +3121,11 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+    },
     "node_modules/inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
@@ -4122,6 +4149,15 @@
         "rollup": "^2.0.0"
       }
     },
+    "node_modules/rollup-plugin-web-worker-loader": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmmirror.com/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.6.1.tgz",
+      "integrity": "sha512-4QywQSz1NXFHKdyiou16mH3ijpcfLtLGOrAqvAqu1Gx+P8+zj+3gwC2BSL/VW1d+LW4nIHC8F7d7OXhs9UdR2A==",
+      "dev": true,
+      "peerDependencies": {
+        "rollup": "^1.9.2 || ^2.0.0"
+      }
+    },
     "node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -4433,6 +4469,11 @@
         "node": ">= 8"
       }
     },
+    "node_modules/tinyh264": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmmirror.com/tinyh264/-/tinyh264-0.0.7.tgz",
+      "integrity": "sha512-etkBRgYkSFBdAi2Cqk4sZgi+xWs/vhzNgvjO3z2i4WILeEmORiNqxuQ4URJatrWQ9LPNV3WPWAtzsh/LA/XL/g=="
+    },
     "node_modules/to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -6016,6 +6057,11 @@
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
       "dev": true
     },
+    "base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+    },
     "basic-auth": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/basic-auth/-/basic-auth-2.0.1.tgz",
@@ -6187,6 +6233,15 @@
         }
       }
     },
+    "buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "requires": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
     "buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -6417,10 +6472,9 @@
       "dev": true
     },
     "eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-3.1.2.tgz",
+      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="
     },
     "execa": {
       "version": "5.1.1",
@@ -6588,6 +6642,14 @@
         "eventemitter3": "^4.0.0",
         "follow-redirects": "^1.0.0",
         "requires-port": "^1.0.0"
+      },
+      "dependencies": {
+        "eventemitter3": {
+          "version": "4.0.7",
+          "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+          "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+          "dev": true
+        }
       }
     },
     "http-server": {
@@ -6626,6 +6688,11 @@
         "safer-buffer": ">= 2.1.2 < 3.0.0"
       }
     },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+    },
     "inflight": {
       "version": "1.0.6",
       "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
@@ -7336,6 +7403,13 @@
         "terser": "^5.0.0"
       }
     },
+    "rollup-plugin-web-worker-loader": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmmirror.com/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.6.1.tgz",
+      "integrity": "sha512-4QywQSz1NXFHKdyiou16mH3ijpcfLtLGOrAqvAqu1Gx+P8+zj+3gwC2BSL/VW1d+LW4nIHC8F7d7OXhs9UdR2A==",
+      "dev": true,
+      "requires": {}
+    },
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -7559,6 +7633,11 @@
         }
       }
     },
+    "tinyh264": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmmirror.com/tinyh264/-/tinyh264-0.0.7.tgz",
+      "integrity": "sha512-etkBRgYkSFBdAi2Cqk4sZgi+xWs/vhzNgvjO3z2i4WILeEmORiNqxuQ4URJatrWQ9LPNV3WPWAtzsh/LA/XL/g=="
+    },
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",

+ 8 - 3
package.json

@@ -13,10 +13,14 @@
     "dev": "node --no-warnings ./scripts/build.js",
     "build": "node --no-warnings ./scripts/build.js --env=production",
     "serve": "http-server ./dist -p 8088 -c 0 -P http://192.168.0.47 --cors",
-    "start": "npm-run-all --parallel serve dev"
+    "start": "npm-run-all --parallel serve dev",
+    "ba":"rollup -c rollup.config.ba.js --environment development && npm run serve"
   },
   "dependencies": {
-    "axios": "^0.26.1"
+    "axios": "^0.26.1",
+    "tinyh264": "^0.0.7",
+    "buffer": "^5.2.1",
+    "eventemitter3": "^3.1.0"
   },
   "devDependencies": {
     "@babel/core": "^7.13.14",
@@ -40,7 +44,8 @@
     "minimist": "^1.2.5",
     "npm-run-all": "^4.1.5",
     "rollup": "^2.44.0",
-    "rollup-plugin-terser": "^7.0.2"
+    "rollup-plugin-terser": "^7.0.2",
+    "rollup-plugin-web-worker-loader": "^1.6.1"
   },
   "browserslist": [
     "iOS 9"

+ 70 - 0
rollup.config.ba.js

@@ -0,0 +1,70 @@
+import path from 'path'
+import replace from '@rollup/plugin-replace'
+import resolveNode from '@rollup/plugin-node-resolve'
+import commonjs from '@rollup/plugin-commonjs'
+import babel from '@rollup/plugin-babel'
+import babelEnvConfig from './babel.env.config'
+import { terser } from 'rollup-plugin-terser'
+import webWorkerLoader from 'rollup-plugin-web-worker-loader';
+
+
+const pkg = require(`./package.json`)
+const version = pkg.version
+
+const isProd = process.env.NODE_ENV === 'production'
+const dist = file => path.resolve('dist/js/' + file)
+
+function createReplacePlugin() {
+    const replacements = {
+        __COMMIT__: `"${process.env.COMMIT}"`,
+        __VERSION__: `"${version}"`,
+        __ENV__: `"${process.env.NODE_ENV}"`,
+        __PROD__: isProd,
+        __DEV__: !isProd,
+    }
+    Object.keys(replacements).forEach(key => {
+        if (key in process.env) {
+            replacements[key] = process.env[key]
+        }
+    })
+    return replace({
+        values: replacements,
+        preventAssignment: true,
+    })
+}
+
+const sdk_plugins = [
+    resolveNode({
+        mainFields: ['jsnext', 'main'],
+        preferBuiltins: true,
+        browser: true,
+    }),
+    babel(babelEnvConfig()),
+    commonjs(),
+    createReplacePlugin(),
+    webWorkerLoader(/* configuration */),
+]
+
+if (isProd) {
+    sdk_plugins.push(terser())
+}
+
+export default [
+    {
+        input: 'src/video/index.js',
+        //external: ['three'],
+        output: [
+            {
+                globals: {
+                   // three: 'THREE',
+                },
+                file: dist('video.js'),
+                format: 'umd',
+                name: 'Metaverse',
+                sourcemap: !isProd,
+                banner: pkg.banner.replace('${date}', new Date().toLocaleDateString()).replace('${author}', pkg.author).replace('${year}', new Date().getFullYear()),
+            },
+        ],
+        plugins: sdk_plugins,
+    },
+]

+ 0 - 0
rollup.config.js


Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff