# US 12,002,286 B1 · Methods and apparatus for simulating a virtual camera using a computer to generate analytics of a video

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,002,286 B1
- Document ID: US12002286B1
- Status: Granted
- Kind: B1
- Application number: 18/466,389
- Filed: 2023-09-13
- Granted: 2024-06-04
- Earliest claimed: 2023-09-13
- Assignees: Verkada Inc.
- Applicants: Verkada Inc.
- Inventors: Thantham Madan; Hao Nan; Arthur Kopatsy; Feng Jiang; Lunce Fu; Rohan Sood
- Web page: https://patentgrep.com/patent/US12002286B1

## CPC

- G06V 40/16: Human faces, e.g. facial parts, sketches or expressions
- H04L 65/65: Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
- H04L 65/762: {at the source (reformatting of additional data in video distribution servers H04N21/2355)}
- G06V: IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A non-transitory, processor-readable medium stores instructions that, when executed by a processor, cause the processor to generate, using a first compute device, a video file. The non-transitory, processor-readable medium also stores instructions that, when executed by a processor, cause the processor to cause the video file to be sent to a second compute device that is cloud based, to cause the second compute device to: encode the video file, using a set of at least one software container, to generate an encoded video file; execute, at the set of at least one software container, a streaming protocol to generate a stream based on the encoded video file; and cause, via the set of at least one software container, generation of a set of analytics associated with the video file, based on the stream and using a virtualized software application environment.

## Claims

### Claim 1

A non-transitory, processor-readable medium storing instructions that, when executed by a processor, cause the processor to:
generate, using a first compute device, a video file; and
cause the video file to be sent to a second compute device that is cloud based, to cause the second compute device to:
encode the video file, using a first software container from a set of software containers, to generate an encoded video file;
execute, using a second software container from the set of software containers, the second software container different from the first software container, a streaming protocol to generate a stream based on the encoded video file; and
cause, using a third software container from the set of software containers, the third software container different from the second software container, generation of a set of analytics associated with the video file, based on the stream and using a virtualized software application environment.

### Claim 2 (depends on 1)

The non-transitory, processor-readable medium of claim 1, wherein the streaming protocol is a dynamic media delivery protocol.

### Claim 3 (depends on 1)

The non-transitory, processor-readable medium of claim 1, wherein the first software container is different from the third software container.

### Claim 4 (depends on 1)

The non-transitory, processor-readable medium of claim 1, wherein the set of analytics includes an indication of at least one of: whether motion was detected in the video file, at least one motion trajectory in the video file, a number of people detected in the video file, information associated with a vehicle in the video file, a face detected in the video file, whether a predefined person is detected in the video file, or at least one identity of a person depicted in the video file.

### Claim 5 (depends on 1)

The non-transitory, processor-readable medium of claim 1, wherein the set of analytics indicates that a performance of the first compute device, for a predefined feature, is outside a predetermined acceptable range, and the non-transitory, processor-readable medium further stores instructions to cause the processor to:
receive, at the first compute device, a software update configured to cause subsequent performance of the first compute device for the predefined feature to be within the predetermined acceptable range.

### Claim 6

A method, comprising:
receiving, at a cloud compute device, a plurality of video files from a plurality of remote compute devices; and
generating, via the cloud compute device and for each video file from the plurality of video files, a set of analytics from a plurality of sets of analytics, by:
encoding that video file, at a first software container from a set of software containers, to generate an encoded video file;
at least one of multiplexing or packetizing the encoded video file at a second software container from the set of software containers, the second software container different from the first software container, to generate a video stream; and
causing generation, via a third software container from the set of software containers, the third software container different from the second software container, of a set of analytics associated with that video file and included in the plurality of sets of analytics, based on the video stream and using a virtualized software application environment.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
identifying at least one trend based on the plurality of sets of analytics; and
causing implementation of a remedial action at a compute device that is remote from the plurality of remote compute devices, in response to identifying the at least one trend, and based on the at least one trend.

### Claim 8 (depends on 6)

The method of claim 6, further comprising:
comparing a first set of analytics from the plurality of sets of analytics to a second set of analytics from the plurality of sets of analytics, the first set of analytics associated with a first remote compute device from the plurality of remote compute devices, the second set of analytics associated with a second remote compute device from the plurality of remote compute devices;
determining, based on the comparing, that a performance of the first remote compute device for a task is worse than a performance of the second remote compute device for the task; and
causing the performance of the first remote compute device to be improved.

### Claim 9 (depends on 6)

The method of claim 6, wherein a first compute device from the plurality of remote compute devices includes a camera and a second compute device from the plurality of remote compute devices does not include a camera.

### Claim 10

An apparatus, comprising:
a memory; and
a processor operatively coupled to the memory and configured to:
receive, at a first software container from a plurality of software containers, and from a remote compute device, a video file;
encode the video file, at the first software container, to generate an encoded video file;
at least one of multiplex or packetize the encoded video file at a second software container from the plurality of software containers, to generate a video stream, the second software container different from the first software container; and
cause a set of analytics associated with the video file to be generated at a third software container from the plurality of software containers, the third software container different from the second software container, based on the video stream and using a virtualized software application environment.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the set of analytics includes an indication of whether motion was detected in the video file.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein the set of analytics includes an indication of at least one motion trajectory in the video file.

### Claim 13 (depends on 10)

The apparatus of claim 10, wherein the set of analytics includes an indication of an identity of a face depicted in the video file.

### Claim 14 (depends on 10)

The apparatus of claim 10, wherein the set of analytics includes a count of a number of people detected in the video file.

### Claim 15 (depends on 10)

The apparatus of claim 10, wherein the remote compute device includes a camera.

### Claim 16 (depends on 10)

The apparatus of claim 10, wherein the memory is a virtual storage drive.

### Claim 17 (depends on 10)

The apparatus of claim 10, further comprising:
a graphics processing unit (GPU) operatively coupled to the memory and the processor, the processor configured to cause the set of analytics to be generated using the GPU and by performing computer vision tracking based on the video file.

### Claim 18 (depends on 10)

The apparatus of claim 10, wherein the processor is further configured to:
cause the remote compute device to be updated based on the set of analytics.

### Claim 19 (depends on 10)

The apparatus of claim 10, wherein the virtualized software application environment includes a software application configured to perform a computer vision task using the video file.
