IP Library Granted Patent US 9,538,142
Granted Patent B2
US 9,538,142 · App. 12/365,722 · Granted Jan 3, 2017

Server-side support for seamless rewind and playback of video streaming

Inventors: Lei Zheng (Saratoga, CA); Christopher Dylan Bentzel (Quincy, MA); Kyle Kakligian (Sunnyvale, CA)
Assignee: Google Inc.
H04N7/17318H04N5/76H04N21/2387H04N21/23106H04N21/6581H04N21/6587H04N21/8455
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 9,538,142
App. No.
12/365,722
Granted
Jan 3, 2017
Kind
B2
Abstract

A system and method provide server side support for seamless, scalable rewind and playback of a video stream. A video stream is stored and indexed in a network storage place. A video stream can be indexed at frame level where each intra frame of the video stream has an index indicating the file offset and the time stamp of the intra frame in the video stream. A user request for rewinding of a video stream while the video stream is being broadcast is processed by extracting the rewinding time requirement from the user request. The extracted rewinding time value is used to calculate the requested file offset. The video stream starting at the requested time is retrieved and played back according to the user request. The system also provides server side support for seamless rewinding of a video stream and scalable system performance across multiple streaming data centers.

Claims (46)

1. A method for providing rewinding of a broadcast video stream received by a client, the method comprising:

receiving, by a data center dispatch server, from the client a request for the broadcast video stream;

selecting, by the data center dispatch server, one of a plurality of streaming data centers to service the request based on a plurality of distribution criteria, the plurality of the distribution criteria including popularity of the requested video stream determined based on a number of users subscribing to the requested video stream exceeding a threshold value, the selected streaming data center having local indexing information of video streams stored at a local storage system of the selected streaming data center and a copy of global indexing information shared by the plurality of streaming data centers;

determining, by the selected streaming data center, that the request is for rewinding the requested video stream, the request including a stream identification of the requested video stream and timing information indicating a portion of the requested video stream to rewind;

responsive to the selected streaming data center having the requested video stream stored at the local storage system of the selected streaming data center based on the local indexing information stored at the selected streaming data center, retrieving, by the selected streaming data center, the requested video stream from the local storage system of the selected streaming data center;

responsive to the selected streaming data center not having the requested video stream stored at the local storage system of the selected streaming data center:

determining, by the selected streaming data center, which streaming data center of the plurality of streaming data centers has the requested video stream based on the copy of global indexing information stored at the selected streaming data center; and

obtaining, by the selected streaming data center, the requested video stream from the determined streaming data center and storing the requested video stream in the local storage system of the selected streaming data center different from the determined streaming data center;

determining, by the selected streaming data center, a file offset into the requested video stream corresponding to the timing information in the request, the file offset being determined from an index file that associates file offsets in the requested video stream with time information for the requested video stream, the index file being stored in the local storage system of the selected streaming data center;

streaming, by the selected streaming data center, to the client the requested video stream starting from the determined file offset; and

updating, by the selected streaming data center, the global indexing information shared by the plurality of streaming data centers.

2. The method of claim 1 , further comprising receiving, by the selected streaming data center, a video stream from a video source.

3. The method of claim 2 , wherein the video source is a live feed.

4. The method of claim 2 , wherein the video stream is a recorded video stream.

5. The method of claim 1 , further comprising archiving the requested video stream in a network storage system, wherein the archived video stream is identified by the stream identification.

6. The method of claim 5 , wherein archiving the requested video stream further comprises storing an index for each intra frame of the requested video stream, wherein the index includes the stream identification, a file offset indicating where the intra frame is located in the requested video stream, and a time stamp indicating when the intra frame starts playing in the requested video stream.

7. The method of claim 6 , wherein archiving the requested video stream further comprises storing an index for each first intra frame of a group of pictures of the requested video stream, wherein the index includes the stream identification, a file offset and a time stamp.

8. The method of claim 1 , wherein determining the file offset corresponding to the timing information in the request further comprises selecting an index which has a time stamp closest to a time value in the timing information.

9. The method of claim 8 , wherein streaming the requested video stream further comprises retrieving an intra frame whose file offset corresponds to the file offset of the selected index.

10. The method of claim 1 , further comprising:

selecting, by the data center dispatch server, a streaming data center from the plurality of the streaming data centers to store a plurality of unpopular video streams, each of the unpopular video streams having a number of subscribers below the threshold value.

11. A computer system for providing rewinding of a broadcast video stream received by a client, comprising:

a data center dispatch server including a processor; and

a plurality of streaming data centers, each of the plurality of streaming data centers including a corresponding processor and a local storage system,

wherein the processor of the data center dispatch server is configured to:

receive from the client a request for the broadcast video stream, and

select one of the plurality of streaming data centers to service the request based on a plurality of distribution criteria, the plurality of the distribution criteria including popularity of the requested video stream determined based on a number of users subscribing to the requested video stream exceeding a threshold value, the selected streaming data center having local indexing information of video streams stored at the local storage system of the selected streaming data center and a copy of global indexing information shared by the plurality of streaming data centers,

wherein a processor of the selected streaming data center is configured to:

determine that the request is for rewinding the requested video stream, the request including a stream identification of the requested video stream and timing information indicating a portion of the requested video stream to rewind,

responsive to the selected streaming data center having the requested video stream stored at the local storage system of the selected streaming data center based on the local indexing information stored at the selected streaming data center,

retrieve the requested video stream from the local storage system of the selected streaming data center,

responsive to the selected streaming data center not having the requested video stream stored at the local storage system of the selected streaming data center:

determine which streaming data center of the plurality of streaming data centers has the requested video stream based on the copy of global indexing information stored at the selected streaming data center, and

obtain the requested video stream from the determined streaming data center and store the requested video stream in the local storage system of the selected streaming data center different from the determined streaming data center,

determine a file offset into the requested video stream corresponding to the timing information in the request, the file offset into the requested video stream being determined from an index file that associates file offsets in the requested video stream with time information for the requested video stream, the index file being stored in the local storage system of the selected streaming data center,

stream the requested video stream to the client starting from the determined file offset, and

update the global indexing information shared by the plurality of streaming data centers.

12. The system of claim 11 , wherein the selected streaming data center includes an incoming streaming server configured to receive a video stream from a video source.

13. The system of claim 12 , wherein the video source is a live feed.

14. The system of claim 12 , wherein the video stream is a recorded video stream.

15. The system of claim 11 , wherein the processor of the selected streaming data center is further configured to archive the requested video stream in a network storage system, wherein the archived video stream is identified by the stream identification.

16. The system of claim 15 , wherein the processor of the selected streaming data center is further configured to archive an index for each intra frame of the requested video stream, wherein the index includes the stream identification, a file offset indicating where the intra frame is located in the requested video stream, and a time stamp indicating when the intra frame starts playing in the requested video stream.

17. The system of claim 16 , wherein the processor of the selected streaming data center is further configured to store an index for each first intra frame of a group of pictures of the requested video stream, wherein the index includes the stream identification, a file offset and a time stamp.

18. The system of claim 11 , wherein the processor of the selected streaming data center is further configured to select an index which has a time stamp closest to a time value in the timing information.

19. The system of claim 18 , wherein the processor of the selected streaming data center is further configured to retrieve an intra frame whose file offset corresponds to the file offset of the selected index.

20. The system of claim 11 , wherein the processor of the data center dispatch server is further configured to: select a streaming data center from the plurality of the streaming data centers to store a plurality of unpopular video streams, each of the unpopular video streams having a number of subscribers below the threshold value.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2009
From: ZHENG, LEI; BENTZEL, CHRISTOPHER DYLAN; KAKLIGIAN, KYLE
To: GOOGLE INC.
Reel/Frame 022207/0229 →
Continuity (1)
Related Publication 20100195974A1 · Aug 5, 2010