US20230362417A1 - System for streaming - Google Patents

System for streaming Download PDF

Info

Publication number
US20230362417A1
US20230362417A1 US18/116,188 US202318116188A US2023362417A1 US 20230362417 A1 US20230362417 A1 US 20230362417A1 US 202318116188 A US202318116188 A US 202318116188A US 2023362417 A1 US2023362417 A1 US 2023362417A1
Authority
US
United States
Prior art keywords
session
content
software application
host
recipient
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
US18/116,188
Inventor
Leonard Peter Shore
Samuel Jordan Shore
Marty John Gauvin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BlueJay Technologies Ltd
Original Assignee
BlueJay Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BlueJay Technologies Ltd filed Critical BlueJay Technologies Ltd
Priority to US18/116,188 priority Critical patent/US20230362417A1/en
Publication of US20230362417A1 publication Critical patent/US20230362417A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/2187Live feed
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/27Server based end-user applications
    • H04N21/274Storing end-user multimedia data in response to end-user request, e.g. network recorder
    • H04N21/2743Video hosting of uploaded data from client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/482End-user interface for program selection
    • H04N21/4825End-user interface for program selection using a list of items to be played back in a given order, e.g. playlists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/64Addressing
    • H04N21/6405Multicasting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8106Monomedia components thereof involving special audio data, e.g. different tracks for different languages
    • H04N21/8113Monomedia components thereof involving special audio data, e.g. different tracks for different languages comprising music, e.g. song in MP3 format

Definitions

  • the present invention relates to a method of live broadcasting a session from a host device to multiple recipient devices over an internet network comprising the steps of: executing a software application configured to program, transmit and receive the session on a host device and on a recipient device, launching the software application executed on a host device in host mode, programming the session from the host device by selecting a sequence of content items stored at one or more content stores and identifying the location of content items within the content stores, initiating the session by initiating the transmission of the content items of the programmed session from the content stores to a streaming server, relaying the session from the streaming server, launching the software application executed on a recipient device in recipient mode, identifying the session from the recipient device, selecting the session from the recipient device, and receiving the relay of the session at a recipient device from the streaming server.
  • a further aspect of the invention comprises a computing device for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising a software application according to any one of the first, second and third aspects.
  • the session broadcast is controlled from a host device.
  • Preferred host devices may comprise portable handheld devices, a personal computers or web servers.
  • the host may control the session via the software application installed on the host device.
  • the software application is preferably used to control the programming of the session, the initiation of the session, the termination of the session, and modification of the session even during broadcast.
  • the server simulates an end-user device and multiplexes a stream received from a third party service out to many listeners simultaneously.
  • content may be accessible by the host via a subscription streaming service, whereby the content store is held by a third party.
  • streaming service providers may grant access to content for broadcasting via the host devices.
  • the content store is located on the host device.
  • the host device is a smart phone or tablet.
  • systems according to the invention may be distributed systems for broadcasting multiple sessions from multiple host devices to multiple listener devices over an internet network.
  • methods according to the invention may involve a distributed system comprising multiple host devices and multiple listener devices wherein the content store available to each host is located on the host device.
  • Preferred systems and methods according to the invention comprise an upload server for receiving a session from a content store and transmitting the session to the streaming server.
  • the session is pushed from the content store to an upload server.
  • the session is preferably comprised of content data in a raw, unmodified state.
  • the session is preferably received at the upload server in a raw, unmodified state where it may be filtered, transcoded or otherwise prepared or optimised for streaming.
  • the upload server pushes the session's content data to the streaming server once it has been appropriately prepared or optimised for streaming.
  • Suitable upload servers may comprise any one of a number of upload servers well known to person skilled in the art, however a preferred upload server may comprise a Liquidsoap upload server.
  • the broadcast of content from the host device to the recipient device is unidirectional.
  • the recipient of the unidirectional broadcast may be a recipient only and/or a recipient and host. Nonetheless, a single device may operate as a host and a recipient.
  • the streaming server may receive a session from a content store via an upload server.
  • the streaming server preferably, receives the session's content data in a form prepared or optimised for streaming.
  • audio content data is in MP3 format or in the OGG VORBIS or OPUS open source format.
  • Suitable streaming servers may comprise any one of a number of streaming servers well known to person skilled in the art, in particular, streaming servers capable of receiving live audio streams and multiplexing them to many listeners.
  • a preferred streaming server may comprise an Icecast streaming server.
  • an item of metadata relating to the content is transmitted whilst embedded in the session.
  • the data arising from use of the software application comprises metadata relating to the content forming at least a portion of the session.
  • the management server may receive from the host device and provides to the recipient's device live updates to metadata preferably being title, artist, album, album art, total duration and played duration of content items.
  • preferred methods according to the invention may further comprising the step of: transmitting data arising from the use of the software application at the host device or at the recipient device to an application programming interface in communication with a management server.
  • a recipient device may call the application programming interface via the software application to select a session.
  • the location of the selected session may be retrieved from the management server via the application programming interface and communicated back to the software application.
  • a command is sent back to the software application from the management server to passively perceive the session relay at a particular location.
  • Preferred overlay functions may comprise a live overlay. Such functions enable the live or substantially real time capture of a recording and transposition of that recording on existing content, whilst broadcasting the combined content. Such functions could be utilised in combination with third party streaming services, such that a user may overlay commentary on content broadcast from a third party streaming service.
  • Preferred software applications may communicate with social media or e-mail. For instance, communication may include sharing the details of the software application, content items in a session being played or promotion of a host. Preferred software applications may comprise functionality enabling hosts and/or listeners to invite others to follow them.
  • the Bluejay Music API is based on REST principles: data resources are accessed via standard HTTPS requests in UTF-8 format to an API endpoint. Where possible, the API strives to use appropriate HTTP verbs for each action:
  • Some endpoints support a paging of the dataset, taking an offset and applying a limit. Offset numbering is zero-based and omitting the offset parameter will return the first X elements. Requests that return an array of items are automatically paginated if the number of items vary (for example, tracks in a playlist). In this case, the results are returned within a paging object.
  • scope Optional A space-separated list of scopes:. If no scopes are specified, authorization will be granted only to access publicly available information: that is, only information normally visible in the Bluejay Music apps. show_dialog Optional. Whether or not to force the user to approve the app again if they've already done so. If-False (default), a user who has already approved the application may be automatically redirected to the URI specified by redirect_uri. If true, the user will not be automatically redirected and will have to approve the app again.
  • some client state e.g., a cookie
  • the header of this POST request must contain the following parameter:

Abstract

The present invention relates to systems, methods, software applications and devices for the broadcasting of short-lived personal internet radio stations. Embodiments include software applications for live broadcasting over an internet network comprising a host mode and a recipient mode, wherein the software application may be executed on a connected mobile device to broadcast to many other recipients in a substantially synchronous manner. Embodiments provide for the live broadcasting of music and video content from a personal device to many listener or viewer devices, where content may be sourced from any number of locally stored or cloud-based content repositories.

Description

    TECHNICAL FIELD
  • The present invention relates to the broadcasting of short-lived personal internet radio stations, in particular, systems and methods for live broadcasting a session from a host device to multiple recipient devices over an internet network. Embodiments include software applications for live broadcasting over an internet network comprising a host mode and a recipient mode, wherein the software application may be executed on a connected mobile device.
  • BACKGROUND
  • The myriad of connected devices available on the marketplace today provides a multitude of options for individuals to consume audio and visual content from anywhere in the world; provided that an internet connection is available. However, the curation of content and personalisation of visual and listening experiences in the online environment is still emerging as a product class.
  • Many audio and video streaming services are currently available as subscription services or pay per download services. Many of these operate as digital marketplaces providing access to a searchable library of content held on a central repository, whereby the content may be downloaded so that it can be experienced time and time again, or streamed so that it can be experienced once only. Many streamed services operate on a subscription basis, allowing subscribers to experience the same content or different content as many times as they like within the subscription period, on-demand. Costs associated with licensing streamed content are usually bundled and shared across all subscribers. Whereas, downloadable content often involves payment of an individual license fee by each viewer/listener for each item of content.
  • Accessing and experiencing content via the internet has become so commonplace that many devices are now available with inbuilt functionality for receiving content via the Internet. These include smart televisions, tablets, smart phones, wearables, computers and other products such as car seats or dashboards, refrigerators, etcetera with such smart devices built into them.
  • As consumers have become accustomed to downloading and streaming content, and to locating their desired content in digital libraries or digital marketplaces, content distribution has become accessible to individual artists. Streaming services have become available which offer a two sided marketplace; offering the opportunity for artists (particularly unsigned artists) to self-publish, distribute and license their works within a digital marketplace, whilst also offering the opportunity for discerning consumers to locate and experience unique works often not available within large digital collections. Furthermore, such marketplaces offer opportunities for distribution and consumption of content which is unsigned, pre-production, raw, or which may have otherwise been considered not worthy of production. Dedicated streaming services are provided for artists to contribute and curate their own content, so that their work can be made available to anyone with a computer and Internet connection without the need for the involvement of a production company.
  • However, not all consumers of content are discerning and wish to have complete control over their content programming. Many simply lack the interest, time or capacity to seek out the content they wish to experience. Others prefer the psychological uplift in the knowledge that they are listening, enjoying and experiencing the content ‘live’; in unison with others participating in the ‘shared experience’. Online radio or television stations offer consumers a continuous stream of curated content, often identified under a particular brand, style, theme or genre. Such forms of broadcasting content require little or no involvement of the viewer or listener for making programming selections; the viewer or listener can simply opt-in to view or listen.
  • Artificial intelligence, however, has recently enabled streaming services to automate the suggestion of content to listeners that may suit their musical preferences, based on prior selections of content made by the user, which may meet the listening needs of listeners of traditional broadcasts.
  • As technologies enabling new marketplaces for online broadcasting and content streaming have emerged, the art of curating video and music experiences in the online space have largely been ignored. The focus of streaming content services has largely been to provide content on-demand. To assist viewers or listeners to locate content of interest many content streaming marketplaces now integrate computer algorithms and other automated systems for suggesting content that viewers or listeners may enjoy based on their past viewing or listening history.
  • However, the curation of music and video experiences is a personal and well-honed skill that is difficult to replicate via automated means alone. The desire from consumers for curated experiences is evident in the emergence of playlist generation and playlist sharing technologies. However, many of these technologies fall short of making playlist content sharable in a live and interactive environment.
  • Current content licensing regimes permit the broadcasting of programs or playlists, within a set of licensing rules at a reasonably low cost in comparison with full featured content licensing. Thus, it is theoretically possible to crowdsource a potentially infinite number of personally curated viewing or listening experiences, that identify with the tastes, styles and preferences of the curator, under standard broadcast licensing regimes.
  • However, several technical issues must be overcome to create a similar listener (or viewer) experience to the ‘live’ shared experience that has been enjoyed by listeners and viewers via traditional broadcasting technologies, such as radio frequency broadcasting. To date, substantially synchronous broadcasting from one device to many devices has not been possible in a scalable way.
  • Further technical issues must also be overcome in order to ensure compliance with the required broadcast licensing restrictions, and to ensure the scalability of a service that is able to access the potentially unlimited capacity of personally curated crowdsourced playlists or sessions.
  • Thus, a solution is required to enable users to live broadcast their curated sessions, and to receive the live broadcasts of others, whilst alleviating the need to build significant infrastructure to generate and maintain large content repositories.
  • SUMMARY OF INVENTION
  • In a first aspect, the present invention relates to a system for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising: a software application for executing on a host device and a recipient device capable of configuring the device to program, transmit and receive the session, a content store containing content forming at least a portion of the session, and a streaming server for receiving a session from one or more content stores and relaying the session to multiple recipient devices, wherein the session is programmed at the host device using the software application and the session is received at the multiple recipient devices using the software application.
  • In a second aspect, the present invention relates to a software application for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising: a host mode capable of; communicating with an application programming interface located at an internet location to transmit and receive data used to program and initiate the session, identifying the location of the content comprised in the session, and transmitting content comprised in the session from the location of the content to a streaming server, and a recipient mode capable of; communicating with the application programming interface to transmit and receive data used to identify the session, and receiving a relay of the session from the streaming server, wherein the software application is capable of execution on a computing device.
  • In a third aspect, the present invention relates to a method of live broadcasting a session from a host device to multiple recipient devices over an internet network comprising the steps of: executing a software application configured to program, transmit and receive the session on a host device and on a recipient device, launching the software application executed on a host device in host mode, programming the session from the host device by selecting a sequence of content items stored at one or more content stores and identifying the location of content items within the content stores, initiating the session by initiating the transmission of the content items of the programmed session from the content stores to a streaming server, relaying the session from the streaming server, launching the software application executed on a recipient device in recipient mode, identifying the session from the recipient device, selecting the session from the recipient device, and receiving the relay of the session at a recipient device from the streaming server.
  • Systems and methods according to the first and third aspects may, preferably, comprise software applications according to the second aspect.
  • A further aspect of the invention comprises a computing device for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising a software application according to any one of the first, second and third aspects.
  • As used herein, the term ‘live’ is to be understood as being synonymous with ‘substantially live’ such that both terms are to be understood as comprising events that are substantially synchronised but where there may also be some delay between the events. For instance, a live broadcast from a host to multiple recipients may be reasonably well synchronised in the time from which the broadcast is transmitted to the time at which it is received, however some delay in the synchronisation of their timing is accepted within the meaning of a live broadcast.
  • In a preferred form, a live session may be one in which the duration of the session lasts no longer than the hosts session.
  • As used herein, the term ‘broadcasting’ is to be understood as including webcasting, simulcasting, streaming and similar services which are not provided on-demand to recipients (e.g. viewers or listeners), but are provided as a live feed of content that can be passively perceived by a recipient, and to a limited extent manipulated by a recipient to customise their own viewing or listening experience.
  • As used herein, the term ‘application’, or its shortening ‘app’, is to be understood as including a software application that may be executed on any one of a number of computing devices know to persons skilled in the art, including but not limited to portable devices, handheld devices, personal computers or servers (including web servers). Within the definition provided herein, an ‘application’ or ‘app’ not only includes within its scope a single, discreet software application, but an ‘application’ or ‘app’ will also be taken to include all software applications that are initiated by a single software application, even though the further software applications may be functionally distinct from or may be executed separately from the first software application.
  • Systems, applications, devices and methods according to the invention preferably enable a host to launch a short-lived, mini internet radio or television station, confined to the live broadcast of their session. Preferably, broadcasting occurs by locating a ‘station’ sourced by a source client which is streamed to any number of recipients. That is, recipients of the selected ‘station’ view or listening to the same stream.
  • Preferably, a recipient cannot alter or modify the stream. However, a recipient may modify their own viewing or listening experience. For example, the software application of the invention may allow the recipient to alter sound volume, or to engage and interact with other users in the session, for instance by liking or disliking songs and using chat functionality.
  • In a preferred form, the session broadcast is controlled from a host device. Preferred host devices may comprise portable handheld devices, a personal computers or web servers.
  • The host device is capable of controlling the programming of the session, the initiation of the session, the termination of the session, and modification of the session even during broadcast. The host device may enable the user to directly key the selection of each piece of content comprising the session. Each piece of content may be selected from the storage within the devices itself, it may be selected from a cloud location (for instance within repositories provided by third party streaming services) or it may be selected from a mixture of sources. Thus, in a preferred form, the live broadcast of the session may only be controlled by the host.
  • Preferably, the host may control the session via the software application installed on the host device. The software application is preferably used to control the programming of the session, the initiation of the session, the termination of the session, and modification of the session even during broadcast.
  • The programming of the session may comprise the direct keying of each piece of content comprising the session, the selection of a pre-programmed playlist or the selection of third party curators. A pre-programmed playlist may be located within the device's storage, within a cloud repository or within a repository provided by third party streaming services.
  • A third party curator may comprise another user. For instance, another user that the user is ‘following’ or that the user ‘likes’. Or it may comprise a artificial intelligence tool or algorithm designed to make music selections for the user. Such a tool or algorithm may make selections to curate a playlist for a user based on the user's past preferences or profile characteristics. Tools or algorithms according to these embodiments may optionally be provided by third party streaming services.
  • In addition to programming from a host's music stored on the user's device, the software may route music from an external music provider nominated by the host.
  • In such embodiments the upload server preferably emulates the host's device using the host's credentials to log in to the external content provider. For instance, where the external content is supplied by a music streaming service, the external music provider may then stream the required music for the session to the upload server. In turn, the upload server passes the music onto the streaming server and thereafter to listeners.
  • Preferably, the host's electronic device receives the music in the same way as a listener.
  • In a preferred form, the server simulates an end-user device and multiplexes a stream received from a third party service out to many listeners simultaneously.
  • In an alternative form, the software may enable content to be streamed from a third party streaming service using the credentials of the host or the listener. The software preferably synchronises the streaming of content for all users connected to a session.
  • The software may, preferably, use metadata to synchronise the listening of many signed-in users that would otherwise be independent.
  • Preferably, recipients have no control over the session that is live broadcast. The recipient may use the software application to passively perceive the relayed session to view or listen to the live broadcast. The recipient may also terminate their subscription of the session received at the recipient device at any time.
  • As the session content is preferably not stored on the recipient's device (or on any other intermediate device) a small delay may occur in the synchronisation of the broadcast from the host to the recipient. Thus, in an alternative form the session may be buffered at the recipient's device to remove any mis-synchronisation or delays. However, synchronisation between hosts and recipients is not considered a significant issue as recipients are unlikely to be in the same place as the host and listening to the same session as the host, such that they need their experiences to be precisely synchronised. They simply need to be capable of sharing a common ‘live experience’.
  • The software may be implemented as a web player. As a web player, the software can be implemented such that it is loaded dynamically or on demand by users on visiting a web URL using a web browser.
  • Preferably, the software may be started using command line parameters or web URL query parameters or other similar means. This may cause the software to immediately join and start playing music from a specified session.
  • Embodiments may comprise a version of the software which may be implemented without the need for entry of identifying credentials for use. Any activities conducted by such a version may be recorded as having been conducted by an anonymous user. Such a version could, for example, be limited to the listener functions only.
  • As used herein, the term ‘session’ is to be understood as meaning a selected, programmed or curated sequence of audio or video content items which may be experienced by a recipient (e.g. viewer or listener) by viewing or listening to the sequence of content items.
  • As used herein, the term ‘program’, pluralisations and derivative terms such as ‘programming’ or ‘programmed’ are to be understood as including any activity enabling the selection or initiation of a playlist or complete session, or individual items of content, track, film clips, films and the like. For instance, programming may include the selection or initiation of a playlist created or curated within or by third party technologies (e.g. within apps provided by third party streaming services) or by artificial intelligence agents provided by third parties or selection algorithms provided by third party services.
  • In contrast with many streaming services currently available, sessions according to aspects of the invention may be personally curated by hosts. Preferably, this generates a highly personalised viewing or listening experience that cannot be replicated by automated programming.
  • Sessions are preferably created from content items available to the host. The content store is preferably accessible by the host via the device, wherein the host may select from content items located in the content store to generate a session. Preferably, sessions comprise content items available on the host device.
  • In another preferred from, at least one of the content stores is located on a cloud server. Preferred cloud servers may comprise those provided by third party streaming services, however, cloud servers may also comprise a cloud storage location belonging to the user.
  • As used herein, the term ‘content’ or derivatives such as ‘content item’ or ‘item of content’, which specifically relate to a discrete item of content, are to be understood as comprising all expressions of information and experiences channelled through some medium, such as written media, visual media, audio media etcetera, in particular those directed towards an end-user or audience. Similarly, the related term ‘digital content’ refers to content, as defined above, which can be captured in digital format.
  • Content stores according to the invention may comprise any means of storing collections of content, in particular digital content. Thus, preferred content stores may comprise any one of a number of digital storage media including cloud-based digital storage, removable digital storage media such as external hard drives, USB drives, memory cards etcetera, local hard drives, and the storage capacity available in digital devices.
  • Thus, a preferred content store may be located on the host device or may be accessible by the host via their device. For instance, a content store may be accessible by the host via their device under the terms of the sale or license of content, wherein the content is retained at the content store. A host device may therefore have access or control of content that is not located on the device.
  • Alternatively, the host device may have access to content located on a linked device owned or controlled by the host. For instance, the linked device may be a second device (e.g. a tablet device) connected via bluetooth or connected via data sync over a network. In such embodiments, the host device may be a wearable device. Alternatively, the host device may have access to a data repository under the host's control for storing items of content acquired under sale or license.
  • In an alternative form, content may be accessible by the host via a subscription streaming service, whereby the content store is held by a third party. In these forms of the invention, streaming service providers may grant access to content for broadcasting via the host devices.
  • In preferred systems and methods according to the invention the content store is located on the host device. Preferably, the host device is a smart phone or tablet.
  • In preferred forms of the invention, systems according to the invention may be distributed systems for broadcasting multiple sessions from multiple host devices to multiple listener devices over an internet network. Similarly, methods according to the invention may involve a distributed system comprising multiple host devices and multiple listener devices wherein the content store available to each host is located on the host device.
  • Systems and methods thus formed, preferably establish an infinitely scalable distributed system. As content stores are within the control of one or many hosts, and are preferably comprised within the host device, the engineering challenges relating to the centralisation of an ever increasing volume of content requiring storage and management are avoided. Indeed, as content is not centrally retained or stored at any point during the live broadcast of the session, licensing restrictions placed on internet radio stations may be adhered to. This is, preferably, in contrast to many streaming service providers that warehouse content and provide streamed access to content libraries on demand, upon payment of a subscription fee or pay per click license.
  • In certain embodiments, the software applications or application programming interfaces may be subject to rate limiting restrictions. Rate limits preferably allow the application programming interface to run fast for all users. Preferably, unauthenticated requests are processed at the lowest rate limit. Whereas authenticated requests with a valid access token preferably benefit from higher rate limits.
  • As used herein, the term ‘relay’ and derivatives such as ‘relaying’ and the like, are to be understood as defining the function of passing on information or a signal that is received. The terms are to be understood as including within their meaning the various types of relays and relaying such as repeating, amplifying, multiplexing, etcetera and are to be understood as excluding within their meaning other functions such as copying.
  • Preferred systems and methods according to the invention comprise an upload server for receiving a session from a content store and transmitting the session to the streaming server. Preferably, the session is pushed from the content store to an upload server. The session is preferably comprised of content data in a raw, unmodified state. The session is preferably received at the upload server in a raw, unmodified state where it may be filtered, transcoded or otherwise prepared or optimised for streaming. Preferably, the upload server pushes the session's content data to the streaming server once it has been appropriately prepared or optimised for streaming. Suitable upload servers may comprise any one of a number of upload servers well known to person skilled in the art, however a preferred upload server may comprise a Liquidsoap upload server.
  • Preferably, all audio content is transcoded to the OGG VORBIS or OPUS open source format. Alternatively, all audio content is in MP3 format.
  • Thus, preferred methods according to the invention involve the initiation of a session by transmitting the content items of the programmed session from the content store to a streaming server via an upload server.
  • Preferably, in methods, systems and applications according to the invention the broadcast of content from the host device to the recipient device is unidirectional. The recipient of the unidirectional broadcast may be a recipient only and/or a recipient and host. Nonetheless, a single device may operate as a host and a recipient.
  • In preferred forms of the invention, the streaming server may receive a session from a content store via an upload server. The streaming server, preferably, receives the session's content data in a form prepared or optimised for streaming. Preferably, audio content data is in MP3 format or in the OGG VORBIS or OPUS open source format. Suitable streaming servers may comprise any one of a number of streaming servers well known to person skilled in the art, in particular, streaming servers capable of receiving live audio streams and multiplexing them to many listeners. However, a preferred streaming server may comprise an Icecast streaming server.
  • Preferred streaming servers are capable of streaming content to multiple recipient devices substantially synchronously; or, as a live broadcast. The impact of this intervention physically manifests itself across all recipient devices as an alteration of the audio output of the recipient devices, timed to the programming and thereafter initiation of the broadcast by the host, via the host device.
  • A preferred streaming service comprises the Icecast streaming servers, preferably running from local cloud services. By multiplexing the streamed content via Icecast streaming servers listener devices play the audio feed substantially synchronously, to provide a ‘live’ experience to listeners. Once the ‘live’ broadcast has commenced, additional listeners can join in and listen to the multiplexed stream at substantially the same place in the session as all other listeners.
  • In certain embodiments, the streaming server may be a third party server, for instance, it may be a streaming server provided by a streaming services provider.
  • A session stream may be received by any number of recipient devices using the software application. As the session stream is a live broadcast, the recipient device preferably only receives the stream. The recipient device is therefore not capable of modifying the stream, for instance by rewinding or fast forwarding the stream. However, the software application may allow the recipient device to alter the reception of the session at the device.
  • Preferred systems and methods according to the invention may comprise an upload server for receiving at least a portion of a session from one or more content stores and transmitting the portions of the session to the streaming server.
  • Preferred systems and methods according to the invention may comprise a management server for storing data arising from use of the software application.
  • In alternative systems and methods of the invention, an item of metadata relating to the content is transmitted whilst embedded in the session.
  • In alternative form of the invention, the data arising from use of the software application comprises metadata relating to the content forming at least a portion of the session.
  • Preferred systems and methods according to the invention may comprise an application programming interface. Preferably, the application programming interface is in communication with the management server wherein the software application may interface with the data stored by the management server via the application programming interface.
  • Preferably, the software application comprises a single application programming interface which acts as a proxy to other application programming interfaces. Thus, the software application is only calling one application programming interface.
  • Preferably, the application programming interface is capable of calling a cloud based content store. Preferably, content items are located within cloud based content stores provided through content streaming services.
  • Preferably an application programming interface is provided by the software application which allows third parties to access broadcast content through their own software applications.
  • Preferably, the software application will collect many data points from the host or recipient device, in particular metadata. Such data points may include the location and nature of content stored on the device, login, registration and activation details of the user, identity details of the user, session history, album/movie art, other user connections (followers or following users), favourites, chat history etcetera. These data points are preferably stored by the management server.
  • In particular, the management server preferably stores a host or recipient's registration and login details. It preferably creates a catalogue of running sessions, establishes user connections, collects metadata and images, and/or performs data logging and analytic functions.
  • The software application preferably calls the application programming interface to store or retrieve data relating to the user's activity.
  • In one form of the invention, metadata may be transmitted bi-directionally between the host or recipient device and the management server, and vice versa.
  • In a preferred form, the data arising from the use of the software application at the host device comprises metadata relating to the content item being transmitted, and wherein the metadata is transmitted periodically by the software application to the management server, and is optionally requested periodically by the recipient device.
  • For example, the management server may receive from the host device and provides to the recipient's device live updates to metadata preferably being title, artist, album, album art, total duration and played duration of content items.
  • Preferably, the management server may provide feedback to the host device based on a response from the recipient's device.
  • The management server preferably stores commands and/or instructions that initiate a response from the host and/or recipient device, the upload server, and/or the streaming server. For instance, a host's selection of content items to compose a session entered via the software application, may initiate a set of commands from the management server back to the software application to push stored content at a particular location on the host device to the upload server.
  • Preferably, the management server may also perform computational functions, such as the calculation of statistics and rankings relating to favourite sessions, playlists, videos or tracks.
  • Thus, preferred methods according to the invention may further comprising the step of: transmitting data arising from the use of the software application at the host device or at the recipient device to an application programming interface in communication with a management server.
  • However, in alternative forms of the invention a management server for the storage and management of metadata and other data points generated via the software application may not be required. Metadata and other data points, may preferably be embedded in the music stream.
  • Preferably, a recipient device may call the application programming interface via the software application to select a session. In response, the location of the selected session may be retrieved from the management server via the application programming interface and communicated back to the software application. Preferably, a command is sent back to the software application from the management server to passively perceive the session relay at a particular location.
  • The management server may further comprise content rules for governing the composition of a session. Preferably, rules govern requirements for licensing of content.
  • Preferably, such rules govern the pre-purchase of content licenses, for instance, through the purchase of third party streaming services.
  • Alternatively, they may ensure compliance with geographic radio or television broadcasting licenses. Management server commands may preferably prevent sessions from being created if one of the rules is not adhered to. Content rules may relate to any one of a number of content parameters, for instance, the frequency of works by a particular artist within a session, the frequency of works from a particular album within a session, etcetera. Preferably, unknown artists or songs are not subject to content rules.
  • In a preferred form, a rule may require a minimum number of tracks, or a minimum duration of content to form a session.
  • Thus, methods according to the invention may include observance of content rules for programming the session. In particular, methods may include checking content item selections against a set of content rules stored at the management server. Preferably, the management server may make suggestions for content sequencing that are compliant with the set of content rules, when content item selections contravene the set of content rules.
  • Preferred software applications according to the invention may comprise a host mode configured to comply with licensing rules. Preferred licensing rules comprise content broadcasting regulations.
  • Software applications according to the invention may comprise a number of user features. For instance, software applications may include user registration and authentication features, and/or security features. These may include authentication and/or SSL encryption.
  • Preferably, software applications comprise a follower and following function for users in host mode to share sessions with other followers, and in recipient mode to see sessions being broadcast by other users that they are following.
  • Software applications according to the invention may comprise chat functions. Chat functions may vary depending on whether the user has selected a host mode or a recipient mode. However, preferably chat functions are identical for any member of a session.
  • Software applications preferably comprise a user interface displaying the host or recipient mode of the user, follower/following lists, the session being broadcast or received, the user's previous sessions, and/or the content of chat sessions.
  • When not in a session the user interface preferably shows a list of all of the current live public sessions (and all private sessions of hosts the user is following), follower/following lists, visual data records of the user's previous sessions, a list of all of the songs the user has favourited, and the user's profile. When in a session the user interface preferably also shows host mode of the current session playlist (including reorder and add to playlist features), or listener mode of the current session playlist, a list of all current members of the session, and the current session chat.
  • Software applications preferably comprise an overlay function. This function may allow a host to add a second item of content over the stream. Preferably the overlay function allows the host to add the second item of content while the stream is being broadcast. Preferably, the overlay function comprises a voice over function. However, the overlay function may also allow images to be overlayed on audio or video streams.
  • Preferred overlay functions may comprise a live overlay. Such functions enable the live or substantially real time capture of a recording and transposition of that recording on existing content, whilst broadcasting the combined content. Such functions could be utilised in combination with third party streaming services, such that a user may overlay commentary on content broadcast from a third party streaming service.
  • Preferred software applications may communicate with social media or e-mail. For instance, communication may include sharing the details of the software application, content items in a session being played or promotion of a host. Preferred software applications may comprise functionality enabling hosts and/or listeners to invite others to follow them.
  • Preferred software applications may comprise a buy function. The buy function may integrate with third party providers of content download services. The buy function may allow the recipient to purchase content identified in a host playlist or identified elsewhere by metadata.
  • The invention now will be described with reference to the accompanying drawings together with the Examples and the preferred embodiments disclosed in the detailed description. The invention may be embodied in many different forms and should not be construed as limited to the embodiments described herein. These embodiments are provided by way of illustration only such that this disclosure will be thorough, complete and will convey the full scope and breadth of the invention.
  • DESCRIPTION OF EMBODIMENTS
  • The following examples relate to the development of embodiments for the broadcasting of audio content, however the following examples are also applicable to the broadcasting of video content. Minor alterations may be required to adapt the following embodiments to the viewing of video content, however the streaming process is identical for the steaming of audio and video files. Alterations required to view video content are well known to persons skilled in the art.
  • BRIEF DESCRIPTION OF THE FIGURES
  • FIG. 1 provides a flowchart of data streams in accordance with embodiments of the invention.
  • FIG. 2 provides a flowchart of data flows between core components of systems according to embodiments of the invention.
  • FIG. 3 provides a state diagram of applications according to embodiments of the invention.
  • FIG. 4 provides a flowchart of user authorisations and registrations in applications according to embodiments of the invention.
  • FIG. 5 provides a database entity diagram showing relationships between entities of the invention. Lines indicate relationships and arrowheads indicate the ‘many’ end of a relationship.
  • Several embodiments of the invention are described in the following examples.
  • Functional Overview
  • Embodiments according to the invention enable a host to broadcast a short lived Internet radio station, lasting no longer than the host's session, which can be received by one or many listeners.
  • Several embodiments according to the invention are centred on the flow of two main data streams between hosts and listeners. FIG. 1 provides a flowchart illustrating the flow of metadata from host's device to listener's device (e.g. chats, playlists, host or listener preferences or information), concurrently with the flow of content data from the host's device to the listener's device (e.g. music or video). Metadata passes between host's device and a data store, and between the data store and listener's device via open APIs. Metadata may move bi-directionally to provide feedback to the host device based on a response from the listener's device. Audio data passes from a host device to a streaming service and from the streaming service to listener's device. The movement of audio data is typically unidirectional.
  • FIG. 2 provides a more detailed overview of data flows between hosts and users. The host indexes music on their device, it allows a playlist of music to be selected and sent as a live stream to the upload servers. The management server collects a user's registration and login details. It creates a catalogue of running sessions, it establishes user connections, it collects metadata and images, and performs data logging and analytic functions.
  • The listener receives live music streams from the streaming servers in accordance with methods well known for live streaming to mobile devices. Typically, many listeners will connect with each host.
  • The upload server receives uploaded data from hosts. It transcodes and filters digital audio for quality and efficiency, however no content is retained by the upload server. The streaming server consists of a typical streaming server well known to persons skilled in the art for receiving live audio streams and multiplexing them to many listeners. Again, audio content is not retained at the streaming server.
  • Typical embodiment the invention comprises a native application for mobile devices developed for both iOS and Android, a cloud based streaming service to be progressively distributed globally to enhance performance in geographic concentrations of users, and an application programming interface and data store which is also cloud based and can authenticate users and keep analytic data. For convenience, the host and listener functions are both incorporated into the app and users can either be in a host or listener mode. However, embodiments may take the form of a single downloadable application for executing the downloading, installation and execution of a second application supplying additional functionality. For instance, a host application may execute the downloading, installation and execution of a second listener application.
  • In listening mode, the app communicates with the data store via the API and displays lists of available sessions that a user can listen to. Once a session is selected, the listener is connected to the stream of content from the session being streamed by the streaming service. The listener can also view information about individual songs in the session being played on their device's display.
  • In hosting mode, the app enables the user to build a playlist for a session from the songs on their device. When the session is commenced the device communicates with the API layer to transmit playlist and user information to the data store, and then streams the session to the streaming service which acts as a relay passing the stream directly to listener devices.
  • The system comprises additional user functions. For instance, users can follow other users and in doing so become notified when the users they follow start a session. In addition, users listening to or hosting a session can also see a list of current users listening to the session and can also take part in a chat with the users listening to the session.
  • System Components
  • In the present embodiment, the iOS app is developed in Swift and Objective C using XCode8. It is specifically designed for iOS 7 and later. The Android app is developed in Java and C. It is specifically designed for Android 4.2 and later. The app has been developed using components that are freely licensable and modifiable and would be well known to persons skilled in the art.
  • The streaming service comprises the Liquidsoap stream management and control servers and the Icecast streaming servers, running from local cloud services. Multiplexing the streamed content via Icecast streaming servers ensures that listener devices will play the audio feed substantially synchronously, to provide a ‘live’ experience to listeners. Once the ‘live’ broadcast has commenced, additional listeners can join in and listen to the multiplexed stream at substantially the same place in the session as all other listeners. This again simulates the ‘live’ experience known to listeners of traditional broadcasting services.
  • The API and data store comprises Apigee Edge and Apigee BAAS, respectively, running from cloud services.
  • All components of the system communicate under SSL encryption. In addition, user passwords are encrypted and hashed using strong encryption. All user interactions are logged and user emails are verified.
  • User Features
  • A user can select from public or private mode. In public mode a user makes available to all other users their username, sessions and social media interactions. In private mode the user only allows followers to view their username.
  • A user can select from a public session on the discover screen in order to listen to the session and become a listener. The user can select from sessions of users being followed on the home screen in order to listen to the session and become a listener.
  • A listener can view the list of songs in the selected session with the album art, title and artist of the current and previous songs shown along with the number of likes and dislikes each song has received from all listeners in the current session. The number of songs remaining and the duration of the session are also shown.
  • A user can follow other users in order to see their private sessions on their home screen and to be notified whenever they start a session.
  • Users can see the usernames of users that are following them, they can remove other users from their list of followers, they can see a list of the usernames of users they are following, they can unfollow a user they have previously followed, they can add and edit their profile information including username, email, gender, age, whether their sessions are public or private, they can select a picture from their local device to upload and use as their profile picture and they can change their password.
  • A user can create a session in order to share their music and become a host. Music selected must comply with the licensing rules for the geography in which the user is located. They can also create a session by selecting quick start in order to start a session with ten random songs from their device. A user can create a session by selecting a playlist that is on their device in order to start a session of songs from that playlist in the order of that playlist. The music selected must comply with the licensing rules for the geography in which the user is located.
  • A user can create a session by selecting songs from their device by artist or song title. Once a user adds sufficient songs to a session to meet the licensing requirements of their region, the session will start and the user will hear the session as will any listeners that have joined the session. Once the session has started the host can view the list of songs in the selected session with the album art, title and artist of all songs shown along with the number of likes and dislikes each song has received from all listeners in the current session.
  • A host or listener can view and engage in the chat for the session and view the list of listeners to the session. The host can add songs to a running session using any of the methods used to add songs at an initial session creation. The host can also change the order of songs in the session provided the changes are within licensing rules.
  • A user can sign in using the username and password provided at registration. These details are retained so the user can run the app without providing credentials again. A new user can register by providing a unique username, email address and password. A user can sign out from the profile screen, which will end any session the user is hosting and will close the connection to the server as the user is listening.
  • A user can share the details of the app and the current song in the current session or host on social media or e-mail. A user can invite other users to follow them using the app, via social media or e-mail. A listener can like or dislike current songs or songs previously played in the current session, which is posted in the session chat. A listener can also stop listening to a session at any time.
  • A listener can mark any song that is currently playing or has been played in the session for inclusion in their favourites list and it is added to the listener's favourites list. A user can remove any song from their favourites list at any time. A host can view their history of sessions by viewing a record of each of the sessions that they have hosted, in the form of a dashboard. The dashboard provides a visual or chart representation of four key items of data across the playlist and duration of the session. These items are the numbers of session members, song likes, song dislikes, and chat comments. A user can select a session from their history of sessions showing peak and average listeners against each song in the session. A listener can select a ‘buy’ function for a song in order to purchase it.
  • User Journey
  • FIG. 3 illustrates a user's journey through the various features of application. The user initially selects a method for adding tracks from the following options.
  • Quick Start
  • 10 unique random tracks are selected by the application from available songs on the device or an external content server or a third party streaming service that comply with all rules, then the playlist starts. This method cannot be used with other start methods. As soon as any song is selected under any other method, quick start is not selectable.
  • Playlist
  • Selecting this option shows a list of the playlists, in alphabetical order, on the device. The screen title should show ‘Playlists’. Users can select an entire playlist by clicking the checkbox next to a playlist. Alternatively, users can click on the name of a playlist and be presented with a view of the songs in the playlist (in playlist order) with check boxes. The screen title should show the name of the playlist. In the list of playlists, a playlist that has some of its songs selected should show a half-selected checkbox. If a playlist has all of its songs selected then its checkbox should be selected.
  • All Songs
  • Selecting this option shows a list of the songs, in alphabetical order by song title, on the device. The screen title should show ‘Songs’. Users can select a song by clicking the checkbox next to the song.
  • Artist
  • The artist option is the default, a list of artists appear below the menu which allows the choice between the first three methods. The screen title should show ‘Artists’. The list of artists is in alphabetical order. Users can select all songs from an artist by clicking the checkbox next to an artist. Alternatively, users can click on the name of an artist and be presented with a view of the songs by the artist, in alphabetical order by song title, with check boxes. The screen title should show the name of the artist. In the list of artists, an artist that has some of its songs selected should show a half-selected checkbox. If an artist has all of their songs selected then their checkbox should be selected.
  • General
  • Users can navigate between methods; selections are preserved and added to. Check boxes should always show clear, half selected or selected based upon the aggregate set of selections across all methods. Song order is based upon the sequence selected. Where a group of songs is selected via artists or playlist then the order will be the order shown in the underlying list. Where a song or group of songs is unselected then those songs should be removed from the order without changing the order of the songs remaining in the session. If these songs are re-selected, these songs will be added to the end of the playlist.
  • A song has been ‘played’ when it has been broadcast in any part. If a song is stopped part way through (by a session being terminated or by the skip button being used by the host) then it is considered to have been played. If a song has been selected in a session and has then been skipped then it has also been played.
  • Set of programming or curation rules govern part of the user's journey. Methods of ensuring the user's compliance with programming or curation rules is described in detail below.
  • Enforcing Song Selection Rules
  • The following rules are exemplary and apply to audiences in the United Kingdom only. Many other sets of rules are possible which may encompass parameters other than those shown below.
  • Song selection rules (UK) are:
      • Cannot webcast within three hours more than four songs by a particular artist.
      • Cannot webcast within three hours more than three songs from a particular album.
      • No particular song can be played within an hour of its previous playing.
  • This rule is tested every time that a song or group of songs is selected. If the rule would be breached by a selection of a single song then a dialog appears and the selection of the checkbox is reversed. If the rule would be breached by a selection of a group of songs then a dialog appears explaining that some songs were not selected, and the maximum number of songs are selected (from top to bottom) and the balance are unselected.
  • Enforcing Song Order Rules
  • Song order rules are:
      • No more than three songs by a particular artist can be played consecutively
      • No more than two songs from a particular album can be played consecutively
  • This rule is tested every time a change is made to a session. If the rule would be breached by a selection, deselection or re-ordering then the play order is reshuffled to comply with the rules by the smallest variation possible. A dialog then appears letting the user know an adjustment has been made.
  • Enforcing Minimum Session Size Rule
  • The minimum session size rule is:
      • Must select at least 10 songs before commencing a session
  • This rule is tested when users click the ‘Add to Playlist’ button. If the rule is breached then a dialog appears advising of the problem and users are able to add more songs using all methods. This rule is not relevant once a session has begun and should not be tested again.
  • Completing Song Selection for a Session
  • Song selection ends and the session starts playing if the user selects Quick Start. Song selection ends and the session starts playing if the user selects the ‘Add to Playlist’ button and all rules are complied with.
  • Buttons
  • At the bottom of the screen there are three buttons.
      • Select All: Selects all check boxes on the current screen.
      • Clear All: Clears all check boxes on the current screen
      • Add to Session: Start the session if rules are complied with.
  • Search
  • A single search function is universal and operates in Playlists, All Songs, Artists and List of Songs screens. Items on the screen are filtered to show only those that match the search term entered. The filtered list is updated with each change to the search term in real time. The search term is not case sensitive and must match the start of a word in the relevant field (artist, playlist or song title) to match. The search function will return the same results on every screen in the application.
  • Exceptions to Licensing Rules
  • If the Artist field of a song is blank or ‘Unknown’ or ‘Unknown Artist’ or ‘Various’ or ‘Various Artists’ then no rules are applied to that song. If the Album field of a song is blank or ‘Unknown’ or ‘Unknown Album’ but the artist field is not blank or ‘Unknown’ or ‘Unknown Artist’ then only the above rules for artist are applied. If the song name field is blank or ‘Unknown’ but the artist field is not blank or ‘Unknown’ or ‘Unknown Artist’ then only the above rules for artist are applied.
  • Application Development
  • Private API Endpoint Reference
  • The components of the system communicate via well-defined APIs. The following details the APIs of the image server, upload (Liquidsoap) and streaming (Icecast) servers. In general apps will not call these APIs directly but will call only the Apigee API which will act as proxy for all of these.
  • Image Server Summary
  • A simple NodeJS web server running Express v4 is used with the following endpoints.
  • Verb Endpoint Description
    GET /albumart Checks whether an image matching ‘artist’ and ‘album’ exists.
    GET /profile Checks whether a user profile image matching ‘userid’ exists.
    GET /bg Checks whether a user background image matching ‘userid’ exists.
    GET /session Checks whether a session cover image matching ‘sessionid’ exists.
    POST /upload/albumart Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/<artist_1st_char>/<artist_2nd_char>/<artist>/<album>.png
    POST /upload/profile Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/<userid_1st_char>/<userid_2nd_char>/<userid>.png
    POST /upload/bg <INCOMPLETE>
    POST /upload/session <INCOMPLETE>
  • Request Parameters
  • QUERY
    PARAMETER VALUE
    artist Required. The Artist name must be provided,
    preferably with special characters removed.
    album Required. The Album name must be provided,
    preferably with special characters removed.
    userid Required. The UserID must be provided.
    sessionid Required. The SessionID must be provided.
  • GET /bg Checks whether a user's background image matching
    ‘userid’ exists.
    GET /session Checks whether a user's session cover image
    matching ‘sessionid’ exists.
  • POST /upload/albumart Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/albumart/<artist_1st_char>/<artist_2nd_char>/<artist>/<album>.png
    POST /upload/profile Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/profile/<userid_1st_char>/<userid_2nd_char>/<userid>.png
    POST /upload/bg Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/bg/<userid_1st_char>/<userid_2nd_char>/<userid>.png
    POST /upload/session Uploads an image using Content-Type of multipart/form-
    data. Writes to file system with convention:
    /img/session/<sessionid_1st_char>/< sessionid_2nd_char>/<sessionid>.png
  • Custom Headers
  • HEADER VALUE
    Content-Type Multipart/form-data
  • Custom Form Data
  • HEADER VALUE
    file Path to the file being uploaded
  • Response Format
  • On success, the HTTP status code in the response header is 201 OK and the response body contains a JSON object with the url path to the image. If the image already exists, a header status code 200 is returned. If no query parameter is provided, a header status code of 400 is given and the response body provides the error message.
  • Public API Endpoint Reference
  • The following provides detail of the API that apps can call. It acts as a proxy for the private APIs and for the data store which is the Apigee BAAS parse. A database entity diagram is provided at FIG. 5 showing relationships between entities of the invention wherein lines indicate relationships and arrowheads indicate the ‘many’ end of a relationship.
  • Verb Endpoint Description
    GET /v1/oauth2/authorize Once off authorization of access by an app on behalf of a
    user. Should be explicit part of registration.
    POST /v1/oauth2/token Used to request access and refresh tokens and also to get
    new access tokens when required
    GET /v1/sessions Show me all current public sessions. Match regex for user
    or session name in query parameters
    GET /v1/sessions/{userID} Show me the sessions being hosted by users {userID}
    follows
    GET /v1/sessions/host/{userID} Show me the details of a session being hosted by {userID}
    or error status
    GET /v1/sessions/members/{sessionID} Get all user data for the session members screen
    GET /v1/sessions/chat/{sessionID} Pass start and end time. Returns list of every comment
    between times
    POST /v1/sessions/chat/{sessionID} Add a comment to a chat and trigger push notifications
    GET /v1/sessions/votes/{sessionID} Return total votes for the session. For a time in the session,
    for a song in the session or by a user on a session
    depending upon query paramters
    PUT /v1/sessions/votes/{sessionID} Places a vote against a session at the current time by the
    current user or at specified time against a specified user
    based upon query parameters.
    POST /v1/sessions/listeners/{sessionID} Registers a user (UserID passed in query string) as a
    listener to a running session.
    DELETE /v1/sessions/listeners/{sessionID} Removes a registered listener (UserID passed in query
    string) from a running session.
    PUT /v1/sessions/{sessionID} Change the status of a session (normal hosts can only do
    this for sessions they are running)
    POST /v1/sessions Create a session.
    GET /v1/users/{userID} Get all user data for the public user profile screen. Includes
    followers and following lists.
    GET /v1/users All users or match regex in query parameters
    GET /v1/users/me Get all user data (public and private) for the current user
    POST /v1/users Create a new user record
    PUT /v1/users/{userID} Add/remove follower. Add/remove following. Update any
    profile data. Also used for updating installations. Specific
    combinations of query parameters do lightweight viewing
    or returning of following/followers with referential
    integraity
    GET /v1/playlists/{sessionID} Get all playlist metadata or only what allowed to see if not
    host.
    PUT /v1/playlists/{sessionID} Update a playlist as host
    GET /v1/favourites/{userID} Retrieve list of metadata for all favourited items for userID
    with index numbers
    POST /v1/favourites/{userID} Create a new favourite with supplied metadata
    DELETE /v1/favourites/{userID} Delete a favourite with supplied index number
    POST /v1/streams/{sessionID} parameters are start | skip |update | end. ‘start’ returns a
    sessionsimple object with the mountpoint completed in
    the body. ‘start’ also triggers a push notification to the
    users who follow the host.
    GET /v1/streams/{sessionID} Return full icecast data in JSON on the stream
    GET /v1/albumart Parameters are artist and album. If the art is not in the
    cache then returns a status and the app must post new art.
    POST /v1/albumart Parameters are artist and album
  • About the API
  • Through the BlueJay Music API the application can retrieve and manage BlueJay Music content. The base address of the API is https://api.bluejaymusic.com. There are several endpoints at that address, each with its own unique path. Many endpoints are open and special permissions is not needed to access them. To access private data through the Web API, such as user profiles and playlists, an application must get the user's permission to access the data.
  • Requests
  • The Bluejay Music API is based on REST principles: data resources are accessed via standard HTTPS requests in UTF-8 format to an API endpoint. Where possible, the API strives to use appropriate HTTP verbs for each action:
  • VERB DESCRIPTION
    GET Used for retrieving resources.
    POST Used for creating resources.
    PUT Used for changing/replacing resources or collections.
    DELETE Used for deleting resources.
  • BlueJay Music URIs and IDs
  • In requests to the Web API and responses from it, the following parameters will frequently be encountered:
  • PARAMETER DESCRIPTION EXAMPLE
    Bluejay URI The resource identifier that you can bluejay:track:6rqhFgbbKwnb9MLmUQDhG6
    enter, for example, in the BlueJay web
    client's search box to locate an artist,
    album, or track. To find a BlueJay Music
    URI simply right-click (on Windows) or
    Ctrl-Click (on a Mac) on the artist's or
    album's or track's name
    BlueJayID The base-62 identifier that you can find 6rqhFgbbKwnb9MLmUQDhG6
    at the end of the BlueJay URI (see above)
    for an artist, track, album, playlist,
    etc. Unlike a BlueJay URI, a BlueJay ID
    does not clearly identify the type of
    resource; that information is provided
    elsewhere in the call
    BlueJay Music The unique string identifying the BlueJay wizzler
    user ID user that you can find at the end of the
    BlueJay URI for the user. The ID of the
    current user can be obtained via the Web
    API endpoint
    https://api.bluejaymusic.com/v1/users/me.
    BlueJay URL An HTML link that opens a track, album, http://open.bluejaymusic.com/track/6rqhFgbbkwnb9MLmUQDhG6
    app, playlist or other BlueJay Music
    resource in a BlueJay Music App.
  • Rate Limiting
  • To make the API fast for all users, rate limits apply. Unauthenticated requests are processed at the lowest rate limit. Authenticated requests with a valid access token benefit from higher rate limits even if the endpoint does not require an access token to be passed in the call. Rate limiting is applied on an application basis (based on client id), regardless of the number of users using it.
  • The number of requests is reduced by using endpoints that fetch multiple entities. Therefore, when making many requests to get single tracks, albums or artists, endpoints such as Get Several Tracks, Get Several Albums or Get Several Artists may be used.
  • Responses
  • All data is received as a JSON object.
  • Timestamps
  • Timestamps are returned in ISO 8601 format as Coordinated Universal Time (UTC) with zero offset: YYYY-MM-DDTHH:MM:SSZ. If the time is imprecise (for example, the date/time of an album release), an additional field will show the precision; see for example, release_date in an album object.
  • Pagination
  • Some endpoints support a paging of the dataset, taking an offset and applying a limit. Offset numbering is zero-based and omitting the offset parameter will return the first X elements. Requests that return an array of items are automatically paginated if the number of items vary (for example, tracks in a playlist). In this case, the results are returned within a paging object.
  • Conditional Requests
  • Most API responses come with appropriate cache-control headers set to assist in client-side caching. If a cached response arises, the response is not requested again until the response has expired; if the response contains an ETag, the If-None-Match request header is matched to the ETag value.
  • Response Status Codes
  • The API uses the following response status codes, as defined in the RFC 2616 and RFC 6585:
  • STATUS CODE DESCRIPTION
    200 OK - The request has succeeded. The client can read the result of the request in the
    body and the headers of the response.
    201 Created - The request has been fulfilled and resulted in a new resource being created.
    202 Accepted - The request has been accepted for processing, but the processing has not
    been completed.
    204 No Content - The request has succeeded but returns no message body.
    304 Not Modified. See Conditional requests.
    400 Bad Request - The request could not be understood by the server due to malformed
    syntax. The message body will contain more information; see Error Details.
    401 Unauthorized - The request requires user authentication or, if the request included
    authorization credentials, authorization has been refused for those credentials.
    403 Forbidden - The server understood the request, but is refusing to fulfill it.
    404 Not Found - The requested resource could not be found. This error can be due to a
    temporary or permanent condition.
    429 Too Many Requests - Rate limiting has been applied.
    500 Internal Server Error. You should never receive this error. Please report it to us.
    502 Bad Gateway - The server was acting as a gateway or proxy and received an invalid
    response from the upstream server.
    503 Service Unavailable - The server is currently unable to handle the request due to a
    temporary condition which will be alleviated after some delay. You can choose to
    resend the request again.
  • Error Details
  • The API uses two different formats to describe an error.
  • Authentication Error Object
  • When the application makes requests to the API which are related to authentication or authorization, e.g. retrieving an access token or refreshing an access token, the error response follows RFC 6749 on The OAuth 2.0 Authorization Framework.
  • VALUE
    KEY TYPE VALUE DESCRIPTION
    error string A high level description of the error as
    specified in RFC 6749 Section 5.2.
    error_description string A more detailed description of the error as
    specified in RFC 6749 Section 4.1.2.1.
  • Regular Error Object
  • Apart from the response code, unsuccessful responses return information about the error as an error JSON object containing the following information:
  • VALUE
    KEY TYPE VALUE DESCRIPTION
    status integer The HTTP status code (also returned in the
    response header; see Response Status Codes
    for more information).
    message string A short description of the cause of the
    error.
  • Authentication
  • Some requests to the Web API require authentication. This is achieved by sending a valid OAuth access token in the request header. To access a user's personal information, an access token is needed, generated by requesting the user's permission to access the data.
  • Sign-Up Flow
  • When the user opens the app for the first time, they are presented with the login/signup screen. The user selects signup and provides the details required. The user then confirms that all details are accurate.
  • Log-In Flow
  • When the user opens the app after having logged off, or has re-downloaded the app on a new phone, or is accessing the app on a friend's phone (and other such scenarios where they already have an account), they will enter their username and password they supplied during signup.
  • This will return an access token that allows access to the main API. The access token is extracted from the response and stored on the app. The token may be set to not expire at all so it can be saved for the long term, however, a refresh token may alternatively be supplied that can be sent to refresh the provided access token.
  • Authorization Code Flow
  • The following method is suitable for long-running applications which the user logs into once. It provides an access token that can be refreshed. Since the token exchange involves sending a secret key, this occurs in a secure location, like a backend service, not from a client like a browser or mobile app. This flow is described in RFC-6749.
  • User Authorization Requests
  • With reference to FIG. 4 , the authorization process starts with the application sending a request to the BlueJay Music API service, the reason for sending this request can vary: it may be a step in the initialization of the application or in response to some user action, like a button click. The request will include parameters in the query string:
  • QUERY
    PARAMETER VALUE
    client_id Required. The client ID provided to you by BlueJay Music when you register
    your application.
    response_type Required. Set it to code.
    redirect_uri Required. The URI to redirect to after the user grants/denies permission. This
    URI needs to have been entered in the Redirect URI whitelist that you specified
    when you registered your application. The value of redirect_uri here must
    exactly match one of the values you entered when you registered your
    application, including upper/lowercase, terminating slashes, etc.
    state Optional, but strongly recommended. The state can be useful for correlating
    requests and responses. Because your redirect_uri can be guessed, using a
    state value can increase your assurance that an incoming connection is the
    result of an authentication request. If you generate a random string or
    encode the hash of some client state (e.g., a cookie) in this state variable,
    you can validate the response to additionally ensure that the request and
    response originated in the same browser. This provides protection against
    attacks such as cross-site request forgery.
    scope Optional. A space-separated list of scopes:. If no scopes are specified,
    authorization will be granted only to access publicly available information:
    that is, only information normally visible in the Bluejay Music apps.
    show_dialog Optional. Whether or not to force the user to approve the app again if they've
    already done so. If-False (default), a user who has already approved the
    application may be automatically redirected to the URI specified by
    redirect_uri. If true, the user will not be automatically redirected and will
    have to approve the app again.
  • Authorization of Access within the Scopes
  • The BlueJay Music API service presents details of the scopes for which access is being sought. If the user is not logged in, they are prompted to do so using their BlueJay Music credentials. When the user is logged in, they are asked to authorize access to the data sets defined in the scopes.
  • Redirected Back to the Specified URI
  • After the user accepts (or denies) the request, the BlueJay Music API service redirects back to the redirect_uri(3).
  • If the user has accepted the request, the response query string will contain the following parameters:
  • QUERY
    PARAMETER VALUE
    code An authorization code that can be exchanged
    for an access token.
    state The value of the state parameter supplied in
    the request.
  • If the user has not accepted the request or an error has occurred, the response query string will contain the following parameters:
  • QUERY
    PARAMETER VALUE
    error The reason authorization failed, for example:
    “access_denied”
    state The value of the state parameter supplied in
    the request.
  • Requests for Refreshed and Access Tokens
  • When the authorization code has been received, it is exchanged with an access token by making a POST request to the BlueJay Music API service to its /v1/oauth2/token endpoint. The body of this POST request must contain the following parameters:
  • REQUEST BODY
    PARAMETER VALUE
    grant_type Required. As defined in the OAuth 2.0 specification, this field must contain
    the value ″authorization_code″.
    code Required. The authorization code returned from the initial request to the
    Account's /v1/oauth2/authorize endpoint.
    redirect_uri Required. This parameter is used for validation only (there is no actual
    redirection). The value of this parameter must exactly match the value
    of redirect_uri supplied when requesting the authorization code.
    HEADER
    PARAMETER VALUE
    Authorization Required. Base 64 encoded string that contains the client ID and client secret
    key. The field must have the format: Authorization: Basic <base64
    encoded client_id: client_secret>
  • On success, the response from the BlueJay Music API service has the status code 200 OK in the response header, and the following JSON data in the response body:
  • VALUE
    KEY TYPE VALUE DESCRIPTION
    access_token string An access token that can be provided in
    subsequent calls, for example to BlueJay
    Music API services.
    token_type string How the access token may be used: always
    “Bearer”.
    scope string A space-separated list of scopes which
    have been granted for this access_token
    expires_in int The time period (in seconds) for which
    the access token is valid.
    refresh_token string A token that can be sent to the BlueJay
    Music API service in place of an
    authorization code. (When the access
    code expires, send a POST request to the
    API service/v1/oauth2/token endpoint,
    but use this code in place of an
    authorization code. A new access token
    will be returned. A new refresh
    token might be returned too.)
  • Requesting an Access Token from the Refresh Token
  • Access tokens are deliberately set to expire after a short time, after which new tokens may be granted by supplying the refresh token originally obtained during the authorization code exchange.
  • The request is sent to the /v1/oauth2/token endpoint of the Bluejay Music API service. The body of this POST request must contain the following parameters:
  • REQUEST BODY
    PARAMETER VALUE
    grant_type Required. Set it to “refresh_token”.
    refresh_token Required. The refresh token returned from the
    authorization code exchange.
  • The header of this POST request must contain the following parameter:
  • HEADER
    PARAMETER VALUE
    Authorization Required. Base 64 encoded string that contains the
    client ID and client secret key. The field most have
    the format: Authorization: Basic <base64 encoded
    client_id:client_secret>
  • Sessions
  • Sessions are the data structure through which most interaction with BlueJay Music takes place. A session contains an instance of a playlist along with a chat and it is created by a host. It exists for a period of time after which it becomes dormant and invisible to all users except the host and administrators who can use the data it contains for analytics.
  • GET /v1/sessions Show me all current public sessions. Match regex
    for user or session name in query parameters
    QUERY
    PARAMETER VALUE
    Limit Optional. The maximum number of sessions to return.
    Default: 20. Minimum: 1. Maximum: 50.
    Offset Optional. The index of the first session to return.
    Default: 0 (the first object). Use with limit to get
    the next set of sessions.
    q Required. The search query's keywords (and
    optional field filters and operators), for
    example q = roadhouse %2Oblues.
  • Request Parameters
  • QUERY PARAMETER VALUE
    Limit Optional. The maximum number of sessions to return. Default: 20. Minimum:
    1. Maximum: 50.
    Offset Optional. The index of the first session to return. Default: 0 (the first object).
    Use with limit to get the next set of sessions.
    q Required. The search query's keywords (and optional field filters and
    operators), for example q = roadhouse%20blues.
    Encoding spaces
    Encode spaces with the hex code %20 or +.
    Keyword matching
    Matching of search keywords is not case-sensitive. (Operators, however,
    should be specified in uppercase.)
    Keywords will be matched in any order unless surrounded by double
    quotation marks:q=roadhouse&20blues will match both ″Blues Roadhouse″
    and ″Roadhouse of the Blues″ whileq=″roadhouse&20blues″ will match ″My
    Roadhouse Blues″ but not ″Roadhouse of the Blues″.
    Searching for playlists will return results where the query keyword(s) match
    any part of the playlist's name or description. Only popular public playlists are
    returned.
    Operators
    The operator NOT can be used to exclude results. For
    example q=roadhouse%20NOT%20bluesreturns items that match
    ″roadhouse″ but excludes those that also contain the keyword ″blues″
    Similarly, the OR operator can be used to broaden the
    search: q=roadhouse%200R%20blues returns all results that include either of
    the terms. Only one OR operator can be used in a query.
    Note that operators must be specified in uppercase otherwise they will be
    treated as normal keywords to be matched.
    Wildcards
    The asterisk (*) character can, with some limitations, be used as a wildcard
    (maximum: 2 per query). It will match a variable number of non-white-space
    characters. It cannot be used in a quoted phrase, in a field filter, when there
    is a dash (″-″) in the query, or as the first character of the keyword string.
  • Response Format
  • On success, the HTTP status code in the response header is 200 OK and the response body contains session complete objects wrapped in a paging object. On error, the header status code is an error code and the response body contains an error object.
  • Sample Request
  • GET /v1/sessions/{userID} Show me the sessions being hosted by
    users {userID} follows

    This API returns an array of sessioncomplete objects for private sessions that are being currently hosted by the users that the specified user follows.
  • GET /v1/sessions/host/{userID} Show me the details of a session
    being hosted by {userID} or
    error status

    This API returns a single sessioncomplete object if the specified user is hosting a session.
  • GET /v1/sessions/members/{sessionID} Get all user data for the
    session members screen

    This API returns an array of uuid, username and profile picture URI
  • GET /v1/sessions/chat/{sessionID} Pass start and ed time. Returns list
    of every comment between times

    This API returns an array of ChatComment objects.
  • POST /v1/sessions/chat/{sessionID} Add a comment to a chat and
    trigger push notifications

    This API posts a ChatComment object.
  • GET /v1/sessions/votes/{sessionID} Return total votes for the
    session. For a time in the
    session, for a song in the
    session or by a user on a
    session depending upon
    query paramters

    Query parameters are a) time range OR b) song index AND c) UserID
  • PUT /v1/sessions/votes/{sessionID} Places a vote against a session at
    the current time by the current
    user or at specified time against
    a specified user based upon
    query parameters.
  • POST /v1/sessions/listeners/{sessionID} Registers a user (UserID
    passed in query string) as a
    listener to a running session

    Returns mount point if valid. If session not running returns error status.
  • DELETE /v1/sessions/listeners/{sessionID} Removes a registered
    listener (UserID passed
    in query string) from
    a running session

    Returns success status if user removed. Error status for user not in session, session not running.
  • PUT /v1/sessions/{sessionID} Change the status of a session (normal
    hosts can only do this for sessions
    they are running)

    Status can be New, Playing or Ended. Changing the Status to ‘Ended’ should stop the stream if it is is still running.
  • POST /v1/sessions/ Create a session

    Create a session and provide fields:
  • All other fields will be controlled by the system or added with the playlists API.
  • Users
  • Everyone who uses the BlueJay app will be present in the user's collection. This endpoint provides the means to create, change and read information from this collection.
  • GET /v1/users/{userID} Get all user data for the public user
    profile screen. Includes followers and
    following lists.

    Returns a single Usercomplete or an array.
  • GET /v1/users All users or match regex in query parameters
    POST /v1/users Create a new user record

    Create a user with fields
  • PUT /v1/users/{userID} Add/remove follower. Add/remove
    following. Update any profile data.
    Also used for updating installations.

    Query string should indicate the change to be made.
  • Playlists
  • Playlists are part of the Sessions object. This endpoint allows specific manipulation of playlists.
  • GET /v1/playlists/{sessionID} Get all playlist metadata or only what
    allowed to see if not host.

    Returns a sessioncomplete object. If a listener then all songs that have not been played should have all metadata removed but the startedat, endsat, totalsongs, playingsong and duration should all be correct for the entire session.
  • PUT /v1/playlists/{sessionID} Update a playlist as host

    Takes a sessioncomplete object but only the songs array is read into the database. Changes take effect from the next song. Songs in the past and the current song should not be changed or there may be unpredictable results.
  • Favourites
  • Favourites are metadata objects for songs that a user has flagged as favourite. In time users will be able to purchase songs and other interactions based upon their favourites.
  • GET /v1/favourites/{userID} Retrieve list of metadata for all
    favourited items for userID with
    index numbers

    Returns an array of favourites objects in a paging object.
  • POST /v1/favourites/{userID} Create a favourite with supplied
    metadata

    Posts a favourites object.
  • DELETE /v1/favourites/{userID} Delete a favourite with supplied
    index number

    Can also provide the original metadata or an index to the array returned by GET.
  • Streams
  • Initiates the playing of a playlist. A valid session is built with POST /v1/sessions and it contains a valid playlist built with PUT /v1/playlists/{sessionID}.
  • POST /v1/streams/{sessionID} parameters are start | skip |update
    |end

    Update time fields of sessionID and return the mount point for ‘start’.
  • GET /v1/streams/{sessionID} Return full icecast data in JSON on the
    stream
  • Albumart
  • One standard sized image is kept for each unique artist+album. The same API is used to get images for users by specifying artist=profile or background and album=username. Profile pictures have dimensions of (256×256). Background pictures have dimensions of (x*y)
  • GET /v1/streams/albumart Parameters are artist and album

    Parameters are passed in the query string. Path to album art is returned or an error status if not found.
  • GET /v1/streams/albumart Parameters are artist and album

    Post PNG 256×256 image. Parameters are passed in the query string. New image overwrites any previous one. Status should indicate success (new), success (overwrite) or fail.
  • Throughout this specification the word “comprise”, or variations such as “comprises” or “comprising”, will be understood to imply the inclusion of a stated element, integer or step, or group of elements, integers or steps, but not the exclusion of any other element, integer or step, or group of elements, integers or steps.
  • All publications mentioned in this specification are herein incorporated by reference. Any discussion of documents, acts, materials, devices, articles or the like which has been included in the present specification is solely for the purpose of providing a context for the present invention. It is not to be taken as an admission that any or all of these matters form part of the prior art base or were common general knowledge in the field relevant to the present invention as it existed in Australia or elsewhere before the priority date of each claim of this application.
  • While the invention has been described above in terms of specific embodiments, it is to be understood that the invention is not limited to these disclosed embodiments. Upon reading the teachings of this disclosure many modifications and other embodiments of the invention will come to the mind of those skilled in the art to which this invention pertains, and which are intended to be and are covered by both this disclosure and the appended claims.
  • It is indeed intended that the scope of the invention should be determined by proper interpretation and construction of the appended claims and their legal equivalents, as understood by those skilled in the art relying upon the disclosure in this specification and the attached drawings.

Claims (21)

1. A system for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising:
a software application for executing on a host device and a recipient device capable of configuring the device to program, transmit and receive the session;
a content store containing content forming at least a portion of the session; and
a streaming server for receiving a session from one or more content stores and relaying the session to multiple recipient devices;
wherein the session is programmed at the host device using the software application and the session is received at the multiple recipient devices using the software application.
2. A system according to claim 1 wherein the one or more content stores are located on the host device or are accessible by the host via the device.
3. A system according to claim 2 wherein at least one of the content stores is located on a cloud server.
4. A system according to claim 1 comprising an upload server for receiving at least a portion of a session from one or more content stores and transmitting the portions of the session to the streaming server.
5. A system according to claim 1 comprising a management server for storing data arising from use of the software application.
6. A software application for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising:
a host mode capable of:
communicating with an application programming interface located at an internet location to transmit and receive data used to program and initiate the session,
identifying the location of the content comprised in the session, and
transmitting content comprised in the session from the location of the content to a streaming server; and
a recipient mode capable of:
communicating with the application programming interface to transmit and receive data used to identify the session, and
receiving a relay of the session from the streaming server;
wherein the software application is capable of execution on a computing device.
7. A system or software application according to claim 1 comprising an application programming interface in communication with a management server wherein the software application may interface with the data stored at the management server via the application programming interface.
8. A system or software application according to claim 1 comprising a single application programming interface which acts as a proxy for other application programming interfaces.
9. A system or software application according to claim 7 wherein the application programming interface is capable of calling a cloud based content store.
10. A computing device for live broadcasting a session from a host device to multiple recipient devices over an internet network comprising a software application according to any one of claim 6.
11. A host device according to claim 10 wherein the host device is a portable handheld device, a personal computer or a web server.
12. A method of live broadcasting a session from a host device to multiple recipient devices over an internet network comprising the steps of:
Executing a software application configured to program, transmit and receive the session on a host device and on a recipient device,
Launching the software application executed on a host device in host mode,
Programming the session from the host device by selecting a sequence of content items stored at one or more content stores and identifying the location of content items within the content stores,
Initiating the session by initiating the transmission of the content items of the programmed session from the content stores to a streaming server,
Relaying the session from the streaming server,
Launching the software application executed on a recipient device in recipient mode,
Identifying the session from the recipient device,
Selecting the session from the recipient device, and
Receiving the relay of the session at a recipient device from the streaming server.
13. A method according to claim 12 wherein the duration of the session lasts no longer than the hosts session.
14. A method according to claim 12 wherein an item of metadata relating to the content is transmitted whilst embedded in the session.
15. A method according to claim 12 wherein the data arising from use of the software application comprises metadata relating to the content forming at least a portion of the session.
16. A method according to claim 12 wherein the content items are located within cloud based content stores provided through content streaming services.
17. A method according to claim 12 wherein a content store is located on the host device.
18. A method according to claim 12 further comprising the step of: Transmitting data arising from the use of the software application at the host device or at the recipient device to an application programming interface in communication with a management server.
19. A method according to claim 18 wherein the data arising from the use of the software application at the host device comprises metadata relating to the content item being transmitted, and wherein the metadata is transmitted periodically by the software application to the management server and is requested periodically by the recipient device.
20. A method according to claim 12 wherein the session is initiated by transmitting the content items of the programmed session from one or more content stores to a streaming server via an upload server.
21-41. (canceled)
US18/116,188 2017-02-14 2023-03-01 System for streaming Pending US20230362417A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US18/116,188 US20230362417A1 (en) 2017-02-14 2023-03-01 System for streaming

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
GB1702386.2 2017-02-14
GBGB1702386.2A GB201702386D0 (en) 2017-02-14 2017-02-14 System for streaming
PCT/AU2018/050118 WO2018094480A1 (en) 2017-02-14 2018-02-14 System for streaming
US201916486120A 2019-08-14 2019-08-14
US18/116,188 US20230362417A1 (en) 2017-02-14 2023-03-01 System for streaming

Related Parent Applications (2)

Application Number Title Priority Date Filing Date
US16/486,120 Continuation US11627344B2 (en) 2017-02-14 2018-02-14 System for streaming
PCT/AU2018/050118 Continuation WO2018094480A1 (en) 2017-02-14 2018-02-14 System for streaming

Publications (1)

Publication Number Publication Date
US20230362417A1 true US20230362417A1 (en) 2023-11-09

Family

ID=58462084

Family Applications (2)

Application Number Title Priority Date Filing Date
US16/486,120 Active US11627344B2 (en) 2017-02-14 2018-02-14 System for streaming
US18/116,188 Pending US20230362417A1 (en) 2017-02-14 2023-03-01 System for streaming

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US16/486,120 Active US11627344B2 (en) 2017-02-14 2018-02-14 System for streaming

Country Status (4)

Country Link
US (2) US11627344B2 (en)
EP (1) EP3583779A4 (en)
GB (1) GB201702386D0 (en)
WO (1) WO2018094480A1 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11716499B2 (en) * 2017-12-13 2023-08-01 Streann Media Inc. Non-intrusive cloud based multi-screen media advertising platform
TR201918232A1 (en) * 2019-11-22 2021-06-21 Power Radyo Reklam Ve Yayincilik Anonim Sirketi Application and working method that can listen to live music at the same time in another location
JP2023534045A (en) * 2020-07-16 2023-08-07 株式会社ソニー・インタラクティブエンタテインメント Customization of influencer streams for follower audiences
US20220141538A1 (en) * 2020-10-30 2022-05-05 Popshop Technologies, Inc. Live streaming product creation and order compilation
US20220394071A1 (en) * 2021-06-08 2022-12-08 Spotify Ab Group playback session management

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6774926B1 (en) * 1999-09-03 2004-08-10 United Video Properties, Inc. Personal television channel system

Family Cites Families (107)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1704900A (en) 1998-10-13 2000-05-01 Radiowave.Com, Inc. System and method for determining the audience of digital radio programmes broadcast through the internet
US6934759B2 (en) 1999-05-26 2005-08-23 Enounce, Inc. Method and apparatus for user-time-alignment for broadcast works
US20130198788A1 (en) 1999-10-21 2013-08-01 Automated Media Processing Solutions, Inc, Dba Equilibrium, Amps, Inc. Social video network
CN1427969A (en) 2000-05-01 2003-07-02 网际运行公司 Large group interactions via mass communication network
US20020188772A1 (en) 2001-04-02 2002-12-12 Mark Radcliffe Media production methods and systems
US20040210947A1 (en) 2003-04-15 2004-10-21 Shusman Chad W. Method and apparatus for interactive video on demand
US20030217135A1 (en) 2002-05-17 2003-11-20 Masayuki Chatani Dynamic player management
US7613881B2 (en) 2004-06-08 2009-11-03 Dartdevices Interop Corporation Method and system for configuring and using virtual pointers to access one or more independent address spaces
US10726822B2 (en) 2004-09-27 2020-07-28 Soundstreak, Llc Method and apparatus for remote digital content monitoring and management
US9137417B2 (en) 2005-03-24 2015-09-15 Kofax, Inc. Systems and methods for processing video data
WO2007010070A2 (en) 2005-07-20 2007-01-25 Createcna Xxi S.L. System for live television broadcasting from a mobile telephone
US9071367B2 (en) 2006-03-17 2015-06-30 Fatdoor, Inc. Emergency including crime broadcast in a neighborhood social network
WO2007124175A2 (en) 2006-04-26 2007-11-01 Fruitbowl Mediastudio B.V. System for presentation of live video and audio compilations on tv using the internet
US8286218B2 (en) 2006-06-08 2012-10-09 Ajp Enterprises, Llc Systems and methods of customized television programming over the internet
US8970680B2 (en) 2006-08-01 2015-03-03 Qualcomm Incorporated Real-time capturing and generating stereo images and videos with a monoscopic low power mobile device
US20080122986A1 (en) 2006-09-19 2008-05-29 Florian Diederichsen Method and system for live video production over a packeted network
US20140114866A1 (en) 2006-11-22 2014-04-24 Raj V. Abhyanker Automobile sharing by users of a neighborhood social network using a radial algorithm
US20140165091A1 (en) 2006-11-22 2014-06-12 Raj Abhyanker Television and radio stations broadcasted by users of a neighborhood social network using a radial algorithm
US9317179B2 (en) 2007-01-08 2016-04-19 Samsung Electronics Co., Ltd. Method and apparatus for providing recommendations to a user of a cloud computing service
US20080317439A1 (en) 2007-06-22 2008-12-25 Microsoft Corporation Social network based recording
US20080320139A1 (en) 2007-06-25 2008-12-25 Yahoo! Inc. Social mobilized content sharing
WO2009093252A1 (en) 2008-01-23 2009-07-30 Liveu Ltd Live uplink transmissions and broadcasting management system and method
EP2263190A2 (en) 2008-02-13 2010-12-22 Ubisoft Entertainment S.A. Live-action image capture
US20090323802A1 (en) 2008-06-27 2009-12-31 Walters Clifford A Compact camera-mountable video encoder, studio rack-mountable video encoder, configuration device, and broadcasting network utilizing the same
KR20110006362A (en) 2009-07-14 2011-01-20 엘지전자 주식회사 Mobile terminal and method for controlling broadcast thereof
RU2628438C1 (en) 2009-07-24 2017-08-16 Экспед Холдингс Пти Лтд System and method of information control and presentation
US20110022620A1 (en) * 2009-07-27 2011-01-27 Gemstar Development Corporation Methods and systems for associating and providing media content of different types which share atrributes
US9160974B2 (en) 2009-08-26 2015-10-13 Sling Media, Inc. Systems and methods for transcoding and place shifting media content
WO2011049612A1 (en) 2009-10-20 2011-04-28 Lisa Morales Method and system for online shopping and searching for groups of items
US20120303834A1 (en) 2010-10-07 2012-11-29 Stellatus, LLC Seamless digital streaming over different device types
US9369635B1 (en) 2011-01-07 2016-06-14 Apptopus, Inc. Director/camera communication system and method for wireless multi-camera video production
KR101852818B1 (en) 2011-04-29 2018-06-07 엘지전자 주식회사 A digital receiver and a method of controlling thereof
US20120303797A1 (en) 2011-05-27 2012-11-29 Saroop Mathur Scalable audiovisual streaming method and apparatus
CN102968424B (en) 2011-06-22 2017-04-26 刘镇崇 Iterative cloud broadcasting rendering method
US9438697B2 (en) 2011-08-01 2016-09-06 Quickbiz Holdings Limited, Apia User interface content state synchronization across devices
US10298642B2 (en) 2016-02-17 2019-05-21 Quickbiz Holdings Limited, Apia User interface content state synchronization across devices
WO2013033259A2 (en) 2011-08-29 2013-03-07 Viewphone.Com Llc Systems and methods for a video sharing social network
US8412772B1 (en) 2011-09-21 2013-04-02 Color Labs, Inc. Content sharing via social networking
US9633016B2 (en) 2011-11-01 2017-04-25 Google Inc. Integrated social network and stream playback
US10313279B2 (en) 2011-12-12 2019-06-04 Rcs Ip, Llc Live video-chat function within text messaging environment
US8930354B2 (en) * 2012-01-09 2015-01-06 James Lewin System and method for organizing content
US20130259447A1 (en) 2012-03-28 2013-10-03 Nokia Corporation Method and apparatus for user directed video editing
US8819738B2 (en) 2012-05-16 2014-08-26 Yottio, Inc. System and method for real-time composite broadcast with moderation mechanism for multiple media feeds
US10489389B2 (en) 2012-06-07 2019-11-26 Wormhole Labs, Inc. Experience analytic objects, systems and methods
US8825783B1 (en) 2012-07-17 2014-09-02 Google Inc. Recording events for social media
CA2884407C (en) 2012-09-06 2017-11-21 Decision-Plus M.C. Inc. System and method for broadcasting interactive content
US8798598B2 (en) 2012-09-13 2014-08-05 Alain Rossmann Method and system for screencasting Smartphone video game software to online social networks
EP3637419A3 (en) 2012-11-29 2020-07-22 SoundSight IP, LLC Video headphones, system, platform, methods, apparatuses and media
US20140195675A1 (en) 2013-01-09 2014-07-10 Giga Entertainment Media Inc. Simultaneous Content Data Streaming And Interaction System
US9706237B2 (en) * 2013-03-12 2017-07-11 Time Warner Cable Enterprises Llc TV playlist
KR102256517B1 (en) 2013-03-15 2021-05-27 비데리 인코포레이티드 Systems and methods for controlling the distribution and viewing of digital art and imaging via the internet
US20140341527A1 (en) 2013-05-15 2014-11-20 MixBit, Inc. Creating, Editing, and Publishing a Video Using a Mobile Device
US10349140B2 (en) 2013-11-18 2019-07-09 Tagboard, Inc. Systems and methods for creating and navigating broadcast-ready social content items in a live produced video
GB2520334B (en) 2013-11-18 2015-11-25 Helen Bradley Lennon A video broadcast system and a method of disseminating video content
US9999836B2 (en) 2013-11-20 2018-06-19 Microsoft Technology Licensing, Llc User-defined channel
US10198777B2 (en) 2013-12-06 2019-02-05 Remote Media, Llc System, method, and application for exchanging content in a social network environment
US20150188960A1 (en) 2013-12-31 2015-07-02 Mohammad Taj Alhaidar System and method for online media content sharing
US8997167B1 (en) 2014-01-08 2015-03-31 Arizona Board Of Regents Live streaming video sharing system and related methods
US10007476B1 (en) 2014-03-23 2018-06-26 Kevin Glikmann Sharing a host mobile camera with a remote mobile device
US9888296B2 (en) 2015-03-27 2018-02-06 Bygge Technologies Inc. Real-time wireless synchronization of live event audio stream with a video recording
US10453023B2 (en) 2014-05-28 2019-10-22 Fedex Corporate Services, Inc. Methods and node apparatus for adaptive node communication within a wireless node network
US9788039B2 (en) 2014-06-23 2017-10-10 Google Inc. Camera system API for third-party integrations
US9860578B2 (en) 2014-06-25 2018-01-02 Google Inc. Methods, systems, and media for recommending collaborators of media content based on authenticated media content input
CA2957626C (en) 2014-08-13 2021-05-04 Julio FERRER System and method for real-time customization and synchronization of media content
US20160057457A1 (en) * 2014-08-25 2016-02-25 LiveFromMe Live video broadcasting mobile application for social sharing
EP3228079A4 (en) 2014-12-03 2018-08-01 Fox Broadcasting Company Location agnostic media control room and broadcasting facility
US9661355B2 (en) 2015-01-08 2017-05-23 Kiswe Mobile Inc. Virtual immersion via streamed content adaptation
US9497498B2 (en) 2015-01-23 2016-11-15 Robert Hain System and method for live streaming of content
WO2016132332A1 (en) 2015-02-20 2016-08-25 King Abdullah University Of Science And Technology Method and apparatus for scheduling broadcasts in social networks
ES2905535T3 (en) 2015-03-27 2022-04-11 Twitter Inc Live streaming video services
US9462028B1 (en) 2015-03-30 2016-10-04 Zap Systems Llc System and method for simultaneous real time video streaming from multiple mobile devices or other sources through a server to recipient mobile devices or other video displays, enabled by sender or recipient requests, to create a wall or matrix of real time live videos, and to enable responses from those recipients
US20170105039A1 (en) 2015-05-05 2017-04-13 David B. Rivkin System and method of synchronizing a video signal and an audio stream in a cellular smartphone
US20160330258A1 (en) 2015-05-08 2016-11-10 Charanjit Singh Sandhu Broadcasts among electronic devices of registered users via internet protocol
US20160381163A1 (en) 2015-06-25 2016-12-29 Friends with Inspirations Ltd. Shared experience and multi-device hardware platform
US9973819B1 (en) * 2015-06-26 2018-05-15 Amazon Technologies, Inc. Live video stream with interactive shopping interface
US20170026684A1 (en) 2015-07-24 2017-01-26 GM Global Technology Operations LLC Communications between a peripheral system and a host device in efficient event-based synchronization of media transfer for real-time display rendering
US11036458B2 (en) 2015-10-14 2021-06-15 Google Llc User interface for screencast applications
US10129579B2 (en) 2015-10-15 2018-11-13 At&T Mobility Ii Llc Dynamic video image synthesis using multiple cameras and remote control
US20180167426A1 (en) 2015-10-29 2018-06-14 CrankWheel ehf. Multiplatform Screen Sharing Solution for Software Demonstration
US9838724B2 (en) 2015-11-18 2017-12-05 International Business Machines Corporation Media distribution network for live streaming
US10382511B2 (en) 2016-02-25 2019-08-13 Amp Me Inc. Synchronizing playback of digital media content
AU2017223188B2 (en) 2016-02-26 2019-09-19 Amazon Technologies, Inc. Sharing video footage from audio/video recording and communication devices
US20170279757A1 (en) 2016-03-22 2017-09-28 Facebook, Inc. Systems and methods for identifying matching content
US10353972B2 (en) 2016-05-26 2019-07-16 Rovi Guides, Inc. Systems and methods for providing timely and relevant social media updates for a person of interest in a media asset who is unknown simultaneously with the media asset
US20170359396A1 (en) 2016-06-10 2017-12-14 Jason B. Gapasin System and Method for a Broadcast Terminal and Networked Devices
US10057604B2 (en) 2016-07-01 2018-08-21 Qualcomm Incorporated Cloud based vision associated with a region of interest based on a received real-time video feed associated with the region of interest
EP3488618B1 (en) 2016-07-21 2021-01-13 Twitter, Inc. Live video streaming services with machine-learning based highlight replays
CN109478400B (en) 2016-07-22 2023-07-07 杜比实验室特许公司 Network-based processing and distribution of multimedia content for live musical performances
US10674187B2 (en) 2016-07-26 2020-06-02 Facebook, Inc. Systems and methods for shared broadcasting
US9936238B2 (en) 2016-07-29 2018-04-03 Infiniscene, Inc. Systems and methods for production and delivery of live video
US10219008B2 (en) 2016-07-29 2019-02-26 At&T Intellectual Property I, L.P. Apparatus and method for aggregating video streams into composite media content
US10567461B2 (en) 2016-08-04 2020-02-18 Twitter, Inc. Low-latency HTTP live streaming
US20180063556A1 (en) 2016-08-29 2018-03-01 YouNow, Inc. Systems and methods for providing guest broadcasting on a live stream video platform
US10051344B2 (en) 2016-09-27 2018-08-14 Clarifai, Inc. Prediction model training via live stream concept association
TWI625982B (en) * 2016-10-12 2018-06-01 Fuelstation Inc Wearable system for receiving audio using a docking station
US10298986B2 (en) 2016-11-13 2019-05-21 Newtek, Inc. Method and apparatus for incorporating web based selection into graphics system
US10219009B2 (en) 2016-11-18 2019-02-26 Twitter, Inc. Live interactive video streaming using one or more camera devices
US10075740B2 (en) 2016-11-22 2018-09-11 Facebook, Inc. Providing enhanced live video
US10650009B2 (en) 2016-11-22 2020-05-12 Facebook, Inc. Generating news headlines on online social networks
US10536418B2 (en) 2016-11-30 2020-01-14 Facebook, Inc. Systems and methods for providing content
US20180160158A1 (en) 2016-12-06 2018-06-07 Bing Liu Method and system for live stream broadcast and content monetization
US9998796B1 (en) 2016-12-12 2018-06-12 Facebook, Inc. Enhancing live video streams using themed experiences
US10425694B2 (en) 2016-12-30 2019-09-24 Facebook, Inc. Live broadcast on an online social network
US10687093B2 (en) 2016-12-30 2020-06-16 Social Media Broadcaster, Inc. Social-media-based TV show production, distribution, and broadcast system
US10701121B2 (en) 2016-12-30 2020-06-30 Facebook, Inc. Live broadcast on an online social network
US10645460B2 (en) 2016-12-30 2020-05-05 Facebook, Inc. Real-time script for live broadcast
US20180233010A1 (en) 2017-02-13 2018-08-16 Ring Inc. Neighborhood alert mode for triggering multi-device recording, multi-camera motion tracking, and multi-camera event stitching for audio/video recording and communication devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6774926B1 (en) * 1999-09-03 2004-08-10 United Video Properties, Inc. Personal television channel system

Also Published As

Publication number Publication date
EP3583779A1 (en) 2019-12-25
WO2018094480A1 (en) 2018-05-31
WO2018094480A9 (en) 2018-09-13
EP3583779A4 (en) 2020-08-26
WO2018094480A4 (en) 2018-08-09
US11627344B2 (en) 2023-04-11
GB201702386D0 (en) 2017-03-29
US20210037267A1 (en) 2021-02-04

Similar Documents

Publication Publication Date Title
US20230362417A1 (en) System for streaming
US10958954B2 (en) Live video streaming system and method
US20140195675A1 (en) Simultaneous Content Data Streaming And Interaction System
US20110197237A1 (en) Controlled Delivery of Content Data Streams to Remote Users
US8955060B2 (en) Collaborative parental control of streaming media
US20160065641A1 (en) Global Distribution Model
US20160066038A1 (en) Clip List Generation
US20160066064A1 (en) Clip Start Point
US20160066035A1 (en) Profile Generator
WO2016030703A1 (en) Method, system and apparatus for distributing and accessing media content
US11516520B2 (en) Data sharing system, share list processing method, and non-transitory machine-readable medium for data sharing
US20190068660A1 (en) System, method and apparatus for content eavesdropping
US20160066018A1 (en) Local Distribution Model
US20160065999A1 (en) Companion Ads
EP3948593B1 (en) Separating the authorization of content access and content delivery using multiple cryptographic digital signatures
US20200045094A1 (en) System for Streaming
US11606590B2 (en) Systems and methods to deliver content during client authentication process in a distributed computing system
US11917253B2 (en) System and method for facilitating a virtual screening
US20220286300A1 (en) Systems and methods to evaluate client device trust in a distributed computing system

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED