# US 2010/0169458 A1 · Real-Time or Near Real-Time Streaming

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2010/0169458 A1
- Document ID: US20100169458A1
- Status: Published application
- Kind: A1
- Application number: 12/479,690
- Filed: 2009-06-05
- Published: 2010-07-01
- Earliest claimed: 2008-12-31
- Inventors: David Biderman; William May, JR.; Alan Tseng; Roger Pantos; James David Batson
- Web page: https://patentgrep.com/patent/US20100169458A1

## CPC

- G06F 16/954: Navigation, e.g. using categorised browsing
- H04L 65/756: adapting media to device capabilities
- H04L 47/34: ensuring sequence integrity, e.g. using sequence numbers
- H04L 65/1069: Session establishment or de-establishment
- H04L 65/60: Network streaming of media packets
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- H04N 7/17318: {Direct or substantially direct transmission and handling of requests}
- H04N 21/234327: {by decomposing into layers, e.g. base layer and one or more enhancement layers}
- H04N 21/234363: {by altering the spatial resolution, e.g. for clients with a lower screen resolution}
- H04N 21/26258: {for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list (retrieval of multimedia data based on playlists G06F16/40)}
- H04N 21/4394: {involving operations for analysing the audio stream, e.g. detecting features or characteristics in audio streams (arrangements characterised by components specially adapted for monitoring, identification or recognition of audio in broadcast systems H04H60/58)}
- H04N 21/44004: {involving video buffer management, e.g. video decoder buffer or video display buffer}
- H04N 21/44016: {involving splicing one content stream with another content stream, e.g. for substituting a video clip}
- H04N 21/44209: {Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network (arrangements for maintenance or administration in data switching networks involving bandwidth and capacity management H04L41/0896)}
- H04N 21/8456: {by decomposing the content in the time domain, e.g. in time segments}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION

## Abstract

Methods and apparatuses for real-time or near real-time streaming of content using transfer protocols such as an HTTP compliant protocol. In one embodiment, a method includes dividing a stream of data representing the contiguous time based content of a program (e.g. a live video broadcast), into a plurality of distinct media files, and generating a playlist file having a plurality of tags and Universal Resource Indicators (URIs) indicating an order of presentation of the plurality of distinct media files. The plurality of media files and the playlist file can be made available for transmission to a client device which can retrieve the media files using the playlist file.

## Claims

### Claim 1

A method comprising:
dividing a stream of data into multiple media files each containing a portion of the stream of data on the server device, the multiple media files to be stored as individual files in a memory on the server device in a non-streaming transfer protocol compliant format; and
generating a playlist file having a plurality of tags and a plurality of Universal Resource Indicators (URIs), the plurality of URIs indicating an ordering of the multiple media files to recreate the stream of data.

### Claim 2 (depends on 1)

The method of claim 1 wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol and wherein the method further comprises:
transmitting the playlist file to a client device using the non-streaming transfer protocol; and
transferring one or more of the multiple media files to the client device using the non-streaming transfer protocol in response to requests from the client device utilizing one or more of the plurality of URIs.

### Claim 3 (depends on 1)

The method of claim 1 further comprising:
generating an updated playlist file corresponding to changes to the multiple media files, the updated playlist file comprising a plurality of updated URIs indicating an ordering of the updated multiple media files to recreate the stream of data.

### Claim 4 (depends on 3)

The method of claim 3 wherein the changes to the multiple media files comprises at least one of: (a) additions of one or more media files and the updated playlist file includes URIs to the multiple media files and the added one or more media files; (b) modifications to the one or more media files and the updated playlist file comprises URIs to the multiple media files, and one or more of the tags in the plurality of tags is updated to reflect the modifications to the one or more media files: or (c) removal of one or more selected media files from the multiple media files and the addition of further media files to result in one or more remaining media files and the updated playlist file comprises URIs to the remaining media files.

### Claim 5 (depends on 4)

The method of claim 4 wherein the updated playlist is generated at the expiration of a selected period of time based on an attribute of one of the tags in the playlist file.

### Claim 6 (depends on 1)

The method of claim 1 further comprising:
determining an approximate duration of a next media file to be added to the playlist file:
causing the playlist file to include a tag indicating the approximate duration.

### Claim 7 (depends on 1)

The method of claim 1 further comprising:
determining an encryption method to be applied to the multiple media files;
causing the playlist file to include a tag to indicate the encryption method to be applied to the multiple media files and wherein the tag comprises a URI to a security key.

### Claim 8 (depends on 1)

The method of claim 1 further comprising:
determining a time and/or data associated with a beginning of a next media file; and
causing the playlist to include a tag indicating the time and/or date associated with the beginning of the next media file.

### Claim 9 (depends on 1)

The method of claim 1 further comprising:
determining whether a client device to receive the media files is authorized to store the media files after playback;
causing the playlist to include a tag that indicates whether the client device is authorized to store the media files after playback.

### Claim 10 (depends on 1)

The method of claim 1 further comprising:
determining whether additional URIs corresponding to additional media files will be added to the playlist file;
causing the playlist to include a tag that indicates whether additional URIs corresponding to additional media files will be added to the playlist file wherein the tag comprises an EXT-X-ENDLIST tag.

### Claim 11 (depends on 1)

The method of claim 1 further comprising:
determining whether a next URI in the playlist file indicates another playlist file;
causing the playlist to include a tag to indicate that the next URI in the playlist indicates another playlist wherein the tag indicates a bandwidth associated with the another playlist.

### Claim 12

An article comprising a computer-readable medium having stored thereon executable instructions that, when executed, cause one or more processors to:
divide a stream of data into multiple media files each containing a portion of the stream of data on the server device, the multiple media files to be stored as individual files in a memory on the server device in a non-streaming transfer protocol compliant format; and
generate a playlist file having a plurality of tags and a plurality of Universal Resource Indicators (URIs), the plurality of URIs indicating an ordering of the multiple media files to recreate the stream of data.

### Claim 13 (depends on 12)

The article of claim 12 wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol and wherein further instructions cause the one or more processors to:
transmit the playlist file to a client device using the non-streaming transfer protocol;
transfer one or more of the multiple media files to the client device using the non-streaming transfer protocol in response to requests from the client device utilizing one or more of the plurality of URIs.

### Claim 14 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
generate an updated playlist corresponding to chances to the multiple media files, the updated playlist comprising a plurality of updated URIs indicating an ordering of the updated multiple media files to recreate the stream of data.

### Claim 15 (depends on 14)

The article of claim 14 wherein the changes to the multiple media files comprises at least one of: (a) additions of one or more media files and the updated playlist file includes URIs to the multiple media files and the added one or more media files; (b) modifications to the one or more media files and the updated playlist file comprises URIs to the multiple media files, and one or more of the tags in the plurality of tags is updated to reflect the modifications to the one or more media files; or (c) removal of one or more selected media files from the multiple media files and the addition of further media files to result in one or more remaining media files and the updated playlist file comprises URIs to the remaining media files.

### Claim 16 (depends on 14)

The article of claim 14 wherein the updated playlist is generated at the expiration of a selected period of time based on an attribute of one of the tags in the playlist file.

### Claim 17 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine an approximate duration of a next media file to be added to the playlist file;
cause the playlist file to include a tag indicating the approximate duration.

### Claim 18 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine an encryption method to be applied to the multiple media files;
cause the playlist file to include a tag to indicate the encryption method to be applied to the multiple media files, and wherein the tag comprises a URI to a security key.

### Claim 19 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine a time and/or data associated with a beginning of a next media file; and
cause the playlist to include a tag indicating the time and/or date associated with the beginning of the next media file.

### Claim 20 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine whether a client device to receive the media files is authorized to store the media files after playback;
cause the playlist to include a tag that indicates whether the client device is authorized to store the media files after playback.

### Claim 21 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine whether additional URIs corresponding to additional media files will be added to the playlist file;
cause the playlist to include a tag that indicates whether additional URIs corresponding to additional media files will be added to the playlist file wherein the tag comprises an EXT-X-ENDLIST tag.

### Claim 22 (depends on 12)

The article of claim 12 further comprising instructions that, when executed, cause the one or more processors to:
determine whether a next URI in the playlist file indicates another playlist file;
cause the playlist to include a tag to indicate that the next URI in the playlist indicates another playlist wherein the tag indicates a bandwidth associated with the another playlist.

### Claim 23

A method comprising:
requesting, with a client device, a playlist file over a network using a non-streaming transfer protocol;
receiving, in response to the request and with the client device, the playlist file from a server device, the playlist file having Universal Resource Indicators (URIs) indicating a plurality of media files and a plurality of tags having parameters related to playback of the plurality of media files;
requesting one or more of the media files in an order indicated by the playlist file;
receiving the one or more requested media files over the network using the non-streaming transfer protocol.

### Claim 24 (depends on 23)

The method of claim 23 further comprising:
generating an audio and/or video output representing the stream of content by playing the media files with the client device in the order indicated by the playlist file, and wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol.

### Claim 25 (depends on 23)

The method of claim 23 further comprising:
sending repeatedly a subsequent request for the playlist file to the server device;
receiving an updated playlist file in response to the subsequent request;
using the updated playlist file received in response to the subsequent request.

### Claim 26 (depends on 25)

The method of claim 25 further comprising:
comparing the playlist file, received in response to the request, and the updated playlist file;
determining whether the updated playlist file received in response to the subsequent request includes a URI of a last loaded media file;
halting playback if the URI of the last loaded media file is not included in the updated playlist file;
utilizing a tag in the updated playlist file received in response to the subsequent request to access a next media file.

### Claim 27 (depends on 26)

The method of claim 26 wherein the tag comprises an EXT-X-MEDIA-SEQUENCE tag.

### Claim 28 (depends on 26)

The method of claim 26 further comprising:
sending a second subsequent request for the playlist file to the server device after a first period of time if the playlists differ; and
sending the second subsequent request for the playlist file to the server device after a second period of time if the playlists do not differ, wherein the first period of time is based on a first multiple of attribute of one of the tags in the playlist file and the second period of time is based on a second multiple of the attribute.

### Claim 29 (depends on 23)

The method of claim 23 further comprising:
determining, with the client device, whether the playlist file includes a tag indicating whether additional URIs corresponding to media files may be added to the playlist file;
selecting, with the client device, any one of the URIs from the playback file if the tag indicates that additional URIs may not be added to the playlist file or selecting any one of the URIs from the playlist file except for the second-to-last URI and the last URI if the tag indicates that additional URIs may be added to the playlist file;
accessing the media files in an order indicated by the URIs in the playlist file starting with the selected URI and wherein the tag indicates the end of a program presented through the media files.

### Claim 30 (depends on 23)

The method of claim 23 further comprising:
determining, with the client device, whether a tag in the playlist file indicates whether the client device is authorized to store media files after playback;
storing the media files on the client device after playback if the tag indicates that the client is authorized to store the media files after playback;
preventing access to the media files after playback if the tag indicates that the client is not authorized to store the media files after playback.

### Claim 31

An article comprising a computer-readable medium having stored thereon instructions that, when executed, cause one or more processors to:
request, with a client device, a playlist file from a server device over a network using a non-streaming transfer protocol;
receive, in response to the request and with the client device, the playlist file from the server device, the playlist file having Universal Resource Indicators (URIs) indicating a plurality of media files and a plurality of tags having parameters related to playback of the plurality of media files;
request one or more of the media files in an order indicated by the playlist file;
receive the one or more requested media files over the network using the non-streaming transfer protocol.

### Claim 32 (depends on 31)

The article of claim 31 further comprising instructions that, when executed, cause the one or more processors to:
generate an audio and/or video output representing the stream of content by playing the media files with the client device in the order indicated by the playlist file and wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol.

### Claim 33 (depends on 31)

The article of claim 31 further comprising instructions that, when executed, cause the one or more processors to:
send repeatedly a subsequent request for the playlist file to the server device;
receive an updated playlist file in response to the subsequent request;
use the updated playlist file received in response to the subsequent request.

### Claim 34 (depends on 33)

The article of claim 33 further comprising instructions that, when executed, cause the one or more processors to:
compare the playlist file, received in response to the request, and the updated playlist file;
determine whether the updated playlist file received in response to the subsequent request includes a URI of a last loaded media file;
halt playback if the URI of the last loaded media file is not included in the updated playlist file;
utilize a tag in the updated playlist file received in response to the subsequent request to access a next media file.

### Claim 35 (depends on 33)

The article of claim 33 further comprising instructions that when executed, cause the one or more processors to:
send a second subsequent request for the playlist file to the server device after a first period of time if the playlists differ; and
send the second subsequent request for the playlist file to the server device after a second period of time if the playlists do not differ, wherein the first period of time is based on a first multiple of attribute of one of the tags in the playlist file and the second period of time is based on a second multiple of the attribute.

### Claim 36 (depends on 33)

The article of claim 33 further comprising instructions that, when executed, cause the one or more processors to:
determine, with the client device, whether the playlist file includes a tag indicating whether additional URIs corresponding to media files may be added to the playlist file;
select, with the client device, any one of the URIs from the playback file if the tag indicates that additional URIs may not be added to the playlist file or selecting any one of the URIs from the playlist file except for the second-to-last URI and the last URI if the tag indicates that additional URIs may be added to the playlist file;
access the media files in an order indicated by the URIs in the playlist file starting with the selected URI and wherein the tag indicates the end of a program presented through the media files.

### Claim 37

A server device comprising:
a network interface;
a memory, the memory to store a playlist file and multiple media file;
a processing system coupled with the network interface and the memory, the processing system configured to divide a stream of data to generate the multiple media files where each media file stores a portion of the stream of data on the server device, the processing system configured to store the media files in the memory, the processing system configured to generate the playlist file having a plurality of tags and a plurality of Universal Resource Indicators (URIs) indicating an ordering of the multiple media files to recreate the stream of data.

### Claim 38 (depends on 37)

The server device of claim 37 wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol and wherein the processing system is configured to cause to be transmitted the playlist file to a client device using a non-streaming transfer protocol, and to cause to be transferred one or more of the multiple media files to the client device using the non-streaming transfer protocol in response to requests from the client device utilizing one or more of the plurality of URIs.

### Claim 39 (depends on 37)

The server device of claim 37 wherein the processing system further generates an updated playlist file corresponding to changes to the multiple media files, the updated playlist file comprising a plurality of updated URIs indicating an ordering of the updated multiple media files to recreate the stream of data and causes to be transmitted the updated playlist file to the client device.

### Claim 40

A client device comprising:
a network interface;
a memory coupled with the processor, the memory to store a playlist file and media files received via the network interface,
a processor coupled with the network interface, the processor to request the playlist file via the network interface using a non-streaming transfer protocol, to receive the playlist file from a server device, the playlist file having Universal Resource Indicators (URIs) indicating a plurality of media files and a plurality of tags having parameters related to playback of the plurality of media files, to request one or more of the media files in an order indicated by the playlist file, to receive the one or more requested media files over the network using the non-streaming transfer protocol, and to generate an audio and/or video output representing the stream of content by playing the media files in the order indicated by the playlist file.

### Claim 41 (depends on 40)

The client device of claim 40 wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol.

### Claim 42 (depends on 40)

The client device of claim 40, the processor further to send a subsequent request for the playlist file to the server device, to receive the playlist file from server in response to the subsequent request, to compare the playlist file received in response to the request and the playlist file received in response to the subsequent request, to use the playlist file received in response to the subsequent request if the playlist files differ.

### Claim 43

A machine readable storage medium storing executable instructions which when executed by a data processing system cause the data processing system to perform a method comprising:
transmitting a playlist file to a client device using a non-streaming transfer protocol, the playlist file having a plurality of tags and a plurality of Universal Resource Indicators (URIs), the plurality of URIs indicating an ordering of multiple media files which have been divided out of a stream of data to recreate the stream of data by sequential presentation of the multiple media files; and
transferring one or more of the multiple media files to the client device using the non-streaming transfer protocol in response to requests from the client device utilizing one or more of the plurality of URIs.

### Claim 44 (depends on 43)

The medium of claim 43 wherein the non-streaming transfer protocol comprises a hypertext transfer protocol (HTTP)-compliant protocol and wherein the method further comprises:
transmitting an updated playlist file corresponding to changes to the multiple media files, the updated playlist file comprising a plurality of updated URIs indicating an ordering of the updated multiple media files to recreate the stream of data.
