DISTRIBUTED VIDEO PROCESSING IN A CLOUD ENVIRONMENT
A cloud video system selectively uploads a high-resolution video and instructs one or more client devices to perform distributed processing on the high-resolution video. A client device registers high-resolution videos accessed by the client device from a camera communicatively coupled to the client device. A portion of interest within a low-resolution video transcoded from the high-resolution video is selected. A task list is generated specifying the selected portion of the high-resolution video and at least one task to perform on the portion of the high-resolution video. Commands are transmitted to prompt the client device to perform the at least one task on the specified portion of the high-resolution video according to the task list. The specified portion of the high-resolution video is modified according to the task list and uploaded to the cloud. Example tasks include transcoding, applying edits, extracting metadata, and generating highlight tags.
1 . A method for processing a high-resolution video, the method comprising:
receiving, from a client device, registration of a high-resolution video accessed by the client device from a camera communicatively coupled to the client device;
generating a task list specifying a portion of the high-resolution video and at least one task to perform on the portion of the high-resolution video;
transmitting commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video according to the task list;
receiving the specified portion of the high-resolution video modified according to the task list; and
storing the modified portion of the high-resolution video.
2 . The method of claim 1 , wherein generating the task list comprises:
providing for display, through a video editing interface, a low-resolution video transcoded from the high-resolution video;
obtaining an edit decision list describing an edit made to the low-resolution video through the video editing interface;
identifying the portion of the high-resolution video comprising a video time corresponding to the edit, the edit time indicated by the edit decision list; and
generating the task list specifying the identified portion of the high-resolution video, the at least one task indicating to modify the identified portion of the high-resolution video according to the edit decision list.
3 . The method of claim 1 , wherein generating the task list comprises:
generating the task list specifying a transcoding task and specifying at least one of: a video format of a transcoded video transcoded from the high-resolution video, a video frame rate of the transcoded video, and a video frame resolution of the transcoded video.
4 . The method of claim 3 , wherein generating the task list comprises:
obtaining a device status report indicating available connectivity bandwidth for the client device to upload the portion of the high-resolution video; and
determining at least one of the video frame rate and the video frame resolution based on the available connectivity bandwidth.
5 . The method of claim 1 , wherein generating the task list comprises:
providing for display, through a video editing interface, a low-resolution video transcoded from the high-resolution video;
obtaining, through the video editing interface, a selection of a video time within the low-resolution video to generate a thumbnail image; and
generating the task list specifying a thumbnail image task, a video time from which to generate the thumbnail, and at least one of a format of the thumbnail image and a resolution of the thumbnail image.
6 . The method of claim 1 , wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
transmitting commands to prompt the client device to generate condensed metadata from raw metadata captured concurrently with the high-resolution video, the condensed metadata comprising fewer samples of metadata than the raw metadata.
7 . The method of claim 1 , wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
transmitting commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the highlight tag generated according to a capture bit-rate of the high-resolution video equaling or exceeding a threshold capture bit-rate.
8 . The method of claim 1 , wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
transmitting commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified from a threshold time interval around a video time in response to identifying a local extremum in at least one of: speed, acceleration, and rotation, the local extremem occurring at the video time.
9 . The method of claim 1 , wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
transmitting commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified from a threshold time interval around a video time in response to determining that biometric data equals or exceeds a threshold value, the biometric data captured at the video time.
10 . The method of claim 1 , wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
transmitting commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified in response to recognizing a particular phrase in audio captured during the portion of interest.
11 . The method of claim 1 , wherein the high-resolution video is accessible by a plurality of client devices, wherein transmitting the commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video comprises:
generating sub-tasks lists for each of the plurality of client devices, the transmitting commands to prompt the plurality of client devices to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified in response to recognizing a particular phrase in audio captured during the portion of interest.
12 . A non-transitory computer-readable medium storing instructions that when executed cause a processor to:
receive, from a client device, registration of a high-resolution video accessed by the client device from a camera communicatively coupled to the client device;
generate a task list specifying a portion of the high-resolution video and at least one task to perform on the portion of the high-resolution video;
transmit commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video according to the task list;
receive the specified portion of the high-resolution video modified according to the task list; and
store the modified portion of the high-resolution video.
13 . The computer-readable medium of claim 12 , wherein the instructions to generate the task list further comprise instructions that when executed cause the processor to:
provide for display, through a video editing interface, a low-resolution video transcoded from the high-resolution video;
obtain an edit decision list describing an edit made to the low-resolution video through the video editing interface;
identify the portion of the high-resolution video comprising a video time corresponding to the edit, the edit time indicated by the edit decision list; and
generate the task list specifying the identified portion of the high-resolution video, the at least one task indicating to modify the identified portion of the high-resolution video according to the edit decision list.
14 . The computer-readable medium of claim 12 , wherein the instructions to generate the task list further comprise instructions that when executed cause the processor to:
generate the task list specifying a transcoding task and specifying at least one of: a video format of a transcoded video transcoded from the high-resolution video, a video frame rate of the transcoded video, and a video frame resolution of the transcoded video.
15 . The computer-readable medium of claim 14 , wherein the instructions to generate the task list further comprise instructions that when executed cause the processor to:
obtain a device status report indicating available connectivity bandwidth for the client device to upload the portion of the high-resolution video; and
determine at least one of the video frame rate and the video frame resolution based on the available connectivity bandwidth.
16 . The computer-readable medium of claim 12 , wherein the instructions to generate the task list further comprise instructions that when executed cause the processor to:
provide for display, through a video editing interface, a low-resolution video transcoded from the high-resolution video;
obtain, through the video editing interface, a selection of a video time within the low-resolution video to generate a thumbnail image; and
generate the task list specifying a thumbnail image task, a video time from which to generate the thumbnail, and at least one of a format of the thumbnail image and a resolution of the thumbnail image.
17 . The computer-readable medium of claim 12 , wherein the instructions to transmit commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video further comprise instructions that when executed cause the processor to:
transmit commands to prompt the client device to generate condensed metadata from raw metadata captured concurrently with the high-resolution video, the condensed metadata comprising fewer samples of metadata than the raw metadata.
18 . The computer-readable medium of claim 12 , wherein the instructions to transmit commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video further comprise instructions that when executed cause the processor to:
transmit commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the highlight tag generated according to a capture bit-rate of the high-resolution video equaling or exceeding a threshold capture bit-rate.
19 . The computer-readable medium of claim 12 , wherein the instructions to transmit commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video further comprise instructions that when executed cause the processor to:
transmit commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified from a threshold time interval around a video time in response to identifying a local extremem in at least one of: speed, acceleration, and rotation, the local extremem occurring at the video time.
20 . The computer-readable medium of claim 12 , wherein the instructions to transmit commands to prompt the client device to perform the at least one task on the specified portion of the high-resolution video further comprise instructions that when executed cause the processor to:
transmit commands to prompt the client device to generate highlight tags corresponding to a portion of interest within the high-resolution video, the portion of interest identified from a threshold time interval around a video time in response to determining that biometric data equals or exceeds a threshold value, the biometric data captured at the video time.