Bart, I just tried this on may Mac mini M1 and yikes (this happens in Safari, FireFox and Chrome).
First off the the first stream doesn't seem to be working (for me) so I added two more (flow attached) but when I start one then the other, they mix the images together
and I have to stop/start NR
It would seem that the decoder needs to know if it is already streaming and if so and it gets a new streaming request, it should end the first stream or reject the new request.
If there is anything I can do to test something let me know.
My flow with additional cameras:
[{"id":"78aa991a56a6ce2a","type":"tab","label":"Flow 2","disabled":false,"info":"","env":[]},{"id":"50a4d182a71cdf80","type":"inject","z":"78aa991a56a6ce2a","name":"Stop stream","props":[{"p":"stop","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":250,"y":360,"wires":[["8c35709.24b749"]]},{"id":"731c40362af5e27a","type":"inject","z":"78aa991a56a6ce2a","name":"Pause stream","props":[{"p":"pause","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":250,"y":260,"wires":[["8c35709.24b749"]]},{"id":"382a1962b0da9b0d","type":"inject","z":"78aa991a56a6ce2a","name":"Resume stream","props":[{"p":"resume","v":"true","vt":"bool"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":240,"y":320,"wires":[["8c35709.24b749"]]},{"id":"ee86d795.1e8cb8","type":"inject","z":"78aa991a56a6ce2a","name":"First stream (Czech Republic)","props":[{"p":"url","v":"http://89.203.137.209/mjpg/video.mjpg","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","x":160,"y":160,"wires":[["8c35709.24b749"]]},{"id":"8c35709.24b749","type":"multipart-decoder","z":"78aa991a56a6ce2a","name":"","ret":"bin","url":"","tls":"","authentication":"digest","delay":0,"maximum":"1000000","blockSize":"1","enableLog":"on","x":490,"y":160,"wires":[["a47f8c9bfe0c0793"],[]]},{"id":"a47f8c9bfe0c0793","type":"image","z":"78aa991a56a6ce2a","name":"","width":"400","data":"payload","dataType":"msg","thumbnail":false,"active":true,"pass":false,"outputs":0,"x":700,"y":160,"wires":[]},{"id":"c6cf7a07de508770","type":"inject","z":"78aa991a56a6ce2a","name":"Second stream (Marktplatz Austria)","props":[{"p":"url","v":"http://cam1.rauris.net/axis-cgi/mjpg/video.cgi","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":180,"y":200,"wires":[["8c35709.24b749"]]},{"id":"9c8ed7b176ae68c4","type":"catch","z":"78aa991a56a6ce2a","name":"","scope":null,"uncaught":false,"x":500,"y":240,"wires":[["b0e78cd2029b0d13"]]},{"id":"b0e78cd2029b0d13","type":"debug","z":"78aa991a56a6ce2a","name":"debug 9","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":500,"y":340,"wires":[]},{"id":"f7a685005c4729c2","type":"inject","z":"78aa991a56a6ce2a","name":"Bakery in France","props":[{"p":"url","v":"http://185.194.123.84:8001/mjpg/video.mjpg","vt":"str"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":180,"y":80,"wires":[["8c35709.24b749"]]},{"id":"391c87e9d36520e5","type":"inject","z":"78aa991a56a6ce2a","name":"Reykjavik, Iceland","props":[{"p":"url","v":"http://212.30.240.7/mjpg/video.mjpg","vt":"str"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":190,"y":40,"wires":[["8c35709.24b749"]]}]