IP Library Granted Patent US 8,635,360
Granted Patent B2
US 8,635,360 · App. 12/252,782 · Granted Jan 21, 2014

Media playback point seeking using data range requests

Inventors: Ryan Brase (Minneapolis, MN); Andrew LeMay (Minneapolis, MN); Nicholas Wormley (St. Paul, MN)
Assignee: Google Inc.
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 8,635,360
App. No.
12/252,782
Granted
Jan 21, 2014
Kind
B2
Abstract

Techniques are described for downloading user-selected segments of media objects. As described herein, a user may demand that a client device present a segment of a media object when the client device has not yet downloaded the data that represents the partial segment of the media object. The client device may then output two separate requests to a server that hosts the media object. The first request specifies a resource identifier of the media object and a first data range. Data in the first range specifies a format of data of the media object. The second request specifies the resource identifier of the media object and a second data range. Data in the second range represents the requested partial segment of the media object. When the client device receives the data, the client device uses the data in the first range to present the data in the second range.

Claims (104)

1. A method comprising:

receiving, by a device, a demand to present a segment of a media object, wherein the media object includes key frames and frames encoded based upon the key frames, the segment begins at a starting playback point of the media object after an initial playback point of the media object, and the device has not yet received any data that is within the segment when the demand to present the segment of the media object is received;

outputting, by the device, in response to receiving the demand, a request for range identification data associated with the media object, wherein the request specifies a resource identifier associated with all data in the media object and the range identification data includes:

information for identifying at least one portion of the media object that includes the metadata; and

a key frame list comprising respective byte indexes associated with key frames of the media object;

receiving, by the device, the range identification data in response to the request for range identification data;

determining, by the device, a first range of the media object based upon the information, wherein the first range includes metadata employable for converting the data in the media object within a second range from a first encoding format into a second encoding format and the data that is within the segment of the media object is within the second range;

identifying, by the device, a lower end of the second range as a first byte index associated with a first key frame closest to the starting playback point of the segment; and

identifying, by the device, an upper end of the second range as a second byte index associated with a second key frame closest to an ending playback point of the media object corresponding to an end of the segment.

2. The method of claim 1 , further comprising:

outputting, by the device, a first request that specifies the resource identifier and the first range of the media object, and a second request that specifies the resource identifier and the second range of the media object;

in response to the first request, receiving, by the device, data of the media object that is within the first range; and

in response to the second request, receiving, by the device, data of the media object that is within the second range.

3. The method of claim 2 , further comprising:

using, by the device, the data of the media object that is within the first range to convert the data of the media object within the second range from the first encoding format to the second encoding format; and

presenting, by the device, the data of the media object within the second range in the second encoding format.

4. The method of claim 2 :

wherein the outputting the first request comprises instructing one or more network interfaces to output a first HTTP request that includes, in a header of the first HTTP request, the resource identifier associated with all data in the media object and a range element that specifies the first range; and

wherein the outputting the second request comprises instructing the one or more network interfaces to output a second HTTP request that includes, in a header of the second HTTP request, the resource identifier associated with all data in the media object and a range element that specifies the second range.

5. The method of claim 1 , further comprising:

receiving, by the device, user input specifying a plurality of segments of at least one media object to include in a virtual media object;

generating, by the device, a Uniform Resource Locator for the virtual media object that includes:

respective resource identifiers associated with all data in the at least one media object; and

respective start and end points for the plurality of segments.

6. The method of claim 5 , further comprising requesting, by the device, the virtual media object using the Uniform Resource Locator.

7. The method of claim 1 , wherein the receiving the demand to present the segment of the media object comprises:

receiving a Uniform Resource Locator that indicates the segment of the media object, wherein the Uniform Resource Locator includes a domain portion and a resource identifier portion; and

extracting the resource identifier from the resource identifier portion.

8. The method of claim 1 , further comprising:

receiving, by the device, a demand to bookmark a playback point in the media object; and

in response to the receiving the demand to bookmark the playback point, generating, by the device, a Uniform Resource Locator comprising at least the resource identifier and a parameter specifying the playback point.

9. The method of claim 8 , further comprising:

instructing, by the device one or more network interfaces to send the Uniform Resource Locator to another device.

10. The method of claim 1 , wherein the media object comprises at least one of video or audio.

11. A device comprising:

a processor;

a memory communicatively coupled to processor, the memory having stored therein computer-executable instructions, comprising:

a media player configured to receive a demand to present a segment of a media object, wherein the media object includes key frames and frames encoded based upon the key frames, the segment begins at a starting a playback point of the media object after an initial playback point of the media object, and the device has not yet received any data that is within the segment when the demand to present the segment of the media object is received;

a download agent configured to:

output, in response to receiving the demand, a request for range identification data associated with the media object, wherein the request specifies a resource identifier associated with all data in the media object and wherein the range identification data includes:

information for identifying at least one portion of the media object that includes the metadata; and

a key frame list comprising respective byte indexes associated with key frames of the media object;

receive the range identification data in response to the request for range identification data;

determine a first range of the media object based upon the information, wherein the first range includes metadata employable for converting the data in the media object within a second range from a first encoding format into a second encoding format and the data that is within the segment of the media object is within the second range;

identify a lower end of the second range as a first byte index associated with a first key frame closest to the starting playback point of the segment; and

identify an upper end of the second range as a second byte index associated with a second key frame closest to an ending playback point of the media object corresponding to an end of the segment.

12. The device of claim 11 , wherein the download agent if further configured to:

in response to the media player receiving the demand, output a first request that specifies the resource identifier and the first range of the media object, and a second request that specifies the resource identifier and the second range of the media object, wherein the data that is within the segment of the media object is within the second range;

in response to the first request, receive data of the media object that is within the first range; and

in response to the second request, receive the data of the media object that is within the second range.

13. The device of claim 12 , wherein the media player is further configured to use the data of the media object that is within the first range to convert the data within the second range from the first encoding format to the second encoding format, and present the data of the media object within the second range in the second encoding format.

14. The device of claim 12 , wherein the download agent is further configured to:

instruct one or more network interfaces to output the first request as a first HTTP request that includes, in a header of the first HTTP request, the resource identifier associated with all data in the media object and a range element that specifies the first range; and

instruct the one or more network interfaces to output the second request as a second HTTP request that includes, in a header of the second HTTP request, the resource identifier associated with all data in the media object and a range element that specifies the second range.

15. The device of claim 11 , wherein the media player is further configured to:

receive user input specifying a plurality of segments of at least one media object to include in a virtual media object;

generating a Uniform Resource Locator for the virtual media object that includes:

respective resource identifiers associated with all data in the at least one media object; and

respective start and end points for the plurality of segments.

16. The device of claim 15 , wherein when the media player is further configured to request the virtual media object using the Uniform Resource Locator.

17. The device of claim 11 , wherein the media player is further configured to:

receive a Uniform Resource Locator that indicates the segment of the media object as part of the demand to present the segment of the media object, wherein the Uniform Resource Locator includes a domain portion and a resource identifier portion; and

extract the resource identifier from the resource identifier portion.

18. The device of claim 11 , wherein the media player is further configured to:

receive a demand to bookmark the playback point in the media object; and

in response to the demand to bookmark the playback point, generate a Uniform Resource Locator comprising at least the resource identifier and a parameter specifying the playback point.

19. The device of claim 18 , wherein the media player is further configured to instruct one or more network interfaces to send the Uniform Resource Locator to another device.

20. The device of claim 11 , wherein the media object comprises at least one of video or audio.

21. A non-transitory computer-readable medium having instructions stored thereon that, when executed by one or more processors of a device, cause the one or more processors to perform operations comprising:

receiving a demand to present a segment of a media object, wherein the media object includes key frames and frames encoded based upon the key frames, the segment begins at a starting playback point of the media object after an initial playback point of the media object, and the device has not yet received any data that is within the segment of the media object when the demand to present the segment of the media object is received;

outputting, in response to receiving the demand, a request for range identification data associated with the media object, wherein the request specifies a resource identifier associated with all data in the media object and the range identification data includes:

information for identifying at least one portion of the media object that includes the metadata; and

a key frame list comprising respective byte indexes associated with key frames of the media object;

receiving, the range identification data in response to the request for range identification data;

determining a first range of the media object based upon the information, wherein the first range includes metadata employable for converting the data in the media object within a second range from a first encoding format into a second encoding format and the data that is within the segment of the media object is within the second range;

identifying a lower end of the second range as a first byte index associated with a first key frame closest to the starting playback point of the segment; and

identifying an upper end of the second range as a second byte index associated with a second key frame closest to an ending playback point of the media object corresponding to an end of the segment.

22. The non-transitory computer-readable medium of claim 21 , the operations further comprising:

outputting, by the device, a first request that specifies the resource identifier and the first range of the media object, and a second request that specifies the resource identifier and the second range of the media object;

in response to the first request, receiving, by the device, data of the media object that is within the first range; and

in response to the second request, receiving, by the device, data of the media object that is within the second range.

23. The non-transitory computer-readable medium of claim 22 , the operations further comprising:

using the data of the media object that is within the first range to convert the data of the media object within the second range from the first encoding format to the second encoding format; and

presenting the data of the media object within the second range in the second encoding format.

24. A system comprising:

means for receiving a demand to present a segment of a media object, wherein the media object includes key frames and frames encoded based upon the key frames, the segment begins at a starting playback point of the media object after an initial playback point of the media object, and the device has not yet received any data that is within the segment of the media object when the demand to present the segment of the media object is received;

means for outputting, in response to receiving the demand, a request for range identification data associated with the media object, wherein the request specifies a resource identifier associated with all data in the media object and the range identification data includes:

information for identifying at least one portion of the media object that includes the metadata; and

a key frame list comprising respective byte indexes associated with key frames of the media object;

receiving, the range identification data in response to the request for range identification data;

means for determining a first range of the media object based upon the information, wherein the first range includes metadata employable for converting the data in the media object within a second range from a first encoding format into a second encoding format and the data that is within the segment of the media object is within the second range;

means for identifying a lower end of the second range as a first byte index associated with a first key frame closest to the starting playback point of the segment; and

means for identifying an upper end of the second range as a second byte index associated with a second key frame closest to an ending playback point of the media object corresponding to an end of the segment.

25. The system of claim 24 , further comprising:

means for receiving user input specifying a plurality of segments of at least one media object to include in a virtual media object;

means for generating a Uniform Resource Locator for the virtual media object that includes:

respective resource identifiers associated with all data in the at least one media object; and

respective start and end points for the plurality of segments.

26. The system of claim 24 , further comprising:

means for, in response to the demand, outputting a first request that specifies the resource identifier and the first range of the media object, and a second request that specifies the resource identifier and the second range of the media object;

means for, in response to the first request, receiving data of the media object that is within the first range; and

means for, in response to the second request, receiving the data of the segment of the media object that is within the second range.

27. The system of claim 26 , further comprising:

means for employing the data of the media object that is within the first range to convert the data of the media object within the second range from the first encoding format to the second encoding format.

Assignments (6)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044101/0299 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 12, 2012
From: SWARMCAST INC.
To: GOOGLE INC.
Reel/Frame 027848/0803 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2011
From: SWARMCAST, INC.
To: SWARMCAST INC. (BVI)
Reel/Frame 027219/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 17, 2009
From: ONION NETWORKS, KK
To: SWARMCAST, INC.
Reel/Frame 023668/0083 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2009
From: SWARMCAST, INC.
To: ONION NETWORKS, KK
Reel/Frame 022689/0403 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2009
From: BRASE, RYAN; LEMAY, ANDREW; WORMLEY, NICHOLAS
To: SWARMCAST, INC.
Reel/Frame 022067/0092 →
Continuity (2)
Provisional Application 60981164 · Oct 19, 2007
Related Publication 20090106356A1 · Apr 23, 2009