IP Library › Granted Patent US 11,006,168
Granted Patent B2
US 11,006,168 · App. 16/712,740 · Granted May 11, 2021

Synchronizing internet (“over the top”) video streams for simultaneous feedback

Inventors: Seth Madison (San Francisco, CA); Ginger Wong (Santa Clara, CA); Benjamin Paul Clemens (Berkeley, CA); Benjamin Avery Chambers (San Francisco, CA)
Assignee: PHILO, INC.
H04N21/4307H04N21/242H04N21/433H04N21/47217
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,006,168
App. No.
16/712,740
Granted
May 11, 2021
Kind
B2
Abstract

Techniques are described for synchronizing internet (“over the top”) video streams for simultaneous playback. In particular, techniques are described to improve the performance and accuracy of stream synchronization among participant media player applications playing a same video content item, for example, as part of a “watch party.” The techniques can be further augmented to allow interaction between the users watching the presentation, e.g., by sending messages to other users or by annotating the video presentation with comments, and can be further used to enable “cross device control,” a feature that enables multiple users, or a single user with multiple devices, to control a shared video playback session on another device. For example, two users watching a streaming video on a set-top box connected to a TV in their living room could each use an app on their respective smart phones to pause/play/seek the playback session, providing a more collaborative experience.

Claims (28)

1. An article of manufacture comprising:

a non-transitory machine-readable storage medium that provides instructions that, when executed by a machine, will cause the machine to perform operations comprising:

submitting from the machine to a centralized system a request to join a watch party as one of a set of one or more current participants, wherein the watch party was created responsive to communications between another one of the set of current participants and the centralized system, wherein the centralized system transmits through a content delivery network to each of the set of current participants of the watch party video segment files to playback a video via an adaptive bit rate protocol;

receiving at the machine information from the centralized system indicating a reference position and a reference time, wherein the reference position is a time indication of a location within the video at which all of the set of one or more participants in the watch party were supposed to be playing back the video at the reference time;

determining a seek position based on the reference position, a first current time, the reference time, and a seek delay, wherein the seek delay indicates a prediction of an amount of time required to download enough of the video segment files of the video to begin playback, and wherein the seek position is a time indication of a location within the video at which all participants in the watch party are expected to be playing back the video when the participant is ready to start playback of the video;

causing the machine to start downloading the video segment files to begin playback of the video at the seek position;

determining the video segments files to begin playback have been downloaded at a second current time;

determining a current position of the watch party in the video at the second current time assuming uninterrupted playback by the others in the set of one or more participants, wherein the current position of the watch party is a time indication of a location within the video at which all participants in the watch party are expected to be playing back the video at a current time;

determining that the seek position is outside of a first threshold amount of time of the current position of the watch party in the video; and

causing the machine to begin playback of the video at the seek position at a different playback rate than that of the watch party until a current position of the participant in the video is within the first threshold amount of time of the current position of the watch party in the video at the current time, wherein the different playback rate is chosen so that the current position of the participant in the video gradually comes within the first threshold amount of time of the current position of the watch party in the video, wherein the current position of the participant is a time indication of a location within the video at which the participant is playing back the video.

2. The non-transitory machine-readable storage medium of claim 1 , wherein the different playback rate is chosen so that the current position of the participant in the video gradually comes within the first threshold amount of time of the current position of the watch party in the video.

3. The non-transitory machine-readable storage medium of claim 1 , wherein the operations further comprise a preliminary operation of: submitting from the machine to the centralized system a request to join the watch party as one of the set of one or more current participants.

4. The non-transitory machine-readable storage medium of claim 1 , wherein the operations further comprise determining that the seek position is within a second threshold amount of time of the current position of the watch party in the video at the second current time.

5. The non-transitory machine-readable storage medium of claim 1 , wherein the seek delay was calculated based on one or more of: network conditions, processor load, data from previous download of video segment files, information indicating how much data is currently buffered by the machine, how much data is to be buffered to start playback, and/or historical data from previous seeks or buffers.

6. The non-transitory machine-readable storage medium of claim 1 , wherein the seek delay was calculated based on: an exponential weighted moving average of historical buffering delay times recorded by the participant, or by dividing an amount of data to download by an estimated download rate, wherein the estimated download rate is calculated by observing network conditions during previous seeks and video startups.

7. The non-transitory machine-readable storage medium of claim 1 , wherein the current times are based on Coordinated Universal Time (UTC).

8. The non-transitory machine-readable storage medium of claim 1 , wherein the operations further comprise:

receiving input indicating a request to seek to a new position in the video; and

sending a state update request to the centralized system to update the current position of the watch party in the video, the state update request identifying a playback state, the new position in the video, a reference time at which the new position was measured.

9. The non-transitory machine-readable storage medium of claim 1 , wherein the operations further comprise:

receiving input indicating a request to seek to a new position in the video; and

submitting from the machine to the centralized system a request to:

change the current position of the watch party to a reference position at a reference time, wherein the reference position is earlier in the video than the input seek position by a prediction of an amount of time required to download enough of the video segment files of the video to begin playback by the machine; and

communicate the change to the others in the set of current participants to cause them to seek to positions in the video such that the set of current participants will again all be playing back the video at the current position of the watch party at the current time.

10. The non-transitory machine-readable storage medium of claim 1 , wherein the information from which the machine determines the current position of the watch party in a video at the current time is sent to the machine responsive to another participant of the set of one or more current participants performing a seek in the content playback.

11. The non-transitory machine-readable storage medium of claim 1 , wherein the operations further comprise:

determining a difference between a current Coordinated Universal Time (UTC) time of the machine and a current UTC time of the centralized system exceeds a threshold; and

calculating an estimated clock skew offset used by the machine to determine the seek position.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2019
From: MADISON, SETH; WONG, GINGER; CLEMENS, BENJAMIN PAUL; CHAMBERS, BENJAMIN AVERY
To: PHILO, INC.
Reel/Frame 051298/0140 →
Continuity (3)
Division 16236126 · Dec 28, 2018
Provisional Application 62748332 · Oct 19, 2018
Related Publication 20200162784A1 · May 21, 2020