# US 11,462,247 B2 · Instant video trimming and stitching and associated methods and systems

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

- Number: US 11,462,247 B2
- Document ID: US11462247B2
- Status: Granted
- Kind: B2
- Application number: 17/565,156
- Filed: 2021-12-29
- Published: 2022-08-11
- Granted: 2022-10-04
- Earliest claimed: 2021-02-11
- Assignees: Loom, Inc.
- Applicants: Loom, Inc.
- Inventors: Vinay Hiremath; Bruno Henrique da Silva
- Web page: https://patentgrep.com/patent/US11462247B2

## CPC

- G11B 27/031: Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B 27/11: by using information not detectable on the record carrier
- G11B 27/34: Indicating arrangements {(indicating means incorporated in magazine or cassette G11B23/046 and G11B23/0875; indicating measured values in general G01D)}
- H04N 21/26258: {for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list (retrieval of multimedia data based on playlists G06F16/40)}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- H04N 21/854: Content authoring
- H04N 21/8547: involving timestamps for synchronizing content
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Systems and methods for combined video trimming and stitching are disclosed. In one embodiment, the method receives two video files, each including labeled video segments and a playlist. Each playlist includes segment labels providing a segment playback order. The method receives a trim request including a target time range to be removed from a first video file, and a stitch request including the playlists of the two video files. The target time range starts at a beginning bookend timestamp and ends at an ending bookend timestamp. The method identifies beginning and ending bookend segments based on the beginning and ending bookend timestamps, then executes the trim request by processing the beginning or the ending bookend segment, and modifying the first video's playlist. The method executes the stitch request by generating a combined playlist for a combined video file.

## Claims

### Claim 1

A computer-implemented method for video editing, the computer-implemented method executable by a hardware processor, the method comprising:
receiving a first video file comprising a first plurality of frames and a first plurality of timestamps, the first video file comprising a first plurality of labeled video segments and a first playlist, the first playlist comprising a first plurality of segment labels providing an order for playing the first plurality of labeled video segments;
receiving a second video file comprising a second plurality of frames and a second plurality of timestamps, the second video file comprising a second plurality of labeled video segments and a second playlist, the second playlist comprising a second plurality of segment labels providing an order for playing the second plurality of labeled video segments;
receiving a trim request on the first video file, the trim request comprising a target time range to be removed from the first video file, wherein the target time range starts at a beginning bookend timestamp and ends at an ending bookend timestamp;
identifying a beginning bookend segment and an ending bookend segment of the first video file from the first plurality of labeled video segments, based on the beginning bookend timestamp and the ending bookend timestamp;
executing the trim request on the first video file to generate a trimmed first video file by processing one of the beginning bookend segment and the ending bookend segment based on the target time range to be removed from the first video file, and generating a modified first playlist,
wherein processing the beginning bookend segment comprises removing each frame of the beginning bookend segment that is after the beginning bookend timestamp to generate a modified beginning bookend segment, and
wherein processing the ending bookend segment comprises decoding the ending bookend segment, removing each frame of the ending bookend segment that is before the ending bookend timestamp, and re-encoding one or more frames of the ending bookend segment that are after the ending bookend timestamp to generate a modified ending bookend segment;
receiving a stitch request, the stitch request comprising the trimmed first video file and the second video file; and
executing the stitch request by generating a combined playlist for a combined video file, wherein generating the combined playlist comprises appending the second playlist to the modified first playlist.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein generating the combined playlist further comprises:
identifying a redundant segment label of the second playlist, wherein the redundant segment label of the second playlist is identical to a segment label of the first playlist; and
renaming the redundant segment label of the second playlist.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein generating the modified first playlist further comprises:
identifying a given labeled video segment to be deleted from the first playlist, and
removing a deleted segment label from the first playlist corresponding to the given labeled video segment to be deleted.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein the given labeled video segment to be deleted from the first playlist starts after the beginning bookend timestamp and ends before the ending bookend timestamp.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the method further comprises:
receiving a first segment request before the processing of the one of the beginning bookend segment and the ending bookend segment; and
processing the one of the beginning bookend segment and the ending bookend segment, in response to the receiving of the first segment request.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein the first segment request comprises a request for one of the first plurality of labeled video segments of the first video file.

### Claim 7 (depends on 5)

The computer-implemented method of claim 5, wherein the first segment request comprises a request for one of the beginning bookend segment and the ending bookend segment.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein the method further comprises:
receiving a second segment request before the executing of the stitch request; and
executing the stitch request in response to the receiving of the second segment request.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein the second segment request comprises a request for one of the first plurality of labeled video segments of the first video file.

### Claim 10 (depends on 8)

The computer-implemented method of claim 8, wherein the second segment request comprises a request for one of the second plurality of labeled video segments of the second video file.

### Claim 11 (depends on 1)

The computer-implemented method of claim 1, wherein the trim request and the stitch request are coded in a data interchange format.

### Claim 12 (depends on 1)

The computer-implemented method of claim 1, wherein the trim request and the stitch request are coded in a JavaScript Object Notation (JSON) file.

### Claim 13 (depends on 1)

The computer-implemented method of claim 1, wherein executing the trim request further comprises storing the trim request in a video editing database, and wherein executing the stitch request further comprises storing the stitch request in the video editing database.

### Claim 14 (depends on 1)

The computer-implemented method of claim 1, wherein executing the trim request further comprises storing the trim request at a client-side cache, and wherein executing the stitch request further comprises storing the stitch request at the client-side cache.

### Claim 15

A non-transitory storage medium storing program code for video editing, the program code executable by a hardware processor, the program code when executed by the hardware processor causing the hardware processor to:
receive a first video file comprising a first plurality of frames and a first plurality of timestamps, the first video file comprising a first plurality of labeled video segments and a first playlist, the first playlist comprising a first plurality of segment labels providing an order for playing the first plurality of labeled video segments;
receive a second video file comprising a second plurality of frames and a second plurality of timestamps, the second video file comprising a second plurality of labeled video segments and a second playlist, the second playlist comprising a second plurality of segment labels providing an order for playing the second plurality of labeled video segments;
receive a trim request on the first video file, the trim request comprising a target time range to be removed from the first video file, wherein the target time range starts at a beginning bookend timestamp and ends at an ending bookend timestamp;
identify a beginning bookend segment and an ending bookend segment of the first video file from the first plurality of labeled video segments, based on the beginning bookend timestamp and the ending bookend timestamp;
execute the trim request on the first video file to generate a trimmed first video file by processing one of the beginning bookend segment and the ending bookend segment based on the target time range to be removed from the first video file, and generating a modified first playlist,
wherein the program code to process the beginning bookend segment comprises program code to remove each frame of the beginning bookend segment that is after the beginning bookend timestamp to generate a modified beginning bookend segment, and
wherein the program code to process the ending bookend segment comprises program code to decode the ending bookend segment, remove each frame of the ending bookend segment that is before the ending bookend timestamp, and e-encode one or more frames of the ending bookend segment that are after the ending bookend timestamp to generate a modified ending bookend segment;
receive a stitch request, the stitch request comprising the trimmed first video file and the second video file; and
execute the stitch request by generating a combined playlist for a combined video file, wherein the program code to generate the combined playlist comprises program code to append the second playlist to the modified first playlist.

### Claim 16 (depends on 15)

The non-transitory storage medium of claim 15, further comprising program code to:
receive a first segment request before the processing of the one of the beginning bookend segment and the ending bookend segment; and
process the one of the beginning bookend segment and the ending bookend segment, in response to the receiving of the first segment request.

### Claim 17 (depends on 16)

The non-transitory storage medium of claim 16, wherein the first segment request comprises a request for one of the first plurality of labeled video segments of the first video file.

### Claim 18 (depends on 16)

The non-transitory storage medium of claim 16, wherein the first segment request comprises a request for one of the beginning bookend segment and the ending bookend segment.

### Claim 19 (depends on 15)

The non-transitory storage medium of claim 15, further comprising program code to:
receive a second segment request before the executing of the stitch request; and
execute the stitch request in response to the receiving of the second segment request.
