US2016080456A1PendingUtilityA1

Method and system for efficient streaming video dynamic rate adaptation

52
Assignee: ERICSSON ABPriority: Mar 23, 2009Filed: Sep 21, 2015Published: Mar 17, 2016
Est. expiryMar 23, 2029(~2.7 yrs left)· nominal 20-yr term from priority
H04L 43/0882H04L 65/4069H04L 67/02H04L 65/607H04L 69/16H04L 65/752H04L 65/61H04L 65/70H04L 67/60H04L 65/65G06Q 30/0241H04L 65/80H04L 43/0876
52
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A streaming media system employs dynamic rate adaptation. The method includes a file format compatible with legacy HTTP infrastructure to deliver media over a persistent connection. The method further includes the ability for legacy client media players to dynamically change the encoded delivery rate of the media over a persistent connection. The method provided works transparently with standard HTTP servers, requiring no modification and leverages standard media players embedded in mobile devices for seamless media delivery over wireless networks with high bandwidth fluctuations. A system is also specified for implementing a client and server in accordance with the method.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . An apparatus, comprising:
 a file encoder and a Hyper Text Transfer Protocol (HTTP) streaming server, wherein
 the HTTP streaming server accepts requests for source media, and 
 the file encoder accepts a source media and a configuration file; 
   a memory for storing output of the file encoder;   first instructions executable by one or more processors configured to cause the file encoder to:
 transcode the source file into a plurality of encodings as defined by the configuration file, 
 encrypt the plurality of resultant encodings as defined by the configuration file, 
 concatenate the plurality of resultant encrypted encodings into a single file as defined by the configuration file, 
 store the concatenated file to the memory, 
 create a rate map index file for the concatenated file, and 
 store the rate map index file into the memory; and 
   second instructions executable by the one or more processors configured to cause the HTTP streaming server to:
 select a concatenated media file whose first encoding matches that of the request, 
 create a header containing information about the current encoding and the current index into the concatenated media file, 
 pack the header into a HTTP chuck, 
 pack a segment of concatenated media file data into the HTTP chunk, 
 sending the HTTP chunk to a client, 
 estimating available bandwidth between the server and the client, and 
 changing encodings when bandwidth falls below or rises above a given set of thresholds. 
   
     
     
         2 . A method for streaming data to a client, comprising:
 encoding, by one or more processors, the data into a plurality of encodings;   combining, by the one or more processors, the plurality of encodings into a single concatenated file;   indexing, by the one or more processors, the single concatenated file, wherein the indexing results in a rate map index file comprising a plurality of rate map indicies for the plurality of encodings, the rate map indicies identify respective locations for respective encodings among the plurality of encodings in the single concatenated file; and   sending, by the one or more processors, the rate map index to a client device to enable the client to select an encoding to be retrieved and rendered at the client.   
     
     
         3 . The method of  claim 2 , wherein the data is an audio/video file including a plurality of audio/video advertisements. 
     
     
         4 . The method of  claim 2 , further comprising monitoring, by one or more processors, a Transmission Control Protocol (TCP) window occupancy to gather bandwidth availability information via a TCP window data drain rate. 
     
     
         5 . The method of  claim 4 , further comprising keeping, by one or more processors, a limited trailing history of bandwidth measurements to smooth averaging. 
     
     
         6 . The method of  claim 5 , further comprising using, by one or more processors, a weighted history to allow current fluctuations to take precedence, and using different weighted histories for transitioning to higher bit rates than for transitioning to lower bit rates. 
     
     
         7 . The method of  claim 4 , further comprising using, by one or more processors, the average bandwidth to select new encodings when bandwidth changes by comparing the average bandwidth to set high and low bandwidth thresholds. 
     
     
         8 . The method of  claim 7 , further comprising filling, by one or more processors, a next request from the client, after a rate switch is determined necessary, with a different data range than what was specified by the client or would be sequential for the client, but which corresponds to the same playout time for a different encoding, as determined by the rate switch. 
     
     
         9 . The method of  claim 8 , further comprising sending, by one or more processors, data using HTTP chunked transfer encoding. 
     
     
         10 . The method of  claim 9 , further comprising inserting, by one or more processors, metadata information into an HTTP chunk ahead of a concatenated file data. 
     
     
         11 . The method of  claim 10 , wherein the metadata information includes information about the encoding, the time position, and the concatenated file byte offset corresponding to the beginning an accompanying concatenated file data. 
     
     
         12 . The method of  claim 9 , further comprising pacing, by one or more processors, the sending of HTTP chunks to limit bandwidth usage, and selecting a paced delivery rate which exceeds the bit rate of the new encoding. 
     
     
         13 . An apparatus, comprising:
 one or more processors;   a non-transitory computer-readable storage medium comprising computer-executable instructions, when executed by the one or more processors, are configured to:
 encode the data into a plurality of encodings, 
 combine the plurality of encodings into a single concatenated file, 
 index, the single concatenated file, by generating a rate map index file comprising a plurality of rate map indicies for the plurality of encodings, the rate map indicies identify respective locations for respective locations for respective encodings among the plurality of encodings in the single concatenated file, and 
 send the rate map index to a client device to enable the client to select an encoding to be retrieved and rendered at the client. 
   
     
     
         14 . The apparatus of  claim 13 , wherein the data is an audio/video file including a plurality of audio/video advertisements. 
     
     
         15 . The apparatus of  claim 13 , wherein the computer-readable instructions are further configured to monitor a Transmission Control Protocol (TCP) window occupancy to gather bandwidth availability information via a TCP window data drain rate. 
     
     
         16 . The apparatus of  claim 15 , wherein the computer-readable instructions are further configured to keep a limited trailing history of bandwidth measurements to smooth averaging. 
     
     
         17 . The apparatus of  claim 16 , wherein the computer-readable instructions are further configured to use a weighted history to allow current fluctuations to take precedence, and using different weighted histories for transitioning to higher bit rates than for transitioning to lower bit rates. 
     
     
         18 . The apparatus of  claim 15 , wherein the computer-readable instructions are further configured to use the average bandwidth to select new encodings when bandwidth changes by comparing the average bandwidth to set high and low bandwidth thresholds. 
     
     
         19 . The apparatus of  claim 18 , wherein the computer-readable instructions are further configured to fill a next request from the client, after a rate switch is determined necessary, with a different data range than what was specified by the client or would be sequential for the client, but which corresponds to the same playout time for a different encoding, as determined by the rate switch. 
     
     
         20 . The apparatus of  claim 19 , wherein the computer-readable instructions are further configured to send data using HTTP chunked transfer encoding. 
     
     
         21 . The apparatus of  claim 20 , wherein the computer-readable instructions are further configured to insert metadata information into an HTTP chunk ahead of a concatenated file data. 
     
     
         22 . The apparatus of  claim 21 , wherein the metadata information includes information about the encoding, the time position, and the concatenated file byte offset corresponding to the beginning an accompanying concatenated file data. 
     
     
         23 . The apparatus of  claim 21 , wherein the computer-readable instruction are further configured to pace the sending of HTTP chunks to limit bandwidth usage, and selecting a paced delivery rate which exceeds the bit rate of the new encoding.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.