@besovideo/webrtc-player 0.8.34 → 0.8.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.es.js CHANGED
@@ -1,4 +1,4 @@
1
- var kC=Object.defineProperty,xi=Object.defineProperties,Wi=Object.getOwnPropertyDescriptor,Zi=Object.getOwnPropertyDescriptors;var NC=Object.getOwnPropertySymbols;var ui=Object.prototype.hasOwnProperty,Vi=Object.prototype.propertyIsEnumerable;var tC=(A,g,I)=>g in A?kC(A,g,{enumerable:!0,configurable:!0,writable:!0,value:I}):A[g]=I,oA=(A,g)=>{for(var I in g||(g={}))ui.call(g,I)&&tC(A,I,g[I]);if(NC)for(var I of NC(g))Vi.call(g,I)&&tC(A,I,g[I]);return A},SI=(A,g)=>xi(A,Zi(g));var vI=(A,g,I,B)=>{for(var Q=B>1?void 0:B?Wi(g,I):g,C=A.length-1,E;C>=0;C--)(E=A[C])&&(Q=(B?E(g,I,Q):E(Q))||Q);return B&&Q&&kC(g,I,Q),Q};var HB=(A,g,I)=>{if(!g.has(A))throw TypeError("Cannot "+I)};var HA=(A,g,I)=>(HB(A,g,"read from private field"),I?I.call(A):g.get(A)),HI=(A,g,I)=>{if(g.has(A))throw TypeError("Cannot add the same private member more than once");g instanceof WeakSet?g.add(A):g.set(A,I)},qB=(A,g,I,B)=>(HB(A,g,"write to private field"),B?B.call(A,I):g.set(A,I),I);var KB=(A,g,I)=>(HB(A,g,"access private method"),I);var q=(A,g,I)=>new Promise((B,Q)=>{var C=D=>{try{i(I.next(D))}catch(a){Q(a)}},E=D=>{try{i(I.throw(D))}catch(a){Q(a)}},i=D=>D.done?B(D.value):Promise.resolve(D.value).then(C,E);i((I=I.apply(A,g)).next())});var F={NODE_ENV:"production",SH_LIB_NAME:"@besovideo/webrtc-player",SH_LIB_VERSION:"0.8.32",PROJECT_NAMESPACE:"bvplayer"};var vi=Object.defineProperty,Xi=Object.defineProperties,Pi=Object.getOwnPropertyDescriptors,cC=Object.getOwnPropertySymbols,Ti=Object.prototype.hasOwnProperty,zi=Object.prototype.propertyIsEnumerable,hC=(A,g,I)=>g in A?vi(A,g,{enumerable:!0,configurable:!0,writable:!0,value:I}):A[g]=I,Sg=(A,g)=>{for(var I in g||(g={}))Ti.call(g,I)&&hC(A,I,g[I]);if(cC)for(var I of cC(g))zi.call(g,I)&&hC(A,I,g[I]);return A},ji=(A,g)=>Xi(A,Pi(g)),qA;(function(A){A.red="#e72528",A.blue="#2a79af",A.weakBlue="#6eb6f4",A.geekblue="#85a5ff",A.gold="#ffd666",A.orange="#ffa940",A.cyan="#13c2c2",A.green="#52c41a",A.volcano="#fa541c",A.lime="#389e0d",A.pink="#eb2f96",A.purple="#722ed1",A.darkPurple="#292F4C",A.gray="#8c8c8c"})(qA||(qA={}));var dC=class{constructor(){this.colors=qA,this.shapes={slider:new eC}}},eC=class{constructor(){}title(A=""){return Fg`
1
+ var kC=Object.defineProperty,xi=Object.defineProperties,Wi=Object.getOwnPropertyDescriptor,Zi=Object.getOwnPropertyDescriptors;var NC=Object.getOwnPropertySymbols;var ui=Object.prototype.hasOwnProperty,Vi=Object.prototype.propertyIsEnumerable;var tC=(A,g,I)=>g in A?kC(A,g,{enumerable:!0,configurable:!0,writable:!0,value:I}):A[g]=I,oA=(A,g)=>{for(var I in g||(g={}))ui.call(g,I)&&tC(A,I,g[I]);if(NC)for(var I of NC(g))Vi.call(g,I)&&tC(A,I,g[I]);return A},SI=(A,g)=>xi(A,Zi(g));var vI=(A,g,I,B)=>{for(var Q=B>1?void 0:B?Wi(g,I):g,C=A.length-1,E;C>=0;C--)(E=A[C])&&(Q=(B?E(g,I,Q):E(Q))||Q);return B&&Q&&kC(g,I,Q),Q};var HB=(A,g,I)=>{if(!g.has(A))throw TypeError("Cannot "+I)};var HA=(A,g,I)=>(HB(A,g,"read from private field"),I?I.call(A):g.get(A)),HI=(A,g,I)=>{if(g.has(A))throw TypeError("Cannot add the same private member more than once");g instanceof WeakSet?g.add(A):g.set(A,I)},qB=(A,g,I,B)=>(HB(A,g,"write to private field"),B?B.call(A,I):g.set(A,I),I);var KB=(A,g,I)=>(HB(A,g,"access private method"),I);var q=(A,g,I)=>new Promise((B,Q)=>{var C=D=>{try{i(I.next(D))}catch(a){Q(a)}},E=D=>{try{i(I.throw(D))}catch(a){Q(a)}},i=D=>D.done?B(D.value):Promise.resolve(D.value).then(C,E);i((I=I.apply(A,g)).next())});var F={NODE_ENV:"production",SH_LIB_NAME:"@besovideo/webrtc-player",SH_LIB_VERSION:"0.8.34",PROJECT_NAMESPACE:"bvplayer"};var vi=Object.defineProperty,Xi=Object.defineProperties,Pi=Object.getOwnPropertyDescriptors,cC=Object.getOwnPropertySymbols,Ti=Object.prototype.hasOwnProperty,zi=Object.prototype.propertyIsEnumerable,hC=(A,g,I)=>g in A?vi(A,g,{enumerable:!0,configurable:!0,writable:!0,value:I}):A[g]=I,Sg=(A,g)=>{for(var I in g||(g={}))Ti.call(g,I)&&hC(A,I,g[I]);if(cC)for(var I of cC(g))zi.call(g,I)&&hC(A,I,g[I]);return A},ji=(A,g)=>Xi(A,Pi(g)),qA;(function(A){A.red="#e72528",A.blue="#2a79af",A.weakBlue="#6eb6f4",A.geekblue="#85a5ff",A.gold="#ffd666",A.orange="#ffa940",A.cyan="#13c2c2",A.green="#52c41a",A.volcano="#fa541c",A.lime="#389e0d",A.pink="#eb2f96",A.purple="#722ed1",A.darkPurple="#292F4C",A.gray="#8c8c8c"})(qA||(qA={}));var dC=class{constructor(){this.colors=qA,this.shapes={slider:new eC}}},eC=class{constructor(){}title(A=""){return Fg`
2
2
  color: ${A};
3
3
  border-left: 3px solid ${A};
4
4
  padding: 2px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@besovideo/webrtc-player",
3
- "version": "0.8.34",
3
+ "version": "0.8.36",
4
4
  "description": "@besovideo/webrtc-player desc",
5
5
  "type": "module",
6
6
  "types": "./dist/types/main.d.ts",
package/dist/index.html DELETED
@@ -1,21 +0,0 @@
1
- <!--
2
- * @Author: Shirtiny
3
- * @Date: 2021-06-25 15:39:30
4
- * @LastEditTime: 2021-12-28 12:25:31
5
- * @Description:
6
- -->
7
- <!DOCTYPE html>
8
- <html lang="en">
9
- <head>
10
- <meta charset="UTF-8" />
11
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
12
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
13
- <title>Document</title>
14
- <link rel="icon" href="./favicon.ico" />
15
- <link rel="stylesheet" type="text/css" href="./index.css" />
16
- <script defer src="./index.js"></script>
17
- </head>
18
- <body>
19
- <div id="root"></div>
20
- </body>
21
- </html>
@@ -1,24 +0,0 @@
1
- <!--
2
- * @Author: Shirtiny
3
- * @Date: 2022-01-19 14:54:26
4
- * @LastEditTime: 2022-01-19 14:55:11
5
- * @Description:
6
- -->
7
- <!DOCTYPE html>
8
- <html>
9
- <head>
10
- <meta charset="utf-8" />
11
- <title>WebGL Demo</title>
12
- <script
13
- src="https://cdnjs.cloudflare.com/ajax/libs/gl-matrix/2.8.1/gl-matrix-min.js"
14
- integrity="sha512-zhHQR0/H5SEBL3Wn6yYSaTTZej12z0hVZKOv3TwCUXT1z5qeqGcXJLLrbERYRScEDDpYIJhPC1fk31gqR783iQ=="
15
- crossorigin="anonymous"
16
- defer
17
- ></script>
18
- <script src="./webgl-demo.js" defer></script>
19
- </head>
20
-
21
- <body>
22
- <canvas id="glcanvas" width="640" height="480"></canvas>
23
- </body>
24
- </html>
@@ -1,600 +0,0 @@
1
- /*
2
- * @Author: Shirtiny
3
- * @Date: 2022-01-19 14:55:28
4
- * @LastEditTime: 2022-01-19 14:59:20
5
- * @Description:
6
- */
7
- var cubeRotation = 0.0;
8
- // will set to true when video can be copied to texture
9
- var copyVideo = false;
10
-
11
- main();
12
-
13
- //
14
- // Start here
15
- //
16
- function main() {
17
- const canvas = document.querySelector('#glcanvas');
18
- const gl = canvas.getContext('webgl');
19
-
20
- // If we don't have a GL context, give up now
21
-
22
- if (!gl) {
23
- alert('Unable to initialize WebGL. Your browser or machine may not support it.');
24
- return;
25
- }
26
-
27
- // Vertex shader program
28
-
29
- const vsSource = `
30
- attribute vec4 aVertexPosition;
31
- attribute vec3 aVertexNormal;
32
- attribute vec2 aTextureCoord;
33
-
34
- uniform mat4 uNormalMatrix;
35
- uniform mat4 uModelViewMatrix;
36
- uniform mat4 uProjectionMatrix;
37
-
38
- varying highp vec2 vTextureCoord;
39
- varying highp vec3 vLighting;
40
-
41
- void main(void) {
42
- gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;
43
- vTextureCoord = aTextureCoord;
44
-
45
- // Apply lighting effect
46
-
47
- highp vec3 ambientLight = vec3(0.3, 0.3, 0.3);
48
- highp vec3 directionalLightColor = vec3(1, 1, 1);
49
- highp vec3 directionalVector = normalize(vec3(0.85, 0.8, 0.75));
50
-
51
- highp vec4 transformedNormal = uNormalMatrix * vec4(aVertexNormal, 1.0);
52
-
53
- highp float directional = max(dot(transformedNormal.xyz, directionalVector), 0.0);
54
- vLighting = ambientLight + (directionalLightColor * directional);
55
- }
56
- `;
57
-
58
- // Fragment shader program
59
-
60
- const fsSource = `
61
- varying highp vec2 vTextureCoord;
62
- varying highp vec3 vLighting;
63
-
64
- uniform sampler2D uSampler;
65
-
66
- void main(void) {
67
- highp vec4 texelColor = texture2D(uSampler, vTextureCoord);
68
-
69
- gl_FragColor = vec4(texelColor.rgb * vLighting, texelColor.a);
70
- }
71
- `;
72
-
73
- // Initialize a shader program; this is where all the lighting
74
- // for the vertices and so forth is established.
75
- const shaderProgram = initShaderProgram(gl, vsSource, fsSource);
76
-
77
- // Collect all the info needed to use the shader program.
78
- // Look up which attributes our shader program is using
79
- // for aVertexPosition, aVertexNormal, aTextureCoord,
80
- // and look up uniform locations.
81
- const programInfo = {
82
- program: shaderProgram,
83
- attribLocations: {
84
- vertexPosition: gl.getAttribLocation(shaderProgram, 'aVertexPosition'),
85
- vertexNormal: gl.getAttribLocation(shaderProgram, 'aVertexNormal'),
86
- textureCoord: gl.getAttribLocation(shaderProgram, 'aTextureCoord'),
87
- },
88
- uniformLocations: {
89
- projectionMatrix: gl.getUniformLocation(shaderProgram, 'uProjectionMatrix'),
90
- modelViewMatrix: gl.getUniformLocation(shaderProgram, 'uModelViewMatrix'),
91
- normalMatrix: gl.getUniformLocation(shaderProgram, 'uNormalMatrix'),
92
- uSampler: gl.getUniformLocation(shaderProgram, 'uSampler'),
93
- }
94
- };
95
-
96
- // Here's where we call the routine that builds all the
97
- // objects we'll be drawing.
98
- const buffers = initBuffers(gl);
99
-
100
- const texture = initTexture(gl);
101
-
102
- const video = setupVideo('test.mp4');
103
-
104
- var then = 0;
105
-
106
- // Draw the scene repeatedly
107
- function render(now) {
108
- now *= 0.001; // convert to seconds
109
- const deltaTime = now - then;
110
- then = now;
111
-
112
- if (copyVideo) {
113
- updateTexture(gl, texture, video);
114
- }
115
-
116
- drawScene(gl, programInfo, buffers, texture, deltaTime);
117
-
118
- requestAnimationFrame(render);
119
- }
120
- requestAnimationFrame(render);
121
- }
122
-
123
- function setupVideo(url) {
124
- const video = document.createElement('video');
125
-
126
- var playing = false;
127
- var timeupdate = false;
128
-
129
- video.autoplay = true;
130
- video.muted = true;
131
- video.loop = true;
132
-
133
- // Waiting for these 2 events ensures
134
- // there is data in the video
135
-
136
- video.addEventListener('playing', function() {
137
- playing = true;
138
- checkReady();
139
- }, true);
140
-
141
- video.addEventListener('timeupdate', function() {
142
- timeupdate = true;
143
- checkReady();
144
- }, true);
145
-
146
- video.src = url;
147
- video.play();
148
-
149
- function checkReady() {
150
- if (playing && timeupdate) {
151
- copyVideo = true;
152
- }
153
- }
154
-
155
- return video;
156
- }
157
-
158
- //
159
- // initBuffers
160
- //
161
- // Initialize the buffers we'll need. For this demo, we just
162
- // have one object -- a simple three-dimensional cube.
163
- //
164
- function initBuffers(gl) {
165
-
166
- // Create a buffer for the cube's vertex positions.
167
-
168
- const positionBuffer = gl.createBuffer();
169
-
170
- // Select the positionBuffer as the one to apply buffer
171
- // operations to from here out.
172
-
173
- gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
174
-
175
- // Now create an array of positions for the cube.
176
-
177
- const positions = [
178
- // Front face
179
- -1.0, -1.0, 1.0,
180
- 1.0, -1.0, 1.0,
181
- 1.0, 1.0, 1.0,
182
- -1.0, 1.0, 1.0,
183
-
184
- // Back face
185
- -1.0, -1.0, -1.0,
186
- -1.0, 1.0, -1.0,
187
- 1.0, 1.0, -1.0,
188
- 1.0, -1.0, -1.0,
189
-
190
- // Top face
191
- -1.0, 1.0, -1.0,
192
- -1.0, 1.0, 1.0,
193
- 1.0, 1.0, 1.0,
194
- 1.0, 1.0, -1.0,
195
-
196
- // Bottom face
197
- -1.0, -1.0, -1.0,
198
- 1.0, -1.0, -1.0,
199
- 1.0, -1.0, 1.0,
200
- -1.0, -1.0, 1.0,
201
-
202
- // Right face
203
- 1.0, -1.0, -1.0,
204
- 1.0, 1.0, -1.0,
205
- 1.0, 1.0, 1.0,
206
- 1.0, -1.0, 1.0,
207
-
208
- // Left face
209
- -1.0, -1.0, -1.0,
210
- -1.0, -1.0, 1.0,
211
- -1.0, 1.0, 1.0,
212
- -1.0, 1.0, -1.0,
213
- ];
214
-
215
- // Now pass the list of positions into WebGL to build the
216
- // shape. We do this by creating a Float32Array from the
217
- // JavaScript array, then use it to fill the current buffer.
218
-
219
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
220
-
221
- // Set up the normals for the vertices, so that we can compute lighting.
222
-
223
- const normalBuffer = gl.createBuffer();
224
- gl.bindBuffer(gl.ARRAY_BUFFER, normalBuffer);
225
-
226
- const vertexNormals = [
227
- // Front
228
- 0.0, 0.0, 1.0,
229
- 0.0, 0.0, 1.0,
230
- 0.0, 0.0, 1.0,
231
- 0.0, 0.0, 1.0,
232
-
233
- // Back
234
- 0.0, 0.0, -1.0,
235
- 0.0, 0.0, -1.0,
236
- 0.0, 0.0, -1.0,
237
- 0.0, 0.0, -1.0,
238
-
239
- // Top
240
- 0.0, 1.0, 0.0,
241
- 0.0, 1.0, 0.0,
242
- 0.0, 1.0, 0.0,
243
- 0.0, 1.0, 0.0,
244
-
245
- // Bottom
246
- 0.0, -1.0, 0.0,
247
- 0.0, -1.0, 0.0,
248
- 0.0, -1.0, 0.0,
249
- 0.0, -1.0, 0.0,
250
-
251
- // Right
252
- 1.0, 0.0, 0.0,
253
- 1.0, 0.0, 0.0,
254
- 1.0, 0.0, 0.0,
255
- 1.0, 0.0, 0.0,
256
-
257
- // Left
258
- -1.0, 0.0, 0.0,
259
- -1.0, 0.0, 0.0,
260
- -1.0, 0.0, 0.0,
261
- -1.0, 0.0, 0.0,
262
- ];
263
-
264
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(vertexNormals),
265
- gl.STATIC_DRAW);
266
-
267
- // Now set up the texture coordinates for the faces.
268
-
269
- const textureCoordBuffer = gl.createBuffer();
270
- gl.bindBuffer(gl.ARRAY_BUFFER, textureCoordBuffer);
271
-
272
- const textureCoordinates = [
273
- // Front
274
- 0.0, 0.0,
275
- 1.0, 0.0,
276
- 1.0, 1.0,
277
- 0.0, 1.0,
278
- // Back
279
- 0.0, 0.0,
280
- 1.0, 0.0,
281
- 1.0, 1.0,
282
- 0.0, 1.0,
283
- // Top
284
- 0.0, 0.0,
285
- 1.0, 0.0,
286
- 1.0, 1.0,
287
- 0.0, 1.0,
288
- // Bottom
289
- 0.0, 0.0,
290
- 1.0, 0.0,
291
- 1.0, 1.0,
292
- 0.0, 1.0,
293
- // Right
294
- 0.0, 0.0,
295
- 1.0, 0.0,
296
- 1.0, 1.0,
297
- 0.0, 1.0,
298
- // Left
299
- 0.0, 0.0,
300
- 1.0, 0.0,
301
- 1.0, 1.0,
302
- 0.0, 1.0,
303
- ];
304
-
305
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(textureCoordinates),
306
- gl.STATIC_DRAW);
307
-
308
- // Build the element array buffer; this specifies the indices
309
- // into the vertex arrays for each face's vertices.
310
-
311
- const indexBuffer = gl.createBuffer();
312
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indexBuffer);
313
-
314
- // This array defines each face as two triangles, using the
315
- // indices into the vertex array to specify each triangle's
316
- // position.
317
-
318
- const indices = [
319
- 0, 1, 2, 0, 2, 3, // front
320
- 4, 5, 6, 4, 6, 7, // back
321
- 8, 9, 10, 8, 10, 11, // top
322
- 12, 13, 14, 12, 14, 15, // bottom
323
- 16, 17, 18, 16, 18, 19, // right
324
- 20, 21, 22, 20, 22, 23, // left
325
- ];
326
-
327
- // Now send the element array to GL
328
-
329
- gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,
330
- new Uint16Array(indices), gl.STATIC_DRAW);
331
-
332
- return {
333
- position: positionBuffer,
334
- normal: normalBuffer,
335
- textureCoord: textureCoordBuffer,
336
- indices: indexBuffer,
337
- };
338
- }
339
-
340
- //
341
- // Initialize a texture.
342
- //
343
- function initTexture(gl, url) {
344
- const texture = gl.createTexture();
345
- gl.bindTexture(gl.TEXTURE_2D, texture);
346
-
347
- // Because video havs to be download over the internet
348
- // they might take a moment until it's ready so
349
- // put a single pixel in the texture so we can
350
- // use it immediately.
351
- const level = 0;
352
- const internalFormat = gl.RGBA;
353
- const width = 1;
354
- const height = 1;
355
- const border = 0;
356
- const srcFormat = gl.RGBA;
357
- const srcType = gl.UNSIGNED_BYTE;
358
- const pixel = new Uint8Array([0, 0, 255, 255]); // opaque blue
359
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,
360
- width, height, border, srcFormat, srcType,
361
- pixel);
362
-
363
- // Turn off mips and set wrapping to clamp to edge so it
364
- // will work regardless of the dimensions of the video.
365
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
366
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
367
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
368
-
369
- return texture;
370
- }
371
-
372
- //
373
- // copy the video texture
374
- //
375
- function updateTexture(gl, texture, video) {
376
- const level = 0;
377
- const internalFormat = gl.RGBA;
378
- const srcFormat = gl.RGBA;
379
- const srcType = gl.UNSIGNED_BYTE;
380
- gl.bindTexture(gl.TEXTURE_2D, texture);
381
- gl.texImage2D(gl.TEXTURE_2D, level, internalFormat,
382
- srcFormat, srcType, video);
383
- }
384
-
385
- function isPowerOf2(value) {
386
- return (value & (value - 1)) == 0;
387
- }
388
-
389
- //
390
- // Draw the scene.
391
- //
392
- function drawScene(gl, programInfo, buffers, texture, deltaTime) {
393
- gl.clearColor(0.0, 0.0, 0.0, 1.0); // Clear to black, fully opaque
394
- gl.clearDepth(1.0); // Clear everything
395
- gl.enable(gl.DEPTH_TEST); // Enable depth testing
396
- gl.depthFunc(gl.LEQUAL); // Near things obscure far things
397
-
398
- // Clear the canvas before we start drawing on it.
399
-
400
- gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
401
-
402
- // Create a perspective matrix, a special matrix that is
403
- // used to simulate the distortion of perspective in a camera.
404
- // Our field of view is 45 degrees, with a width/height
405
- // ratio that matches the display size of the canvas
406
- // and we only want to see objects between 0.1 units
407
- // and 100 units away from the camera.
408
-
409
- const fieldOfView = 45 * Math.PI / 180; // in radians
410
- const aspect = gl.canvas.clientWidth / gl.canvas.clientHeight;
411
- const zNear = 0.1;
412
- const zFar = 100.0;
413
- const projectionMatrix = mat4.create();
414
-
415
- // note: glmatrix.js always has the first argument
416
- // as the destination to receive the result.
417
- mat4.perspective(projectionMatrix,
418
- fieldOfView,
419
- aspect,
420
- zNear,
421
- zFar);
422
-
423
- // Set the drawing position to the "identity" point, which is
424
- // the center of the scene.
425
- const modelViewMatrix = mat4.create();
426
-
427
- // Now move the drawing position a bit to where we want to
428
- // start drawing the square.
429
-
430
- mat4.translate(modelViewMatrix, // destination matrix
431
- modelViewMatrix, // matrix to translate
432
- [-0.0, 0.0, -6.0]); // amount to translate
433
- mat4.rotate(modelViewMatrix, // destination matrix
434
- modelViewMatrix, // matrix to rotate
435
- cubeRotation, // amount to rotate in radians
436
- [0, 0, 1]); // axis to rotate around (Z)
437
- mat4.rotate(modelViewMatrix, // destination matrix
438
- modelViewMatrix, // matrix to rotate
439
- cubeRotation * .7,// amount to rotate in radians
440
- [0, 1, 0]); // axis to rotate around (X)
441
-
442
- const normalMatrix = mat4.create();
443
- mat4.invert(normalMatrix, modelViewMatrix);
444
- mat4.transpose(normalMatrix, normalMatrix);
445
-
446
- // Tell WebGL how to pull out the positions from the position
447
- // buffer into the vertexPosition attribute
448
- {
449
- const numComponents = 3;
450
- const type = gl.FLOAT;
451
- const normalize = false;
452
- const stride = 0;
453
- const offset = 0;
454
- gl.bindBuffer(gl.ARRAY_BUFFER, buffers.position);
455
- gl.vertexAttribPointer(
456
- programInfo.attribLocations.vertexPosition,
457
- numComponents,
458
- type,
459
- normalize,
460
- stride,
461
- offset);
462
- gl.enableVertexAttribArray(
463
- programInfo.attribLocations.vertexPosition);
464
- }
465
-
466
- // Tell WebGL how to pull out the texture coordinates from
467
- // the texture coordinate buffer into the textureCoord attribute.
468
- {
469
- const numComponents = 2;
470
- const type = gl.FLOAT;
471
- const normalize = false;
472
- const stride = 0;
473
- const offset = 0;
474
- gl.bindBuffer(gl.ARRAY_BUFFER, buffers.textureCoord);
475
- gl.vertexAttribPointer(
476
- programInfo.attribLocations.textureCoord,
477
- numComponents,
478
- type,
479
- normalize,
480
- stride,
481
- offset);
482
- gl.enableVertexAttribArray(
483
- programInfo.attribLocations.textureCoord);
484
- }
485
-
486
- // Tell WebGL how to pull out the normals from
487
- // the normal buffer into the vertexNormal attribute.
488
- {
489
- const numComponents = 3;
490
- const type = gl.FLOAT;
491
- const normalize = false;
492
- const stride = 0;
493
- const offset = 0;
494
- gl.bindBuffer(gl.ARRAY_BUFFER, buffers.normal);
495
- gl.vertexAttribPointer(
496
- programInfo.attribLocations.vertexNormal,
497
- numComponents,
498
- type,
499
- normalize,
500
- stride,
501
- offset);
502
- gl.enableVertexAttribArray(
503
- programInfo.attribLocations.vertexNormal);
504
- }
505
-
506
- // Tell WebGL which indices to use to index the vertices
507
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffers.indices);
508
-
509
- // Tell WebGL to use our program when drawing
510
-
511
- gl.useProgram(programInfo.program);
512
-
513
- // Set the shader uniforms
514
-
515
- gl.uniformMatrix4fv(
516
- programInfo.uniformLocations.projectionMatrix,
517
- false,
518
- projectionMatrix);
519
- gl.uniformMatrix4fv(
520
- programInfo.uniformLocations.modelViewMatrix,
521
- false,
522
- modelViewMatrix);
523
- gl.uniformMatrix4fv(
524
- programInfo.uniformLocations.normalMatrix,
525
- false,
526
- normalMatrix);
527
-
528
- // Specify the texture to map onto the faces.
529
-
530
- // Tell WebGL we want to affect texture unit 0
531
- gl.activeTexture(gl.TEXTURE0);
532
-
533
- // Bind the texture to texture unit 0
534
- gl.bindTexture(gl.TEXTURE_2D, texture);
535
-
536
- // Tell the shader we bound the texture to texture unit 0
537
- gl.uniform1i(programInfo.uniformLocations.uSampler, 0);
538
-
539
- {
540
- const vertexCount = 36;
541
- const type = gl.UNSIGNED_SHORT;
542
- const offset = 0;
543
- gl.drawElements(gl.TRIANGLES, vertexCount, type, offset);
544
- }
545
-
546
- // Update the rotation for the next draw
547
-
548
- cubeRotation += deltaTime;
549
- }
550
-
551
- //
552
- // Initialize a shader program, so WebGL knows how to draw our data
553
- //
554
- function initShaderProgram(gl, vsSource, fsSource) {
555
- const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);
556
- const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);
557
-
558
- // Create the shader program
559
-
560
- const shaderProgram = gl.createProgram();
561
- gl.attachShader(shaderProgram, vertexShader);
562
- gl.attachShader(shaderProgram, fragmentShader);
563
- gl.linkProgram(shaderProgram);
564
-
565
- // If creating the shader program failed, alert
566
-
567
- if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {
568
- alert('Unable to initialize the shader program: ' + gl.getProgramInfoLog(shaderProgram));
569
- return null;
570
- }
571
-
572
- return shaderProgram;
573
- }
574
-
575
- //
576
- // creates a shader of the given type, uploads the source and
577
- // compiles it.
578
- //
579
- function loadShader(gl, type, source) {
580
- const shader = gl.createShader(type);
581
-
582
- // Send the source to the shader object
583
-
584
- gl.shaderSource(shader, source);
585
-
586
- // Compile the shader program
587
-
588
- gl.compileShader(shader);
589
-
590
- // See if it compiled successfully
591
-
592
- if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
593
- alert('An error occurred compiling the shaders: ' + gl.getShaderInfoLog(shader));
594
- gl.deleteShader(shader);
595
- return null;
596
- }
597
-
598
- return shader;
599
- }
600
-
@@ -1,506 +0,0 @@
1
- <!--
2
- * @Author: Shirtiny
3
- * @Date: 2021-12-15 09:59:59
4
- * @LastEditTime: 2021-12-15 10:05:13
5
- * @Description:
6
- -->
7
- <!DOCTYPE html>
8
- <html lang="en">
9
- <head>
10
- <meta charset="UTF-8">
11
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
12
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
13
- <title>Document</title>
14
- </head>
15
- <body>
16
- <h2>Report: certificate</h2>
17
- <strong>ID:</strong> RTCCertificate_10:20:E9:A9:D9:D7:39:97:E5:BB:C4:82:98:D5:00:14:44:96:17:B3:FD:F7:C0:37:0A:A4:0E:43:D4:7E:F1:4D<br>
18
- <strong>Timestamp:</strong> 1639533903510<br>
19
- <strong>fingerprint:</strong> 10:20:E9:A9:D9:D7:39:97:E5:BB:C4:82:98:D5:00:14:44:96:17:B3:FD:F7:C0:37:0A:A4:0E:43:D4:7E:F1:4D<br>
20
- <strong>fingerprintAlgorithm:</strong> sha-256<br>
21
- <strong>base64Certificate:</strong> MIIBtjCCAVygAwIBAgIRAwwnU4zI7QZzipmdsZx4HNEwCgYIKoZIzj0EAwIwKzEpMCcGA1UEAxMgMTEyN2U2NDcxMmJmZmMxNWFjNWFiMzk4YjI0NGI3MmYwHhcNMjExMTMwMDc0MDA1WhcNMjExMjMwMDc0MDA1WjArMSkwJwYDVQQDEyAxMTI3ZTY0NzEyYmZmYzE1YWM1YWIzOThiMjQ0YjcyZjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBa33UnxpmCjk3iZikqnDfCvQuWEHXOZngRDBLwykhq9PIZbYAtDnFfZ99tY1xHMMhVhmKlG8xxxr+INEV/vy+mjYTBfMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUNQVTg0PcemhcgbisQPGuqzHM4fswCgYIKoZIzj0EAwIDSAAwRQIgWVa3QtLo3MkW8nqk6RYl5DPZmqWd2V64AHFlS60B7ekCIQDCIG6SB35gdC41zBLLGIe+U3kgCVKI9nckk1X5YUjQ0g==<br>
22
- <h2>Report: certificate</h2>
23
- <strong>ID:</strong> RTCCertificate_CF:4A:F1:C5:B5:83:0A:89:AF:2C:53:19:0D:29:39:22:76:0C:51:5D:90:AB:69:F1:BD:29:C2:AC:42:58:53:E3<br>
24
- <strong>Timestamp:</strong> 1639533903510<br>
25
- <strong>fingerprint:</strong> CF:4A:F1:C5:B5:83:0A:89:AF:2C:53:19:0D:29:39:22:76:0C:51:5D:90:AB:69:F1:BD:29:C2:AC:42:58:53:E3<br>
26
- <strong>fingerprintAlgorithm:</strong> sha-256<br>
27
- <strong>base64Certificate:</strong> MIIBFTCBvaADAgECAgkAg4SPRKDKvzMwCgYIKoZIzj0EAwIwETEPMA0GA1UEAwwGV2ViUlRDMB4XDTIxMTIxNDAyMDQ1OFoXDTIyMDExNDAyMDQ1OFowETEPMA0GA1UEAwwGV2ViUlRDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEC8PnJ1YRp0F/opAzoJ82x9M61V+UMFy9IlgP1LoM+QuNg4vs8g7iz0BeDhcK8f77NXQd0EIXBZzcOuLuaUXfCjAKBggqhkjOPQQDAgNHADBEAiA3GQWLSSIHuX+eaywcmNtwWrRe0yqEKLZQEmudrgAxRQIgaiERaTzxs3olW+w9a3+5jy99yCCjJJBmnBc2hrNl22Y=<br>
28
- <h2>Report: codec</h2>
29
- <strong>ID:</strong> RTCCodec_0_Inbound_0<br>
30
- <strong>Timestamp:</strong> 1639533903510<br>
31
- <strong>transportId:</strong> RTCTransport_0_1<br>
32
- <strong>payloadType:</strong> 0<br>
33
- <strong>mimeType:</strong> audio/PCMU<br>
34
- <strong>clockRate:</strong> 8000<br>
35
- <strong>channels:</strong> 1<br>
36
- <h2>Report: codec</h2>
37
- <strong>ID:</strong> RTCCodec_0_Inbound_103<br>
38
- <strong>Timestamp:</strong> 1639533903510<br>
39
- <strong>transportId:</strong> RTCTransport_0_1<br>
40
- <strong>payloadType:</strong> 103<br>
41
- <strong>mimeType:</strong> audio/ISAC<br>
42
- <strong>clockRate:</strong> 16000<br>
43
- <strong>channels:</strong> 1<br>
44
- <h2>Report: codec</h2>
45
- <strong>ID:</strong> RTCCodec_0_Inbound_104<br>
46
- <strong>Timestamp:</strong> 1639533903510<br>
47
- <strong>transportId:</strong> RTCTransport_0_1<br>
48
- <strong>payloadType:</strong> 104<br>
49
- <strong>mimeType:</strong> audio/ISAC<br>
50
- <strong>clockRate:</strong> 32000<br>
51
- <strong>channels:</strong> 1<br>
52
- <h2>Report: codec</h2>
53
- <strong>ID:</strong> RTCCodec_0_Inbound_105<br>
54
- <strong>Timestamp:</strong> 1639533903510<br>
55
- <strong>transportId:</strong> RTCTransport_0_1<br>
56
- <strong>payloadType:</strong> 105<br>
57
- <strong>mimeType:</strong> audio/CN<br>
58
- <strong>clockRate:</strong> 16000<br>
59
- <strong>channels:</strong> 1<br>
60
- <h2>Report: codec</h2>
61
- <strong>ID:</strong> RTCCodec_0_Inbound_106<br>
62
- <strong>Timestamp:</strong> 1639533903510<br>
63
- <strong>transportId:</strong> RTCTransport_0_1<br>
64
- <strong>payloadType:</strong> 106<br>
65
- <strong>mimeType:</strong> audio/CN<br>
66
- <strong>clockRate:</strong> 32000<br>
67
- <strong>channels:</strong> 1<br>
68
- <h2>Report: codec</h2>
69
- <strong>ID:</strong> RTCCodec_0_Inbound_110<br>
70
- <strong>Timestamp:</strong> 1639533903510<br>
71
- <strong>transportId:</strong> RTCTransport_0_1<br>
72
- <strong>payloadType:</strong> 110<br>
73
- <strong>mimeType:</strong> audio/telephone-event<br>
74
- <strong>clockRate:</strong> 48000<br>
75
- <strong>channels:</strong> 1<br>
76
- <h2>Report: codec</h2>
77
- <strong>ID:</strong> RTCCodec_0_Inbound_111<br>
78
- <strong>Timestamp:</strong> 1639533903510<br>
79
- <strong>transportId:</strong> RTCTransport_0_1<br>
80
- <strong>payloadType:</strong> 111<br>
81
- <strong>mimeType:</strong> audio/opus<br>
82
- <strong>clockRate:</strong> 48000<br>
83
- <strong>channels:</strong> 2<br>
84
- <strong>sdpFmtpLine:</strong> minptime=10;useinbandfec=1<br>
85
- <h2>Report: codec</h2>
86
- <strong>ID:</strong> RTCCodec_0_Inbound_112<br>
87
- <strong>Timestamp:</strong> 1639533903510<br>
88
- <strong>transportId:</strong> RTCTransport_0_1<br>
89
- <strong>payloadType:</strong> 112<br>
90
- <strong>mimeType:</strong> audio/telephone-event<br>
91
- <strong>clockRate:</strong> 32000<br>
92
- <strong>channels:</strong> 1<br>
93
- <h2>Report: codec</h2>
94
- <strong>ID:</strong> RTCCodec_0_Inbound_113<br>
95
- <strong>Timestamp:</strong> 1639533903510<br>
96
- <strong>transportId:</strong> RTCTransport_0_1<br>
97
- <strong>payloadType:</strong> 113<br>
98
- <strong>mimeType:</strong> audio/telephone-event<br>
99
- <strong>clockRate:</strong> 16000<br>
100
- <strong>channels:</strong> 1<br>
101
- <h2>Report: codec</h2>
102
- <strong>ID:</strong> RTCCodec_0_Inbound_126<br>
103
- <strong>Timestamp:</strong> 1639533903510<br>
104
- <strong>transportId:</strong> RTCTransport_0_1<br>
105
- <strong>payloadType:</strong> 126<br>
106
- <strong>mimeType:</strong> audio/telephone-event<br>
107
- <strong>clockRate:</strong> 8000<br>
108
- <strong>channels:</strong> 1<br>
109
- <h2>Report: codec</h2>
110
- <strong>ID:</strong> RTCCodec_0_Inbound_13<br>
111
- <strong>Timestamp:</strong> 1639533903510<br>
112
- <strong>transportId:</strong> RTCTransport_0_1<br>
113
- <strong>payloadType:</strong> 13<br>
114
- <strong>mimeType:</strong> audio/CN<br>
115
- <strong>clockRate:</strong> 8000<br>
116
- <strong>channels:</strong> 1<br>
117
- <h2>Report: codec</h2>
118
- <strong>ID:</strong> RTCCodec_0_Inbound_63<br>
119
- <strong>Timestamp:</strong> 1639533903510<br>
120
- <strong>transportId:</strong> RTCTransport_0_1<br>
121
- <strong>payloadType:</strong> 63<br>
122
- <strong>mimeType:</strong> audio/red<br>
123
- <strong>clockRate:</strong> 48000<br>
124
- <strong>channels:</strong> 2<br>
125
- <strong>sdpFmtpLine:</strong> 111/111<br>
126
- <h2>Report: codec</h2>
127
- <strong>ID:</strong> RTCCodec_0_Inbound_8<br>
128
- <strong>Timestamp:</strong> 1639533903510<br>
129
- <strong>transportId:</strong> RTCTransport_0_1<br>
130
- <strong>payloadType:</strong> 8<br>
131
- <strong>mimeType:</strong> audio/PCMA<br>
132
- <strong>clockRate:</strong> 8000<br>
133
- <strong>channels:</strong> 1<br>
134
- <h2>Report: codec</h2>
135
- <strong>ID:</strong> RTCCodec_0_Inbound_9<br>
136
- <strong>Timestamp:</strong> 1639533903510<br>
137
- <strong>transportId:</strong> RTCTransport_0_1<br>
138
- <strong>payloadType:</strong> 9<br>
139
- <strong>mimeType:</strong> audio/G722<br>
140
- <strong>clockRate:</strong> 8000<br>
141
- <strong>channels:</strong> 1<br>
142
- <h2>Report: codec</h2>
143
- <strong>ID:</strong> RTCCodec_0_Outbound_8<br>
144
- <strong>Timestamp:</strong> 1639533903510<br>
145
- <strong>transportId:</strong> RTCTransport_0_1<br>
146
- <strong>payloadType:</strong> 8<br>
147
- <strong>mimeType:</strong> audio/PCMA<br>
148
- <strong>clockRate:</strong> 8000<br>
149
- <strong>channels:</strong> 1<br>
150
- <h2>Report: codec</h2>
151
- <strong>ID:</strong> RTCCodec_1_Inbound_100<br>
152
- <strong>Timestamp:</strong> 1639533903510<br>
153
- <strong>transportId:</strong> RTCTransport_0_1<br>
154
- <strong>payloadType:</strong> 100<br>
155
- <strong>mimeType:</strong> video/VP9<br>
156
- <strong>clockRate:</strong> 90000<br>
157
- <strong>sdpFmtpLine:</strong> profile-id=2<br>
158
- <h2>Report: codec</h2>
159
- <strong>ID:</strong> RTCCodec_1_Inbound_101<br>
160
- <strong>Timestamp:</strong> 1639533903510<br>
161
- <strong>transportId:</strong> RTCTransport_0_1<br>
162
- <strong>payloadType:</strong> 101<br>
163
- <strong>mimeType:</strong> video/rtx<br>
164
- <strong>clockRate:</strong> 90000<br>
165
- <strong>sdpFmtpLine:</strong> apt=100<br>
166
- <h2>Report: codec</h2>
167
- <strong>ID:</strong> RTCCodec_1_Inbound_102<br>
168
- <strong>Timestamp:</strong> 1639533903510<br>
169
- <strong>transportId:</strong> RTCTransport_0_1<br>
170
- <strong>payloadType:</strong> 102<br>
171
- <strong>mimeType:</strong> video/H264<br>
172
- <strong>clockRate:</strong> 90000<br>
173
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f<br>
174
- <h2>Report: codec</h2>
175
- <strong>ID:</strong> RTCCodec_1_Inbound_107<br>
176
- <strong>Timestamp:</strong> 1639533903510<br>
177
- <strong>transportId:</strong> RTCTransport_0_1<br>
178
- <strong>payloadType:</strong> 107<br>
179
- <strong>mimeType:</strong> video/rtx<br>
180
- <strong>clockRate:</strong> 90000<br>
181
- <strong>sdpFmtpLine:</strong> apt=125<br>
182
- <h2>Report: codec</h2>
183
- <strong>ID:</strong> RTCCodec_1_Inbound_108<br>
184
- <strong>Timestamp:</strong> 1639533903510<br>
185
- <strong>transportId:</strong> RTCTransport_0_1<br>
186
- <strong>payloadType:</strong> 108<br>
187
- <strong>mimeType:</strong> video/H264<br>
188
- <strong>clockRate:</strong> 90000<br>
189
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f<br>
190
- <h2>Report: codec</h2>
191
- <strong>ID:</strong> RTCCodec_1_Inbound_109<br>
192
- <strong>Timestamp:</strong> 1639533903510<br>
193
- <strong>transportId:</strong> RTCTransport_0_1<br>
194
- <strong>payloadType:</strong> 109<br>
195
- <strong>mimeType:</strong> video/rtx<br>
196
- <strong>clockRate:</strong> 90000<br>
197
- <strong>sdpFmtpLine:</strong> apt=108<br>
198
- <h2>Report: codec</h2>
199
- <strong>ID:</strong> RTCCodec_1_Inbound_114<br>
200
- <strong>Timestamp:</strong> 1639533903510<br>
201
- <strong>transportId:</strong> RTCTransport_0_1<br>
202
- <strong>payloadType:</strong> 114<br>
203
- <strong>mimeType:</strong> video/red<br>
204
- <strong>clockRate:</strong> 90000<br>
205
- <h2>Report: codec</h2>
206
- <strong>ID:</strong> RTCCodec_1_Inbound_115<br>
207
- <strong>Timestamp:</strong> 1639533903510<br>
208
- <strong>transportId:</strong> RTCTransport_0_1<br>
209
- <strong>payloadType:</strong> 115<br>
210
- <strong>mimeType:</strong> video/rtx<br>
211
- <strong>clockRate:</strong> 90000<br>
212
- <strong>sdpFmtpLine:</strong> apt=114<br>
213
- <h2>Report: codec</h2>
214
- <strong>ID:</strong> RTCCodec_1_Inbound_116<br>
215
- <strong>Timestamp:</strong> 1639533903510<br>
216
- <strong>transportId:</strong> RTCTransport_0_1<br>
217
- <strong>payloadType:</strong> 116<br>
218
- <strong>mimeType:</strong> video/ulpfec<br>
219
- <strong>clockRate:</strong> 90000<br>
220
- <h2>Report: codec</h2>
221
- <strong>ID:</strong> RTCCodec_1_Inbound_118<br>
222
- <strong>Timestamp:</strong> 1639533903510<br>
223
- <strong>transportId:</strong> RTCTransport_0_1<br>
224
- <strong>payloadType:</strong> 118<br>
225
- <strong>mimeType:</strong> video/rtx<br>
226
- <strong>clockRate:</strong> 90000<br>
227
- <strong>sdpFmtpLine:</strong> apt=123<br>
228
- <h2>Report: codec</h2>
229
- <strong>ID:</strong> RTCCodec_1_Inbound_119<br>
230
- <strong>Timestamp:</strong> 1639533903510<br>
231
- <strong>transportId:</strong> RTCTransport_0_1<br>
232
- <strong>payloadType:</strong> 119<br>
233
- <strong>mimeType:</strong> video/rtx<br>
234
- <strong>clockRate:</strong> 90000<br>
235
- <strong>sdpFmtpLine:</strong> apt=124<br>
236
- <h2>Report: codec</h2>
237
- <strong>ID:</strong> RTCCodec_1_Inbound_120<br>
238
- <strong>Timestamp:</strong> 1639533903510<br>
239
- <strong>transportId:</strong> RTCTransport_0_1<br>
240
- <strong>payloadType:</strong> 120<br>
241
- <strong>mimeType:</strong> video/rtx<br>
242
- <strong>clockRate:</strong> 90000<br>
243
- <strong>sdpFmtpLine:</strong> apt=127<br>
244
- <h2>Report: codec</h2>
245
- <strong>ID:</strong> RTCCodec_1_Inbound_121<br>
246
- <strong>Timestamp:</strong> 1639533903510<br>
247
- <strong>transportId:</strong> RTCTransport_0_1<br>
248
- <strong>payloadType:</strong> 121<br>
249
- <strong>mimeType:</strong> video/rtx<br>
250
- <strong>clockRate:</strong> 90000<br>
251
- <strong>sdpFmtpLine:</strong> apt=102<br>
252
- <h2>Report: codec</h2>
253
- <strong>ID:</strong> RTCCodec_1_Inbound_122<br>
254
- <strong>Timestamp:</strong> 1639533903510<br>
255
- <strong>transportId:</strong> RTCTransport_0_1<br>
256
- <strong>payloadType:</strong> 122<br>
257
- <strong>mimeType:</strong> video/VP9<br>
258
- <strong>clockRate:</strong> 90000<br>
259
- <strong>sdpFmtpLine:</strong> profile-id=1<br>
260
- <h2>Report: codec</h2>
261
- <strong>ID:</strong> RTCCodec_1_Inbound_123<br>
262
- <strong>Timestamp:</strong> 1639533903510<br>
263
- <strong>transportId:</strong> RTCTransport_0_1<br>
264
- <strong>payloadType:</strong> 123<br>
265
- <strong>mimeType:</strong> video/H264<br>
266
- <strong>clockRate:</strong> 90000<br>
267
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f<br>
268
- <h2>Report: codec</h2>
269
- <strong>ID:</strong> RTCCodec_1_Inbound_124<br>
270
- <strong>Timestamp:</strong> 1639533903510<br>
271
- <strong>transportId:</strong> RTCTransport_0_1<br>
272
- <strong>payloadType:</strong> 124<br>
273
- <strong>mimeType:</strong> video/H264<br>
274
- <strong>clockRate:</strong> 90000<br>
275
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f<br>
276
- <h2>Report: codec</h2>
277
- <strong>ID:</strong> RTCCodec_1_Inbound_125<br>
278
- <strong>Timestamp:</strong> 1639533903510<br>
279
- <strong>transportId:</strong> RTCTransport_0_1<br>
280
- <strong>payloadType:</strong> 125<br>
281
- <strong>mimeType:</strong> video/H264<br>
282
- <strong>clockRate:</strong> 90000<br>
283
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f<br>
284
- <h2>Report: codec</h2>
285
- <strong>ID:</strong> RTCCodec_1_Inbound_127<br>
286
- <strong>Timestamp:</strong> 1639533903510<br>
287
- <strong>transportId:</strong> RTCTransport_0_1<br>
288
- <strong>payloadType:</strong> 127<br>
289
- <strong>mimeType:</strong> video/H264<br>
290
- <strong>clockRate:</strong> 90000<br>
291
- <strong>sdpFmtpLine:</strong> level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f<br>
292
- <h2>Report: codec</h2>
293
- <strong>ID:</strong> RTCCodec_1_Inbound_35<br>
294
- <strong>Timestamp:</strong> 1639533903510<br>
295
- <strong>transportId:</strong> RTCTransport_0_1<br>
296
- <strong>payloadType:</strong> 35<br>
297
- <strong>mimeType:</strong> video/flexfec-03<br>
298
- <strong>clockRate:</strong> 90000<br>
299
- <strong>sdpFmtpLine:</strong> repair-window=10000000<br>
300
- <h2>Report: codec</h2>
301
- <strong>ID:</strong> RTCCodec_1_Inbound_96<br>
302
- <strong>Timestamp:</strong> 1639533903510<br>
303
- <strong>transportId:</strong> RTCTransport_0_1<br>
304
- <strong>payloadType:</strong> 96<br>
305
- <strong>mimeType:</strong> video/VP8<br>
306
- <strong>clockRate:</strong> 90000<br>
307
- <h2>Report: codec</h2>
308
- <strong>ID:</strong> RTCCodec_1_Inbound_97<br>
309
- <strong>Timestamp:</strong> 1639533903510<br>
310
- <strong>transportId:</strong> RTCTransport_0_1<br>
311
- <strong>payloadType:</strong> 97<br>
312
- <strong>mimeType:</strong> video/rtx<br>
313
- <strong>clockRate:</strong> 90000<br>
314
- <strong>sdpFmtpLine:</strong> apt=96<br>
315
- <h2>Report: codec</h2>
316
- <strong>ID:</strong> RTCCodec_1_Inbound_98<br>
317
- <strong>Timestamp:</strong> 1639533903510<br>
318
- <strong>transportId:</strong> RTCTransport_0_1<br>
319
- <strong>payloadType:</strong> 98<br>
320
- <strong>mimeType:</strong> video/VP9<br>
321
- <strong>clockRate:</strong> 90000<br>
322
- <strong>sdpFmtpLine:</strong> profile-id=0<br>
323
- <h2>Report: codec</h2>
324
- <strong>ID:</strong> RTCCodec_1_Inbound_99<br>
325
- <strong>Timestamp:</strong> 1639533903510<br>
326
- <strong>transportId:</strong> RTCTransport_0_1<br>
327
- <strong>payloadType:</strong> 99<br>
328
- <strong>mimeType:</strong> video/rtx<br>
329
- <strong>clockRate:</strong> 90000<br>
330
- <strong>sdpFmtpLine:</strong> apt=98<br>
331
- <h2>Report: codec</h2>
332
- <strong>ID:</strong> RTCCodec_1_Outbound_102<br>
333
- <strong>Timestamp:</strong> 1639533903510<br>
334
- <strong>transportId:</strong> RTCTransport_0_1<br>
335
- <strong>payloadType:</strong> 102<br>
336
- <strong>mimeType:</strong> video/H264<br>
337
- <strong>clockRate:</strong> 90000<br>
338
- <strong>sdpFmtpLine:</strong> sprop-parameter-sets=Z0KAKNoB4AifllIKBAQNoUJq,aM4G8g==<br>
339
- <h2>Report: candidate-pair</h2>
340
- <strong>ID:</strong> RTCIceCandidatePair_CaXxjXAc_bDJ9G6HY<br>
341
- <strong>Timestamp:</strong> 1639533903510<br>
342
- <strong>transportId:</strong> RTCTransport_0_1<br>
343
- <strong>localCandidateId:</strong> RTCIceCandidate_CaXxjXAc<br>
344
- <strong>remoteCandidateId:</strong> RTCIceCandidate_bDJ9G6HY<br>
345
- <strong>state:</strong> succeeded<br>
346
- <strong>priority:</strong> 7962116751007154000<br>
347
- <strong>nominated:</strong> true<br>
348
- <strong>writable:</strong> true<br>
349
- <strong>packetsSent:</strong> 8<br>
350
- <strong>packetsReceived:</strong> 1063<br>
351
- <strong>bytesSent:</strong> 1070<br>
352
- <strong>bytesReceived:</strong> 979874<br>
353
- <strong>totalRoundTripTime:</strong> 0.439<br>
354
- <strong>currentRoundTripTime:</strong> 0.003<br>
355
- <strong>availableOutgoingBitrate:</strong> 300000<br>
356
- <strong>requestsReceived:</strong> 0<br>
357
- <strong>requestsSent:</strong> 4<br>
358
- <strong>responsesReceived:</strong> 5<br>
359
- <strong>responsesSent:</strong> 0<br>
360
- <strong>consentRequestsSent:</strong> 1<br>
361
- <strong>packetsDiscardedOnSend:</strong> 0<br>
362
- <strong>bytesDiscardedOnSend:</strong> 0<br>
363
- <h2>Report: local-candidate</h2>
364
- <strong>ID:</strong> RTCIceCandidate_CaXxjXAc<br>
365
- <strong>Timestamp:</strong> 1639533903510<br>
366
- <strong>transportId:</strong> RTCTransport_0_1<br>
367
- <strong>isRemote:</strong> false<br>
368
- <strong>networkType:</strong> ethernet<br>
369
- <strong>ip:</strong> 192.168.6.250<br>
370
- <strong>address:</strong> 192.168.6.250<br>
371
- <strong>port:</strong> 63228<br>
372
- <strong>protocol:</strong> udp<br>
373
- <strong>candidateType:</strong> prflx<br>
374
- <strong>priority:</strong> 1853824767<br>
375
- <h2>Report: remote-candidate</h2>
376
- <strong>ID:</strong> RTCIceCandidate_bDJ9G6HY<br>
377
- <strong>Timestamp:</strong> 1639533903510<br>
378
- <strong>transportId:</strong> RTCTransport_0_1<br>
379
- <strong>isRemote:</strong> true<br>
380
- <strong>ip:</strong> 192.168.88.11<br>
381
- <strong>address:</strong> 192.168.88.11<br>
382
- <strong>port:</strong> 9703<br>
383
- <strong>protocol:</strong> udp<br>
384
- <strong>candidateType:</strong> host<br>
385
- <strong>priority:</strong> 2113667327<br>
386
- <h2>Report: inbound-rtp</h2>
387
- <strong>ID:</strong> RTCInboundRTPAudioStream_36094<br>
388
- <strong>Timestamp:</strong> 1639533903510<br>
389
- <strong>ssrc:</strong> 36094<br>
390
- <strong>kind:</strong> audio<br>
391
- <strong>trackId:</strong> RTCMediaStreamTrack_receiver_9<br>
392
- <strong>transportId:</strong> RTCTransport_0_1<br>
393
- <strong>codecId:</strong> RTCCodec_0_Inbound_8<br>
394
- <strong>mediaType:</strong> audio<br>
395
- <strong>jitter:</strong> 0.052<br>
396
- <strong>packetsLost:</strong> 0<br>
397
- <strong>packetsDiscarded:</strong> 4<br>
398
- <strong>packetsReceived:</strong> 49<br>
399
- <strong>fecPacketsReceived:</strong> 0<br>
400
- <strong>fecPacketsDiscarded:</strong> 0<br>
401
- <strong>bytesReceived:</strong> 15680<br>
402
- <strong>headerBytesReceived:</strong> 588<br>
403
- <strong>lastPacketReceivedTimestamp:</strong> 1639533903395<br>
404
- <strong>jitterBufferDelay:</strong> 2364.8<br>
405
- <strong>jitterBufferEmittedCount:</strong> 11200<br>
406
- <strong>totalSamplesReceived:</strong> 20240<br>
407
- <strong>concealedSamples:</strong> 7688<br>
408
- <strong>silentConcealedSamples:</strong> 3424<br>
409
- <strong>concealmentEvents:</strong> 11<br>
410
- <strong>insertedSamplesForDeceleration:</strong> 1510<br>
411
- <strong>removedSamplesForAcceleration:</strong> 152<br>
412
- <strong>audioLevel:</strong> 0.010010071108127079<br>
413
- <strong>totalAudioEnergy:</strong> 0.00013926383727749428<br>
414
- <strong>totalSamplesDuration:</strong> 2.289999999999995<br>
415
- <h2>Report: inbound-rtp</h2>
416
- <strong>ID:</strong> RTCInboundRTPVideoStream_36095<br>
417
- <strong>Timestamp:</strong> 1639533903510<br>
418
- <strong>ssrc:</strong> 36095<br>
419
- <strong>kind:</strong> video<br>
420
- <strong>trackId:</strong> RTCMediaStreamTrack_receiver_10<br>
421
- <strong>transportId:</strong> RTCTransport_0_1<br>
422
- <strong>codecId:</strong> RTCCodec_1_Inbound_102<br>
423
- <strong>mediaType:</strong> video<br>
424
- <strong>jitter:</strong> 0.042<br>
425
- <strong>packetsLost:</strong> 0<br>
426
- <strong>packetsReceived:</strong> 1001<br>
427
- <strong>bytesReceived:</strong> 939769<br>
428
- <strong>headerBytesReceived:</strong> 12012<br>
429
- <strong>lastPacketReceivedTimestamp:</strong> 1639533903397<br>
430
- <strong>jitterBufferDelay:</strong> 3.764<br>
431
- <strong>jitterBufferEmittedCount:</strong> 38<br>
432
- <strong>framesReceived:</strong> 51<br>
433
- <strong>frameWidth:</strong> 1920<br>
434
- <strong>frameHeight:</strong> 1080<br>
435
- <strong>framesPerSecond:</strong> 20<br>
436
- <strong>framesDecoded:</strong> 40<br>
437
- <strong>keyFramesDecoded:</strong> 2<br>
438
- <strong>framesDropped:</strong> 5<br>
439
- <strong>totalDecodeTime:</strong> 0.506<br>
440
- <strong>totalInterFrameDelay:</strong> 1.771<br>
441
- <strong>totalSquaredInterFrameDelay:</strong> 0.2622270000000001<br>
442
- <strong>decoderImplementation:</strong> ExternalDecoder<br>
443
- <strong>firCount:</strong> 0<br>
444
- <strong>pliCount:</strong> 2<br>
445
- <strong>nackCount:</strong> 0<br>
446
- <h2>Report: track</h2>
447
- <strong>ID:</strong> RTCMediaStreamTrack_receiver_10<br>
448
- <strong>Timestamp:</strong> 1639533903510<br>
449
- <strong>trackIdentifier:</strong> 04d718e5-f6b3-4a99-9da5-8391b6c72e40<br>
450
- <strong>remoteSource:</strong> true<br>
451
- <strong>ended:</strong> false<br>
452
- <strong>detached:</strong> false<br>
453
- <strong>kind:</strong> video<br>
454
- <strong>jitterBufferDelay:</strong> 3.764<br>
455
- <strong>jitterBufferEmittedCount:</strong> 38<br>
456
- <strong>frameWidth:</strong> 1920<br>
457
- <strong>frameHeight:</strong> 1080<br>
458
- <strong>framesReceived:</strong> 51<br>
459
- <strong>framesDecoded:</strong> 40<br>
460
- <strong>framesDropped:</strong> 5<br>
461
- <h2>Report: track</h2>
462
- <strong>ID:</strong> RTCMediaStreamTrack_receiver_9<br>
463
- <strong>Timestamp:</strong> 1639533903510<br>
464
- <strong>trackIdentifier:</strong> 7f28f6f0-d79e-468b-a651-c7532431da49<br>
465
- <strong>remoteSource:</strong> true<br>
466
- <strong>ended:</strong> false<br>
467
- <strong>detached:</strong> false<br>
468
- <strong>kind:</strong> audio<br>
469
- <strong>jitterBufferDelay:</strong> 2364.8<br>
470
- <strong>jitterBufferEmittedCount:</strong> 11200<br>
471
- <strong>audioLevel:</strong> 0.010010071108127079<br>
472
- <strong>totalAudioEnergy:</strong> 0.00013926383727749428<br>
473
- <strong>totalSamplesReceived:</strong> 20240<br>
474
- <strong>totalSamplesDuration:</strong> 2.289999999999995<br>
475
- <strong>concealedSamples:</strong> 7688<br>
476
- <strong>silentConcealedSamples:</strong> 3424<br>
477
- <strong>concealmentEvents:</strong> 11<br>
478
- <strong>insertedSamplesForDeceleration:</strong> 1510<br>
479
- <strong>removedSamplesForAcceleration:</strong> 152<br>
480
- <h2>Report: stream</h2>
481
- <strong>ID:</strong> RTCMediaStream_smarteye<br>
482
- <strong>Timestamp:</strong> 1639533903510<br>
483
- <strong>streamIdentifier:</strong> smarteye<br>
484
- <strong>trackIds:</strong> RTCMediaStreamTrack_receiver_9,RTCMediaStreamTrack_receiver_10<br>
485
- <h2>Report: peer-connection</h2>
486
- <strong>ID:</strong> RTCPeerConnection<br>
487
- <strong>Timestamp:</strong> 1639533903510<br>
488
- <strong>dataChannelsOpened:</strong> 0<br>
489
- <strong>dataChannelsClosed:</strong> 0<br>
490
- <h2>Report: transport</h2>
491
- <strong>ID:</strong> RTCTransport_0_1<br>
492
- <strong>Timestamp:</strong> 1639533903510<br>
493
- <strong>bytesSent:</strong> 1070<br>
494
- <strong>packetsSent:</strong> 8<br>
495
- <strong>bytesReceived:</strong> 979874<br>
496
- <strong>packetsReceived:</strong> 1063<br>
497
- <strong>dtlsState:</strong> connected<br>
498
- <strong>selectedCandidatePairId:</strong> RTCIceCandidatePair_CaXxjXAc_bDJ9G6HY<br>
499
- <strong>localCertificateId:</strong> RTCCertificate_CF:4A:F1:C5:B5:83:0A:89:AF:2C:53:19:0D:29:39:22:76:0C:51:5D:90:AB:69:F1:BD:29:C2:AC:42:58:53:E3<br>
500
- <strong>remoteCertificateId:</strong> RTCCertificate_10:20:E9:A9:D9:D7:39:97:E5:BB:C4:82:98:D5:00:14:44:96:17:B3:FD:F7:C0:37:0A:A4:0E:43:D4:7E:F1:4D<br>
501
- <strong>tlsVersion:</strong> FEFD<br>
502
- <strong>dtlsCipher:</strong> TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256<br>
503
- <strong>srtpCipher:</strong> AES_CM_128_HMAC_SHA1_80<br>
504
- <strong>selectedCandidatePairChanges:</strong> 1<br>
505
- </body>
506
- </html>