System and Method for Streaming Content from Multiple Servers
A system and a method for media streaming from multiple sources are disclosed. A content requesting client device accesses a server to receive a list of available sources that may include multiple Content Delivery Networks (CDNs) and independent servers. Based on a pre-set criteria, such as the source delivery performance and cost, the client device partitions the content into parts, allocates a source to each part, and simultaneously receives media streams of the content parts from the allocated sources. The server may be a Video-on-Demand (VOD) server, and the content may be a single file of a video data, such as a movie. The delivery performance of the used sources is measured during the streaming for updating the partition or the allocation. The updated measured performance may be stored locally at the client device, or at a server for use by other clients. The client actions may be implemented as a client-side script.
1 . A method for use with a content that comprises a media data, and that comprises at least a first part that is stored in a first device and that is identified by a first content identifier, a second part that is stored in a second device and that is identified by a second content identifier, and a third part that is stored in a third device and that is identified by a third content identifier, the method comprising:
identifying, by a requesting device, the first, second, and third content parts;
identifying, by the requesting device, the first, second, and third devices by identifying their respective Internet Protocol (IP) addresses;
sending, by the requesting device to the first device over the Internet, using the identified IP address of the first device, a first request for the first part that comprises the first content identifier;
receiving, by the requesting device from the first device over the Internet, in response to the sending of the first request, the first part;
sending, by the requesting device to the second device over the Internet, using the identified IP address of the second device, a second request for the second part that comprises the second content identifier;
receiving, by the requesting device from the second device over the Internet, in response to the sending of the second request, the second part;
sending, by the requesting device to the third device over the Internet, using the identified IP address of the third device, a third request for the third part that comprises the third content identifier;
receiving, by the requesting device from the third device over the Internet, in response to the sending of the third request, the third part; and
combining, by the requesting device, the received first, second, and third content parts to form at least part of the content,
wherein the sending of the second request is performed at least in part during the receiving of the first content part, and
wherein the sending of the third request is performed at least in part during the receiving of the second content part.
2 . The method according to claim 1 , wherein the content comprises a streaming media data.
3 . The method according to claim 2 , further comprising playing, by a media player in a web browser at the requested device, the at least part of the combined content.
4 . The method according to claim 2 , wherein the receiving each of the respective first, second, and third content part by the requesting device, comprises streaming, from a respective device that stored the respective part, to the requesting device over the Internet, the respective first, second, and third content part.
5 . The method according to claim 4 , wherein the streaming is based on, using, or according to, a Hypertext Transfer Protocol (HTTP), Real-time Transport Protocol (RTP), Real Time Streaming Protocol (RTSP), Real-Time Transport Control Protocol (RTCP), User Datagram Protocol (UDP), Transmission Control Protocol (TCP), or any combination thereof.
6 . The method according to claim 4 , wherein the streaming is based on, uses, or is according to, a progressive download.
7 . The method according to claim 4 , wherein the streaming is based on, uses, or is according to, an adaptive bit-rate streaming.
8 . The method according to claim 7 , wherein the streaming is based on, uses, or is according to, a Dynamic Adaptive Streaming over HTTP (DASH), HTTP Live Streaming (HLS), HTTP Dynamic Streaming (HDS), or any combination thereof.
9 . The method according to claim 4 , wherein each of the first, second, and third devices, responds to HTTP requests received over the Internet.
10 . The method according to claim 9 , wherein any communication of the requesting device with each of the first, second, and third devices is based on, or uses, a respective HTTP persistent connection.
11 . The method according to claim 9 , wherein any communication of the requesting device with each of the first, second, and third devices is based on, or uses, a respective TCP/IP protocol or connection.
12 . The method according to claim 1 , wherein the first, second, and third content parts are non-overlapping.
13 . The method according to claim 1 , further comprising operating, by the requesting device, a web browser.
14 . The method according to claim 13 , wherein the identifying of the parts or of the devices is performed as part of the operating of the web browser.
15 . The method according to claim 13 , wherein the web browser consists of, comprises, or is based on, Microsoft Internet Explorer, Google Chrome, Opera™, or Mozilla Firefox®.
16 . The method according to claim 13 , wherein the web browser is a mobile web browser.
17 . The method according to claim 16 , wherein the mobile web browser consists of, comprises, or is based on, Safari, Opera Mini™, or Android web browser.
18 . The method according to claim 13 , wherein the content comprises a streaming media data, the method further comprising playing, by a media player that is part of the web browser, the combined at least part of the content.
19 . The method according to claim 1 , wherein the requesting device executes instructions that include, or are based on, a client-side scripting.
20 . The method according to claim 19 , wherein the scripting uses a dynamic programming language that supports dynamic typing, first-class functions, functional programming, or any combination thereof.
21 . The method according to claim 1 , wherein each of the first, second, and third devices is a replica server that is part of a first Content Distribution Network (CDN) that is operated, controlled, or managed by a CDN operator.
22 . The method according to claim 1 , wherein each of the content identifiers is in a format of XXX.YYY.com/ZZZ/UUU.mmm, wherein the XXX identifies a respective web server, the ZZZ identifies a directory including a requested content, and the UUU.mmm identifies a requested file in a directory.
23 . The method according to claim 1 , further comprising partitioning the content into at least the distinct first, second, and third content parts.
24 . The method according to claim 1 , wherein the content is partitioned into at least 3, 4, 5, 6, 7, 8, 9 or 10 distinct content parts.
25 . The method according to claim 24 , wherein any byte of the content is included in at least one of the distinct content parts.
26 . The method according to claim 24 , wherein any byte of the content is included in only one of the distinct content parts.
27 . The method according to claim 24 , wherein the partitioning is sequential in the content.
28 . The method according to claim 24 , wherein the partitioning is non-sequential in the content.
29 . The method according to claim 24 , wherein at least two of the content parts are of equal size.
30 . The method according to claim 1 , wherein the first part comprises a first web page, wherein the first device is a first web server that stores the first web page, wherein the first content identifier comprises a first Uniform Resource Locator (URL) that identifies the first web page in the Internet, wherein the second part comprises a second web page, wherein the second device comprises a second web server that stores the second web page, wherein the second content identifier comprises a second Uniform Resource Locator (URL) that identifies the second web page in the Internet, wherein the third part comprises a third web page, wherein the third device comprises a third web server that stores the third web page, and wherein the third content identifier comprises a third Uniform Resource Locator (URL) that identifies the third web page in the Internet.
31 . The method according to claim 1 , wherein the first, second, or third request comprises a Hypertext Transfer Protocol (HTTP) or HTTP Secure (HTTPS) request.