IP Library Granted Patent US 9,379,990
Granted Patent B2
US 9,379,990 · App. 14/254,733 · Granted Jun 28, 2016

System and method for streaming a media file from a server to a client device

Inventors: Mohammed Hichem Lamouchi (Verdun, CA); Benjamin Charles Bazso (La Prairie, CA); Steve Ian Coulombe (Sainte-Julie, CA)
Assignee: Vantrix Corporation
H04L47/29
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,379,990
App. No.
14/254,733
Granted
Jun 28, 2016
Kind
B2
Abstract

A method for streaming a media file from a server to a client device is provided. The method provides for streaming requested chunks of the media file from the server to the client device. The method determines a rate for streaming the requested chunk to the client device by using relationships between the requested chunk, the media file, current chunks, and current streaming rates. Provided a seek operation is determined, the requested chunk is streamed at a burst rate or a throttle rate. The method is especially useful for reducing latency and saving bandwidth. A corresponding system for streaming the media file from the server to the client device is also provided.

Claims (61)

1. A method for streaming a media file from a server computer to a client device, the method comprising:

using at least one hardware processor for:

(a) receiving a requested chunk of the media file from the server computer;

(b) provided one or more of the following conditions are met:

(i) a range of the requested chunk overlaps with data from a current chunk streamed to the client device;

(ii) the requested chunk is a logical successor to the current chunk;

streaming the requested chunk to the client device at a throttled rate; and

(c) otherwise, streaming the requested chunk to the client device at a burst rate for at least a predetermined burst duration, wherein the burst rate is equal to a burst factor times the throttle rate, and a value of the burst factor is from about 2 to about 10.

2. The method of claim 1 wherein a value of the predetermined burst duration is chosen from a range from about 1 msec. to about 10 sec.

3. The method of claim 1 , further comprising streaming a remaining part of the requested chunk to the client device at the throttled rate after the predetermined burst duration.

4. The method of claim 1 , wherein the step (c) further comprises streaming the requested chunk at the burst rate provided the range of the requested chunk precedes in the media file with respect to the current chunk.

5. The method of claim 1 , wherein the step (c) further comprises streaming the requested chunk at the burst rate provided the range of the requested chunk includes an entire media file.

6. The method of claim 1 wherein a type of protocol used for streaming the media file from the server to the client device is chosen from a list consisting of HTTP (Hyper-Text Transfer Protocol), HTTPS (HTTP Secure), Bluetooth, MPEG-DASH (Motion Picture Expert Group-Dynamic Adaptive Streaming over HTTP) and HLS (HTTP Live Streaming).

7. The method as claimed in claim 1 wherein the media file comprises an audio track and a video track; and

receiving the requested chunk further comprises:

receiving a requested chunk from the audio track of the media file; and

receiving a requested chunk from the video track of the media file.

8. The method as claimed in claim 7 further comprising:

asynchronously receiving the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file; and

synchronously streaming the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file to the client device.

9. The method as claimed in claim 7 further comprising:

synchronously receiving the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file; and

synchronously streaming the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file to the client device.

10. A system configured to stream a media file from a server computer to a client device, the system comprising:

a processor;

a memory device comprising computer readable instructions stored thereon for execution by the processor, forming:

a receiving chunk request module configured to receive a requested chunk of the media file from the server computer;

a data streamed overlap detection module configured to determine that a range of the requested chunk overlaps with data from a current chunk streamed to the client device;

a logical successor in media file detection module configured to detect that the requested chunk is a logical successor to the current chunk; and

a chunk streaming module configured to:

stream the requested chunk to the client device at a throttled rate provided that one or more of the following conditions are met:

(i) the range of the requested chunk overlaps with data from a current chunk streamed to the client device;

(ii) the requested chunk is a logical successor to the current chunk;

otherwise stream the requested chunk to the client device at a burst rate for at least a predetermined burst duration, wherein the burst rate is equal to a burst factor times the throttle rate, and a value of the burst factor is from about 2 to about 10.

11. The system of claim 10 wherein a value of the predetermined burst duration is chosen from a range from about 1 msec. to about 10 sec.

12. The system of claim 10 , further comprising a burst duration module configured to determine that the requested chunk has been streamed to the client device for the predetermined burst duration.

13. The system of claim 10 , further comprising a back in media file detection module for detecting that the requested chunk precedes in the media file with respect to the current chunk; and

wherein the chunk streaming module is further configured to stream the requested chunk at the burst rate provided the range of the requested chunk precedes in the media file with respect to the current chunk.

14. The system of claim 10 , further comprising an entire media file detection module for detecting that the range of the requested chunk includes an entire media file, and wherein:

the chunk streaming module is further configured to stream the requested chunk at the burst rate provided the range of the requested chunk includes the entire media file.

15. The system as claimed in claim 10 wherein the media file comprises an audio track and a video track; and

the receiving chunk request module is further configured to asynchronously receive:

a requested chunk from the audio track of the media file; and

a requested chunk from the video track of the media file.

16. The system as claimed in claim 15 further comprising a track synchronization module configured to synchronize streaming of the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file to the client device.

17. The system as claimed in claim 10 wherein the media file comprises an audio track and a video track; and

the receiving chunk request module is further configured to synchronously receive:

a requested chunk from the audio track of the media file; and

a requested chunk from the video track of the media file.

18. The system as claimed in claim 17 further comprising a track synchronization module configured to synchronize streaming of the requested chunk from the audio track of the media file and the requested chunk from the video track of the media file to the client device.

19. The system of claim 10 wherein a type of protocol used for streaming the media file from the server to the client device is chosen from a list consisting of HTTP (Hyper-Text Transfer Protocol), HTTPS (HTTP Secure), Bluetooth, MPEG-DASH (Motion Picture Expert Group-Dynamic Adaptive Streaming over HTTP) and HLS (HTTP Live Streaming).

20. A system for streaming a media file from a server computer to a client device, comprising:

a processor;

a memory device having computer readable instructions stored thereon for execution by the processor, causing the processor to:

(a) receive a requested chunk of the media file from the server computer;

(b) provided one or more of the following conditions are met:

(i) a range of the requested chunk overlaps with data from a current chunk streamed to the client device;

(ii) the requested chunk is a logical successor to the current chunk;

stream the requested chunk to the client device at a throttled rate; and

(c) otherwise, stream the requested chunk to the client device at a burst rate for at least a predetermined burst duration, wherein the burst rate is equal to a burst factor times the throttle rate, and a value of the burst factor is from about 2 to about 10.

21. The system of claim 20 wherein a value of the predetermined burst duration is chosen from about 1 msec. to about 10 sec.

Assignments (3)
CHANGE OF COMPANY ADDRESS Recorded Nov 26, 2019
From: VANTRIX CORPORATION
To: VANTRIX CORPORATION
Reel/Frame 051136/0148 →
CHANGE OF ADDRESS Recorded Mar 1, 2017
From: VANTRIX CORPORATION
To: VANTRIX CORPORATION
Reel/Frame 041845/0579 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 16, 2014
From: LAMOUCHI, MOHAMMED HICHEM; BAZSO, BANJAMIN CHARLES; COULOMBE, STEVE IAN
To: VANTRIX CORPORATION
Reel/Frame 032691/0992 →
Continuity (2)
Provisional Application 61827718 · May 27, 2013
Related Publication 20140351450A1 · Nov 27, 2014