# Patent

## Title
Video recording failover

## Abstract

A video recording system includes a first Network Video Recorder (NVR) that receives a video delivered via a video packet stream and records the video to a first long-term storage. A second NVR receives the same video and temporarily stores it in temporary storage. When a failure of the first NVR is detected at a first point, the second NVR starts recording the video to long-term storage. The temporarily stored video is used by the second NVR to fill in the gap in recorded video in long-term storage that occurred between the failure of the first NVR and the start of the second NVR recording the video to long-term storage.

## Background
RELATED APPLICATIONS
This application hereby claims the benefit of and priority to U.S. Provisional Patent Application 60/952,893, titled “VIDEO RECORDING FAILOVER SYSTEM”, filed on Jul. 31, 2007, and which is hereby incorporated by reference in its entirety.


TECHNICAL FIELD
The invention is related to the field of video recording.
TECHNICAL BACKGROUND
Various systems record video for later viewing. For example, video surveillance systems record video produced by surveillance cameras for subsequent analysis. Recorded video may also be used as evidence.
A recorder may receive the video via a packet network using Internet Protocol (IP). The video may be delivered to a video recorder using Real-time Transport Protocol (RTP) packets. Video recorders that receive video in packet form are called Network Video Recorders (NVRs) or Networked Digital Video Recorders (nDVRs).
SUMMARY
A video recording system includes a first Network Video Recorder that receives a video delivered via a video packet stream and records the video to a first long-term storage. A second NVR receives the same video and temporarily stores it in temporary storage. When a failure of the first NVR is detected at a first point, the second NVR starts recording the video to long-term storage. The temporarily stored video is used by the second NVR to fill in the gap in recorded video in long-term storage that occurred between the failure of the first NVR and the start of the second NVR recording the video to long-term storage.



BRIEF DESCRIPTION OF THE DRAWINGS
Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views. While several embodiments are described in connection with these drawings, there is no intent to limit the disclosure to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents.
FIG. 1 is a block diagram illustrating a video recording system with failover capability.
FIG. 2 is a flow diagram illustrating a method for providing NVR failover.
FIG. 3 is a flow diagram illustrating a method for providing master NVR failover.
FIG. 4 is a block diagram illustrating a computer system.



DETAILED DESCRIPTION
FIGS. 1-4 and the following description depict specific embodiments of the invention to teach those skilled in the art how to make and use the best mode of the invention. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the invention. Those skilled in the art will appreciate that the features described below can be combined in various ways to form multiple embodiments of the invention. As a result, the invention is not limited to the specific embodiments described below, but only by the claims and their equivalents.
FIG. 1 is a block diagram illustrating a video recording system with failover capability. Video recording system 100 comprises: NVR #1 110, NVR #2 120, NVR #N 130, packet network 140, video encoders 150-152, and keep alive box 160. NVR #1 includes processing element 114, temporary storage 116, and long-term storage 118. NVR #2 includes processing element 124, temporary storage 126, and long-term storage 128. NVR #N includes processing element 134, temporary storage 136, and long-term storage 138.
NVRs 110-130 are each operatively coupled to packet network 140. NVRs 110-130 are each operatively coupled to keep alive box 160. Thus, long-term storage 118-138, temporary storage 116-136, and processing 114-134 are all operatively coupled to packet network 140 and keep alive box 160. Video encoders 150-152 are each operatively coupled to packet network 140. Thus, NVRs 110-130 are each operatively coupled to each video encoder 150-152 via packet network 140. Accordingly, each NVR 110-130 may receive and record video being sent by any of video encoders 150-152. Also, each NVR 110-130 may exchange communications with the other NVRs 110-130 via packet network 140.
NVRs 110-130 may be conventional computer systems running network Digital Video Recorder software. In an embodiment, NVRs 110-130 comprise Intel or AMD microprocessor based systems.
Packet network 140 may be an Ethernet Local Area Network (LAN) or a Wide Area Network (WAN) or some other form of computer communications network that sends and receives data in packets. In an embodiment, packet network 140 is a local Ethernet subnet. Thus, all the elements of video recording system 100 are operatively coupled to each other directly via packet network 140. In other words, data packets exchanged between the elements of video recording system 100 do not need to traverse other networks, routers, or gateways.
Video encoders 150-152 capture video images and communicate these images to at least two NVRs 110-130. In an embodiment, video encoders 150-152 may comprise IP cameras. In another embodiment, video encoders 150-152 may capture video from another source such as a closed-circuit TV (CCTV) camera. In an embodiment, video encoders 150-152 are s1708e video encoders available from Verint Systems, Inc.
Video encoders 150-152 communicate video images to NVRs 110-130 using digital data packets. For example, video encoders 150-152 may communicate video images via packet network 140 using Internet Protocol (IP). The video images may be delivered to an NVR using Real-time Transport Protocol (RTP) packets. Video encoders 150-152 may use IP multicast to deliver video images to more than one NVR 110-130 at a time. In another example, video encoders 150-152 may direct the packets containing the video images to multiple NVRs 110-130 using multiple unicast transmissions.
Keep alive box 160 exchanges communication with NVRs 110-130 to monitor the health of each NVR 110-130 and to detect failures. Keep alive box 160 exchanges polling and response messages with each NVR 110-130 via a serial communication link. This serial communication link is separate from, and independent of, packet network 140. This separation allows keep alive box 160 to detect failures even when there is a problem with packet network 140. In an example, the failure of an NVR 110-130 to exchange a polling or response message indicates a failure. In an example, keep alive box 160 and NVRs 110-130 communicate with each other using a RS-232 defined serial communication link.
In normal operation, each NVR 110-130 records a video sent by a video encoder 150-152 in long-term storage 118, 128, and 138, respectively. For example, NVR 110 may record the video sent by video encoder 150 to long-term storage 118. NVR 120 may record the video sent by video encoder 151 to long-term storage 128, and so on.
Before recording to long-term storage, the video may be processed. For example, a date and time stamp may be applied to the video by processing 114, 124, or 134. In another example, the video may be re-encoded or compressed before being recorded in long-term storage 118, 128, or 138.
In normal operation, one or more of NVRs 110-130 stores a portion of the video sent by a video encoder 150-152 in temporary storage 116, 126, and 136, respectively. For example, NVR 110 may temporarily store the last 2 seconds of the video sent by video encoder 151 in temporary storage 116. NVR 120 may temporarily store the last 2 seconds of the video sent by video encoder 152 in temporary storage 126, and so on.
If keep alive box 160 detects a failure of an NVR 110, 120, or 130, it communicates the failure to the master NVR. The master NVR is the one of NVRs 110, 120, or 130 that has been assigned to trigger itself or another NVR to start recording video that was previously being recorded by the failed NVR. In addition, the master NVR triggers the triggered NVR to transfer at least a portion of the temporarily stored video to long-term storage. By transferring temporarily stored video, the triggered NVR records to long-term storage, the portion of video that the failed NVR failed to record because of the failure.
To illustrate, consider a case where: (1) NVR #1 110 is assigned to be the master NVR; (2) NVR #2 120 is recording the video sent by video encoder 151 to long-term storage 128; and, (3) NVR #N 130 is storing the video sent by video encoder 151 in temporary storage 136. When keep alive box 160 detects a failure of NVR #2, keep alive box 160 notifies NVR #1 of the failure. NVR #1 sends a message to NVR #N 130 that triggers NVR #N 130 to start recording the video sent by video encoder 151 to long-term storage 138. This message also triggers NVR #N 130 to transfer at least a portion of the video stored in temporary storage 136 to long-term storage 138. This transfer ensures that video that NVR #2 120 failed to record in long-term storage 124 is recorded in long-term storage 138. The amount of video transferred encompasses the video from a first point in time when NVR #2 failed until a second point in time when NVR #N started recording the video to long-term storage. Accordingly, no video is lost even though there was a failure of NVR #2 120.
The master NVR sends messages to the other NVRs 110-130 that communicate the status of each NVR 110-130 via packet network 140. For example, the master NVR may communicate status that includes, but is not limited to which NVR is recording the video sent by which video encoder or encoders to long-term storage. The master NVR may also communicate status that includes which NVR or NVRs are temporarily storing the video sent by which video encoder or encoders to temporary storage. In general, the master NVR communicates status that allows any NVR 110-130 to take over the duties of the master NVR in the event the master NVR fails.
The master NVR sends periodic messages to the other NVRs 110-130 via packet network 140. These periodic messages communicate that the master NVR is functioning normally. For example, the master NVR may send a periodic message every 200 mS. The absence of a periodic message for more than 600 mS indicates to an NVR 110-130 that the master NVR has failed.
If the master NVR has failed, another NVR 110-130 takes over the duties of the master NVR. For example, if NVR #2 120 has not received a periodic message from the master NVR for more than 600 mS, NVR #2 120 will send a message to the other NVRs 110 and 130 indicating that it is requesting to be the master NVR. NVR #2 will then wait 100 mS to see if another NVR requests to be the master NVR. If no other NVR requests to be the master NVR, then NVR #2 will assume the duties of the master NVR. If more than one NVR requests to be the master, then an assigned identification number determines which NVR will be the master. For example, each NVR 110-130 may be assigned an identification number. The NVR with the lowest assigned identification number among those requesting to be master becomes the master. In another example, the assigned identification number may correspond to a portion of the NVR's IP address. In another example, the assigned identification number may be the last eight bits of the NVR's IP address.
FIG. 2 is a flow diagram illustrating a method for providing NVR failover. This method may be performed by video recording system 100. A first NVR receives a video stream (202). In an example, this video stream may be received from a packet network. In another example, video encoders 150-152 may communicate video images to the first NVR via packet network 140 using Internet Protocol. The video images may be sent to the first NVR using Real-time Transport Protocol (RTP) packets. Video encoders 150-152 may use IP multicast to deliver video images to more than one NVR 110-130 at a time. In another example, video encoders 150-152 may direct the packets containing the video images to multiple NVRs using multiple unicast transmissions.
The first NVR records the video to long-term storage (204). For example, the first NVR may record the video on a hard disk drive. In another example, the first NVR may process the video before recording it in long-term storage. For example, the first NVR may add the current date and time to the video images. In another example, the first NVR may add a watermark to the video images. In another example, the first NVR may re-encode or compress the video. For example, the first NVR may convert the video from an MPEG format, such as MPEG-4 or MPEG-2, to Audio Video Interleave (AVI) format.
A second NVR receives the video stream (206). The second NVR may receive the video stream in a manner similar to how the first NVR received the video stream. Those techniques and examples are discussed above in the discussion of step 202.
The second NVR stores a portion of the video in temporary storage (208). For example, the second NVR may store a portion of the video in volatile memory. In another example, the second NVR may store a portion of the video on an area of a hard disk drive that is designated as temporary storage. In an example, the portion of the video stored in temporary storage is a period of the most recent video received by the second NVR.
The amount of the most recent video received that is stored in temporary storage may be chosen according the requirements of the video recording system. For example, the amount of most recent video received that is stored in temporary storage may be chosen to be equal to or slightly longer than the maximum amount of time it takes to detect a failure of the first NVR and then start the second NVR to recording the video in long-term storage. By choosing at least this amount, no video will be lost in the event of a failure of the first NVR.
A failure of the first NVR is detected (210). For example, this failure may be detected by keep alive box 160. The failure may be detected when the first NVR fails to respond to a polling message sent by keep alive box 160. In another example, the failure may be detected by keep alive box 160 when the first NVR fails to send a polling message to keep alive box 160. In another example, the first NVR may send a message to keep alive box 160 indicating that it has failed.
In response to detecting a failure of the first NVR, the second NVR is triggered to start recording the video in long-term storage (212). For example, keep alive box 160 may inform a master NVR or other computer that the first NVR has failed. In response, the master NVR may send a message to the second NVR instructing it to start recording the video in long-term storage.
The second NVR transfers at least a portion of the video in temporary storage to long-term storage (214). For example, after being instructed to start recording the video in long-term storage, the second NVR may transfer the portion of video in temporary storage that covers at least the time from when the first NVR failed to when the second NVR began recording the video in long-term storage. In this way, no video is lost even though the first NVR failed.
No video is lost because the first NVR will have the video up until it failed in it's long-term storage. The second NVR will have the video from the time it started recording in it's long-term storage. The gap in time between these two events is recorded in long-term storage by the second NVR transferring the portion of video from temporary storage to long-term storage.
FIG. 3 is a flow diagram illustrating a method for providing master NVR failover. The steps of this method may be performed by video recording system 100. A master NVR is assigned (302). For example, the master NVR may be assigned by a system administrator or designer. In another example, the master NVR is selected according to an identification number uniquely given to all the NVRs in a group. For example, each NVR on a subnet may be given a unique identification number. The NVR with the lowest identification number is the master. In another example, the identification number may correspond to a portion of the NVR's IP address. In another example, the identification number may be the last eight bits of the NVR's IP address.
The master NVR periodically sends status messages to the non-master NVRs (304). These periodic status messages communicate to the other NVRs that the master NVR is functioning normally. For example, the master NVR may send a periodic status message every 200 mS. The absence of a periodic status message for more than 600 mS indicates to the other NVRs that the master NVR has failed. These periodic status messages may be sent using IP multicast. In another example, the status messages are sent using IP unicast.
The master NVR may also send messages to the other NVRs that communicate information about what each NVR in a group (or on a subnet) is doing. These messages may be part of, or separate from, the periodic status messages. For example, the master NVR may communicate information that includes, but is not limited to, which NVR is recording the video sent by which video encoder or encoders to long-term storage. The master NVR may also communicate information that includes which NVR or NVRs are temporarily storing the video sent by which video encoder or encoders to temporary storage. In general, the master NVR communicates information that allows any of the other NVRs in a group to take over the duties of the master NVR in the event the master NVR fails.
The absence of a status message from the master NVR is detected (306). This absence indicates that the master NVR has failed. For example, the master NVR may send a status message periodically. The absence of one or more of these periodic status message over a set period of time is detected by a receiving NVR. When the receiving NVR detects the absence of one or more of these periodic status messages, it indicates to that NVR that the master NVR has failed. In another example, the master NVR sends a periodic status message every 200 mS. The absence of a periodic status message for more than 600 mS indicates to a non-master NVR that the master NVR has failed.
In response to detecting the absence of status messages from the master NVR, an NVR contends to be the master NVR (308). For example, if an NVR has not received a periodic status message from the master NVR for more than a set period of time, the NVR will send a message to the other NVRs in the group indicating that it is requesting to be the master NVR. The NVR will then wait another set period of time to see if another NVR in the group also requests to be the master NVR. If no other NVR in the group requests to be the master NVR, then the NVR will assume the duties and tasks of the master NVR.
If more than one NVR requests to be the master, then an identification number determines which NVR will be the master. For example, each NVR in a group may be given an identification number. The NVR with the lowest identification number among those requesting to be master becomes the master. In another example, the identification number may correspond to a portion of the NVR's IP address. In another example, the identification number may be the last eight bits of the NVR's IP address.
The NVR winning the contention to become the master NVR assumes the master NVR duties and tasks (310). These duties and tasks include: (1) sending the periodic status messages; (2) communicating the information necessary for another NVR to take over the duties of the master NVR; (3) triggering NVRs to start recording video to long-term storage; and, (4) triggering NVRs to transfer temporarily stored video to long-term storage.
The methods, systems, devices, NVRs, video encoders, keep alive boxes, networks, and subnets, described above may be implemented with, contain, or be executed by one or more computer systems. The methods described above may also be stored on a computer readable medium. Many of the elements of video recording system 100 may be, comprise, or include computers systems. This includes, but is not limited to: NVR #1 110; NVR #2 120; NVR #N 130; packet network 140; video encoders 150-152; keep alive box 160; processing element 114; temporary storage 116; long-term storage 118; processing element 124; temporary storage 126; long-term storage 128; processing element 134; temporary storage 136; and long-term storage 138. These computer systems are illustrated, by way of example, in FIG. 4.
FIG. 4 illustrates a block diagram of a computer system. Computer system 400 includes communication interface 420, processing system 430, and user interface 460. Processing system 430 includes storage system 440. Storage system 440 stores software 450. Processing system 430 is linked to communication interface 420 and user interface 460. Computer system 400 could be comprised of a programmed general-purpose computer, although those skilled in the art will appreciate that programmable or special purpose circuitry and equipment may be used. Computer system 400 may be distributed among multiple devices that together comprise elements 420-460.
Communication interface 420 could comprise a network interface, modem, port, transceiver, or some other communication device. Communication interface 420 may be distributed among multiple communication devices. Processing system 430 could comprise a computer microprocessor, logic circuit, or some other processing device. Processing system 430 may be distributed among multiple processing devices. User interface 460 could comprise a keyboard, mouse, voice recognition interface, microphone and speakers, graphical display, touch screen, or some other type of user device. User interface 460 may be distributed among multiple user devices. Storage system 440 could comprise a disk, tape, integrated circuit, server, or some other memory device. Storage system 440 may be distributed among multiple memory devices. Storage system 440 may include temporary, short-term, and long-term storage.
Processing system 430 retrieves and executes software 450 from storage system 440. Software 450 may comprise an operating system, utilities, drivers, networking software, and other software typically loaded onto a computer system. Software 450 could comprise an application program, firmware, or some other form of machine-readable processing instructions. When executed by processing system 430, software 450 directs processing system 430 to operate as described herein.
The above description and associated figures teach the best mode of the invention. The following claims specify the scope of the invention. Note that some aspects of the best mode may not fall within the scope of the invention as specified by the claims. Those skilled in the art will appreciate that the features described above can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific embodiments described above, but only by the following claims and their equivalents.

## Claims

1. A video recording system comprising:
a first Network Video Recorder (NVR) that receives a video delivered via a video packet stream and records the video to a first long-term storage; and
a second NVR that receives the video delivered via a video packet stream and temporarily stores the video in temporary storage for a duration of time sufficient to accommodate a failover of the first NVR to the second NVR;
wherein a failure of the first NVR that is detected by a keep alive box at a first point in time triggers the second NVR to start recording the video to a second long-term storage at a second point in time that is after the first point in time; and,
wherein the second NVR records the video stream to the second long-term storage beginning at the second point in time and transfers at least a portion of the video occurring between the first point in time and the second point in time from the temporary storage to the second long-term storage.

2. The video recording system of claim 1, further comprising:
a third NVR that receives a message from the keep alive box indicating that the failure of the first NVR has occurred; and,
wherein the third NVR triggers the second NVR to start recording the video.

3. The video recording system of claim 2, wherein the second NVR receives a second video delivered via a second video packet stream and temporarily stores the second video in temporary storage.

4. The video recording system of claim 2, wherein the third NVR triggered the second NVR to start recording the video based upon an assigned identification number.

5. The video recording system of claim 1, wherein the first NVR and the second NVR receive the video via packets addressed to an IP multicast group address.

6. The video recording system of claim 1, further comprising:
a third NVR that receives a second video delivered via a second video packet stream and records the second video to a second long-term storage, and that receives a message from the keep alive box indicating that the failure of the first NVR has occurred; and,
wherein the third NVR triggers the second NVR to start recording the video;
a fourth NVR that receives a message from the keep alive box indication that a failure of the third NVR has occurred; and,
wherein the fourth NVR triggers a fifth NVR to start recording the second video to a third long-term storage.

7. The video recording system of claim 6, wherein the third NVR periodically sends a message to the fourth NVR and the absence of the message triggers the fourth NVR to assume responsibility for triggering the fifth NVR to start recording a third video.

8. A method of recording video, comprising:
receiving, by a first Network Video Recorder (NVR), a video delivered via a video packet stream;
recording, by the first NVR, the video to a first long-term storage;
receiving, by a second NVR, the video delivered via a video packet stream;
temporarily storing, by the second NVR, the video in temporary storage for a duration of time sufficient to accommodate a failover of the first NVR to the second NVR;
detecting, by a keep alive box, a failure of the first NVR at a first point in time;
in response to the failure of the first NVR, triggering the second NVR to start recording the video at a second point in time that is after the first point in time;
in response to the failure of the first NVR, transferring, by the second NVR, at least a portion of the video occurring between the first point in time and the second point in time from the temporary storage to the second long-term storage.

9. The method of claim 8, wherein a third NVR triggers the second NVR to start recording the video.

10. The method of claim 8, further comprising:
receiving, by the second NVR, a second video delivered via a second video packet stream;
temporarily storing, by the second NVR, the second video in temporary storage.

11. The method of claim 8, further comprising:
choosing to trigger the second NVR to start recording the video based on an assigned identification number.

12. The method of claim 8, further comprising:
assigning the third NVR to trigger the second NVR to start recording in the event of the failure of the first NVR;
in response to a failure of the third NVR, assigning a fourth NVR to trigger the second NVR to start recording in the event of the failure of the first NVR.

13. A method of recording video, comprising:
receiving, by a first Network Video Recorder (NVR), a video delivered via a video packet stream;
recording, by the first NVR, the video to a first long-term storage;
receiving, by the first NVR, a second video delivered via a second video packet stream;
temporarily storing, by the first NVR, the second video in temporary storage for a duration of time sufficient to accommodate a failover of a second NVR to the first NVR;
in response to a failure of the second NVR that is detected by a keep alive box at a first point in time, triggering a third NVR to trigger the first NVR to start recording the second video to the first long-term storage at a second point in time that is after the first point in time and to transfer at least a portion of the second video occurring between the first point in time and the second point in time from the temporary storage to the first long-term storage.

14. The method of claim 13, further comprising:
choosing to trigger the first NVR to start recording the second video based on an assigned identification number.

15. The method of claim 13, further comprising:
assigning the third NVR to trigger the first NVR to start recording in the event of the failure of the second NVR;
in response to a failure of the third NVR, assigning a fourth NVR to trigger the first NVR to start recording in the event of the failure of the second NVR.

16. The method of claim 13, further comprising:
receiving, by a fourth NVR, the second video delivered via the second video packet stream;
temporarily storing, by the fourth NVR, the second video in temporary storage.

17. The method of claim 13, further comprising:
receiving periodic messages from the third NVR to detect a failure of the third NVR;
in the event of a failure of the third NVR detected by the absence of a periodic message from the third NVR, assigning a fourth NVR to trigger the first NVR to start recording in the event of the failure of the second NVR.

18. The method of claim 17, further comprising:
in the event of a failure of the third NVR detected by the absence of a periodic message from the third NVR, sending a message, by the fourth NVR, indicating the fourth NVR is assuming responsibility for triggering the first NVR to start recording in the event of the failure of the second NVR;
receiving periodic messages from the fourth NVR to detect a failure of the fourth NVR.