System and method for delivery of synchronized media content
The system synchronizes media content delivery across devices by clock synchronization and time offset determination, addressing the limitations of traditional karaoke systems and enabling a seamless, synchronized karaoke experience across multiple devices.
Patent Information
- Application Number
- PCT/IB2024/062346
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-06
- Filing Date
- 2024-12-06
- Publication Date
- 2025-06-12
AI Technical Summary
Traditional karaoke systems are not portable and lack the ability to synchronize media content across multiple devices, particularly in environments like cars, due to network connectivity issues, latency, and device pairing challenges.
A method and system for synchronizing media content delivery across client devices by synchronizing clocks, determining time offsets, and playing back media content using these offsets, allowing for seamless and synchronized playback across multiple devices.
Enables a seamless and synchronized karaoke experience across multiple devices, including those in vehicles, by addressing network and device latency issues, providing a user-friendly and integrated media experience.
Smart Images

Figure IB2024062346_12062025_PF_FP_ABST
Abstract
Description
SYSTEM AND METHOD FOR DELIVERY OF SYNCHRONIZED MEDIACONTENTCROSS-REFERENCE TO RELATED APPLICATION
[0001] The present application claims priority on U.S. Provisional Patent Application No. 63 / 606,721 filed on December 6, 2023.TECHNICAL FIELD
[0002] The present disclosure relates to media content delivery, particularly to methods and systems for synchronized media content delivery across client or user devices.BACKGROUND
[0003] Karaoke is a popular and widespread form of entertainment providing users with the music and the lyrics to a musical piece for users to sing along to. In general, karaoke is provided as a standalone audio and video delivery system in a venue, such as a bar or a club.
[0004] Karaoke systems are generally not portable. Furthermore, karaoke systems generally do not usually coordinate two or more devices. Challenges including network connectivity, network latency, client or user device memory latency, lag and device pairing make delivery of karaoke content by devices and systems other than by the bespoke systems described above usually impractical.
[0005] In particular, traditional karaoke systems are not designed for and not adaptable to in-car use, and do not provide capabilities for delivering content across several devices within the same car.
[0006] Increased numbers of users consume media and communicate with friends, families and colleagues through mobile phones, tablets and other portable equipment and expect integration of media experiences across all devices, including those integrated into a vehicle.There is therefore a need for improved and user-friendly systems and methods to seamlessly deliver karaoke experiences to modern media consumers.SUMMARY
[0007] In accordance with to a first broad aspect, there is provided a method for providing a media content to a user on a user device, the method being executed by a processor of the user device, the method comprising: synchronizing a clock of the user device with a clock of a computing device, thereby obtaining a synchronized clock; receiving the media content from the computing device, the media content comprising a content timestamp; determining a time offset based on the content timestamp and the synchronized clock; and playing back the media content using the content offset.
[0008] In some embodiments, the step of synchronizing the clock of the user device comprises determining a time difference between the clock of the user device and the clock of the computing device and adding the time difference to a value of the clock of the user device.
[0009] In some embodiments, the step of determining the time difference is performed based on a computing device timestamp received from the computing device, the value of the clock of the user device at which the computing device timestamp is received and a communication latency between the user device and the computing device.
[0010] In some embodiments, the method further comprises receiving the communication latency from the computing device.
[0011] In some embodiments, the method further comprises determining the communication latency.
[0012] In some embodiments, the step of determining the communication latency comprises transmitting a ping to the computing device and determining a time elapsed between said transmitting the ping and a reception of a response from the computing device.
[0013] In some embodiments, the step of determining the time offset comprises subtracting the content timestamp from a value of the synchronized clock.
[0014] In some embodiments, the media content comprises a video, the video comprising frames and the frames comprising lyrics of a song, said playing back the media content comprising displaying the video.
[0015] In some embodiments, the media content further comprises an audio file, said playing back the media content further comprising playing back the audio file.
[0016] In some embodiments, the method further comprises: transmitting an ID code to the computing device; and receiving a confirmation that an access to the media content is granted from the computing device.
[0017] In some embodiments, the computing device comprises one of a server and an in- car entertainment system.
[0018] In some embodiments, the user device comprises one of a mobile phone, a tablet, a computer, a smart TV, a gaming console and an in-car entertainment console.
[0019] In accordance with another broad aspect, there is provided a system for providing a media content to a user, the system comprising: a processor; a non- transitory storage medium operatively connected to the processor, the non-transitory storage medium comprising computer-readable instructions; the processor, upon executing the instructions, being configured for: synchronizing a clock of the system with a clock of a computing device, thereby obtaining a synchronized clock; receiving the media content from the computing device, the media content comprising a content timestamp; determining a time offset based on the content timestamp and the synchronized clock; and playing back the media content using the content offset.
[0020] In some embodiments, the processor is configured for determining a time difference between the clock of the system and the clock of the computing device and adding the time difference to a value of the clock of the system.
[0021] In some embodiments, the processor is configured to determine the time difference based on a computing device timestamp received from the computing device, the value of theclock of the system at which the computing device timestamp is received and a communication latency between the system and the computing device.
[0022] In some embodiments, the processor is further configured for receiving the communication latency from the computing device.
[0023] In other embodiments, the processor is further configured for determining the communication latency.
[0024] In some embodiments, the processor is configured for transmitting a ping to the computing device and determining a time elapsed between said transmitting the ping and a reception of a response from the computing device.
[0025] In some embodiments, the processor is configured for subtracting the content timestamp from a value of the synchronized clock.
[0026] In some embodiments, the media content comprises a video, the video comprising frames and the frames comprising lyrics of a song, said playing back the media content comprising displaying the video.
[0027] In some embodiments, the media content further comprises an audio file, said playing back the media content further comprising playing back the audio file.
[0028] In some embodiments, the processor is further configured for: transmitting an ID code to the computing device; and receiving a confirmation that an access to the media content is granted from the computing device.
[0029] In some embodiments, the computing device comprises one of a server and an in- car entertainment system.
[0030] In some embodiments, the system comprises one of a mobile phone, a tablet, a computer, a smart TV, a gaming console and an in-car entertainment console.
[0031] In the context of the present specification, a “server” is a computer program that is running on appropriate hardware and can receive requests (e.g., from electronic devices) over a network (e.g., a communication network), and conducting those requests, or causing those requests to be carried out. The hardware may be one physical computer or one physical computer system, but neither is required to be the case with respect to the present technology. In the present context, the use of the expression a “server” is not intended to mean that every task (e.g., received instructions or requests) or any particular task will have been received, carried out, or caused to be carried out, by the same server (i.e., the same software and / or hardware); it is intended to mean that any number of software elements or hardware devices may be involved in receiving / sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request; and all of this software and hardware may be one server or multiple servers, both of which are included within the expressions “at least one server” and “a server”. The terms “host” and “server” may be used interchangeably and are to be construed as synonymous unless stated otherwise.
[0032] In the context of the present specification, “electronic device,” also referred to as “client device,” “user device” or “computing device,” is any computing apparatus or computer hardware that can run software appropriate to the relevant task at hand. Thus, some (nonlimiting) examples of electronic devices include general purpose personal computers (desktops, laptops, netbooks, etc.), mobile computing devices, smartphones, and tablets, and network equipment such as routers, switches, and gateways. It should be noted that an electronic device in the present context is not precluded from acting as a server to other electronic devices. The use of the expression “an electronic device” does not preclude multiple electronic devices being used in receiving / sending, carrying out or causing to be carried out any task or request, or the consequences of any task or request, or steps of any method described herein. In the context of the present specification, a “client device” refers to any of a range of end-user client electronic devices, associated with a user, such as personal computers, tablets, smartphones, and the like.
[0033] In the context of the present specification, the expression "computer readable storage medium" (also referred to as "storage medium”, “storage” and “memory”) is intended to include non-transitory media of any nature and kind whatsoever, including without limitationRAM, ROM, disks (CD-ROMs, DVDs, floppy disks, hard drivers, etc.), USB keys, solid statedrives, tape drives, etc. A plurality of components may be combined to form the computer information storage media, including two or more media components of a same type and / or two or more media components of diverse types.
[0034] In the context of the present specification, a "database" is any structured collection of data, irrespective of its particular structure, the database management software, or the computer hardware on which the data is stored, implemented or otherwise rendered available for use. A database may reside on the same hardware as the process that stores or makes use of the information stored in the database or it may reside on separate hardware, such as a dedicated server or plurality of servers.
[0035] In the context of the present specification, the expression “information” includes information of any nature or kind whatsoever capable of being stored in a database. Thus, information includes, but is not limited to audiovisual works (images, movies, sound records, presentations etc.), data (location data, numerical data, etc.), text (opinions, comments, questions, messages, etc.), documents, spreadsheets, lists of words, etc.
[0036] In the context of the present specification, unless expressly provided otherwise, an “indication” of an information element may be the information element itself or a pointer, reference, link, or other indirect mechanism enabling the recipient of the indication to locate a network, memory, database, or other computer-readable medium location from which the information element may be retrieved. For example, an indication of a document could include the document itself (i.e. its contents), or it could be a unique document descriptor identifying a file with respect to a particular file system, or some other means of directing the recipient of the indication to a network location, memory address, database table, or other location where the file may be accessed. As one skilled in the art would recognize, the degree of precision required in such an indication depends on the extent of any prior understanding about the interpretation to be given to information being exchanged as between the sender and the recipient of the indication. For example, if it is understood prior to a communication between a sender and a recipient that an indication of an information element will take the form of a database key foran entry in a particular table of a predetermined database containing the information element, then the sending of the database key is all that is required to effectively convey the information element to the recipient, even though the information element itself was not transmitted as between the sender and the recipient of the indication.
[0037] In the context of the present specification, the expression “communication network” is intended to include a telecommunications network such as a computer network, the Internet, a telephone network, a Telex network, a TCP / IP data network (e.g., a WAN network, a LAN network, etc.), and the like. The term “communication network” includes a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared and other wireless media, as well as combinations of any of the above.
[0038] In the context of the present specification, the words “first,” “second,” “third,” etc. have been used as adjectives only for the purpose of allowing for distinction between the nouns that they modify from one another, and not for the purpose of describing any particular relationship between those nouns. Thus, for example, it should be understood that, the use of the terms “server” and “third server” is not intended to imply any particular order, type, chronology, hierarchy or ranking (for example) of / between the server, nor is their use (by itself) intended imply that any “second server” must necessarily exist in any given situation. Further, as discussed herein in other contexts, reference to a “first” element and a “second” element does not preclude the two elements from being the same actual real-world element. Thus, for example, in some instances, a “first” server and a “second” server may be the same software and / or hardware, in other cases they may be different software and / or hardware.
[0039] Implementations of the present technology each have at least one of the above- mentioned object and / or aspects, but do not necessarily have all of them. It should be understood that some aspects of the present technology that have resulted from attempting to attain the above-mentioned object may not satisfy this object and / or may satisfy other objects not specifically recited herein.
[0040] Additional and / or alternative features, aspects and advantages of implementations of the present technology will become apparent from the following description, the accompanying drawings and the appended claims.BRIEF DESCRIPTION OF THE DRAWINGS
[0041] Having thus generally described the nature of the invention, reference will now be made to the accompanying drawings, showing by way of illustration example embodiments thereof and in which:
[0042] Figure 1 depicts a schematic diagram of a computing device, in accordance with one or more non-limiting implementations of the present technology.
[0043] Figure 2 is a flow chart illustrating a method of delivering synchronized media content to a plurality of devices, in accordance with one or more non-limiting implementations of the present technology.
[0044] Figure 3 is a schematic representation of a system for implementing the method of Figure 2, in accordance with one or more non-limiting implementations of the present technology.
[0045] Figure 4 is a schematic representation of processors and memories useful for implementing the principles disclosed herein, in accordance with one or more non-limiting implementations of the present technology.
[0046] Figure 5 is a schematic representation of a system comprising a plurality of devices for delivering synchronized media content, in accordance with one or more non-limiting implementations of the present technology.
[0047] Figure 6 is a schematic representation of clock synchronization and media offsetting, in accordance with one or more non-limiting implementations of the present technology.DETAILED DESCRIPTION
[0048] The examples and conditional language recited herein are principally intended to aid the reader in understanding the principles of the present technology and not to limit its scope to such specifically recited examples and conditions. It will be appreciated that those skilled in the art may devise various arrangements which, although not explicitly described or shown herein, nonetheless embody the principles of the present technology and are included within its spirit and scope.
[0049] Furthermore, as an aid to understanding, the following description may describe relatively simplified implementations of the present technology. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
[0050] In some cases, what are believed to be helpful examples of modifications to the present technology may also be set forth. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and a person skilled in the art may make other modifications while nonetheless remaining within the scope of the present technology. Further, where no examples of modifications have been set forth, it should not be interpreted that no modifications are possible and / or that what is described is the sole manner of implementing that element of the present technology.
[0051] Moreover, all statements herein reciting principles, aspects, and implementations of the present technology, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof, whether they are currently known or developed in the future. Thus, for example, it will be appreciated by those skilled in the art that any block diagrams herein represent conceptual views of illustrative circuitry embodying the principles of the present technology. Similarly, it will be appreciated that any flowcharts, flow diagrams, state transition diagrams, pseudo-code, and the like represent various processes which may be substantially represented in computer-readable media and so executed by a computer or processor, whether or not such computer or processor is explicitly shown.
[0052] The functions of the various elements shown in the figures, including any functional block labeled as a "processor" or a “graphics processing unit,” may be provided through the use of dedicated hardware as well as hardware capable of executing software in association with appropriate software. When provided by a processor, the functions may be provided by a single dedicated processor, by a single shared processor, or by a plurality of individual processors, some of which may be shared. In one or more non-limiting embodiments of the present technology, the processor may be a general-purpose processor, such as a central processing unit (CPU) or a processor dedicated to a specific purpose, such as a graphics processing unit (GPU). Moreover, explicit use of the term "processor" or "controller" should not be construed to refer exclusively to hardware capable of executing software, and may implicitly include, without limitation, digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC), field programmable gate array (FPGA), read-only memory (ROM) for storing software, random access memory (RAM), and non-volatile storage. Other hardware, conventional and / or custom, may also be included.
[0053] Software modules, or simply modules which are implied to be software, may be represented herein as any combination of flowchart elements or other elements indicating performance of process steps and / or textual description. Such modules may be executed by hardware that is expressly or implicitly shown.
[0054] The present technology is directed to synchronize the play back of a media content on at least two separate user devices so that a same piece of the same media content is concurrently played back on each user device. For example, when the media content comprises audio file such as a song, the present technology allows for the same not of music or the same word of lyrics to be played back at substantially the same time on different user devices. When the media content comprises a video, the present technology allows for the display of the same video frame of the same video at substantially the same time on different user devices.
[0055] Such a synchronization may be achieved by executing the following method for providing a media content to a user on a user device. The method comprises the steps of:
[0056] synchronizing a clock of the user device with a clock of a computing device, thereby obtaining a synchronized clock;
[0057] receiving the media content from the computing device, the media content comprising a content timestamp;
[0058] determining a time offset based on the content timestamp and the synchronized clock; and
[0059] playing back the media content using the content offset.
[0060] It will be understood that when the media content comprises a video that include no audio, the playback of the media content corresponds to the display of the frame of the video on a display unit.
[0061] It will be understood that when the media content comprises an audio file, the user device comprises an audio transducer such as a loudspeaker, and when the media content is a video, the user device comprises a display unit and optionally an audio transducer if the video comprises an audio track.
[0062] In some embodiments, the step of synchronizing the clock of the user device with that of the computing device comprises determining the time difference between the clock of the user device and the clock of the computing device and adding the time difference to the clock of the user device, i.e., to the actual value of the clock of the user device.
[0063] In some embodiments, the step of determining the time difference is performed based on a computing device timestamp received from the computing device, the value of the clock of the user device at which the computing device timestamp is received and a communication latency between the user device and the computing device.
[0064] In some embodiments, the method further comprises a step of receiving the communication latency from the computing device.
[0065] In some embodiments, the method further comprises a step of determining the communication latency.
[0066] In some embodiments, the step of determining the communication latency comprises transmitting a ping to the computing device and determining a time elapsed between said transmitting the ping and a reception of a response from the computing device.
[0067] In some embodiments, the step of determining the time offset comprises subtracting the content timestamp from a value of the synchronized clock.
[0068] In some embodiments, the above method may be used int the context of karaoke, as described in greater detail below. In this case, the media content comprises a video which comprises video frames and at least some of the video frames comprise lyrics of a song, and the playback of the media content consists in playing back the video.
[0069] In some embodiments, the media content further comprises an audio file, i.e., the video comprises au audio track, and the step of playing back the media content further comprises playing back the audio file.
[0070] In some embodiments, the method further comprises an authenticating step for the user device to be provided with access to the media content. In this case, the method may further comprise the steps of transmitting an identification (ID) code to the computing device which authenticates the user device based on the ID and receiving a confirmation that access to the media content is granted from the computing device.
[0071] In some embodiments, the computing device comprises one of a server or an in-car entertainment system.
[0072] In some embodiments, the user device comprises a mobile phone, a smartwatch, a tablet, a computer, a smart TV, a gaming console, an in-car entertainment console or the like.
[0073] In some embodiments, the computing device may be a server to which at least two user devices are connected. In this case, the above-described method is executed by the user devices so that a same media content provided by the server may be concurrently played backon the user devices. For example, the user devices may be audio systems that are provided with loudspeakers to playback music and are located in different rooms of a same house. In this case, the present method when executed by the audio systems allows for the synchronization of the playback of a same song by the audio systems to avoid cacophony.
[0074] In other embodiment, the computing device is a user device, i.e., the computing device is also configured to playback the media content. In this case, at least one additional user deice is connected to the computing device and each additional device is configured to execute the above-described method so as to synchronize the playback of the media content on the computing device and the additional user device(s). It should be understood that, in this case, the computing device may not execute the above-described method.
[0075] In some embodiments, at least one of the devices that playback the media content may receive only a portion of the media content. For example, when the media content to be played back comprises a video that includes an audio track, a first device may receive and playback the video including the audio track while a second device may receive the video without the audio track. In this case, the second device only plays back the video frames of the video in synchronization with the playback of the whole video (video frames + audio) by the first device.
[0076] In the following, there is described a particular implementation of the present technology in the context of delivering a synchronized karaoke experience to two or more client devices without users needing to look at the same screen to read the lyrics, and while providing synchronized media content to improve a karaoke experience despite network and device lag.
[0077] Referring now to Figure 1, there is shown an electronic device 100 suitable for use with some implementations of the present technology, the electronic device 100 comprising various hardware components including one or more single or multi-core processors collectively represented by processor 110, a graphics processing unit (GPU) 111 , a solid-state drive 120, a random access memory 130, a display interface 140, and an input / output interface 150.
[0078] Communication between the various components of the electronic device 100 may be enabled by one or more internal and / or external buses 160 (e.g. a PCI bus, universal serial bus, IEEE 1394 “Firewire” bus, SCSI bus, Serial-ATA bus, etc.), to which the various hardware components are electronically coupled.
[0079] The input / output interface 150 may be coupled to a touchscreen 190 and / or to the one or more internal and / or external buses 160. The touchscreen 190 may be part of the display. In one or more embodiments, the touchscreen 190 is the display. The touchscreen 190 may equally be referred to as a screen 190. In the embodiments illustrated in Figure 1, the touchscreen 190 comprises touch hardware 194 (e.g., pressure-sensitive cells embedded in a layer of a display allowing detection of a physical interaction between a user and the display) and a touch input / output controller 192 allowing communication with the display interface 140 and / or the one or more internal and / or external buses 160. In one or more embodiments, the input / output interface 150 may be connected to a keyboard (not shown), a mouse (not shown) or a trackpad (not shown) allowing the user to interact with the electronic device 100 in addition or in replacement of the touchscreen 190.
[0080] According to implementations of the present technology, the solid-state drive 120 stores program instructions suitable for being loaded into the random-access memory 130 and executed by the processor 110 and / or the GPU 111. For example, the program instructions may be part of a library or an application.
[0081] The electronic device 100 may be implemented as a server, a desktop computer, a laptop computer, a tablet, a smartphone, a personal digital assistant or any device that may be configured to implement the present technology, as it may be understood by a person skilled in the art.
[0082] Referring now to Figure 2, an exemplary method 200 for delivering media content across two or more client devices is presented. While throughout the present disclosure reference may be made to karaoke sessions, such an implementation is exemplary, and the methods and systems disclosed herein may be implemented to deliver and / or synchronize any media content. Throughout the present disclosure the term “karaoke” means display to one ormore users by one or more devices of media content comprising at least audio, such as an instrumental portion of a song, and words such as lyrics. The media content may be delivered to the device or devices from a host or server. The lyrics may be delivered in an appropriate format including but not limited to video, for example as text embedded in a video stream, or as text-comprising data delivered to the device or devices for processing thereon, for example by being displayed by an application being executed on the device or devices.
[0083] At step 201, a host or server receives a request that a new karaoke session should be created and creates a new karaoke session upon receiving the request. The karaoke session is created by pairing or otherwise associating two or more devices such that the two or more devices receive a same media content, or a plurality of media contents, such as a plurality of media streams, associated to each other. For example, two devices paired to a karaoke session may receive lyrics and video and / or audio associated to a same song. The paired devices may further share one or more controls of the media content, for example pause and play control, as well as other aspects of a multi-device media session including but not limited to a shared song queue. The host or server receives the request from a first client device and may assign a unique identifier to the session.
[0084] In some embodiments, the server is implemented remotely, such as a cloud server. A first client device, such as but not limited to a car entertainment console, transmits a request to the server over a communication network that a karaoke session be created. The server may receive requests from a plurality of client devices, for example the server may be a server of a media content provider configured to receive and process requests from a plurality of customers and / or a plurality of devices. Accordingly, a unique identifier may allow the server to create a plurality of karaoke sessions, similarly to a multi-room karaoke club assigning an individual room number to each group of visitors.
[0085] In some embodiments, step 201 may be omitted such as when the server is configured to host only one room. For example, an in-car entertainment system may be configured to act as the server and operate only one virtual karaoke room at a time.
[0086] Referring back to Figure 2, the request is received from a client device, which may be a mobile phone, a tablet, a computer, a smart TV, a gaming console, a car entertainment console, a part of a car entertainment system, an input device connected to a car entertainment console, an input device connected to a part of a car entertainment system, or the like. The car console may be a client device implementing a server program; accordingly, the server is not to be construed as necessarily a separate device. The request may be generated according to acceptable methods of providing commands or indications, for example by a user interacting with a companion app running on the client device, or through a browser interface.
[0087] In some embodiments, a browser-based interface may be compatible with numerous operating systems without needing to develop separate applications for each system. Combinations of method implementations across two or more client devices are possible. The server associates or pairs the first client device to the karaoke session.
[0088] At step 202, the server pairs at least another client device, referred herein as “second devices”, to the virtual karaoke room. The pairing may be accomplished according to one or more methods allowing a server to associate a device to the unique identifier generated for the room. For example, the server may provide the unique identifier assigned to the karaoke session to the first device, such as the in-car entertainment system, by transmitting thereto data comprising the unique identifier. The unique identifier may be any suitable identifier including but not limited to a series of alphanumeric characters, a barcode, a QR code, and / or any other acceptable means. For pairing the one or more second devices to the same karaoke session, the first device may display or otherwise cause to be shown, heard or otherwise made available the unique identifier transmitted by the server. A second device may be used to scan the identifier, such as a QR-code, a barcode or other from the first device and transmit a request to the server to be paired to the room corresponding to the unique identifier. In another example, the user of the second device may input a code displayed on the first device into the second which then transmits the inputted code to the server. The identifier transmitted by the server to the first device and / or the identifier displayed by the first device may comprise other data and / or instructions such as but not limited to instructions that cause a second device, upon scanningthe QR code or barcode, to initiate a communication to the server and transmit the unique identifier to the server with a request to pair to the karaoke session.
[0089] In some embodiments in which a QR code is used, the QR code may comprise instructions for the second device to execute or download an application configured for implementing at least some of the methods disclosed herein. In some embodiments, the server may execute steps to prompt one or more second devices to pair to the karaoke session. For example, a car console in a wi-fi connected vehicle may initiate a new karaoke session. The server may be communicably connected in the background or foreground with one or more second devices configured to be so communicably connected to the server. For example, an application installed on the one or more second devices may cause the second devices to communicate with the server, for example via ping signals, in the background. Upon receiving the request at step 201 from the car entertainment console via the IP address associated with the vehicle’s modem or router, the server may retrieve data corresponding to source IP addresses of ping signals from devices having the application installed thereon, and may cause a push notification to be provided to one or more of the second devices connected to the same wi-fi network as the car entertainment console with a prompt to join the karaoke session.
[0090] The server may be communicably connected and / or communicate with the second devices via other acceptable means including but not limited to a browser-based interface. The server may, accordingly, pair devices connecting through the same IP address as the first device to the room. For example, all devices located in a home connecting through the same gateway (for example a router or a modem) may be paired to the room. In this case, no code such as a QR code is required to pair a second device to the virtual karaoke room.
[0091] The server may pair the second devices to the room using other means. For example, the browser interface may append / or the application may allow the user to input an identifier for transmission to the server, the transmission thereof causing the server to pair the second device to the room corresponding to the identifier. It will be understood that any adequate method for pairing a second device to a room may be used.
[0092] In at least some non-limiting embodiments that comprise an in-car karaoke system, the car’s main entertainment console (if present) may provide the indication corresponding to the creation of a new karaoke session on the server, and devices connected to the car’s wi-fi may be automatically paired to the room or receive a prompt to pair to the room via a push notification through an application by being associated with the same gateway IP address. A device present in the car but not connected to the car’s wireless network (for example by being connected to a mobile data network) may pair to the room by scanning indicia such as a QR code corresponding to the unique identifier from the car console’s screen or by having the user input other identifying elements into the application or into the browser interface. Accordingly, the methods disclosed herein may be protocol-agnostic and may work across a plurality of devices connected using two or more connection protocols. For example, one or more devices may be communicably connected to the console, or to each other, via Bluetooth or any other adequate communication means. In some embodiments, the server and / or the first client device may prompt nearby devices to join the karaoke session through other communication means. For example, the console may be configured to transmit instructions or prompts to nearby devices to join a karaoke session via Bluetooth notifications, AirDrop™ protocols, and other means of communicating with nearby devices.
[0093] In some non-limiting embodiments, one of the devices connected to the room may be configured to act as a main player device, for example as a device configured to deliver the video and audio content of a karaoke experience, while the remaining devices may be configured to display lyrics to users. In other embodiments, the karaoke experience may be distributed across several devices, for example by providing the video and / or audio content to two or more devices. For example, two or more devices located at distinct locations may be configured to play audio and / or video, as well as providing the lyrics. It is understood that such an implementation allows a seamless and synchronized remote karaoke experience.
[0094] In at least some embodiments in which the client devices are communicably connected to the Internet, communication between devices and / or the server may be accomplished using web sockets, to allow real-time communication between the main playerand second screen devices. Internet connectivity may be used to synchronize lyrics and control commands across all devices. A web socket server may be used all players handshakes.
[0095] Following pairing, the method comprises synchronizing internal clocks, at step 203, across the client devices connected to the virtual karaoke room. Synchronizing clocks improves content delivery across the several devices connected to the room by providing a common temporal reference frame for the media content, irrespective of the device on which the content is delivered.
[0096] As used herein, the term “Th” denotes the host’s or server’s timestamp, i.e., the time at which the host or server transmits a datum to a given client device according to its associated internal clock, “Lc” denotes the determined network or communication latency for the given client device, i.e., the time duration elapsed between the transmission of a datum and the receiving of the datum, “Tc” denotes the time at which the given client device receives the datum from the host or server according to the client device internal clock, and “De” denotes the clock difference between the host and the given client device. Where the internal clocks for the host and the client device are synchronized to a common time, i.e. they show the same time at the same point in time, De will substantially correspond to the network latency.
[0097] In embodiments in which the server comprises an in-car system, De may be 0 for the host and for the first client device, the host and first client device being the same device. It is understood that some car console configurations may cause at least some lag or latency between the server program and the display and / or audio delivery systems of the car console. Accordingly, De may be calculated at the point of delivery (screen and / or speakers) without departing from the present teachings.
[0098] In embodiments in which the server is separate from the in-car system, De is calculated for all client devices including the car entertainment console and the one or more second devices.
[0099] The client device determines De by receiving the network latency and a timestamp, such as a clock signal, from the server or host, and comparing the received timestamp with itsown internal clock. For example, a server may transmit a timestamp corresponding to 5:00:00 pm to a client device that, at the point in time of transmission, is also showing 5:00:00 pm on its internal clock. Due to network latency, the server’s 5:00:00 timestamp is received at the client device when the client device’s clock shows 5:00:01 pm.
[0100] In general, a clock difference can be determined by determining the difference between the host’s time plus the network latency and the client’s reception time This may be expressed as:De = (Th + Lc) - Tc
[0101] In some embodiments, each client device receives its respective latency Lc.
[0102] In other embodiments, each client device is configured to determine its respective latency Lc such as by transmitting a ping to the host and determining the time elapsed between the transmission of the ping and the reception of a response from the host.
[0103] Once the respective clock difference is determined by each client device, the given client device adjusts its internal time by adding De to its internal clock Tc to obtain an adjusted client timestamp or internal clock Tc’ which is synchronized with the internal clock of the host or server. It is understood that a negative De would entail a subtraction of time from the client timestamp. Accordingly, the client’s adjusted timestamp Tc’ should correspond to the host timestamp Th adjusted for network latency, i.e. Th + Lc.
[0104] In some embodiment, the clock synchronization is performed once before a media be played back for example.
[0105] In other embodiments, the clock synchronization is performed substantially continuously or periodically.
[0106] In some embodiments, each client device receives media content at a different time due to a respective network latency and to the device’s own latency, for example in processing data. In a conventional karaoke session delivered across a plurality of devices, a given device would begin playing the song at the moment of reception of the song from the server, or after abuffering time. Accordingly, for example, a 1 -second latent client device would begin playing point 0:00 of the song at a time 0:01 after the song is transmitted from the server, and a 2-second latent client device would begin playing the same 0:00 point in the song at a time 0:02, thereby creating a cacophony and / or an unsynchronized display of the lyrics.
[0107] Accordingly, the present disclosure provides methods for causing all client devices paired to a karaoke session to play the same point in the media content, i.e. the same point in the audio and / or the same lyrics, at the same point in time, regardless of latency. For example, when the car’s entertainment console acts as the host, the second devices will play or display the same lyrics and / or the same point in the audio as is being played at the same point in time by the console.
[0108] The media content being delivered from the host may be associated by the host with one or more timestamps. For example, the host may transmit a song having point 0:00 associated to a time of 5:00:00 pm, and following points associated to a corresponding time accordingly. When the host is a car console configured to play the media content, the host playback point is the point in the media file being played at the given point in time. When the host or server is external, such as a cloud-based server configured to transmit the media content to a plurality of client devices, the host playback point may be considered as the point in the media content being presently transmitted. It is understood that media content may be transmitted in ways that do not allow for a direct correspondence between a data packet and a specific point in the media content to be played at a specific point in time. In some embodiments, the host playback point expresses a length of time elapsed from the beginning of the media content transmission by the server.
[0109] A given client device may receive the media content at a different time than the time of transmission of the same media content by the server or host. Each given client device determines a media offset value De’ by subtracting the host’s timestamp from the synchronized client device timestamp or clock Tc at the time of reception, according to the equation De’ = Tc’ - Th. For example, a car console plays music, displays lyrics, and transmits lyrics to a second client device, such as a smartphone held by a passenger in the back seat. During karaoke,displayed lyrics change, for example by changing colour, or by being highlighted, to guide the reader according to the song’s intended lyric flow. At the console, due to low to no latency, the lyric highlighting substantially corresponds to the song’s intended rhythm and lyric flow and to the point of the song being played. Due to latency, the smartphone will receive the lyric file and play the lyric file with a slight to moderate delay. For example, where a console transmits a lyric file to a smartphone at 5:00:00 pm over a 1 -second latent network, point 0:00 of the lyric file will arrive at the smartphone at 5:00:01.
[0110] The smartphone receives the lyric file from the console having a point 0:00 associated with 5:00:00 pm. The smartphone clock having been synchronized; the smartphone detects that the timestamp associated with the received playback point does not correspond to the internal clock.
[0111] During playback of the media, the second client device thus adjusts the playback point at the client device Vc to match the host’s playback point Vh by displacing or offsetting the client device’s playback point by De’ (step 205). For example, the smartphone in the example above skips one second of playback to play point 0:01 of the lyric file at the same time as the car console is playing 0:01 as well.
[0112] In some embodiments, each client’s offset is determined with respect to synchronized clocks at the client and at the server. The playback point Vc may accordingly be adjusted at each client device according to each client device’s measured latency, while maintaining a single playback point corresponding to Vh across all client devices. All client devices in the same room will play media content provided by the host at the same playback point Vh.
[0113] It is understood that the server, or host, may provide the media content to the client devices without separating streams or otherwise tailoring delivery to any given client device. Accordingly, computational resources at the server side are reduced, allowing for a more efficient use of resources across the content delivery system.
[0114] In some embodiments, the media content may be played back on all the client devices without requiring further synchronization. The server provides audio, video and / or lyric files and / or streams to client devices connected to the same room, and each client device offsets the received file and / or stream by the calculated offset. For example, several seconds or minutes of video and / or lyrics and / or audio may be delivered by the server, effectively buffering content to the client device such that re-synchronization of a stream with the server is not necessary. When the amount of buffered content is lower, adjustments to the calculated Lc to account for network variations may be provided.
[0115] It is understood that network and device conditions can fluctuate, thus affecting overall signal and / or processing latency. Also, during a karaoke experience, one or more users may choose to pause the experience for any number of reasons. The pause event may have been received at separate times across several devices connected to the room due to connectivity issues, latency and device lag. Re-adjustment of playback points at any given client device following a pause event when play is resumed may follow one or more of the playback offset steps described above. For example, when the host or server receives, from a client device, a request to resume playing, the host or server transmits media content with associated timestamps and the client devices re-offset playback points to match the host’s playback point.
[0116] In some embodiments, the methods disclosed herein may comprise periodically providing pings between the server, or host, and a given client device to determine the latencies Lc, and storing Lc values determined by each ping in a memory. The pings may originate at the client device, at the server, or at both, and the determination of Lc values may accordingly be done by the server or by the client device. An average value of the most recent Lc values determined according to the most recent pings can then be used as the Lc value as described above. For example, an average of five Lc values computed from the five most recent pings can be used to calculate the average Lc. It is understood that more and less pings may be used to calculate the average Lc without departing from the present teachings. In embodiments, pings may be spaced 200 milliseconds apart. More frequent pings and less frequent pings are possible. For example, if network capacity is low, pings may be provided at longer intervals to prioritize other signals and data.
[0117] In some embodiments, averaging Lc allows for reduced playback skipping or irregularity in response to changing network conditions, thus smoothing the playback offset without compromising the user experience. Depending on the frequency of the pings, such smoothing may be almost imperceptible for the user, for example by adjusting playback by milliseconds or fractions thereof. Accordingly, spikes or dips in latency are smoothed while providing a more stable and reliable Lc estimate for synchronization.
[0118] The present methods and systems may be configured to manage more than one media content. For example, one or more of the client devices may manage a song queue, thereby providing indications to the server corresponding to further media files to be delivered to the room. Enqueuing media files during use of the system and methods as disclosed herein may reduce the need to synchronize or re-synchronize content between different songs, as playback is substantially continuous. In embodiments, the queue may be stored and managed locally on the client devices connected to the same room. Accordingly, indications corresponding to queue management events may be sent by one client device to the other client devices via the established connection to the same room without requiring queue processing or storing on the server side. In some embodiments, the queue and management thereof may be implemented on the server, for example by receiving one or more indications or requests from one or more of the client devices connected to the room corresponding to media content to be delivered. In some embodiments, more than one client device may request songs, and one client device and / or the server may manage the queue by ordering, adding and / or removing songs therefrom.
[0119] The principles disclosed herein may be further adapted to provide different content associated with the same experience to different client devices connected to the same room. In non-limiting embodiments, the methods disclosed herein may be adapted for a duet mode or a polyphonic mode. For example, each user may provide an indication on their client device corresponding to a particular role or voice in a media content, such as in a duet. The different contents, such as a male and female lyrics in a duet, may be provided as different files by the server to the client devices having selected the parts, voices or roles in question. For example, a server may provide a single audio and / or video stream to all client devices, and a selected lyricstream associated to the client device having selected the corresponding lyrics, such as a particular voice or part. The client device may also be operable to display just the selected voice, part or role from the media file, for example the lyric file, provided by the server. In general, the media content may comprise distinct portions, including but not limited to video, audio, first lyrics, second lyrics and others, and users may indicate on their client device which portions to play. For example, a user may choose to play the video, audio and lyric portions on their device, while another user may opt to play exclusively the lyrics on their client device. Accordingly, the server does not need to provide separate lyrics files and memorize or process indications corresponding to the media files in question. The server thus provides all devices connected to the same room with the same media files, including lyrics files comprising all roles, voices or parts, and a selective displaying or playback of the requested part is conducted at the client device end, thereby reducing computational resources on the server.
[0120] The methods and systems disclosed herein may be configured to be compatible with voice command applications including but not limited to Siri™, Alexa™ and Google™ Assistant. In the case of an in-car karaoke system, users may thus play, pause and enqueue media content without having to interact with menus on a screen. Other integrations, for example with car-specific voice command systems, are also possible.
[0121] According to an aspect of the present disclosure, a system for karaoke delivery comprises a processor and a non-transitory memory comprising instructions that, when executed by the processor, cause the system to pair to a unique identifier on a server, adjust the internal clock to the server clock in response to a determined network latency, receive media content from the server and offset the media content playback by a predetermined offset time. The system may be further configured such that, when the instructions are executed by the processor, the system causes a karaoke experience as described above to be delivered to a user.
[0122] Referring to Figure 3, there is shown a schematic diagram of a system 300, the system 300 being suitable for implementing one or more non-limiting embodiments of the present technology. It is to be expressly understood that the system 300 as shown is merely an illustrative implementation of the present technology. Thus, the description thereof that followsis intended to be only a description of illustrative examples of the present technology. This description is not intended to define the scope or set forth the bounds of the present technology. In some cases, what are believed to be helpful examples of modifications to the system 300 may also be set forth below. This is done merely as an aid to understanding, and, again, not to define the scope or set forth the bounds of the present technology. These modifications are not an exhaustive list, and, as a person skilled in the art would understand, other modifications are likely possible. Further, where this has not been done (i.e., where no examples of modifications have been set forth), it should not be interpreted that no modifications are possible and / or that what is described is the sole manner of implementing that element of the present technology. As a person skilled in the art would understand, this is likely not the case. In addition, it is to be understood that the system 300 may provide in certain instances simple implementations of the present technology, and that where such is the case they have been presented in this manner as an aid to understanding. As persons skilled in the art would understand, various implementations of the present technology may be of a greater complexity.
[0123] The system 300 comprises a server 310 and a plurality of client devices 320 and 330. It is understood that more than two client devices may be present. It is also understood that the server 310 may be a program implemented on one of the plurality of client devices 320. Accordingly, a client device 320 may also act as the server 310 without departing from the present teachings. The server 310 and the client devices 320, 330 communicate over one or more network means 340. It is understood that communication between the client devices 320, 330 is possible when processing by the server is not necessary. For example, in a non-limiting embodiment, a plurality of client devices connected to the same wireless network may exchange data on the wireless network comprising instructions and / or indications corresponding to a media queue, such that each of the client devices 320, 330 may display an up-to-date song queue and allow one or more uses to interact therewith. Accordingly, intervention or processing by the server is not required and pressures on the server and on the network are reduced.
[0124] The system 300 may implement the method 200 or a method according to the principles disclosed herein. In such an embodiment, the server 310 is configured to create a virtual room, pair, associate and / or assign a plurality of client devices thereto, providetimestamps and indications corresponding to a server or a media time to the client devices 320, 330, and to provide one or more media files to the client devices 320, 330. The client devices are configured to communicate with the server 310 across one or more network means 340 including but not limited to wireless, Bluetooth™, mobile, Ethernet™ and other acceptable network means. The client devices 320, 330 are also configured for one or more of synchronizing system times with a server time, receive and play media files and offset the media files according to network and other latencies, and to allow users to interact with the media content. The client devices 320, 330 may have an application installed thereon for implementing one or more of the steps described above, however it is understood that a browser-based interface or another method for causing a client device 320, 330 to implement the steps described above is also possible. Accordingly, instructions for causing a client device to provide a user with a media experience as described herein may be stored in a memory on the server 310, provided to the client device 320, 330 and executed thereon during a user’s browsing of a corresponding Web resource, such as a Web page.
[0125] The system 300 generally comprises a database 350 for storing at least one of instructions for implementing the principles of the present disclosure, one or more media contents for delivery to client devices 320, 330, unique identifiers associated with one or more media delivery sessions or virtual rooms, and other data and / or information for operating the system 300. The database 350 may be comprised and / or implemented on the server 310 or separately therefrom, for example as a cloud-based database accessible by the server 310 and, optionally, by the client devices 320, 330 over the network means 340. The database 350 may be implemented locally, for example within one or more of the client devices 320. In a nonlimiting embodiment, a car’s entertainment console may have stored in a memory one or more songs and lyrics and / or video files associated thereto and be configured to implement the methods disclosed herein to create a room for a shared karaoke experience.
[0126] Referring now to Figure 4, a system 400 for implementing the principles disclosed herein comprises one or more processors 401, 402, and one or more memories 411, 412, the memories 411, 412 storing instructions. When executed by the one or more processors 401, 402, the instructions cause the system to pair one or more client devices to a virtual room and / ormedia content delivery session, synchronize system times across the client devices, determine network and device conditions at the client devices including but not limited to system latency, network latency, and media lag, receive and offset, by each of the client devices, one or more media contents for delivering a synchronized media delivery across the client devices. The pairing may be accomplished by any acceptable pairing method. In an embodiment, a server comprises the processor 401 and the memory 411, and the memory 411 stores instructions for causing the server to, in response to receiving an indication corresponding to a new media content delivery session, assign a unique identifier to the session and pair devices to the session according to the unique identifier. For example, the memory 411 may store instructions for causing the server to pair a client device to the session in response to receiving, from the client device, an indication corresponding to the unique identifier, for example following the client device scanning a QR code, or to pair the client device to the session according to the client device’s IP address according to the methods described above. Portions of the instructions may be stored separately. For example, instructions to create a virtual room, to assign a unique identifier to a media content delivery session and / or to provide one or more media contents may be stored in the memory 411 for execution by the processor 401 on the server. Instructions corresponding to the synchronization and content delivery steps may be stored in a memory 412 for execution by the processor 402 on the client device. When two or more devices cooperate to implement the system 400, it is understood that the devices may communicate over one or more network means 420. Distributed implementation of the methods disclosed herein helps improve overall system resource use and simplifies server operations as device-specific step instructions do not need to be stored or implemented at the server end.
[0127] Referring now to Figure 5, in general a system implementing the methods disclosed herein comprises a server configured to pair two or more client devices, one or more of which may be a first client device, to a virtual room or lobby for delivering content via a network such as the internet. The server provides an identifier corresponding to the room or lobby to the first client device, and the first client device may display the identifier with or without further processing. For example, the server may generate a QR code for the first device to display. In some embodiments, the server may generate a unique identifier corresponding to the room or lobby and provide the identifier to the first client device, and the first client device may processthe identifier so as to display it as a QR code on a screen. The first device may display a QR code allowing second devices to pair to the same virtual room or lobby regardless of the network by which they access the internet. The first device may display or otherwise provide an indication permitting one or more user devices to join the same virtual room, for example an alphanumeric room identifier. The first device or screen may provide indications corresponding to the new room to nearby devices and / or screens using acceptable methods including but not limited to Bluetooth™, near-field communication (NFC), infrared and / or other means. Web Sockets technology may be used to allow real-time communication between the devices and the server.
[0128] In an exemplary embodiment illustrated in Figure 5, a system 500 implementing the methods disclosed herein comprises a first device 510 and a plurality of second devices 511 in communication with a network 520. As an example, but without intending to limit the scope of the present disclosure, the first device 510 and two of the second devices 511 are comprised in a vehicle 501. For example, the first device 510 may be a car console, but it may also be another device, such as but not limited to a tablet, a smartphone, or another device. For example, the first device 510 may be a tablet held in place proximate to the car console by acceptable means. The second devices 511 may be any device capable of delivering media content and communicating with a network. For example, the second devices 511 in the car 501 may be smartphones, tablets, integrated headrest screens, or combinations thereof belonging to or configured to deliver media content to passengers in the car 501.
[0129] In use, a user initiates the creation of a room on the first device 510, for example by interacting with an application or a web interface being executed on the first device 510. When the room is created on the server (not shown), the first device 510 receives one or more indications from the server corresponding to the room. The one or more indications may be provided to the second devices 511, for example by displaying a corresponding QR code on the first device 510. In response to scanning the QR code, for example through an application or a web interface, the second device 511 having scanned the QR code communicates with the server to request pairing to the room created by the first device 510. One or more indications corresponding to system time are provided by the server to the first and second devices 510,511 for synchronizing internal clocks and for determining media content offsets, start times, and other parameters of the media content delivery.
[0130] It is understood that room creation may be initiated by any device and is not limited to a first device 510 being proximate to a driver or being a car console. For example, a passenger may initiate a room using their smartphone, and a car console may receive an indication from the server prompting a user to join the room. Two or more devices 510, 511 may be associated with or to each other, for example as favorites, household members, friends, and others. Such associations may be stored in a memory and / or a database, the memory or database being implemented on a server, on a given client device, or separately, for example but not limited to cloud storage. Accordingly, when one of said devices initiates a room, the user may cause the server to prompt one or more associated devices to join the room. If the one or more associated devices are connected to a communications network and are able to receive the prompt, they may join the room without needing to scan a QR code or another visual indication corresponding to the room. In some embodiments, a karaoke experience may be shared across one or more devices in a car and one or more devices situated elsewhere.
[0131] For example, a car console may be a first device having one or more family members’ devices such as smartphones or tablets associated thereto as family. When the car console initiates a karaoke session, the server or host may retrieve a list of associated devices from the memory. The list may be transmitted to the console allowing a user to select one or more associated devices to prompt to join the karaoke session. In some embodiments, the server may transmit a prompt, such as a push notification, to all associated devices, where a user may interact with the prompt, for example by confirming that they wish to join the karaoke session.
[0132] Referring now to Figure 6, a schematic representation of the synchronization and offset methods disclosed herein is presented. The host timestamp Th is provided to the client device by the host or server and compared to the client device’s own time Tc. Due to latency, the timestamp Th arrives at the client device at a time Tc that is after Th. The client device synchronizes its clock by setting it to Tc’ . It is understood that the client device may synchronize the internal clock within the context of a companion app or browser interface implementing themethods disclosed herein, and that other instances of the internal clock on the client device, such as for other applications, may remain untouched. For example, when Th is zero seconds, Tc’ may be set to two seconds on a two-second latent device and to three seconds on a three- second latent device.
[0133] The internal clocks being synchronized, the host provides a media stream to the client device having a host playback point Vh associated to the host time Th. The stream is at least partially buffered at the client device such that playback may be offset appropriately forward and / or backward. Due to network latency, Vh is received at the client device at a time that is after Vh was transmitted by the host. If the host is also one of the client devices, the host would have played the content before the content reached the other client devices. If two or more client devices with different latencies are connected to the same room, the client devices would play the same content with a slight delay between each other, causing confusion.
[0134] The client device detects a discrepancy between the internal clock, which is synchronized to the host clock, and the timestamp Vh at the time it is received at the client device. For example, the host transmits playback point Vh 0:00 of a karaoke song associated to a Th of 5:00:00. The client device receives the karaoke song and would conventionally begin playing 0:00 at the time of reception, being 5:00:01 as the network is 1 -second latent. However, there is a 1 -second discrepancy between the received playback point Vh and the client device’s internal clock. The value of the discrepancy is the offset value De’. In some implementations, the client device may offset the playback point Vc by moving the playback point Vc forward by De’, such that, despite a latency, Vc plays Vh at the client device at the same time as Vh is played at the host. The client device may skip one second of playback such that the client device plays Vh one second early on a 1 -second latent network, thereby matching the host playback. It is understood that, in implementations where the host is not a device playing media, internal clock synchronization and playback offsets may be negative.
[0135] It is understood that the systems and methods disclosed herein may be adapted to respond to and process other device pairing, communication, content delivery and playback events, including but not limited to pairing requests, pairing errors, room creations, roomconnections, room disconnects, room reconnections, playback pauses, playback resumptions, skips, rewinds, playback seeking, queue management, additions, removals and rearrangements of queue elements, and other events and commands as will be apparent to a skilled person.
[0136] The present disclosure allows for a second-screen experience during karaoke while providing synchronized lyric and / or video and / or audio delivery across multiple devices.
[0137] The present disclosure also allows integration with a car’s on-board entertainment system, allowing for karaoke delivery while driving. This provides a better traveling experience to drivers and passengers.
[0138] The present disclosure provides for means for one or more client devices connected to the same room on the server to control the playback experience, including pausing the playback. This reduces the need for driver intervention, for example by managing settings or pressing buttons on the car’s main entertainment console. For example, a rear seat screen or a mobile device being used by a passenger may be used to control the karaoke experience. Accordingly, driver distraction is reduced.
[0139] The present disclosure provides a device-agnostic and network-protocol-agnostic method of delivering a karaoke experience to a plurality of users.
[0140] While in the above description, it is referred to a method and system for synchronizing the playback of media content on at least two client or user devices in the context of karaoke, it will be understood that the method and system may be used in a context other than karaoke which requires that a same media content such as an audio file or a video be played back concurrently on different user devices. In this case, the user devices on which the media content is to be played back first synchronize their internal clock with that of the computing device that will provide the media content using the above-described method based on latency. It should be understood that if the computing device is one of the user devices, then no clock synchronization may be needed for the computing device. Once the clocks of the user devices are synchronized with that of the computing device, an offset De’ is determined for each user device as described above. Each user device then receives the media content to be played backfrom the computing device and plays back the media content taking into account its respective offset so that the playback of the media content occurs concurrently on each user device.
[0141] As described above, the synchronization of the clocks of the user devices with that of the computing device may be performed only once before the playback of the media content, substantially continuously or periodically. The latency associated with each user device is then determined once, substantially continuously or periodically, respectively.
[0142] Similarly, the determination of the offset De’ for each user device may be performed substantially continuously or periodically.
[0143] The embodiments described above are intended to be exemplary only. While embodiments have been described with reference to karaoke experiences, it is understood that the principles disclosed herein may equally apply to other interactive content deliverable across a plurality of devices without departing from the present teachings.
Claims
CLAIMS1. A method for providing a media content to a user on a user device, the method being executed by a processor of the user device, the method comprising: synchronizing a clock of the user device with a clock of a computing device, thereby obtaining a synchronized clock; receiving the media content from the computing device, the media content comprising a content timestamp; determining a time offset based on the content timestamp and the synchronized clock; and playing back the media content using the content offset.
2. The method of claim 1, wherein said synchronizing the clock of the user device comprises determining a time difference between the clock of the user device and the clock of the computing device and adding the time difference to a value of the clock of the user device.
3. The method of claim 2, wherein said determining the time difference is performed based on a computing device timestamp received from the computing device, the value of the clock of the user device at which the computing device timestamp is received and a communication latency between the user device and the computing device.
4. The method of claim 3, further comprising receiving the communication latency from the computing device.
5. The method of claim 3, further comprising determining the communication latency.
6. The method of claim 5, wherein said determining the communication latency comprises transmitting a ping to the computing device and determining a time elapsed between said transmitting the ping and a reception of a response from the computing device.
7. The method of any one of claims 1 to 6, wherein said determining the time offset comprises subtracting the content timestamp from a value of the synchronized clock.
8. The method of any one of claims 1 to 7, wherein the media content comprises a video, the video comprising frames and the frames comprising lyrics of a song, said playing back the media content comprising displaying the video.
9. The method of claim 8, wherein the media content further comprises an audio file, said playing back the media content further comprising playing back the audio file.
10. The method of any one of claims 1 to 9, further comprising: transmitting an ID code to the computing device; and receiving a confirmation that an access to the media content is granted from the computing device.
11. The method of any one of claims 1 to 10, wherein the computing device comprises one of a server and an in-car entertainment system.
12. The method of any one of claims 1 to 11, wherein the user device comprises one of a mobile phone, a tablet, a computer, a smart TV, a gaming console and an in-car entertainment console.
13. A system for providing a media content to a user, the system comprising: a processor; a non-transitory storage medium operatively connected to the processor, the non- transitory storage medium comprising computer-readable instructions; the processor, upon executing the instructions, being configured for: synchronizing a clock of the system with a clock of a computing device, thereby obtaining a synchronized clock;receiving the media content from the computing device, the media content comprising a content timestamp; determining a time offset based on the content timestamp and the synchronized clock; and playing back the media content using the content offset.
14. The system of claim 13, wherein the processor is configured for determining a time difference between the clock of the system and the clock of the computing device and adding the time difference to a value of the clock of the system to synchronize the clock of the system.
15. The system of claim 14, wherein the processor is configured for determining the time difference based on a computing device timestamp received from the computing device, the value of the clock of the system at which the computing device timestamp is received and a communication latency between the system and the computing device.
16. The system of claim 15, wherein the processor is further configured for receiving the communication latency from the computing device.
17. The system of claim 15, wherein the processor is further configured for determining the communication latency.
18. The system of claim 17, wherein the processor is configured for transmitting a ping to the computing device and determining a time elapsed between said transmitting the ping and a reception of a response from the computing device to determine the communication latency.
19. The system of any one of claims 13 to 18, wherein the processor is configured for determining the time offset by subtracting the content timestamp from a value of the synchronized clock.
20. The system of any one of claims 13 to 19, wherein the media content comprises a video, the video comprising frames and the frames comprising lyrics of a song, said playing back the media content comprising displaying the video.
21. The system of claim 20, wherein the media content further comprises an audio file, said playing back the media content further comprising playing back the audio file.
22. The system of any one of claims 13 to 21, wherein the processor is further configured for: transmitting an ID code to the computing device; and receiving a confirmation that an access to the media content is granted from the computing device.
23. The system of any one of claims 13 to 22, wherein the computing device comprises one of a server and an in-car entertainment system.
24. The system of any one of claims 1 to 23, wherein the system comprises one of a mobile phone, a tablet, a computer, a smart TV, a gaming console and an in-car entertainment console.
Citation Information
Patent Citations
Automatic Creation of Thumbnails for Music Videos
US20080209484A1
Mobile internet protocol television system and method thereof
US20120124616A1
Synchronizing streaming media content across devices
US20180288470A1
Message based content synchronization on multiple devices
US20230379527A1