Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Node-RedでMJPEG  その1:環境構築と動作確認

実際のところ


node-red-contrib-multipart-stream-encoder


まんま公式サイトのままですが

[{"id":"7f2b6b5c.691b64","type":"http in","z":"714eca134aa189b4","name":"","url":"/infinite","method":"get","upload":false,"swaggerDoc":"","x":710,"y":220,"wires":[["5b3e4039.df33b"]]},{"id":"5b3e4039.df33b","type":"multipart-encoder","z":"714eca134aa189b4","name":"","statusCode":"","ignoreMessages":true,"outputOneNew":true,"outputIfSingle":true,"outputIfAll":true,"globalHeaders":{"Content-Type":"multipart/x-mixed-replace;boundary=--myboundary","Connection":"keep-alive","Expires":"Fri, 01 Jan 1990 00:00:00 GMT","Cache-Control":"no-cache, no-store, max-age=0, must-revalidate","Pragma":"no-cache"},"partHeaders":{"Content-Type":"image/jpeg"},"destination":"all","highWaterMark":16384,"x":906.0000305175781,"y":220.00000095367432,"wires":[["110f23b9.aa0fbc"]]},{"id":"fb72a642.df0eb8","type":"http request","z":"714eca134aa189b4","name":"Get image by url","method":"GET","ret":"bin","paytoqs":"ignore","url":"","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"credentials":{},"x":722.0000114440918,"y":280.0000009536743,"wires":[["5b3e4039.df33b"]]},{"id":"59a9f54a.322d2c","type":"function","z":"714eca134aa189b4","name":"Next image url","func":"var counter = global.get(\"image_counter\") || 0; \ncounter++;\nglobal.set(\"image_counter\",counter);\n\nmsg.url = 'https://dummyimage.com/400x200/fff/000&text=PNG+' + counter;\n\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":527.0000114440918,"y":280.0000009536743,"wires":[["fb72a642.df0eb8"]]},{"id":"82554055.ab38d","type":"inject","z":"714eca134aa189b4","name":"Every second","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"","payloadType":"date","x":80.52344131469727,"y":279.4062547683716,"wires":[["dc848d6.599127"]]},{"id":"dc848d6.599127","type":"switch","z":"714eca134aa189b4","name":"if flow.clientCount > 0","property":"clientCount","propertyType":"flow","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":305.5117492675781,"y":279.8398485183716,"wires":[["59a9f54a.322d2c"]]},{"id":"110f23b9.aa0fbc","type":"change","z":"714eca134aa189b4","name":"Set flow.clientCount","rules":[{"t":"set","p":"clientCount","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1104,"y":218.99999904632568,"wires":[[]]}]

http://{yourip}:1880/infiniteにアクセスすると……

dummyimage

このサンプルでは、画像は以下のサイトから取得しているようです
毎秒生成して返してくれるのすごい……
Dynamic Dummy Image Generator - DummyImage.com