Just thinking loud of other approaches in case it may help,
I think that with
@moster67 ffmpeg library you could encode directly from the camera with the desired framerate, giving to the ffmpeg one picture (one preview converted to bitmap, no need to take snapshot) each X seconds/minutes. I don't know the ffmpeg config parameters for this, but I think it should be possible.
If this is not the case, with my OpenCV lib you can also convert preview to bitmap in real time and encode in MJPEG at the speed that you want (this is the only one directly supported in the lib). The only limitation is that this format won't be directly recognized by the default android video player, but works on any other or on a PC.