Virtual video editing
Virtual video editing is disclosed. In some embodiments, a definition of a virtual clip of a source file is received from a user and saved for future playback of the virtual clip. The virtual clip is not encoded as a separate file. Rather, a portion of the source file specified in the definition of the virtual clip is played back when the virtual clip is played.
1. A method for generating a virtual key frame, comprising: receiving, at a server, a live video stream; generating continuously, at the server, virtual key frames corresponding to received updates of the live video stream by taking a closest previous key frame of the live video stream and applying all corresponding updates of the live video stream between the closest previous key frame of the live video stream up to a prescribed point of the live video stream, wherein the virtual key frames are between actual key frames of the live video stream, the continuously generated virtual key frames are generated without a user's selection, and the live video stream is not modified to create the virtual key frames; receiving, at the server, a request from a user for the live video stream at a specific point in the live video stream, determining, at the server, that the request from the user for the live video stream at the specific point is at a point in the live video stream that is between actual key frames; transmitting, from the server to the user, the live video stream at the specified point starting with a virtual key frame generated for the specified point in the live video stream, wherein the live video stream is immediately transmitted to the user with the virtual key frame without waiting for the next actual key frame in the video stream.
2. The method recited in claim 1 , further comprising applying and transmitting updates to the virtual key frame generated for the specified point until the next actual key frame is reached in the live video stream when transmitting the live video stream.
3. A system for generating a virtual key frame, comprising: a processor; and at least one memory device that stores a plurality of instructions, which when executed by the processor, cause the processor to: receive, at a server, a live video stream; generate continuously, at the server, virtual key frames corresponding to received updates of the live video stream by taking a closest previous key frame of the live video stream and applying all corresponding updates of the live video stream between the closest previous key frame of the live video stream up to a prescribed point of the live video stream, wherein the virtual key frames are between actual key frames of the live video stream, the continuously generated virtual key frames are generated without a user's selection, and the live video stream is not modified to create the virtual key frames; receive, at the server, a request from a user for the live video stream at a specific point in the live video stream, determine, at the server, that the request from the user for the live video stream at the specific point is at a point in the live video stream that is between actual key frames; transmit, from the server to the user, the live video stream at the specified point starting with a virtual key frame generated for the specified point in the live video stream, wherein the live video stream is immediately transmitted to the user with the virtual key frame without waiting for the next actual key frame in the video stream.
4. The system recited in claim 3 , wherein, when transmitting the live video stream, the processor further applies and transmits updates to the virtual key frame generated for the specified point until the next actual key frame is reached in the live video stream.
5. A computer program product for generating a virtual key frame, the computer program product embodied in a non-transitory computer readable storage medium and comprising computer instructions for: receiving, at a server, a live video stream; generating continuously, at the server, virtual key frames corresponding to received updates of the live video stream by taking a closest previous key frame of the live video stream and applying all corresponding updates of the live video stream between the closest previous key frame of the live video stream up to a prescribed point of the live video stream, wherein the virtual key frames are between actual key frames of the live video stream, the continuously generated virtual key frames are generated without a user's selection, and the live video stream is not modified to create the virtual key frames; receiving, at the server, a request from a user for the live video stream at a specific point in the live video stream, determining, at the server, that the request from the user for the live video stream at the specific point is at a point in the live video stream that is between actual key frames; transmitting, from the server to the user, the live video stream at the specified point starting with a virtual key frame generated for the specified point in the live video stream, wherein the live video stream is immediately transmitted to the user with the virtual key frame without waiting for the next actual key frame in the video stream.
6. The computer program product recited in claim 5 , further comprising applying and transmitting updates to the virtual key frame generated for the specified point until the next actual key frame is reached in the live video stream when transmitting the live video stream.