# US 2018/0324480 A1 · Client and Method for Playing a Sequence of Video Streams, and Corresponding Server and Computer Program Product

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

- Number: US 2018/0324480 A1
- Document ID: US20180324480A1
- Status: Published application
- Kind: A1
- Application number: 15/766,723
- Filed: 2015-10-08
- Published: 2018-11-08
- Earliest claimed: 2015-10-08
- Assignees: Tradecast B.V.
- Applicants: Tradecast B.V.
- Inventors: Yillmaz Matthieu Schoen
- Web page: https://patentgrep.com/patent/US20180324480A1

## CPC

- 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/2225: Local VOD servers
- H04N 21/23109: {by placing content in organized collections, e.g. EPG data repository (details of retrieval of video data and associated meta data in video databases G06F16/739)}
- H04N 21/6125: {involving transmission via Internet (transmission by internet of broadcast information H04H60/82)}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

The invention relates to a client and method for playing a sequence of video streams, and corresponding server and computer program product. The client comprises: —a receiver arranged to receive from a server a data object defining a network address for each of a number of different video streams, a playing order and timing information; and —a processor arranged to, on the basis of the timing information and the playing order: o select the current video stream to be played; and o determine the current playback position within said current video stream, wherein the receiver is arranged to request video streams on the basis of the network addresses, and the processor is arranged to play video streams according to the playing order, starting from the selected current video stream at the determined current playback position, and to update the data object while playing video streams.

## Claims

### Claim 1

Client for playing a sequence of video streams, comprising:
a receiver component arranged to receive from a server a data object defining a network address for each of a number of different video streams, a playing order of said number of video streams and server side timing information; and
a processor component connected to said receiver component, the processor component being arranged to, on the basis of the server side timing information and the playing order defined in the data object:
select the current video stream to be played from said number of video streams; and
determine the current playback position within said current video stream,
wherein the receiver component is further arranged to request video streams on the basis of the network addresses defined in the data object, and the processor component is further arranged to play video streams according to the playing order defined in the data object, starting from the selected current video stream at the determined current playback position, wherein the processor component is arranged to update the data object while playing video streams upon receiving an updated data object by the receiver component.

### Claim 2 (depends on 1)

Client according to claim 1, further comprising a memory connected to said processor component, the processor component further being arranged to:
store in the memory at least one video stream of the number of video streams defined in the data object,
determine, before playing each video stream, whether said video stream to be played is stored in the memory, and
play the stored video stream if the processor component determines that the video stream to be played is stored in the memory, and else streaming the video stream from the network address defined in the data object.

### Claim 3 (depends on 2)

Client according to claim 2, wherein the data object further defines a file size for each video stream, and the processor component is further arranged to select the at least one video stream to be stored in the memory on the basis of the file size defined in the data object.

### Claim 4 (depends on 3)

Client according to claim 3, wherein the processor component is arranged to select the at least one video stream to be stored by executing the steps of:
I. generating a list of the number of video streams defined in the data object;
II. determining the available storage capacity of the memory;
III. determine the video stream of the list having the largest file size;
IV. storing the video stream determined in step III if its file size is smaller than or equal to the available storage capacity determined in step II;
V. removing the video stream determined in step III from the list; and
VI. repeating steps II-IV until the list is empty.

### Claim 5 (depends on 2)

Client according to claim 2, wherein the processor component is further arranged to, upon receipt of the data object and/or after updating the data object:
determine for each video stream stored in the memory whether said video stream is included in the number of video stream defined in said initial or updated data object; and
deleting a stored video stream from the memory if said stored video stream is not defined in the data object.

### Claim 6 (depends on 1)

Client according to claim 1, wherein the data object further defines a title for each video stream, the processor component further being arranged to:
determine the title of the video stream currently playing and/or the title of the next video stream to be played, on the basis of the title and/or playing order defined in the data object; and
render an overlay over the currently playing video stream showing the title of the video stream currently playing and/or the title of the next video stream to be played.

### Claim 7 (depends on 6)

Client according to claim 6, wherein the processor component is arranged to render the overlay over the currently playing video stream a predetermined time after playout of the current video stream has been started by the processor component.

### Claim 8 (depends on 1)

Client according to claim 1, wherein the data object further defines for at least one of the number of video streams a network address of overlay data, the processor component further being arranged to:
determine whether a network address of overlay data is included in the data object for the currently playing video stream; and
obtaining said overlay data from the corresponding network address and rendering an overlay over the currently playing video stream on the basis of the obtained overlay data, if said address is included in the data object,
wherein the processor component is arranged to update said overlay data upon receiving updated overlay data by the receiver component from said network address.

### Claim 9 (depends on 1)

Client according to claim 1, the client being implemented as a web application executable by a web browser.

### Claim 10 (depends on 9)

Server for generating a linear video stream from a number of different video streams, the server being arranged to implement the client according to claim 9 as a virtual device having a virtual display and a virtual audio output, the server being arranged to capture the output of said virtual display and virtual audio output, and generating a linear video stream from said captured audio and video.

### Claim 11 (depends on 1)

System comprising a server and a number of clients according to claim 1, wherein the server is arranged to transmit the data object to a client upon request, wherein the server defines the server side timing information of the data object such that playing of the sequence of video streams by the clients is synchronized.

### Claim 12

Method of playing a sequence of video streams by a client, comprising the steps of:
a) receiving by the client from a server a data object defining the network address of each of a number of video streams, the playing order of said number of video streams and server side timing information;
b) requesting by the client of video streams on the basis of the network addresses of different video streams;
c) on the basis of the server side timing information and the playing order defined in the data object, selecting by the client the current video stream to be played from said number of video streams and determining the current playback position within said current video stream;
d) playing by the client said selected current video stream starting from the determined current playback position; and
e) playing by the client the next video stream according to the order defined in the data object,
wherein step e) is repeated after playing of each video stream, wherein the client updates the data object while playing the video streams upon receiving an updated data object.

### Claim 13 (depends on 12)

Method according to claim 12, further comprising:
storing on the client at least one video stream of the number of video streams defined in the data object,
wherein playing of a video stream in steps d) and/or e) comprises:
determining whether the video stream has been stored on the client; and
playing the stored video stream if the video stream has been stored on the client, and playing the video stream from a network location if the video stream has not been stored on the client.

### Claim 14 (depends on 13)

Method according to claim 13, wherein the data object received by the client further defines a file size for each video stream, the method further comprising selecting by the client the at least one video stream to be stored on the basis of the file size defined in the data object.

### Claim 15 (depends on 14)

Method according to claim 14, wherein selecting the at least one video stream to be stored comprises:
I. generating a list of the number of video streams defined in the data object;
II. determining the available storage capacity of the client;
III. determine the video stream of the list having the largest file size;
IV. storing the videos stream determined in step III if its file size is smaller than or equal to the available storage capacity determined in step II;
V. removing the video stream determined in step III from the list; and
VI. repeating steps II-IV until the list is empty.

### Claim 16 (depends on 13)

Method according to claim 13, further comprising after receiving the data object and/or after updating the data object:
determining by the client for each video stream stored on the client whether said video stream is included in the number of video streams defined in the data object; and
deleting a stored video stream from the storage of the client if said stored video stream is not defined in the data object.

### Claim 17 (depends on 12)

Method according to claim 12, wherein the data object further defines a title of each video stream, the method further comprising:
determining by the client the title of the video stream currently played by the client and/or the title of the next video stream to be played, according to the title and/or playing order defined in the data object respectively; and
rendering by the client an overlay over the currently playing video stream showing the title of the video stream currently playing and/or the title of the next video stream to be played.

### Claim 18 (depends on 17)

Method according to claim 17, wherein the overlay is rendered over the currently playing video stream starting from a predetermined time after the client has started playout of the currently playing video stream.

### Claim 19 (depends on 12)

Method according to claim 12, wherein the data object further defines for at least one of the number of video streams a location of a network address of overlay data, the method further comprising if the client determines that a network address of overlay data has been included in the data object for the currently playing video stream:
obtaining by the client the overlay data for the currently playing video stream from said network address; and
rendering by the client an overlay over the currently playing video stream on the basis of the obtained overlay data,
wherein the overlay data is updated upon receiving updated overlay data.

### Claim 20 (depends on 12)

A computer program product comprising non-transitory computer-executable instructions configured to, when executed, perform the steps of the method according to claim 12.
