A method for video stabilization, comprising: receiving, by a computing system, a series of frames of a video captured by a recording device using an optical image stabilization system; receiving, by the computing system, (i) OIS position data indicating positions of the OIS system during capture of the series of frames and (ii) device position data indicating positions of the recording device during capture of the series of frames; determining, by the computing system, a first transformation for a particular frame in the series of frames, the first transformation being determined based on the OIS position data for the particular frame and the device position data for the particular frame; determining a set of camera positions occurring over a set of multiple frames based on the OIS position data and device position data, the set of multiple frames including one or more frames before the particular frame and one or more frames after the particular frame; applying a smoothing filter to the set of camera positions, determining an intermediate camera position for the particular frame from the output of applying the smoothing filter to the set of camera positions; comparing the intermediate camera position with a virtual camera position for a frame immediately before the particular frame, wherein the virtual camera position is a position corresponding to a transformation used to generate a stabilized output version of the frame immediately before the particular frame, determining, by the computing system, a second transformation for the particular frame based on: the first transformation and positions of the recording device determined, based on the device position data, for one or more frames in the series of frames that are captured after the particular frame, a camera position determined based on applying the smoothing filter to the set of camera positions, and a camera position determined based on the comparison of the intermediate camera position with the virtual camera position for the frame immediately before the particular frame; and generating, by the computing system, a stabilized version of the particular frame using the second transformation. receiving, by a computing system, a series of frames of a video captured by a recording device using an optical image stabilization system; receiving, by the computing system, (i) OIS position data indicating positions of the OIS system during capture of the series of frames and (ii) device position data indicating positions of the recording device during capture of the series of frames; determining, by the computing system, a first transformation for a particular frame in the series of frames, the first transformation being determined based on the OIS position data for the particular frame and the device position data for the particular frame; determining a set of camera positions occurring over a set of multiple frames based on the OIS position data and device position data, the set of multiple frames including one or more frames before the particular frame and one or more frames after the particular frame; applying a smoothing filter to the set of camera positions, determining an intermediate camera position for the particular frame from the output of applying the smoothing filter to the set of camera positions; comparing the intermediate camera position with a virtual camera position for a frame immediately before the particular frame, wherein the virtual camera position is a position corresponding to a transformation used to generate a stabilized output version of the frame immediately before the particular frame, determining, by the computing system, a second transformation for the particular frame based on: the first transformation and positions of the recording device determined, based on the device position data, for one or more frames in the series of frames that are captured after the particular frame, a camera position determined based on applying the smoothing filter to the set of camera positions, and a camera position determined based on the comparison of the intermediate camera position with the virtual camera position for the frame immediately before the particular frame; and the first transformation and positions of the recording device determined, based on the device position data, for one or more frames in the series of frames that are captured after the particular frame, a camera position determined based on applying the smoothing filter to the set of camera positions, and a camera position determined based on the comparison of the intermediate camera position with the virtual camera position for the frame immediately before the particular frame; and generating, by the computing system, a stabilized version of the particular frame using the second transformation.