I hope the link below will be of use to you.
In regard to getting frames from a bag, Dorodnic the RealSense SDK Manager has previously said: "Our built-in recorder will collect everything you need, and it is fairly well optimized, at least when running in Release. You can then extract individual frames / models as a post-processing step".
An introductory tutorial to using post-processing filters in Python with a bag file can be found here:
Unfortunately the answer has nothing to do with the question
1. It requires the intrinsics to be available, which means that I need to store them some how, either in a bag or reload later
2. A bag is not relevant since I store only a small subset of frames in memory in response to some external event (hardware triggers) and then save them after the fact, the file saver stores all of them, it also does not allow me to view them as images without storing a duplicate. I want to store just the depth data and intrinsics and process off line
The only solution I found so far is to manually copy the intrinsics one by one into a dictionary, save this dictionary, and them manually reconstruct the intrinsics object, as the intrinsics object does not allow being pickled (it has no dictionary, presumably because it's a Cython construct)
My apologies. You said that "Saving a bag file also doesn't seem like an option", suggesting that it was something you would like to do if it were possible.
The RealSense GitHub site, where the RealSense developers and engineers are located, will be your best option for guidance on this highly technical programming question. You can do so by visiting the link below and clocking the 'New Issue' button to post a question there.