This is what i'm using, it's a flow made by @BartButenaers. I can't find the original post from Bart anymore so maybe some details are missing about the functionality.
It uses ffmpeg to grab one frame from an rtsp stream and shows it on the dashboard.
[{"id":"e6d7a538.b0e33","type":"exec","z":"44908087.da8e9","command":"ffmpeg -i \"rtsp://192.168.1.95:10554/user=nodered&password=nodered&channel=3&stream=1.sdp\" -frames 1 -qscale 1 -y -f image2","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"Grab a frame","x":580,"y":220,"wires":[["e80e611c.69cc"],[],["7a9db4.0b5b624c"]]},{"id":"e80e611c.69cc","type":"ui_template","z":"44908087.da8e9","group":"8a3c9e66.456668","name":"StaticImageCam3voor","order":2,"width":0,"height":0,"format":"<body>\n\n<p>\n<a href=\"/grabcam3.jpg\" target=\"_blank\">\n<img border=\"0\" alt=\"CamVoorGrab\" src=\"/grabcam3.jpg\" width=\"800\" height=\"800\">\n</a>\n</p>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":1020,"y":200,"wires":[[]]},{"id":"211f7471.71d28c","type":"change","z":"44908087.da8e9","name":"Set filename","rules":[{"t":"set","p":"payload","pt":"msg","to":"/home/pi/node-red-static/grabcam3.jpg","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":220,"wires":[["e6d7a538.b0e33"]]},{"id":"f5b27e.636d658","type":"inject","z":"44908087.da8e9","name":"Test","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":170,"y":220,"wires":[["211f7471.71d28c"]]},{"id":"8a3c9e66.456668","type":"ui_group","name":"Cam Voor","tab":"a9c4216b.d97f1","order":1,"disp":true,"width":"16","collapse":false},{"id":"a9c4216b.d97f1","type":"ui_tab","name":"Cam 1 Grab","icon":"fa-video-camera","order":25,"disabled":false,"hidden":false}]