BACKGROUND TO THE INVENTION

Field of the Invention

The present invention relates to an architecture in which data can be streamed and streamed data can be accessed.

Description of the Related Art

It is known in the art for data streamed from various sources, and various other sources to access streamed data. Thus capture devices may capture events for example using a video camera functionality of a mobile phone, and stream associated data. Viewing devices may receive the streamed data and vie the associated video.

It is an aim of the invention to provide an improved content streaming environment.

SUMMARY OF THE INVENTION

There is provided a system for providing streaming services, the system comprising: a plurality of users each for generating a stream of an event on a connection of a public network; and a server configured to: receive a plurality of the generated streams on connections of the public network; determine content for at least one output stream in dependence on one or more of: the content received on the input streams, the content requested by a viewer, and the user profiles of the contributors; and output the at least one output stream on a connection of a public network, at least one user for receiving the at least one output stream on a connection of the public network.

A key feature is the provision of control—the determination feature. This aspect is about multiple streams going into one output stream, but under some form of control—a decision is made. This aspect puts intelligence in the middle: the output stream uses part of the collection of input streams.

The server may include a first interface connected to the public network for receiving the plurality of the generated streams, and a second interface connected to the public network for outputting the at least one output stream. The server may be associated with a private network connected to the first and second interfaces.

The at least one of the plurality of users may provide a live stream on a connection of the public network, and the at least one output stream provided on a public network includes that live stream.

The at least one user may be one or more of: a content originator, a content consumer, a content requestor, a viewer, a contributor, a director, or a content responder. A director may be a client configured to control the output stream of the server. In general, all devices are users of the system, whether they are identified as a consumer or a client in parts of this description and/or parts of the drawings.

The at least one user may be one or more of a content requestor, an editor, an analyst, a syndicator, a curator, a moderator, an advertiser, or a content responder. The syndicator may identify input streams associated with certain events. The curator may choose specific inputs streams. The input streams may be associated with events, and the curator may choose specific events. The moderator may apply predetermined rules to the input streams.

Each user may generate a stream, each stream being allocated a timing reference. The timing reference may be relative to a master clock, an audio trigger or a visual trigger. The timing reference may be relative to a master clock, the timing reference being applied to each stream received by the server. Each stream may have one or more of a start time, a finish time and a continuity time or offset defined relative to the master clock. The timing reference may allow rights management to be applied. The timing reference may provide a time stamp on each stream generated by a user device. At least one stream may be allocated a geo-reference. The geo-reference may vary over time. The geo-reference may indicate or include a pointing direction of a camera associated with the device generating the stream. The geo-reference allocated to a stream may be updated in dependence on the device moving by a distance which is greater than a threshold. The threshold value may be set in dependence on an event. The geo-reference may be included as metadata associated with or embedded in a stream.

The server may group a plurality of input streams into an event. An input stream may be grouped into one or more events. A stream may be grouped according to its metadata.

Each consumer may be associated with an appliance. An appliance may be one of: a website, an application running on a mobile device, an application running on a television, a server application.

A server may comprise an API (application programmable interface) and a media gateway. The API may provide an interface to metadata services, and the media gateway has an interface to the streams. The media gateway may be configured to receive the input streams and generate one or more output streams. The media gateway may be configured to store the input streams. Each input stream may be allocated to an event. If it is identified that the input stream should be associated with an existing event, it is allocated to that event. If it is identified that the input stream is not associated with any existing event, then a new event is created and the input stream associated with that new event. Each input stream is allocated to an event in accordance with its metadata. The media gateway may be configured to receive data, metadata, and data with embedded metadata. The media gateway may be configured to process streamed time dependent data or metadata. The API may be configured to process data which is not time dependent.

The data may be control related. The control data is derived from metadata.

A request from a user is received by the API, and the request defines the rules which are applied to the media gateway and data streams that come into it. The rights holders may create rules that instruct the server to store content. The rights holders may assign rights to the streams.

An input stream of data and an input stream of metadata may be received by the media gateway. The media gateway may output an output stream. The media gateway may communicate with the API. The API receives control (e.g. a request), and user rules.

This provides, in an aspect, a server: determination of association with each event done by API, but then media gateway acts on it.

Static metadata includes, e.g., time. Preferably generated by originating device. Dynamic metadata includes, e.g. point of view. Preferably generated by the originating device. A password is static metadata. The media gateway is preferably only interested in data that changes with time. Static metadata goes into API.

The API may be configured to authenticate and/or authorize each input stream. The API may be configured to provide functionality associated with streaming services. The functionality may be applied to the input stream received at the media gateway in dependence on the metadata associated with the input stream.

There is provided a system for streaming data comprising: a plurality of capture devices for capturing events and generating captured data streams; a server for receiving the captured data streams and for generating at least one viewing data stream in dependence thereon, the server comprising: a media gateway for receiving the at captured data streams and for generating the at least one viewing data stream; and an application programmable interface for receiving control data associated with the captured data streams, wherein the at least one viewing stream is output by the media gateway under the control of the application programmable interface in dependence on the control data, the system further comprising: at least one viewing device for receiving the viewing data stream.

A user is enabled, on receipt of an input stream, to preferably join the input stream to an event. Such a user may also be referred to as a client.

If it is identified that the input stream should be associated with an existing event, it is joined to that event. There may be more than one streamed event.

If it is identified that the input stream is not associated with an existing event, a new event is created and it is joined to that event.

A user is enabled, on determination of provision of an invitation key or password with the input stream, to join the input stream to an associated event. Such a user may also be referred to as a client.

