IP Library › Granted Patent US 10,582,265
Granted Patent B2
US 10,582,265 · App. 14/700,845 · Granted Mar 3, 2020

Systems and methods for nonlinear video playback using linear real-time video players

Inventors: Jonathan Bloch (Brooklyn, NY); Tal Zubalsky (Brooklyn, NY); Yuval Hofshy (Kfar Saba, IL); Barak Feldman (Tenafly, NJ)
Assignee: JBF Interlude 2009 LTD
H04N21/47217H04L65/4069H04N21/232H04N21/2387H04N21/26258H04N21/6587
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,582,265
App. No.
14/700,845
Filed
Apr 30, 2015
Granted
Mar 3, 2020
Kind
B2
Art Unit
2423
USPC
725/116
Abstract

Systems and methods for nonlinear media playback using a linear media player are described. In one implementation, a video tree representing a branching video presentation is provided, and a dynamic playlist is provided to a linear video player. A controller component interacts with the linear video player through a standard interface of the linear video player. During playback of a video content segment in the dynamic playlist by the linear video player, an indication of a user interaction with the playing video content segment is received by the controller component and from the linear video player via the standard interface, and the dynamic playlist is modified based on video content segments in a branch of the video tree. In another implementation, an uncompressed media file is selected and combined with a preceding and/or following media file. The combined files are compressed and a portion of the compressed file corresponding to the original media file is extracted.

Claims (37)

1. A computer-implemented method for playing non-linear video content using a video player that would otherwise be limited to presenting linear video content, the method comprising:

providing a video tree representing a branching video presentation, the video tree comprising a plurality of branches, each branch comprising one or more video content segments;

providing, by a server, a dynamic playlist to a linear video player executing on a client device, the dynamic playlist comprising one or more references to video content segments of the video tree to be played by the linear video player, wherein the linear video player does not natively support (i) presentation of branching video content to a user and (ii) user interactivity with the branching video content to cause traversal of different paths within the branching video content;

transforming the linear video player into a non-linear video player that supports (i) presentation of branching video content to a user and (ii) user interactivity with the branching video content to cause traversal of different paths within the branching video content, wherein the transforming comprises:

transmitting, by the server, a controller component to the linear video player, separate from and external to software program components that compose the linear video player, to interact with the linear video player through a standard interface of the linear video player that provides for communication of external components with the linear video player, wherein the standard interface comprises an application programming interface (API);

providing an interface layer, distinct from a user interface of the linear video player, over the video content displayed by the linear video player;

receiving, by the controller component and from the linear video player via the standard interface, during playback of a video content segment in the dynamic playlist by the linear video player, an indication of a user interaction with the branching video presentation, the indication comprising a decision to traverse a particular branch in the video tree, wherein the indication of the user interaction is received programmatically via the API; and

modifying the dynamic playlist based on one or more of the video content segments in the particular branch to traverse.

2. The method of claim 1 , wherein the indication further comprises a current playback location of the video, and further wherein the dynamic playlist is modified based on the current playback location.

3. The method of claim 1 , wherein the controller component executes on the client device, the method further comprising providing the indication to the server.

4. The method of claim 1 , wherein modifying the dynamic playlist comprises at least one of adding a reference to a video content segment to the dynamic playlist and removing a reference to a video content segment to the dynamic playlist.

5. The method of claim 1 , wherein modifying the dynamic playlist comprises creating a new dynamic playlist starting from a requested point in time.

6. The method of claim 1 , wherein the dynamic playlist is modified immediately following an occurrence of the user interaction but for time allowed for network communication and processing.

7. The method of claim 1 , further comprising directing the linear video player to display a graphical overlay on the playing video content segment.

8. The method of claim 7 , further comprising directing the linear video player to modify the graphical overlay based on the user interaction.

9. The method of claim 1 , wherein the dynamic playlist is a first dynamic playlist, the method further comprising providing, by the server, a second dynamic playlist to a second linear video player executing on a second client device.

10. The method of claim 9 , further comprising modifying the second dynamic playlist independently of the first dynamic playlist, the modifying based on indications of user interactions with video content segments played by the second linear video player.

11. The method of claim 1 , wherein the server is a virtual server executing on the client device.

12. A system for playing non-linear video content using a video player that would otherwise be limited to presenting linear video content, the system comprising:

one or more computers programmed to perform operations comprising:

providing a video tree representing a branching video presentation, the video tree comprising a plurality of branches, each branch comprising one or more video content segments;

providing, by a server, a dynamic playlist to a linear video player executing on a client device, the dynamic playlist comprising one or more references to video content segments of the video tree to be played by the linear video player, wherein the linear video player does not natively support (i) presentation of branching video content to a user and (ii) user interactivity with the branching video content to cause traversal of different paths within the branching video content;

transforming the linear video player into a non-linear video player that supports (i) presentation of branching video content to a user and (ii) user interactivity with the branching video content to cause traversal of different paths within the branching video content, wherein the transforming comprises:

transmitting, by the server, a controller component to the linear video player, separate from and external to software program components that compose the linear video player, to interact with the linear video player through a standard interface of the linear video player that provides for communication of external components with the linear video player, wherein the standard interface comprises an application programming interface (API);

providing an interface layer, distinct from a user interface of the linear video player, over the video content displayed by the linear video player;

receiving, by the controller component and from the linear video player via the standard interface, during playback of a video content segment in the dynamic playlist by the linear video player, an indication of a user interaction with the playing video content segment, the indication comprising a decision to traverse a particular branch in the video tree, wherein the indication of the user interaction is received programmatically via the API; and

modifying the dynamic playlist based on one or more of the video content segments in the particular branch to traverse.

13. The system of claim 12 , wherein the indication further comprises a current playback location of the video, and further wherein the dynamic playlist is modified based on the current playback location.

14. The system of claim 12 , wherein the controller component executes on the client device, and wherein the operations further comprise providing the indication to the server.

15. The system of claim 12 , wherein modifying the dynamic playlist comprises at least one of adding a reference to a video content segment to the dynamic playlist and removing a reference to a video content segment to the dynamic playlist.

16. The system of claim 12 , wherein modifying the dynamic playlist comprises creating a new dynamic playlist starting from a requested point in time.

17. The system of claim 12 , wherein the dynamic playlist is modified immediately following an occurrence of the user interaction but for time allowed for network communication and processing.

18. The system of claim 12 , wherein the operations further comprise directing the linear video player to display a graphical overlay on the playing video content segment.

19. The system of claim 18 , wherein the operations further comprise directing the linear video player to modify the graphical overlay based on the user interaction.

20. The system of claim 12 , wherein the dynamic playlist is a first dynamic playlist, and wherein the operations further comprise providing, by the server, a second dynamic playlist to a second linear video player executing on a second client device.

21. The system of claim 20 , wherein the operations further comprise modifying the second dynamic playlist independently of the first dynamic playlist, the modifying based on indications of user interactions with video content segments played by the second linear video player.

22. The system of claim 12 , wherein the server is a virtual server executing on the client device.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF INVENTOR YONI BLOCH AND THE ASSIGNEE'S NAME AND ADDRESS PREVIOUSLY RECORDED ON REEL 035597 FRAME 0324. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 4, 2020
From: BLOCH, JONATHAN; ZUBALSKY, TAL; HOFSHY, YUVAL; FELDMAN, BARAK
To: JBF INTERLUDE 2009 LTD
Reel/Frame 052566/0772 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2015
From: BLOCH, YONI; ZUBALSKY, TAL; HOFSHY, YUVAL; FELDMAN, BARAK
To: JBF INTERLUDE 2009 LTD - ISRAEL
Reel/Frame 035597/0324 →
Continuity (1)
Related Publication 20160323608A1 · Nov 3, 2016