IP Library Granted Patent US 10,798,440
Granted Patent B2
US 10,798,440 · App. 16/553,041 · Granted Oct 6, 2020

Methods and systems for synchronizing data streams across multiple client devices

Inventors: Madhu Kishore Kalva (Foster City, CA); Peter Aubrey Bartholomew Griess (Dallas, TX); Yichuan Huang (San Jose, CA)
Assignee: FACEBOOK, INC.
H04N21/4307H04L65/604H04L65/608
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 10,798,440
App. No.
16/553,041
Granted
Oct 6, 2020
Kind
B2
Abstract

A server system includes one or more processors, a clock, and memory. The memory stores one or more programs configured for execution by the one or more processors. The server system receives a program manifest (e.g., a playlist) for a video from a content delivery network. The video includes a plurality of video segments. The server system parses the program manifest to identify a timeline for the video, then determines the current playback position for the video and a corresponding initial timestamp according to the clock. The server system periodically updates the current playback position for the video according to the clock and the initial timestamp. Over a span of time the server system receives requests from a plurality of client devices to view the video. For each request from a respective client device, the server system sends the current playback position to the respective client device.

Claims (42)

1. A server system, comprising:

one or more processors;

a clock; and

memory storing one or more programs configured for execution by the one or more processors, the one or more programs comprising instructions for:

receiving a program manifest for a video from a content delivery network, wherein the video includes a plurality of video segments;

parsing the program manifest to identify a timeline for the video;

determining a current playback position for the video and a corresponding initial timestamp according to the clock;

periodically updating the current playback position for the video according to the clock and the initial timestamp;

receiving, over a span of time, requests from a plurality of client devices to view the video; and

for each request from a respective client device, sending the current playback position to the respective client device.

2. The server system of claim 1 , further comprising, for each request from a respective client device, sending a plurality of playback offset options, each corresponding to a respective bitrate based on network bandwidth available at the respective client device, wherein each playback offset option specifies a respective current playback position.

3. The server system of claim 1 , wherein the timeline for the video includes a starting time specified in the program manifest.

4. The server system of claim 3 , wherein the timeline for the video includes an ending time that equals the starting time plus a sum of time lengths of the plurality of video segments.

5. The server system of claim 1 , wherein the timeline for the video includes a starting time of 0 in accordance with a determination that the program manifest does not specify a starting time.

6. The server system of claim 5 , wherein the timeline for the video includes an ending time that equals a sum of time lengths of the plurality of video segments.

7. The server system of claim 1 , wherein the current playback position is specified as an offset from a starting time of the video.

8. The server system of claim 1 , wherein the current playback position is specified as a time that falls within a range specified by the timeline of the video.

9. The server system of claim 1 , wherein the plurality of video segments comprise a static video stream.

10. The server system of claim 1 , wherein the plurality of video segments comprise a live video stream.

11. The server system of claim 1 , wherein the program manifest includes a respective uniform resource locator (URL) corresponding to each video segment.

12. A method for synchronizing video playback, comprising:

at a server having one or more processors, a clock, and memory storing one or more programs configured for execution by the one or more processors:

receiving a playlist for a video from a content delivery network, wherein the video includes a plurality of video segments;

parsing the playlist to identify a timeline for the video;

determining a current playback position for the video and a corresponding initial timestamp according to the clock;

periodically updating the current playback position for the video according to the clock and the initial timestamp;

receiving, over a span of time, requests from a plurality of client devices to view the video; and

for each request from a respective client device, sending the current playback position to the respective client device.

13. The method of claim 12 , further comprising, for each request from a respective client device, sending a plurality of playback offset options, each corresponding to a respective bitrate based on network bandwidth available at the respective client device, wherein each playback offset option specifies a respective current playback position.

14. The method of claim 12 , wherein the timeline for the video includes a starting time specified in the playlist.

15. The method of claim 14 , wherein the timeline for the video includes an ending time that equals the starting time plus a sum of time lengths of the plurality of video segments.

16. The method of claim 12 , wherein the timeline for the video includes a starting time of 0 in accordance with a determination that the playlist does not specify a starting time.

17. The method of claim 16 , wherein the timeline for the video includes an ending time that equals a sum of time lengths of the plurality of video segments.

18. The method of claim 12 , wherein the current playback position is specified as an offset from a starting time of the video.

19. The method of claim 12 , wherein the current playback position is specified as a time that falls within a range specified by the timeline of the video.

20. A non-transitory computer-readable storage medium storing one or more programs configured for execution by one or more processors of a server system, the one or more programs including instructions for:

receiving a program manifest for a video from a content delivery network, wherein the video includes a plurality of video segments;

parsing the program manifest to identify a timeline for the video;

determining a current playback position for the video and a corresponding initial timestamp according to a clock of the server system;

periodically updating the current playback position for the video according to the clock and the initial timestamp;

receiving, over a span of time, requests from a plurality of client devices to view the video; and

for each request from a respective client device, sending the current playback position to the respective client device.

Assignments (1)
CHANGE OF NAME Recorded Dec 16, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058520/0535 →