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 a provider server control of streaming a content to a client device over the Internet, the content is identified by a content identifier, for use with a first content server storing a first copy of the content and identified by a first server identifier, and a second content server storing a second copy of the content and identified by a second server identifier, the method by the provider server comprising the steps of:
receiving, from the client device, a request for the content using the content identifier; and
sending, to the client device, a list that comprises a first and second sources identifiers respectively associated with the first and second content servers,
wherein the content consists of a single file that comprises a streaming media data.
2 . The method according to claim 1 , further storing, operating, or using, a server operating system.
3 . The method according to claim 2 , wherein the server operating system consists of, comprises, or based on, Microsoft Windows Server®, Linux, UNIX, or any combination thereof.
4 . The method according to claim 2 , wherein the server operating system consists of, comprises, or based on, Microsoft Windows Server® 2003 R2, 2008, 2008 R2, 2012, or 2012 R2 variant, Linux™ or GNU/Linux-based Debian GNU/Linux, Debian GNU/kFreeBSD, Debian GNU/Hurd, Fedora™, Gentoo™, Linspire™, Mandriva, Red Hat® Linux, SuSE, and Ubuntu®, UNIX® variant Solaris™ AIX®, Mac™ OS X, FreeBSD®, OpenBSD, NetBSD®, or any combination thereof.
5 . The method according to claim 1 , wherein the provider server is a web server.
6 . The method according to claim 1 , wherein at least one of the identifiers is an IP address or a URL.
7 . The method according to claim 6 , wherein each of all of the identifiers is an IP address or a URL.
8 . The method according to claim 6 , wherein the IP address is in IPv4 or IPv6 form.
9 . The method according to claim 1 , wherein the provider server is a web server using HyperText Transfer Protocol (HTTP) that responds to HTTP requests via the Internet, and, wherein at least one of the requests is an HTTP request.
10 . The method according to claim 9 , wherein the communication with the client device is based on, or using, an HTTP persistent connection.
11 . The method according to claim 9 , wherein the communication with the client device is based on, or using, a TCP/IP protocol or connection.
12 . The method according to claim 1 , wherein the single file comprises a compressed media data according to a compression scheme.
13 . The method according to claim 12 , wherein the compression scheme uses lossy or lossless compression.
14 . The method according to claim 12 , wherein the compression scheme uses intraframe or interframe compression.
15 . The method according to claim 12 , wherein the compression scheme uses a standard compression scheme that is based on, or according to, JPEG (Joint Photographic Experts Group), MPEG (Moving Picture Experts Group), ITU-T H.261, ITU-T H.263, ITU-T H.264, ITU-T CCIR 601, or any combination thereof.
16 . The method according to claim 1 , wherein the streaming media data includes digital multimedia, digital audio, or digital video data.
17 . The method according to claim 16 , wherein the digital video is in a format that is based on, or according to, TIFF (Tagged Image File Format), RAW, AVI, DV, DV-PAL, HDV, MOV, WMV, MPEG-2, MPEG-4, DCF (Design Rule for Camera Format), ITU-T H.261, ITU-T H.263, ITU-T H.264, ITU-T CCIR 601, ASF, Exif (Exchangeable Image File Format), DPOF (Digital Print Order Format), or any combination thereof.
18 . The method according to claim 16 , wherein the digital video data is in a High-Definition (HD) or Standard-Definition (SD) format.
19 . The method according to claim 16 , wherein the digital video data is based on, or according to, ISO/IEC 14496 standard, MPEG-4 standard, or ITU-T H.264 standard.
20 . The method according to claim 16 , wherein the digital video data includes, or is part of, a movie.
21 . The method according to claim 16 for use in a Video-on-Demand (VOD) scheme, wherein the provider is a VOD service provider operating, managing, or controlling a network of servers that includes the provider server.
22 . The method according to claim 21 , further for use with an origin server operated, managed, or controlled by the VOD service provider and storing the content.
23 . The method according to claim 22 , further preceded by the steps of:
receiving, by the first content server, the content from the origin server;
storing, by the first content server, the received content as the first copy of the content;
receiving, by the second content server, the content from the origin server; and
storing, by the second content server, the received content as the second copy of the content.
24 . The method according to claim 1 , wherein the first server identifier or the second server identifier includes an URL, an HTTP header, or an IP address of the respective content server.
25 . The method according to claim 24 , wherein the first source identifier includes, or consists of, the first server identifier, or, wherein the second source identifier includes, or consists of, the second server identifier.
26 . The method according to claim 24 , wherein the first content server is a replica server that is part of a first Content Distribution Network (CDN) that is operated, controlled, or managed by a first CDN operator.
27 . The method according to claim 26 , wherein the first source identifier includes, or consists of, an identifier of a resolved server.
28 . The method according to claim 27 , wherein the first server identifier is resolved from the first source identifier using a Request-Routing scheme.
29 . The method according to claim 28 , wherein the Request-Routing scheme is based on, or according to, DNS Request-Routing, Transport-Layer Request-Routing, or Application-Layer Request-Routing technique.
30 . The method according to claim 28 , wherein the Request-Routing scheme is based on, or according to, a HTTP-Redirect, CDN-Redirect, DNS-Redirect, Dynamic Metafile Generation, Global Server Load Balancing, or anycasting algorithm.
31 . The method according to claim 27 , wherein the second content server is a replica server that is part of a second CDN that is operated, controlled, or managed by a second CDN operator.
32 . The method according to claim 1 , further comprising the step of receiving from the client device and storing a content delivery performance of each of the content servers.
33 . The method according to claim 1 for use with three or more multiple content servers each storing a copy of the content or any part thereof, wherein the list that comprises the three or more sources identifiers associated with the three or more multiple content servers.
34 . The method according to claim 33 , wherein each of the three or more sources identifiers is associated with a value.
35 . The method according to claim 34 , further comprising the step of sending to the client device the values associated with the three or more sources identifiers.
36 . The method according to claim 35 , wherein the values are associated with costs for using the respective source identified by the respective source identifier.
37 . The method according to claim 35 , wherein the values are associated with a content delivery performance of the respective source identified by the respective source identifier.
38 . The method according to claim 37 , wherein the content delivery performance is based on, or consists of, a Round Trip Time (RTT) of the respective content server identified by the respective source identifier, defined as a time interval starting upon sending a request for the respective content part to the respective source, and ending upon starting the streaming of the respective content part from the respective source.
39 . The method according to claim 37 , wherein the content delivery performance is based on, or consists of, a Bandwidth (BW) of the respective content server identified by the respective source identifier, defined by dividing a size of the respective part of the content received during the respective streaming step from the respective server identified by the respective source identifier by the measured streaming time interval during which the size of the respective part of the content was received.
40 . A non-transitory computer readable medium containing computer instructions that, when executed or interpreted by a processor, cause the processor to perform at least the steps of claim 1 .
41 . The non-transitory computer readable medium according to claim 40 , wherein the computer instructions are using a programming language.
42 . The non-transitory computer readable medium according to claim 41 , wherein the programming language is an Object-Oriented Programming (OOP) language that supports scripting.
43 . The non-transitory computer readable medium according to claim 42 , wherein the programming language is based on, or according to, C, C++, Objective-C, Perl, REXX, VBScript, JavaScript, Java, or any combination thereof.
44 . The non-transitory computer readable medium according to claim 40 , wherein the instructions include, or are based on, server-side scripting.
45 . The non-transitory computer readable medium according to claim 44 , wherein the scripting is using a dynamic programming language that supports dynamic typing, first-class functions, and functional programming.
46 . The non-transitory computer readable medium according to claim 45 , wherein the dynamic programming language is based on, or is according to, ECMA-262 5.1 Edition or ISO/IEC 16262:2011 standards.