We have had some success using script node, and linking the cam.preview.out to our nn, and the cam.video output to a script node input, and then within the script, use the node get() function to check for the next image and detection data. Once you have that data in the script running standalone, the next step is to get it off of the oak and onto another device. For us, we don't have many options, but we were able to embed some HTML and Javascript within the script node, and basically setup the oak as a web server. So we embed the data we need (the jpeg bitstream and the detection metadata, as well as things like hash codes, current fps values, etc) into HTTP headers, and then we use getAllResponseHeaders() with regex matching to parse out the data to any browser pointed to that IP and port. We also use this same setup to draw the bounding boxes in a browser for remove viewers.
You said you want to store video, and this could work for you as well, if you're willing to use use a stream of JPEGS output from the MJPEG video encoder. It's lossy, but it's much faster than alternatives, and it will work in pure standalone.
If I can be any help, let me know.