Sharing video in a cloud video service

A security system images a large amount of data through routine use which is difficult to transfer or share. In one embodiment, through the use of a cloud-based video service and an application program interface, the methods and systems disclosed herein comprise accepting a communication that identifies parameters associated with a video on a video server accessible via a network. The methods and systems further cause the video server to transfer the video via the network to a cloud-based video service location in response to the communication, and transmit a notification to a receiving party (or cause the cloud-based video service location to transmit the notification) in concert with the transfer of the video, which provides availability information of the video at the cloud-based service location. The methods and systems facilitate video sharing amongst parties.

This application is the U.S. National Stage of International Application No. PCT/US2013/076194, filed Dec. 18, 2013, which designates the U.S., published in English. The entire teachings of the above application are incorporated herein by reference.

BACKGROUND OF THE INVENTION

Security cameras are commonly used to monitor indoor and outdoor locations. Networks of security cameras may be used to monitor a given area. For example, security cameras may be placed throughout a retail store to monitor customers and employees. A user may manually analyze and process the video feeds within the network to track and locate objects within the monitored area. Typical security camera networks operate as a closed system, in which networked security cameras provide video feeds for a single geographic area, and a user observes the video feeds and operates the network from a fixed-location user terminal located at the same geographic area.

SUMMARY OF THE INVENTION

In an example embodiment, a present method relates to sharing video using a cloud-based video service. The method comprises accepting a communication that identifies parameters associated with a video on a video server accessible via a network, the communication being submitted by a source party. The communication causes the video server to transfer the video via the network to a cloud-based video service location responsive to the communication and parameters identified therein. The method further comprises transmitting a notification to a receiving party, or causing the cloud-based video service location to transmit the notification, in concert with the transfer of the video. The notification provides availability information of the video at the cloud-based service location. In another example embodiment, accepting the communication, causing the video server to transfer the video, and transmitting the notification (or causing the notification to be transmitted to the receiving party) occurs at a node executing an application program interface in operative communication with the video server.

In another embodiment, accepting the communication includes accepting an indicator that identifies the receiving party who is to receive the notification of availability of the video.

In another embodiment, causing the video server to transfer the video includes causing the video server to transfer a plurality of time-synchronized videos. In another embodiment, causing the video server to transfer a plurality of time-synchronized videos further comprises selecting the plurality of time-synchronized videos from video segments recorded in parallel between a common start time and a common stop time. In another embodiment, causing the video server to transfer a plurality of time-synchronized videos further comprises selecting the plurality of time-synchronized videos from video segments recorded between a series of non-overlapping start times and stop times.

In another embodiment, causing the video server to transfer the video includes causing the video server to transfer a plurality of content-synchronized videos. In one embodiment, the content synchronized videos are video segments recorded in series or parallel by multiple video collectors that contain a common object. In another embodiment, the common object is a person. In yet another embodiment, the content-synchronized videos are video segments recorded in series or parallel by multiple video collectors that contain a common activity. In another embodiment, the common activity is motion. In yet another embodiment, the common activity is a point of sale transaction.

In another embodiment, the content-synchronized videos are video segments recorded in series or parallel by multiple video collectors that contain at least one common tag. In yet another embodiment, the tag is selected from a group consisting of: a preconfigured tag, automatically generated tag, user generated tag, or signal tag produced as a function of a signal provided by a device under video surveillance. In another embodiment, the signal tag represents an event outside an expected range of activities, and the tag is generated by a point of sale terminal.

In one embodiment, the video server is a plurality of video servers, and the example method further comprises causing the plurality of video servers to transfer a plurality of logically-related videos. In another embodiment, the plurality of logically-related videos are related based on a common location type. In another embodiment, the plurality of logically-related videos are related based on a common content type. In another embodiment, the plurality of logically-related videos are related based on a common tag type.

In another embodiment, a present apparatus relates to sharing video in a cloud-based video service. The apparatus comprises at least one processor and at least one memory with computer code instructions stored thereon, the at least one processor and the at least one memory with computer code instructions being configured to cause the apparatus to: accept a communication that identifies parameters associated with a video on a video server accessible via a network, the communication being submitted by a source party; cause the video server to transfer the video via the network to a cloud-based service location responsive to the communication and parameters identified therein; and transmit a notification to a receiving party, or cause the cloud-based video service location to transmit the notification, in concert with the transfer of the video, the notification providing availability information to the video at the cloud-based service location.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1is an illustration of a retail scene100in which an example embodiment of the present methods and systems may be implemented. Within a retail store125a, among a chain of retail stores125a-n, several security cameras110may be installed. The cameras110may be positioned to image a customer120as the customer walks into the store, positioned to image an employee115, or positioned to image a cash register or point of sale terminal160. The cameras110may be linked through a local area network (not shown) to an in-store video server162, which is where the videos recorded by the security cameras110may be stored. Similar systems can be installed in any number of retail stores125a-n. The video servers in the retail stores125a-nmay be connected to each other or to a network cloud155via the Internet which may be considered as part of the cloud155or a communications network between the retails stores125a-nand the cloud155. A user connected to either the local area network or the internet may view the video surveillance recorded, including any images, video, and event data130, if the user has access.

InFIG. 1, for example, the user is the District Manager135of the chain store locations A through N125a-n. The District Manager135may view the images, videos, and event data130on any suitable viewing device140, such as a laptop computer, tablet or smart mobile telephone.

The District Manager135, as the source party, may see videos he or she wishes to share with a receiving party. In the present example, the receiving party is Corporate Headquarters165. The District Manager135, however, may not want to, or have the ability to, send the entire video, especially if Corporate Headquarters165is located outside of the local area network and transferring an entire video would require significant bandwidth use. The District Manager135may, instead, identify a part of a video, or parts of multiple videos, that are of interest to the receiving party by selecting parameters that identify the video segments of interest.

For example, if the District Manager135wishes to send video occurring between 1:00 PM and 2:00 PM on Thursday, December 5th, at Chain Store Location A125a-nthe District Manager135may identify those parameters when searching for video content. Videos that fall within the selected parameters become video segments of interest. Similarly, if the District Manager135wishes to send all videos occurring between 1:00 PM and 2:00 PM on Thursday, December 5th, at Chain Store Locations A through N125a-n, the District Manager135may identify those parameters, and select all relevant videos by simply selecting the desired times and requesting videos from all available video servers. These videos are known as “logically-related videos,” and are described in further detail in reference toFIG. 5. Additionally, the District Manager135may arrange the selected video segments in any manner desired. Identification and use of parameters in selecting video and video segments is discussed in detail below in reference toFIGS. 6A through 6E.

After the District Manager135identifies parameters and specified videos, collectively referred to as information145, the District Manager135may send a signal specifying the information145to a cloud-based service location with an application program interface (API)157, which is in operative communication with the video server162via the Internet. The cloud-based service location may then upload the specified video segments150from the local video servers (not shown) of Chain Store Locations A through N125a-nvia the Internet. Concurrently, either with the signal by the District Manager135, or after the video segments are stored in the cloud155, the cloud-based service location with an API157may send a notification160informing Corporate Headquarters165that the videos are available. Corporate Headquarters165may then access the videos170from the cloud and the cloud will deliver the videos175.

Parameters, as used herein, refer to content, time, tags, or various other metadata that may be used to describe information about a video segment of interest. Content parameters refer to video segments that identify specific content in a video. Content can refer to any information captured by a video, such as an object or a location. For example, a user may only wish to see content that features a specific person. In another example, a user may wish to only see content that features a specific activity, such as motion, or a sale transaction at a point of sale terminal. In yet another example, a user may wish to only see content that occurred at a specific location, such as a loading dock. Video segments that are “content-synchronized” share common content, i.e., all videos view a particular person of interest.

Time parameters refer to video segments captured within a specified time frame. A user may wish, for example, to isolate video that occurred between a specific start time and a specific stop time. Further, the user may wish to select video segments that are time-synchronized. Video segments that are “time-synchronized” may be multiple video segments that are recorded in parallel between a common start time and a common stop time. Alternatively, video segments that are time-synchronized may be video segments that occurred in sequence, i.e., they are a series of videos with non-overlapping start times and stop times. For example, if a number of cameras line a hallway, and a person walks down the hallway, the user may wish to follow that person by choosing videos that take place at progressively later times. When the video segments are later processed together, the resulting single (or multiple) video(s) provide a sequence of images that display the person walking down the hallway.

Tags refer to information inserted into a video by an outside source, the video camera, server at the location, or server at the cloud, that the user may later identify. For example, a tag may be created when video cameras begin imaging after an event triggers the transmission of a signal causing the camera to begin imaging. In one example, as illustrated inFIG. 1, a point of sale terminal may send a tag signal163to a camera110, via the video server162, focused on the point of sale terminal160, where the signal causes the camera110or associated local server162to create a tag when a sale is made. Alternatively, a point of sale terminal may create a tag only when an event outside an expected range of activities occurs, such as the sale of $1,000 worth of goods at a coffee shop. Other tags may be generated by a variety of methods, such as, for example, a ringing phone or a door opening. Tags may be sent wirelessly via the video server or via any method known in the art. In another embodiment, the tag may be preconfigured by an outside party, automatically generated by a repeating series of activities, or generated by the user. An example of a user-generated tag may be any time the user inserts a voiceover into a video segment, or any time the user annotates a video segment using video editing software.

If a user wishes, the user may identify parameters that apply to a plurality videos. The plurality of videos can exist on one video server in a local area network, or the plurality of videos can exist across numerous video servers connected via the Internet or other wide area network. The user may identify videos that are “logically-related” by specifying a common parameter or set of parameters that apply to a plurality of videos. Logically-related videos are described in more detail in reference toFIG. 5.

FIG. 2is an illustration of an overview200of the communication pathways for sending and receiving video parameters and video segments. Any number of cameras205may be installed in a location260a-n. The cameras205may be connected to a local video server210via a local area network (not shown). The video server210can connect directly with a cloud215via the Internet217where the video server210can upload videos upon request one time, or on an on-going basis, or as otherwise provided to be performed autonomously.

A user220, via a user device222, may connect to the video server210either through a local area network or via the Internet. Alternatively, the user220may connect to multiple video servers210simultaneously at locations A through N260a-nvia the Internet. Similarly, each video server210may connect to other video servers210via the Internet.

The user220, upon selecting parameters that identify video segments of interest and intended recipients, may send a video-sharing trigger communication225specifying parameters associated with a video on the video server210and identifying the receiving party. The communication225may travel through a local area network, through the Internet, or through a cellular network via a cell tower227to communicate with an API230located remotely. The API230may store data on a server or other data store235.

Upon or after accepting the communication that identifies parameters associated with a video on a video server225, the API230may send a request240to the video server210for the video identified by the user and specifying the parameters in the original communication. This request will then cause the video server210to transfer the desired video segments245to the cloud215via the Internet217. The video245may be compressed in order to decrease the bandwidth required to share the video. Modes of compression when sharing video are described in more detail below in reference toFIG. 6E. The videos or images may optionally be encrypted in a manner known in the art.

Concurrently or after accepting the communication225from the user220, or after the video245has been uploaded to the cloud215, the API230sends an availability notification250to a designated receiving party255. The availability notification250from the API230may also inform the cloud215that the receiving party255should be granted access to the video stored in the cloud215. As used herein, “availability” may also refer to providing access to a party, such as through password-enabled access, or simply providing the receiving party with means to view the video. Once the receiving party255receives the notification250, the receiving party may send a request262for the video to the cloud215. The video245may subsequently be downloaded or viewed by the receiving party255.

Additionally, as stated above, a plurality of video servers210located at multiple locations260a-nanalogous to location A260amay connect to the cloud215via the Internet. The video servers210at any of locations A through N260a-nmay connect to each other and to the cloud215to create a network of video servers via the Internet. More detail with respect to these connections is described below in reference toFIG. 3. When the user220sends a video sharing trigger communication225, the user may specify parameters that apply to a plurality of servers210from different locations260a-n. Each video server210at each location260a-nmay upload videos to the cloud215if the user desires, either by specifying certain video servers, or requesting all logically-related videos.

FIG. 3is an illustration of an example embodiment of a three-tiered network system300in a surveillance video sharing system. Tier 1310represents a location, such as the store location inFIG. 1, where a number of security cameras315and a router320are connected to a local area network330. Tier 1 can also represent multiple locations, with each location having its own local area network. The local area network330connects the cameras315and the routers320to the video server (e.g., gateway)335in tier 2325. The video servers335connect directly to the Internet345. Through the Internet, the user interface340may connect to enable a user to see the videos on the video servers335. When the user chooses which videos to send, the user may send a video sharing trigger communication347, through the Internet345, to the API360. The API360may then send a request for video specifying parameters through the internet345to the various video servers335that are connected at tier 2335. The video servers335, upon receiving the communication from the API360, may upload the relevant video segments to tier 3350, which is where the cloud-based service location355is housed or logically located.

In further embodiments, the network system300may be configured to perform additional operations and provide additional services to a user, such as additional video analysis and related notifications. Examples of such features are described in further detail in U.S. patent application Ser. No. 13/335,591, the entirety of which is incorporated herein by reference. For example, the cameras315may be configured to operate a video analytics process, which may be utilized as a scene analyzer to detect and track objects in the scene and generate metadata to describe the objects and their events. The scene analyzer may operate as a background, subtraction-based algorithm, and may describe an object with its color, location in the scene, time stamp, velocity, size, moving direction, etc. The scene analyzer may also trigger predefined metadata events such as zone or tripwire violation, counting, camera sabotage, object merging, object splitting, still objects, object loitering, etc. Object and event metadata, along with any other metadata generated by the edge device(s), can be sent to the gateway335, which may store and process the metadata before forwarding processed metadata to the cloud computing server355. Alternatively, the gateway may forward the metadata directly to the cloud computing server355without initial processing.

FIG. 4is a block flow diagram of an example embodiment of a process of communication associated with video transfer. In an example embodiment, the process begins (410) when a communication is sent from a user. The system accepts the communication and identifies parameters associated with a video on a video server accessible via a network (420). This communication causes the video server to transfer the video via the network to a cloud-based video service location (430). Concurrently, or after uploading the video to the cloud-based service location, a notification is transmitted to a receiving party (440). Once the notification is sent to the receiving party, and the receiving party is granted access to the video, the process ends (450).

FIG. 5is a block flow diagram of an example embodiment illustrating the process of selecting and sharing logically-related videos. InFIG. 5, the example process relates to a user who wishes who share video from at least one video source, and further wishes to share only videos that contain common content. A set of videos that share common content are referred to as “logically-related videos.”

“Logically related videos,” as used herein, refer to videos that share, for example, a common content, tag, or time parameter. When a user selects certain parameters, a video server may identify a plurality of videos that share the specified parameters. For example, multiple videos may feature the same content, such as the same person or the same activity. By way of example, logically-related videos may be videos recorded by different cameras that all view the same person. Or, by way of another example, multiple videos may record deliveries at a loading dock at different stores throughout the day. These videos may be stored on different video servers that are all connected to the Internet. Therefore, logically-related videos include videos that share either a common location type (e.g., videos that focus on a loading dock, or a point of sale terminal), a common content type (e.g., videos that focus on a particular person, or videos that contain motion), or a common tag type (e.g., videos that have a common tag such as signal tags or an automatically generated tag).

Continuing to refer toFIG. 5, the process begins when the user sends a communication identifying the desired common content represented in video segments (510). The communication is accepted (520), and the system determines whether there are relevant video segments located on more than one video server (530). If the video segments are located on more than one server, the plurality of video servers will generate and process video segments sharing common content (540). If the video segments are located on only one server, the video server will select the desired video segments that contain the desired content (550). Once the desired video segments have been identified, they are transferred via the network to a cloud-based service location (550).

Once the videos are transferred to the cloud-based service location, the video segments may be processed in any manner desired by the user (560). Examples of processing selected video segments are described in reference toFIGS. 6A-6E. Concurrent with the transfer of the video to the cloud-based service location, a notification is transmitted to the receiving party notifying the recipients of the availability of the videos (570). The notification enables receiving party to access or download the videos via the cloud-based service location (580). Upon receipt of the video by the receiving party or the notification to the receiving party, the process ends (590).

FIGS. 6A through 6Eare illustrations of different methods of processing video timelines and selecting video segments of interest.FIG. 6Ais an illustration of a timeline of a video. Video timeline610represents an entire length of video recorded by Camera A. A user may identify a video segment of interest615by naming a set of desired parameters, such as a start and stop time, or by searching for particular content. The video segment of interest615may be isolated sent to the cloud, as described in more detail above in reference toFIGS. 2 and 5.

FIG. 6Bis an illustration of multiple video timelines. Each timeline620a-crepresents an entire video recorded by Cameras A-C. In the present example, Cameras A-C provide different visual perspectives of a location, such a retail store analogous to the retail scene inFIG. 1. In this example, Camera A is positioned to image a door, Camera B is positioned to image an aisle, and Camera C is positioned to image a cash register. A user may identify parameters that highlight the video segments of interest625a-c. In one example, the user may select video segments that contain one person walking from the door, down the aisle, and to the cash register. In another example, the user may select segments that occur in sequential order (e.g., video segment625aoccurs between 1:00 and 1:01,625boccurs between 1:01 and 1:02, and625coccurs between 1:02 and 1:03). When the video segments of interest625a-care selected, they may be isolated from the larger video timelines620a-cand may be processed such that the video segments of interest625a-care placed in sequential order and create a single video630. The resulting video630may then be sent to the receiving party and viewed as a single video.

FIG. 6Cis an illustration of multiple video timelines. Each video timeline635a-crepresents an entire video recorded by Cameras A-C. In this example, Cameras A-C, inFIG. 6C, are located at different store locations. Each Camera A-C can be connected to a local area network to a video server, as inFIGS. 2 and 3. In the present example, the user may wish to isolate time-synchronized videos that share a common start time and a common stop time. For example, if the user wishes to view the procedures that different employees use when opening a store in the morning, the user may select video from all store locations, starting at 6:00 AM and ending at 7:00 AM. The highlighted areas become video segments of interest640a-c.

The user may wish to send the three video segments of interest640a-cisolated from their respective video timelines635a-c. One option the user may have is to send the three video segments640a-cas three separate files to the cloud-based service location. Alternatively, the user may choose to process the video segments640a-cinto one video645, which can be sent to the cloud-based service location.

FIG. 6Dis an illustration of a timeline of a video. The entire video timeline650is recorded by Camera A, which is positioned to view a cash register or point of sale terminal. In the present example, a tag is generated by an event660, for which the user may search to identify a video segment of interest655. Example events that create a tag are described above in reference toFIG. 1. The video segment of interest655may then be isolated, exported, and uploaded to the cloud-based service location.

FIG. 6Eis an illustration of a timeline of a video. The entire video timeline665is recorded by Camera A, which is positioned to image an entryway. The user may identify two video segments of interest670a-b, which are separated by a length of undesired video672. In one example, the user may wish to send only the two video segments of interest670a-btogether to be viewed sequentially, which results in a new composite video timeline675. In another example, however, the user may wish to retain the length of video between the two video segments of interest670a-b. But, to reduce the bandwidth required to send the video, the user may instead insert or choose a single frame from the length of undesired video672to represent the undesired video for a length of time determined by the user. The resulting video680contains the video segments of interest670aand670b, but with a single frame played for a length of time between the video segments of interest670a-b.

FIG. 7illustrates a computer network or similar digital processing environment in which the present invention may be implemented.

Client computer(s)/devices50and server computer(s)60provide processing, storage, and input/output devices executing application programs and the like. Client computer(s)/devices50can also be linked through communications network70to other computing devices, including other client devices/processes50and server computer(s)60. Communications network70can be part of a remote access network, a global network (e.g., the Internet), a worldwide collection of computers, local area or wide area networks, and gateways that currently use respective protocols (TCP/IP, Bluetooth, etc.) to communicate with one another. Other electronic device/computer network architectures are suitable.

FIG. 8is a diagram of the internal structure of a computer (e.g., client processor/device50or server computers60) in the computer system ofFIG. 7. This internal structure may, for example, be employed in the cloud video server(s) ofFIG. 2. Each computer50,60contains system bus79, where a bus is a set of hardware lines used for data transfer among the components of a computer or processing system. Bus79is essentially a shared conduit that connects different elements of a computer system (e.g., processor, disk storage, memory, input/output ports, network ports, etc.) that enables the transfer of information between the elements. Attached to system bus79is I/O device interface82for connecting various input and output devices (e.g., keyboard, mouse, displays, printers, speakers, etc.) to the computer50,60. Network interface86allows the computer to connect to various other devices attached to a network (e.g., network70ofFIG. 7). Memory90provides volatile storage for computer software instructions92and data94used to implement an embodiment of the present invention (e.g., code detailed above). Disk storage95provides non-volatile storage for computer software instructions92and data94used to implement an embodiment of the present invention. Central processor unit84is also attached to system bus79and provides for the execution of computer instructions.