diff options
| -rw-r--r-- | app/relay/index.js | 17 | ||||
| -rw-r--r-- | app/server/index.js | 15 | ||||
| -rw-r--r-- | public/assets/js/app.js | 47 | ||||
| -rw-r--r-- | public/index.html | 1 | ||||
| -rw-r--r-- | requirements.txt | 1 | ||||
| -rw-r--r-- | rpc/rpc.py | 38 |
6 files changed, 63 insertions, 56 deletions
diff --git a/app/relay/index.js b/app/relay/index.js index eaec38b..a5a01b9 100644 --- a/app/relay/index.js +++ b/app/relay/index.js @@ -1,7 +1,6 @@ require('dotenv').config() const io = require('socket.io-client') -const ss = require('socket.io-stream') const zerorpc = require('zerorpc') const Readable = require('stream').Readable; @@ -51,20 +50,8 @@ let relay = new zerorpc.Server({ send_frame: function (fn, frame, reply) { reply() - console.log('got frame, ' + frame.length + ' bytes') - remote.emit('frame', fn, frame) - // var stream = ss.createStream() - // stream.on('data', () => { console.log('stream data...') }) - // // console.log(stream) - - // var rs = new Readable() - // rs.on('data', (d) => { console.log('rs data...', d.length) }) - // rs._read = function noop() {} - // rs.pipe(stream) - // rs.push(frame) - // rs.push(null) - // ss(remote).on('frame', () => console.log('frame??')) - // ss(remote).emit('frame', stream, {name: fn}, function(){ console.log('where am i') }) + // console.log('got frame, ' + frame.length + ' bytes') + remote.emit('frame', { fn: fn, frame: frame }) } }) relay.on("error", function(error) { diff --git a/app/server/index.js b/app/server/index.js index 0478b81..429cbb1 100644 --- a/app/server/index.js +++ b/app/server/index.js @@ -34,21 +34,12 @@ client.on('connect', socket => { relay.on('connect', socket => { console.log('Relay connected') socket.on('res', data => { - console.log('received response', data.cmd) + console.log('Received response', data.cmd) client.emit('res', data) }) - socket.on('frame', (fn, data) => { - console.log('relay frame', fn, data.length) - client.emit('frame', fn, data) - }) - - ss(relay).on('frame', (stream, data) => { - console.log('received frame', data) - Object.values(client.connected).map(socket => { - console.log('emitting to socket') - ss(socket).emit('frame', stream, data) - }) + socket.on('frame', (data) => { + client.emit('frame', data) }) socket.on('disconnect', () => { diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 87cb48d..0ea5eeb 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1,28 +1,40 @@ -var socket = io.connect('/client'); +const container = document.querySelector('#container') -ss(socket).on('frame', (stream, data) => { - console.log('received frame', data) - Object.values(client.connected).map(socket => { - ss(socket).emit('frame', stream, data) - }) -}) +let socket = io.connect('/client') +let got_frame = false socket.on('res', (data) => { console.log(data) }) -socket.on('frame', (fn, data) => { - console.log('frame', fn, data.length) - document.write(data) +socket.on('frame', (data) => { + got_frame = true + console.log('frame', data.fn) + // console.log(data.frame) + // return + const blob = new Blob([data.frame], { type: 'image/jpg' }) + const url = URL.createObjectURL(blob) + + const img = new Image () + img.onload = function() { + URL.revokeObjectURL(url) + container.innerHTML = '' + container.appendChild(img) + } + img.src = url }) socket.emit('cmd', { cmd: 'get_params', }) -socket.emit('cmd', { - cmd: 'get_last_frame', -}) +setTimeout(() => { + if (!got_frame) { + socket.emit('cmd', { + cmd: 'get_last_frame', + }) + } +}, 500) socket.emit('cmd', { cmd: 'send_param', @@ -31,12 +43,3 @@ socket.emit('cmd', { 'value': 'test', } }) - -// $('#file').change(function(e) { -// var file = e.target.files[0]; -// var stream = ss.createStream(); - -// // // upload a file to the server. -// // ss(socket).emit('file', stream, {size: file.size}); -// // ss.createBlobReadStream(file).pipe(stream); -// })
\ No newline at end of file diff --git a/public/index.html b/public/index.html index 9f851c2..04817a1 100644 --- a/public/index.html +++ b/public/index.html @@ -13,7 +13,6 @@ <div id="container"></div> </body> <script src="/socket.io/socket.io.js"></script> -<script src="/assets/js/vendor/socket.io-stream.js"></script> <script> var s = document.createElement('script'); s.setAttribute('src','assets/js/app.js?' + Date.now()); diff --git a/requirements.txt b/requirements.txt index 10ee8a6..dfcc352 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,3 @@ python-dotenv zerorpc +pillow
\ No newline at end of file @@ -3,6 +3,9 @@ import os import zerorpc import gevent import time +from io import BytesIO +import base64 +from PIL import Image load_dotenv(find_dotenv()) @@ -30,13 +33,36 @@ class CortexRPC(object): print("RPC connected...".format(val)) except zerorpc.TimeoutExpired: print("RPC timeout :(") - # return val - print("defer sending a file...") - gevent.sleep(1) - return self.get_last_frame() + return val + # print("defer sending a file...") + # gevent.sleep(1) + # return self.get_last_frame() def get_last_frame(self): - self.send_frame("test.png", '01234567' * 8 * 8 * 8 * 8 * 2) + # self.send_frame("test.png", '01234567' * 8 * 8 * 8 * 8 * 2) + from os import listdir + from os.path import isfile, join + path = '/Users/user/Desktop/woods_videos/test_clahe_brightness_posterize_256/' + onlyfiles = sorted([f for f in listdir(path) if isfile(join(path, f))]) + + # im = Image.open(join(path, onlyfiles[0])) + # for f in onlyfiles: + # gevent.sleep(1/29) + # output = BytesIO() + # im.save(output, format="JPEG") + # frame = base64.b64encode(output.getvalue()) + # output.close() + # self.send_frame(f, frame) + + for f in onlyfiles: + gevent.sleep(1/30) + output = BytesIO() + im = Image.open(join(path, f)) + im = im.convert('RGB') + im.save(output, format="JPEG") + frame = output.getvalue() + output.close() + self.send_frame(f.replace('png', 'jpg'), frame) return "ok" def send_param(self, key, value): @@ -53,7 +79,7 @@ class CortexRPC(object): def send_frame(self, fn, frame): if self.relay is not None: - print("Sending a frame...") + # print("Send frame " + fn) self.relay.send_frame(fn, frame) else: print("Can't send frame, relay not ready...") |
