From a0050950b18e9e587762ad87eec3cfd2c9c74d8d Mon Sep 17 00:00:00 2001 From: Nicolas Pope <nwpope@utu.fi> Date: Wed, 20 May 2020 13:07:04 +0300 Subject: [PATCH] Detect framerate --- web-service/public/js/bundle.js | 24 +++++++++++++++++------- web-service/public/js/index.js | 22 +++++++++++++++++----- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/web-service/public/js/bundle.js b/web-service/public/js/bundle.js index 151c25053..65d67c028 100644 --- a/web-service/public/js/bundle.js +++ b/web-service/public/js/bundle.js @@ -122,25 +122,35 @@ webSocketTest = () => { connectToStream = () => { const element = document.getElementById('ftlab-stream-video'); - const converter = new VideoConverter.default(element, 20, 6); + let converter = null; let rxcount = 0; + let ts = 0; + let dts = 0; peer.bind(current_data.uri, (latency, streampckg, pckg) => { - console.log("Packet", pckg[0]); if(pckg[0] === 2){ rxcount++; if (rxcount >= 25) { rxcount = 0; - console.log("RESEND"); peer.send(current_data.uri, 0, [1,0,255,0],[255,7,35,0,0,Buffer.alloc(0)]); //peer.send(current_data.uri, 0, [255,7,35,0,0,Buffer.alloc(0)], [1,0,255,0]); } - function decode(value){ - converter.appendRawData(value); + + if (converter) { + function decode(value){ + converter.appendRawData(value); + } + decode(pckg[5]); + converter.play(); + } else { + if (ts > 0) { + dts = streampckg[0] - ts; + console.log("Framerate = ", 1000/dts); + converter = new VideoConverter.default(element, 1000/dts, 6); + } + ts = streampckg[0]; } - decode(pckg[5]); - converter.play(); }; }) diff --git a/web-service/public/js/index.js b/web-service/public/js/index.js index 35aca436e..b48e75333 100644 --- a/web-service/public/js/index.js +++ b/web-service/public/js/index.js @@ -120,9 +120,11 @@ webSocketTest = () => { connectToStream = () => { const element = document.getElementById('ftlab-stream-video'); - const converter = new VideoConverter.default(element, 20, 6); + let converter = null; let rxcount = 0; + let ts = 0; + let dts = 0; peer.bind(current_data.uri, (latency, streampckg, pckg) => { if(pckg[0] === 2){ @@ -132,11 +134,21 @@ connectToStream = () => { peer.send(current_data.uri, 0, [1,0,255,0],[255,7,35,0,0,Buffer.alloc(0)]); //peer.send(current_data.uri, 0, [255,7,35,0,0,Buffer.alloc(0)], [1,0,255,0]); } - function decode(value){ - converter.appendRawData(value); + + if (converter) { + function decode(value){ + converter.appendRawData(value); + } + decode(pckg[5]); + converter.play(); + } else { + if (ts > 0) { + dts = streampckg[0] - ts; + console.log("Framerate = ", 1000/dts); + converter = new VideoConverter.default(element, 1000/dts, 6); + } + ts = streampckg[0]; } - decode(pckg[5]); - converter.play(); }; }) -- GitLab