script-transform-worker.js (1132B)
1 onrtctransform = (event) => { 2 const transformer = event.transformer; 3 transformer.options.port.onmessage = (event) => { 4 if (event.data == "ping") { 5 transformer.options.port.postMessage("pong"); 6 } 7 }; 8 9 transformer.options.port.postMessage("started"); 10 transformer.reader = transformer.readable.getReader(); 11 transformer.writer = transformer.writable.getWriter(); 12 13 function process(transformer) 14 { 15 transformer.reader.read().then(chunk => { 16 if (chunk.done) 17 return; 18 if (chunk.value instanceof RTCEncodedVideoFrame) { 19 transformer.options.port.postMessage("video chunk"); 20 if (chunk.value.type == "key") { 21 transformer.options.port.postMessage("video keyframe"); 22 } 23 } 24 else if (chunk.value instanceof RTCEncodedAudioFrame) 25 transformer.options.port.postMessage("audio chunk"); 26 transformer.writer.write(chunk.value); 27 process(transformer); 28 }); 29 } 30 31 process(transformer); 32 }; 33 self.postMessage("registered");