1. A method comprising: sending, by a computing device, a request for a bundle of preview images for a video to a server; starting, by the computing device, to play the video, wherein the bundle of preview images is separate from the video; receiving, by the computing device, a portion of the bundle of preview images for the video; prior to receiving an input from a user for a location in the video that is different from a current position being played for the video, decoding, by the computing device, the portion of the bundle of preview images sequentially from a beginning of the bundle of preview images before the entire bundle of preview images is received while the video is received and played; receiving, by the computing device, the input from the user for the location in the video that is different from the current position being played for the video; upon receiving the input, determining, by the computing device, if a preview image corresponding to the location has been decoded from the bundle of preview images; when the image corresponding to the location has been decoded, displaying, by the computing device, the preview image corresponding to the location as a preview image for the location while displaying the video being played; when the image corresponding to the location has not been decoded, performing, by the computing device, an action designated for when the preview image corresponding to the location has not been decoded; and after displaying the preview image or performing the action, switching, by the computing device, from decoding the bundle of preview images sequentially from the beginning to decoding preview images from the bundle of preview images in both a forward direction and a reverse direction from the location.