Streaming media delivery system
First Claim
Patent Images
1. A method for distributing a live audio or video program over the Internet, the method comprising:
- receiving at a server system a first continuous digitally encoded stream for a first audio or video program, via a network, in real time,the server system comprising at least one computer,the first stream comprising a plurality of media data elements representing the first program,each media data element comprising a digitally encoded portion of the first program and having a playback rate;
upon receipt of the first stream by the server system, filling a first data structure of the server system to a predetermined level with media data elements from the first stream;
maintaining approximately the predetermined level of media data elements in the first data structure by removing the oldest media data element from the first data structure as each new media data elements in the first stream is received;
receiving requests, at the server system via one or more data connections over the Internet, for the first stream, each received request originating from a requesting system, each requesting system comprising at least one computer;
sending, to each requesting system, any media data elements in the first data structure unsent to that requesting system, whenever such unsent media data elements are in the first data structure, wherein,the data connection between the server system and each requesting system has a data rate more rapid than the playback rate of the one or more media data elements sent via that connection;
each sending is at a transmission rate as fast as the data connection between the server system and each requesting system allows; and
all of the media data elements that are sent by the server system to the requesting systems are sent from the first data structure as the media data elements were first stored therein;
receiving at the server system a second continuous digitally encoded stream for a second audio or video program, via a network, in real time,the second stream comprising a plurality of media data elements representing the second program,each media data element comprising a digitally encoded portion of the second program and having a playback rate;
upon receipt Of the second stream by the server system, filling a second data structure of the server system to a predetermined level with media data elements from the second stream;
maintaining approximately the predetermined level of media data elements in the second data structure by removing the oldest media data element from the second data structure as each new media data elements in the second stream is received;
receiving requests, at the server system via one or more data connections over the Internet, for the second stream, each received request originating from a requesting system, each requesting system comprising at least one computer; and
sending, to each requesting system, any media data elements in the second data structure unsent to that requesting system, whenever such unsent media data elements are in the second data structure.
5 Assignments
0 Petitions
Accused Products
Abstract
Streaming media, such as audio or video files, is sent via the Internet. The media are immediately played on a user'"'"'s computer. Audio/video data is transmitted from the server under control of a transport mechanism. A server buffer is prefilled with a predetermined amount of the audio/video data. When the transport mechanism causes data to be sent to the user'"'"'s computer, it is sent more rapidly than it is played out by the user system. The audio/video data in the user buffer accumulates; and interruptions in playback as well as temporary modem delays are avoided.
376 Citations
12 Claims
-
1. A method for distributing a live audio or video program over the Internet, the method comprising:
-
receiving at a server system a first continuous digitally encoded stream for a first audio or video program, via a network, in real time, the server system comprising at least one computer, the first stream comprising a plurality of media data elements representing the first program, each media data element comprising a digitally encoded portion of the first program and having a playback rate; upon receipt of the first stream by the server system, filling a first data structure of the server system to a predetermined level with media data elements from the first stream; maintaining approximately the predetermined level of media data elements in the first data structure by removing the oldest media data element from the first data structure as each new media data elements in the first stream is received; receiving requests, at the server system via one or more data connections over the Internet, for the first stream, each received request originating from a requesting system, each requesting system comprising at least one computer; sending, to each requesting system, any media data elements in the first data structure unsent to that requesting system, whenever such unsent media data elements are in the first data structure, wherein, the data connection between the server system and each requesting system has a data rate more rapid than the playback rate of the one or more media data elements sent via that connection; each sending is at a transmission rate as fast as the data connection between the server system and each requesting system allows; and all of the media data elements that are sent by the server system to the requesting systems are sent from the first data structure as the media data elements were first stored therein; receiving at the server system a second continuous digitally encoded stream for a second audio or video program, via a network, in real time, the second stream comprising a plurality of media data elements representing the second program, each media data element comprising a digitally encoded portion of the second program and having a playback rate; upon receipt Of the second stream by the server system, filling a second data structure of the server system to a predetermined level with media data elements from the second stream; maintaining approximately the predetermined level of media data elements in the second data structure by removing the oldest media data element from the second data structure as each new media data elements in the second stream is received; receiving requests, at the server system via one or more data connections over the Internet, for the second stream, each received request originating from a requesting system, each requesting system comprising at least one computer; and sending, to each requesting system, any media data elements in the second data structure unsent to that requesting system, whenever such unsent media data elements are in the second data structure. - View Dependent Claims (2, 3)
-
-
4. A server system for distributing a live audio or video program over the Internet, the server system comprising:
-
at least one computer having a connection to the Internet; a machine-readable, executable routine containing instructions to cause one of the at least one computers to receive a first continuous digitally encoded stream for a first audio or video program, via a network, in real time, the first stream comprising a plurality of media data elements representing the first program, each media data element comprising a digitally encoded portion of the first program and having a playback rate; a machine-readable, executable routine containing instructions to cause one of the at least one computers, upon receipt of the first stream by the server system, to fill a first data structure of the server system to a predetermined level with media data elements from the first stream; a machine-readable, executable routine containing instructions to cause one of the at least one computers to maintain approximately the predetermined level of media data elements in the first data structure by removing the oldest media data element from the first data structure as each new media data elements in the first stream is received; a machine-readable, executable routine containing instructions to cause one of the at least one computers to receive requests, at the server system via one or more data connections over the Internet, for the first stream, each received request originating from a requesting system, each requesting system comprising at least one computer; a machine-readable, executable routine containing instructions to cause one of the at least one computers to send, to each requesting system, any media data elements in the first data structure unsent to that requesting system, whenever such unsent media data elements are in the first data structure, wherein, the data connection between the server system and each requesting system has a data rate more rapid than the playback rate of the one or more media data elements sent via that connection; each sending is at a transmission rate as fast as the data connection between the server system and each requesting system allows; and all of the media data elements that are sent by the server system to the requesting systems are sent from the first data structure as the media data elements were first stored therein; a machine-readable, executable routine containing instructions to cause one of the at least one computers to receive a second continuous digitally encoded stream for a second audio or video program, via a network, in real time, the second stream comprising a plurality of media data elements representing the second program, each media data element comprising a digitally encoded portion of the second program and having a playback rate; a machine-readable, executable routine containing instructions to cause one of the at least one computers, upon receipt of the second stream by the server system, to fill a second data structure of the server system to a predetermined level with media data elements from the second stream; a machine-readable, executable routine containing instructions to cause one of the at least one computers to maintain approximately the predetermined level of media data elements in the second data structure by removing the oldest media data element from the second data structure as each new media data elements in the second stream is received; a machine-readable, executable routine containing instructions to cause one of the at least one computers to receive requests, at the server system via one or more data connections over the Internet, for the second stream, each received request originating from a requesting system, each requesting system comprising at least one computer; and a machine-readable, executable routine containing instructions to cause one of the at least one computers to send, to each requesting system, any media data elements in the second data structure unsent to that requesting system, whenever such unsent media data elements are in the second data structure. - View Dependent Claims (5, 6)
-
-
7. A computer program product for distributing a live audio or video program over the Internet from a server system comprising at least one computer having a connection to the Internet, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions comprising:
-
instructions executable to cause one of the at least one computers to receive a first continuous digitally encoded stream for a first audio or video program, via a network, in real time, the first stream comprising a plurality of media data elements representing the first program, each media data element comprising a digitally encoded portion of the first program and having a playback rate; instructions executable to cause one of the at least one computers, upon receipt of the first stream by the server system, to fill a first data structure of the server system to a predetermined level with media data elements from the first stream; instructions executable to cause one of the at least one computers to maintain approximately the predetermined level of media data elements in the first data structure by removing the oldest media data element from the first data structure as each new media data elements in the first stream is received; instructions executable to cause one of the at least one computers to receive requests, at the server system via one or more data connections over the Internet, for the first stream, each received request originating from a requesting system, each requesting system comprising at least one computer; instructions executable to cause one of the at least one computers to send, to each requesting system, any media data elements in the first data structure unsent to that requesting system, whenever such unsent media data elements are in the first data structure, wherein, the data connection between the server system and each requesting system has a data rate more rapid than the playback rate of the one or more media data elements sent via that connection; each sending is at a transmission rate as fast as the data connection between the server system and each requesting system allows; and all of the media data elements that are sent by the server system to the requesting systems are sent from the first data structure as the media data elements were first stored therein; instructions executable to cause one of the at least one computers to receive a second continuous digitally encoded stream for a second audio or video program, via a network, in real time, the second stream comprising a plurality of media data elements representing the second program, each media data element comprising a digitally encoded portion of the second program and having a playback rate; instructions executable to cause one of the at least one computers, upon receipt of the second stream by the server system, to fill a second data structure of the server system to a predetermined level with media data elements from the second stream; instructions executable to cause one of the at least one computers to maintain approximately the predetermined level of media data elements in the second data structure by removing the oldest media data element from the second data structure as each new media data elements in the second stream is received; instructions executable to cause one of the at least one computers to receive requests, at the server system via one or more data connections over the Internet, for the second stream, each received request originating from a requesting system, each requesting system comprising at least one computer; and instructions executable to cause one of the at least one computers to send, to each requesting system, any media data elements in the second data structure unsent to that requesting system, whenever such unsent media data elements are in the second data structure. - View Dependent Claims (8, 9)
-
-
10. A server system for distributing a live audio or video program over the Internet, the server system comprising at least one computer having a connection to the Internet, the server system being adapted to:
-
receive a first continuous digitally encoded stream for a first audio or video program, via a network, in real time, the first stream comprising a plurality of media data elements representing the first program, each media data element comprising a digitally encoded portion of the first program and having a playback rate; upon receipt of the first stream by the server system, fill a first data structure of the server system to a predetermined level with media data elements from the first stream; maintain approximately the predetermined level of media data elements in the first data structure by removing the oldest media data element from the first data structure as each new media data elements in the first stream is received; receive requests, at the server system via one or more data connections over the Internet, for the first stream, each received request originating from a requesting system, each requesting system comprising at least one computer; send, to each requesting system, any media data elements in the first data structure unsent to that requesting system, whenever such unsent media data elements are in the first data structure, wherein, the data connection between the server system and each requesting system has a data rate more rapid than the playback rate of the one or more media data elements sent via that connection; each sending is at a transmission rate as fast as the data connection between the server system and each requesting system allows; and all of the media data elements that are sent by the server system to the requesting systems are sent from the first data structure as the media data elements were first stored therein; receive a second continuous digitally encoded stream for a second audio or video program, via a network, in real time, the second stream comprising a plurality of media data elements representing the second program, each media data element comprising a digitally encoded portion of the second program and having a playback rate; upon receipt of the second stream by the server system, fill a second data structure of the server system to a predetermined level with media data elements from the second stream; maintain approximately the predetermined level of media data elements in the second data structure by removing the oldest media data element from the second data structure as each new media data elements in the second stream is received; receive requests, at the server system via one or more data connections over the Internet, for the second stream, each received request originating from a requesting system, each requesting system comprising at least one computer; and send, to each requesting system, any media data elements in the second data structure unsent to that requesting system, whenever such unsent media data elements are in the second data structure. - View Dependent Claims (11, 12)
-
Specification