SELECTIVELY UPLOADING VIDEOS TO 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 uploading a high-resolution video, the method comprising:
receiving, from a client device, a low-resolution video transcoded from a high-resolution video, the low-resolution video comprising frames having a lower resolution than frames of the high-resolution video;
selecting a portion of interest within the low-resolution video, the selected portion of interest used to obtain a corresponding portion of the high-resolution video from which the selected portion of interest within the low-resolution video was transcoded;
transmitting commands to the client device to prompt the client device to upload the corresponding portion of the high-resolution video;
receiving the corresponding portion of the high-resolution video from the client device; and
storing the corresponding portion of the high-resolution video.
2 . The method of claim 1 , wherein selecting the portion of interest within the low-resolution video comprises:
providing for display, through a video editing interface, the low-resolution video;
obtaining an edit decision list describing an edit made by a user to the low-resolution video through the video editing interface; and
identifying the corresponding portion of the high-resolution video from a portion comprising a video time of the edit to the low-resolution video, the edit time indicated by the edit decision list.
3 . The method of claim 2 , wherein the corresponding portion of the high-resolution video received from the client device has been modified according to the edit decision list.
4 . The method of claim 1 , wherein selecting the portion of interest within the low-resolution video comprises:
obtaining a highlight tag indicating a video time of the event of interest, the highlight tag included in metadata of the high-resolution video; and
selecting the portion of interest within the low-resolution video comprising video times within a threshold time interval from a video time indicated by the highlight tag.
5 . The method of claim 1 , wherein receiving the low-resolution video from the client device comprises:
obtaining a highlight tag indicating that the high-resolution video comprises an event of interest, the highlight tag included in metadata of the high-resolution video; and
selecting, from a plurality of videos in response to the highlight tag, the low-resolution video (a) for transcoding from the high-resolution video associated with the highlight tag and (b) for uploading.
6 . The method of claim 1 , wherein receiving the low-resolution video from the client device comprises:
receiving, from the client device, registration of the high-resolution video accessible by the client device from a camera communicatively coupled to the client device;
transmitting commands to the client device to prompt the client device to transcode the high-resolution video into the low-resolution video comprising frames at the lower resolution than frames of the high-resolution video; and
receiving, from the client device, the low-resolution video transcoded from the high-resolution video.
7 . The method of claim 1 , wherein transmitting the commands to the client device to prompt the client device to upload the corresponding portion of the high-resolution video comprises:
obtaining a device status report from the client device indicating connectivity resources of the client device; and
transmitting commands to prompt the client device to upload the corresponding portion of the high-resolution video in response to available bandwidth of the client device indicated by the device status report.
8 . The method of claim 1 , wherein the client device is one of a plurality of client devices uploading respective high-resolution videos, and wherein transmitting the commands to the client device to prompt the client device to upload the corresponding portion of the high-resolution video comprises:
obtaining a device status report from each of the plurality of client devices, each device status report indicating memory resources of a corresponding client device of the plurality of client devices;
determining an upload order for uploading high-resolution videos from the plurality of client devices, the upload order prioritizing uploads from client devices with lower memory resources than other client devices of the plurality; and
transmitting commands to the plurality of client devices to prompt the plurality of client devices to upload their respective high-resolution videos according to the determined upload order.
9 . The method of claim 1 , wherein the client device is one of a plurality of client devices each uploading a respective high-resolution video, and wherein transmitting the commands to the client device to prompt the client device to upload the corresponding portion of the high-resolution video comprises:
determining an upload schedule for the plurality of client devices according to connectivity resources, memory resources, and processing resources of a media server receiving and storing uploaded high-resolution videos; and
transmitting commands to the plurality of client devices to prompt the plurality of client devices to upload their respective high-resolution videos according to the determined upload schedule.
10 . The method of claim 1 , wherein the client device is one of a plurality of client devices each uploading a respective high-resolution video, and wherein transmitting the commands to the client device to prompt the client device to upload the corresponding portion of the high-resolution video comprises:
determining upload bandwidth allocations for each of the plurality of client devices according to connectivity resources and processing resources available to store high-resolution videos once uploaded; and
transmitting commands to the plurality of client devices to prompt the plurality of client devices to upload their respective high-resolution videos according to the determined upload bandwidth allocations.
11 . The method of claim 1 , wherein storing the corresponding portion of the high-resolution video comprises:
replacing the selected portion of interest within a stored copy of the low-resolution video with the corresponding portion of the high-resolution video.
12 . A non-transitory computer-readable medium storing instructions that when executed cause a processor to:
receive, from a client device, a low-resolution video transcoded from a high-resolution video, the low-resolution video comprising frames having a lower resolution than frames of the high-resolution video;
select a portion of the high-resolution video according to a portion of interest depicted in the selected portion of the low-resolution video;
instruct the client device to upload a corresponding portion of the high-resolution video from which the selected portion of the low-resolution video was transcoded;
receive the corresponding portion of the high-resolution video; and
store the corresponding portion of the high-resolution video.
13 . The computer-readable medium of claim 12 , wherein the instructions to select the portion of interest within the low-resolution video further comprise instructions that when executed cause the processor to:
provide for display, through a video editing interface, the low-resolution video;
obtain an edit decision list describing an edit made by a user to the low-resolution video through the video editing interface; and
identify the corresponding portion of the high-resolution video from a portion comprising a video time of the edit to the low-resolution video, the edit time indicated by the edit decision list.
14 . The computer-readable medium of 13, wherein the corresponding portion of the high-resolution video received from the client device has been modified according to the edit decision list.
15 . The computer-readable medium of claim 12 , wherein the instructions to select the portion of interest within the low-resolution video further comprise instructions that when executed cause the processor to:
obtain a highlight tag indicating a video time of the event of interest, the highlight tag included in metadata of the high-resolution video; and
select the portion of interest within the low-resolution video comprising video times within a threshold time interval from a video time indicated by the highlight tag.
16 . The computer-readable medium of claim 12 , wherein the instructions to receive the low-resolution video from the client device further comprise instructions that when executed cause the processor to:
obtain a highlight tag indicating that the high-resolution video comprises an event of interest, the highlight tag included in metadata of the high-resolution video; and
select, from a plurality of videos in response to the highlight tag, the low-resolution video (a) for transcoding from the high-resolution video associated with the highlight tag and (b) for uploading.
17 . The computer-readable medium of claim 12 , wherein the instructions to receive the low-resolution video from the client device further comprise instructions that when executed cause the processor to:
receive, from the client device, registration of the high-resolution video accessible by the client device from a camera communicatively coupled to the client device;
transmit commands to the client device to prompt the client device to transcode the high-resolution video into the low-resolution video comprising frames at the lower resolution than frames of the high-resolution video; and
receive, from the client device, the low-resolution video transcoded from the high-resolution video.
18 . The computer-readable medium of claim 12 , wherein the instructions to transmit the instructions to the client device to prompt the client device to upload the corresponding portion of the high-resolution video further comprise instructions that when executed cause the processor to:
obtain a device status report from the client device indicating connectivity resources of the client device; and
transmit commands to prompt the client device to upload the corresponding portion of the high-resolution video in response to available bandwidth of the client device indicated by the device status report.
19 . The computer-readable medium of claim 12 , wherein the client device is one of a plurality of client devices uploading respective high-resolution videos, and wherein the instructions to transmit the instructions to the client device to prompt the client device to upload the corresponding portion of the high-resolution video further comprise instructions that when executed cause the processor to:
obtain a device status report from each of the plurality of client devices, each device status report indicating memory resources of a corresponding client device of the plurality of client devices;
determine an upload order for uploading high-resolution videos from the plurality of client devices, the upload order prioritizing uploads from client devices with lower memory resources than other client devices of the plurality; and
transmit commands to the plurality of client devices to prompt the plurality of client devices to upload their respective high-resolution videos according to the determined upload order.
20 . The computer-readable medium of claim 12 , wherein the client device is one of a plurality of client devices each uploading a respective high-resolution video, and wherein the instructions to transmit the instructions to the client device to prompt the client device to upload the corresponding portion of the high-resolution video further comprise instructions that when executed cause the processor to:
determine an upload schedule for the plurality of client devices according to connectivity resources, memory resources, and processing resources of a media server receiving and storing uploaded high-resolution videos; and
transmit commands to the plurality of client devices to prompt the plurality of client devices to upload their respective high-resolution videos according to the determined upload schedule.