IP Library Granted Patent US 11,522,936
Granted Patent B2
US 11,522,936 · App. 17/245,889 · Granted Dec 6, 2022

Synchronization of live streams from web-based clients

Inventor: Nicholas Indra Santoso (San Francisco, CA)
Assignee: Salesforce, Inc.
H04L65/75H04L65/65H04L65/70
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,522,936
App. No.
17/245,889
Granted
Dec 6, 2022
Kind
B2
Abstract

Methods, apparatuses, and computer program products for synchronization of live streams from web-based clients are disclosed. The method may include transmitting, to a plurality of clients broadcasting a plurality of media streams, an instruction to reproduce a synchronization signal. The method may include receiving, via the plurality of media streams, a plurality of recordings of the synchronization signal. The method may include determining one or more delays associated with the plurality of media streams based at least in part on the plurality of recordings of the synchronization signal. The method may include adjusting a timing of one or more of the plurality of media streams to synchronize the plurality of media streams, the adjusting based at least in part on the received plurality of recordings and the determined one or more delays. The method may include re-encoding the plurality of media streams into a combined stream.

Claims (52)

1. A method for media stream synchronization at an application server, comprising:

transmitting, to a plurality of clients broadcasting a plurality of media streams, an instruction to reproduce a synchronization signal, the synchronization signal comprising a modulated pseudo-random periodic signal with an auto-correlation peak;

receiving, via the plurality of media streams, a plurality of recordings of the synchronization signal;

determining one or more delays associated with the plurality of media streams based at least in part on the plurality of recordings of the synchronization signal;

adjusting a timing of one or more of the plurality of media streams to synchronize the plurality of media streams, the adjusting based at least in part on the received plurality of recordings and the determined one or more delays; and

re-encoding the plurality of media streams into a combined stream.

2. The method of claim 1 , further comprising:

transmitting the combined stream to a streaming service.

3. The method of claim 1 , wherein determining one or more delays associated with the plurality of media streams comprises:

performing a cross-correlation operation between the synchronization signal and one of the plurality of recordings of the synchronization signal to produce a cross-correlation; and

determining a location of a peak of the cross-correlation relative to a location of the auto-correlation peak.

4. The method of claim 1 , wherein adjusting a timing of one or more of the plurality of media streams to synchronize the plurality of media streams comprises:

determining a first media stream of the plurality of media streams that comprises a first delay; and

adjusting a timing of one or more of the plurality of media streams based at least in part on the first delay of the first media stream.

5. The method of claim 4 , wherein the first delay comprises a smallest delay of the one or more delays of the plurality of media streams.

6. The method of claim 1 , further comprising:

transmitting, to the plurality of clients, an instruction to reproduce a temporal reference signal at each of the plurality of clients; and

synchronizing reproduction of the temporal reference signal at each of the plurality of clients.

7. The method of claim 6 , wherein the temporal reference signal comprises a click track, a backing track, or a combination thereof.

8. The method of claim 1 , wherein transmitting an instruction to reproduce the synchronization signal comprises:

synchronizing reproduction of the synchronization signal at each of the plurality of clients.

9. The method of claim 1 , wherein the plurality of clients are distributed across a public network and connected to the application server via the public network.

10. The method of claim 9 , wherein the one or more delays are attributable to latency present in the public network, a processing delay at each of the plurality of clients, or a combination thereof.

11. An apparatus for media stream synchronization at an application server, comprising:

a processor;

memory coupled with the processor; and

instructions stored in the memory and executable by the processor to cause the apparatus to:

transmit, to a plurality of clients broadcasting a plurality of media streams, an instruction to reproduce a synchronization signal, the synchronization signal comprising a modulated pseudo-random periodic signal with an auto-correlation peak;

receive, via the plurality of media streams, a plurality of recordings of the synchronization signal;

determine one or more delays associated with the plurality of media streams based at least in part on the plurality of recordings of the synchronization signal;

adjust a timing of one or more of the plurality of media streams to synchronize the plurality of media streams, the adjusting based at least in part on the received plurality of recordings and the determined one or more delays; and

re-encode the plurality of media streams into a combined stream.

12. The apparatus of claim 11 , wherein the instructions are further executable by the processor to cause the apparatus to:

transmit the combined stream to a streaming service.

13. The apparatus of claim 11 , wherein the instructions to determine one or more delays associated with the plurality of media streams are executable by the processor to cause the apparatus to:

perform a cross-correlation operation between the synchronization signal and one of the plurality of recordings of the synchronization signal to produce a cross-correlation; and

determine a location of a peak of the cross-correlation relative to a location of the auto-correlation peak.

14. The apparatus of claim 11 , wherein the instructions to adjust a timing of one or more of the plurality of media streams to synchronize the plurality of media streams are executable by the processor to cause the apparatus to:

determine a first media stream of the plurality of media streams that comprises a first delay; and

adjust a timing of one or more of the plurality of media streams based at least in part on the first delay of the first media stream.

15. The apparatus of claim 11 , wherein the instructions are further executable by the processor to cause the apparatus to:

transmit, to the plurality of clients, an instruction to reproduce a temporal reference signal at each of the plurality of clients; and

synchronize reproduction of the temporal reference signal at each of the plurality of clients.

16. The apparatus of claim 11 , wherein the instructions to transmit an instruction to reproduce the synchronization signal are executable by the processor to cause the apparatus to:

synchronize reproduction of the synchronization signal at each of the plurality of clients.

17. The apparatus of claim 11 , wherein the plurality of clients are distributed across a public network and connected to the application server via the public network.

18. A non-transitory computer-readable medium storing code for media stream synchronization at an application server, the code comprising instructions executable by a processor to:

transmit, to a plurality of clients broadcasting a plurality of media streams, an instruction to reproduce a synchronization signal, the synchronization signal comprising a modulated pseudo-random periodic signal with an auto-correlation peak;

receive, via the plurality of media streams, a plurality of recordings of the synchronization signal;

determine one or more delays associated with the plurality of media streams based at least in part on the plurality of recordings of the synchronization signal;

adjust a timing of one or more of the plurality of media streams to synchronize the plurality of media streams, the adjusting based at least in part on the received plurality of recordings and the determined one or more delays; and

re-encode the plurality of media streams into a combined stream.

Assignments (2)
CHANGE OF NAME Recorded Dec 18, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069717/0529 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 30, 2021
From: SANTOSO, NICHOLAS INDRA
To: SALESFORCE.COM, INC.
Reel/Frame 056101/0124 →
Continuity (1)
Related Publication 20220353313A1 · Nov 3, 2022