IP Library Granted Patent US 8,190,674
Granted Patent B2
US 8,190,674 · App. 12/722,579 · Granted May 29, 2012

Variable rate media delivery system

Assignee: Juniper Networks, 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,190,674
App. No.
12/722,579
Granted
May 29, 2012
Kind
B2
Abstract

A method and apparatus for delivering variable bit rate media files delivers media files to client systems. The media server can dynamically detect when a client can accept a different bit rate version of a media content. The media server can smoothly switch between different bit rate versions of the media content as it delivers the media content to client systems. A client system can also request different bit rate versions of a media content while it is playing the media content.

Claims (86)

1. A method comprising:

receiving, by a server device, a request for media content from a client device;

initiating, by the server device, delivery of portions of the requested media content, that are encoded for a first bit rate, to the client device;

determining, by the server device, that the delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to a delivery of portions of the requested media content that are encoded for a second bit rate, the second bit rate being different than the first bit rate;

stopping, by the server device and upon the determination that delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to delivery of portions of the requested media content that are encoded for a second bit rate, the delivery of the portions of the requested media content to the client device that are encoded for the first bit rate; and

delivering, by the server device, the portions of the requested media content, that are encoded for the second bit rate and from a point in the requested media content that the delivery of the portions of the requested media content that are encoded for the first bit rate was stopped, to the client device, the delivering the portions of the requested media content further comprising:

stopping the delivery of the portions of the requested media content, that are encoded for the first bit rate, at the end of a media portion chunk of the requested media content that is encoded for the first bit rate; and

delivering the portions of the requested media content, that are encoded for the second bit rate, from a beginning of a media portion chunk, of the requested media content that is encoded for the second bit rate, the beginning of the media portion chunk of the requested media content being encoded for the second bit rate and being sequential in time with the end of the media portion chunk of the requested media content that is encoded for the first bit rate.

2. The method of claim 1 , where determining that the delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to a delivery of portions of the requested media content that are encoded for the second bit rate further comprises:

determining, by the server device, that an available bandwidth between the server device and the client device has changed.

3. The method of claim 1 , further comprising:

receiving, by the server device, the second bit rate from the client device.

4. The method of claim 3 , further comprising:

transmitting, by the server device, available bit rates and features for the requested media content to the client device; and

receiving, by the server device, the second bit rate, based on the transmitted available bit rates, from the client device.

5. The method of claim 1 , further comprising:

storing a plurality of media content files on at least one storage device in communication with the server device;

where the at least one storage device stores the portions of the requested media content that are encoded for the first bit rate and the portions of the requested media content that are encoded for the second bit rate.

6. The method of claim 1 , further comprising:

encoding the portions of the requested media content that are encoded for the second bit rate concurrently with the portions being delivered to the client device.

7. The method of claim 1 , where delivering the portions of the requested media content, that are encoded for the second bit rate, from the point in the requested media content where delivery of the portions of the requested media content that are encoded for the first bit rate was stopped further comprises:

using an index to find a media frame in the requested media content that is encoded for the second bit rate and that is associated with a media frame corresponding to the point when the delivery of the portions of the requested media content that are encoded for the first bit rate was stopped; and

delivering the portions of the requested media content, that are encoded for the second bit rate, from the associated media frame in the requested media content that is encoded for the second bit rate.

8. The method of claim 1 , where delivering the portions of the requested media content, that are encoded for the second bit rate, to the client device further comprises:

delivering the portions of the requested media content, that are encoded for the first bit rate, as the portions of the requested media content that are encoded for the first bit rate are received from an origin server.

9. The method of claim 8 , further comprising:

queuing the portions of the requested media content that are encoded for the first bit rate from the origin server; and

encoding the queued portions into the second bit rate.

10. The method of claim 1 , where the requested media content includes audio content.

11. The method of claim 1 , where the requested media content includes video content.

12. The method of claim 1 , further comprising:

determining a bandwidth delay between the client device and the server device by using a time variable to estimate a bit rate variation associated with the delivery; and

determining, based on determining the bandwidth delay, an estimated bandwidth, using the time variable, between the client device and the server device.

13. The method of claim 12 , further comprising:

determining, using the estimated bandwidth, a change in a bandwidth between the client device and the server device; and

determining, based on the change in the bandwidth, that the delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to a delivery of portions of the requested media content that are encoded for a second bit rate, the second bit rate being different than the first bit rate.

14. An apparatus comprising:

a receiver that receives a request for media content from a client device;

a delivery system to initiate delivery of portions of a requested media content, that are encoded for a first bit rate, to the client device; and

a first determination system to:

determine that the delivery of the portions of the requested media content, that are encoded for the first bit rate, can be changed to delivery of portions of the requested media content that are encoded for a second bit rate, the second bit rate being different than the first bit rate,

the delivery system being further to:

stop, upon determination that delivery of the portions of the requested media content, that are encoded for the first bit rate, can be changed to delivery of portions of the requested media content that are encoded for a second bit rate, delivering the portions of the requested media content to the client device that are encoded for the first bit rate, and

deliver portions of the requested media content, that are encoded for the second bit rate and from a point in the requested media content that the delivery of the portions of the requested media content that are encoded for the first bit rate was stopped, to the client device, and, when delivering the portions of the requested media content that are encoded for the second bit rate, the delivery system is further to:

use an index to find a media frame in the requested media content that is encoded for the second bit rate and that is associated with a media frame corresponding to the point when the delivery of the portions of the requested media content that are encoded for the first bit rate was stopped; and

deliver the portions of the requested media content, that are encoded for the second bit rate, from the associated media frame in the requested media content that is encoded for the second bit rate.

15. The apparatus of claim 14 , further comprising:

a second determination system to:

determine that an available bandwidth between the delivery system and the client device has changed; and

notify the first determination system that the available bandwidth between the delivery system and the client device has changed.

16. The apparatus of claim 14 , where the first determination system is further to:

receive, from client device, the second bit rate.

17. The apparatus of claim 16 , where

the delivery system is further to transmit available bit rates and features for the requested media content to the client device, and

the client device selects the second bit rate from the received available bit rates.

18. The apparatus of claim 14 , further comprising:

at least one storage device to store a plurality of media content files,

the at least one storage device containing the portions of the requested media content, that are encoded for the first bit rate, and the portions of the requested media content that are encoded for the second bit rate.

19. The apparatus of claim 14 , where the delivery system encodes the portions of the requested media content that are encoded for the second bit rate concurrently with the portions of the second media content being delivered to the client device.

20. The apparatus of claim 14 , where ihe delivery system is further to:

stop the delivery of the portions of the requested media content that are encoded for the first bit rate at the end of a media portion chunk of the requested media content that is encoded for the first bit rate, and

start delivering the portions of the requested media content that are encoded for the second bit rate from the beginning of a media portion chunk, of the requested media content that is encoded for the second bit rate, where the beginning of the media portion chunk in the requested media content that is encoded for the second bit rate is sequential in time with the end of the media portion chunk of the requested media content that is encoded for the first bit rate.

21. The apparatus of claim 14 , where the delivery system is further to:

receive the portions of the requested media content that are encoded for the first bit rate from an origin server.

22. The apparatus of claim 21 , where the received portions of the requested media content that are encoded for the first bit rate that are received from the origin server are queued and encoded into the second bit rate.

23. The apparatus of claim 14 , where the requested media content is audio content.

24. The apparatus of claim 14 , where the requested media content is video content.

25. The apparatus of claim 14 , where the first determination system is further to:

determine a bandwidth delay between the client device and the delivery system by using a time variable to estimate a bit rate variation; and

determine, based on determining the bandwidth delay and using the time variable, an estimated bandwidth, using the time variable, between the client device and the delivery system.

26. The apparatus of claim 25 , where the first determination system is further to:

determine, using the estimated bandwidth, a change in a bandwidth between the client device and the delivery system; and

determine, based on the change in the bandwidth, that the delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to a delivery of portions of the requested media content that are encoded for a second bit rate, the second bit rate being different than the first bit rate.

27. A system comprising:

one or more processors; and

one or more memory devices to store one or more instructions which, when executed by the one or more processors, cause the one or more processors to:

receive, a request for a media content from a device;

initiate delivery of portions of the requested media content, that are encoded for a first bit rate, to the device;

determine that the delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to a delivery of portions of the requested media content that are encoded for a second bit rate, the second bit rate being different than the first bit rate;

stop, upon the determination that delivery of the portions of the requested media content that are encoded for the first bit rate can be changed to delivery of portions of the requested media content that are encoded for a second bit rate, the delivery of the portions of the requested media content to the client device that are encoded for the first bit rate; and

deliver the portions of the requested media content, that are encoded for the second bit rate and from a point in the requested media content that the delivery of the portions of the requested media content that are encoded for the first bit rate was stopped, to the device, and, when delivering the portions of the requested media content that are encoded for the second bit rate, the one or more processors are further to

stop the delivery of the portions of the requested media content, that are encoded for the first bit rate, at the end of a media portion chunk of the requested media content that is encoded for the first bit rate; and

deliver the portions of the requested media content, that are encoded for the second bit rate, from a beginning of a media portion chunk, of the requested media content that is encoded for the second bit rate, the beginning of the media portion chunk of the requested media content being encoded for the second bit rate and being sequential in time with the end of the media portion chunk of the requested media content that is encoded for the first bit rate.

28. The system of claim 27 , where the one or more processors are further to:

transmit available bit rates and features for the requested media content to the device; and

receive the second bit rate, based on the transmitted available bit rates, from the device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2011
From: MUKUNDAN, SUNIL; NARAYANAN, SHIVAKUMAR KARATHOZUVU
To: JUNIPER NETWORKS, INC.
Reel/Frame 027072/0352 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2011
From: ANKEENA NETWORKS, INC.
To: JUNIPER NETWORKS, INC.
Reel/Frame 026925/0618 →
Continuity (5)
Continuation 12624358 · Nov 23, 2009
Provisional Application 61117505 · Nov 24, 2008
Provisional Application 61161376 · Mar 18, 2009
Provisional Application 61166423 · Apr 3, 2009
Related Publication 20100235438A1 · Sep 16, 2010