WO2001091417A2 - Management and delivery of online webcasts - Google Patents

Management and delivery of online webcasts Download PDF

Info

Publication number
WO2001091417A2
WO2001091417A2 PCT/US2001/016329 US0116329W WO0191417A2 WO 2001091417 A2 WO2001091417 A2 WO 2001091417A2 US 0116329 W US0116329 W US 0116329W WO 0191417 A2 WO0191417 A2 WO 0191417A2
Authority
WO
WIPO (PCT)
Prior art keywords
client
network
cdn
content
switchover
Prior art date
Application number
PCT/US2001/016329
Other languages
French (fr)
Other versions
WO2001091417A3 (en
Inventor
John Kaufman
Young D. Kwon
Tony J. Rogers
Paul Boudreau
Original Assignee
Netpro Holdings, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netpro Holdings, Inc. filed Critical Netpro Holdings, Inc.
Priority to AU2001261788A priority Critical patent/AU2001261788A1/en
Publication of WO2001091417A2 publication Critical patent/WO2001091417A2/en
Publication of WO2001091417A3 publication Critical patent/WO2001091417A3/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/21Server components or server architectures
    • H04N21/222Secondary servers, e.g. proxy server, cable television Head-end
    • H04N21/2225Local VOD servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/611Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for multicast or broadcast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/231Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
    • H04N21/23116Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving data replication, e.g. over plural servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/238Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
    • H04N21/2387Stream processing in response to a playback request from an end-user, e.g. for trick-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/24Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
    • H04N21/2402Monitoring of the downstream path of the transmission network, e.g. bandwidth available
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25841Management of client data involving the geographical location of the client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/435Processing of additional data, e.g. decrypting of additional data, reconstructing software from modules extracted from the transport stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44209Monitoring of downstream path of the transmission network originating from a server, e.g. bandwidth variations of a wireless network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/472End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content
    • H04N21/47202End-user interface for requesting content, additional data or services; End-user interface for interacting with content, e.g. for content reservation or setting reminders, for requesting event notification, for manipulating displayed content for requesting content on demand, e.g. video on demand
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0823Errors, e.g. transmission errors
    • H04L43/0829Packet loss

Definitions

  • the present invention is directed to systems for performing online delivery of content over distributed communications networks. More specifically, the invention is directed to systems for delivering streaming media content over the Internet.
  • the Internet and World Wide Web (WWW) have proven to be valuable tools for delivering multimedia to users.
  • the Internet is becoming effective at delivering streaming multimedia content to a large number of users.
  • prior art systems are sometimes capable of providing a smooth, jerk-free presentation.
  • the present invention has been made in view of the above and other problems of the prior art.
  • the present invention provides a streaming media distribution system which can accommodate a large number of clients while providing high-quality streaming media to those viewers.
  • a streaming media delivery system which employs multiple data networks storing copies of the streaming media.
  • the system chooses a client data network which is best for providing the media content and directs a client wrapper object on the viewer's system to that network.
  • the client wrapper object on the viewer's system can request a switchover to a new client data ⁇ streaming network> network.
  • the system may also redirect the wrapper object to receive content from a different network for maintenance purposes and the like.
  • the viewer wrapper object also provides monitoring information on communication line quality and the like to the system for feedback and logging purposes.
  • FIGURE 1(a) shows an example of content streaming architecture/system and network according to a preferred embodiment of the present invention
  • FIGURE 1(b) depicts aspects of the content acquisition, publishing,
  • FIGURES 2(a) and 2(b) are block diagrams of a client computer and a network server, respectively, in accordance with embodiments of the present invention
  • FIGURE 3 is a flowchart summarizing the process of a client obtaining a
  • FIGURE 4 is a state diagram of a client according to embodiments of the present invention.
  • FIGURE 5 is a flowchart depicting operation of the redirection and bandwidth managers according to embodiments of the present invention.
  • FIGURE 6 is a state diagram of a monitoring manager according to embodiments of the present invention.
  • FIGURE 7 is depicts operations of the monitoring manager according to embodiments of the present invention.
  • FIGURES 8(a) and 8(b) show the inclusion of advertisement in different types of streaming content delivery according to embodiments of the present invention.
  • FIGURE 9 is a flowchart of typical operations of systems according to embodiments of this invention.
  • FIGURE 1(a) shows a content streaming architecture/system and network, generally designated by the reference numeral 100, according to a preferred embodiment of the present invention.
  • a number of network clients 102-1, 102-2, ..., 102-n are connected to the public distributed computer network known as the Internet 104 via their respective Internet Service Providers (ISPs) 106 (only one ISP is shown in the drawing) in a manner known in the art.
  • ISPs Internet Service Providers
  • the system 100 is implemented over the public Internet 104, using the World Wide Web (WWW or Web) and its hyperlinking capabilities.
  • WWW or Web World Wide Web
  • the invention is applicable to other networks as well, although it is particularly suited to networks that are configured to allow hyperlinks.
  • the invention is also applicable to downloading, wireless streaming and so on.
  • FIGURE 2(a) shows an example of a client computer 102.
  • client computer 102 includes conventional components, including a data processor, central processing unit (CPU) 108; volatile and non-volatile primary electronic memory 110; secondary memory 112 such as hard disks, floppy disks and/or other removable media; network interface components 114; display devices interfaces and drivers 146; audio recording and rendering components 118; and other components as are common in personal computers.
  • CPU central processing unit
  • secondary memory 112 such as hard disks, floppy disks and/or other removable media
  • network interface components 114 such as hard disks, floppy disks and/or other removable media
  • display devices interfaces and drivers 146 such as hard disks, floppy disks and/or other removable media
  • audio recording and rendering components 118 and other components as are common in personal computers.
  • the invention operates with / on any portable devices, inlcuding any device that can download and play content.
  • Network clients 102 are preferably configured with a consumer-oriented operating system such as one of Microsoft Corporation's Windows operating systems, referenced in FIGURE 2(a) by numeral 120.
  • network client 102 runs an Internet browser 122 such as NetscapeTM Communicator or Microsoft's Internet Explorer.
  • Network client 102 also includes one or more streaming multimedia data players or rendering components 124. This software component(s) is capable of establishing streaming data connections with Internet servers or other servers, and of rendering the streaming data as audio or video.
  • player 124 is configured to open reference files (described below) and of establishing streaming data connections with the network resources specified in the reference files, using the network transport protocols specified in the reference files, or in conjunction with the reference file.
  • the reference files are stored on computer-readable storage media of servers or other network sources or are generated, as described below.
  • the player 124 is preferably configured to open reference files such as ASX files (files having a filename extension of "asx"), or ASF files (files having a filename extension of "asf" ),
  • Player(s) 124 can be implemented as a standalone component, program or as a component control such as OCX control (OCX controls are standard features of programs designed for Windows operating systems). In either case, it is registered with the operating system so that it is invoked to open the appropriate reference files (ASX files and the like) in response to user requests.
  • OCX controls are standard features of programs designed for Windows operating systems.
  • ASX files and the like reference files
  • such a user request is made by double clicking on an icon representing a reference file. From within an Internet browser, the request for a reference file is made by selecting (e.g., single-clicking on) a hyperlink contained in a hyperlink document that is being displayed. When this happens, the player is loaded and executed, and the subject reference file is provided to the player as a run-time argument.
  • Each client 102 is or includes some form of computer or similar device capable of accessing the distributed computer network known as the Internet 104 via the client's respective ISP 106 using a typical browser 122.
  • a client 102 may also be a dedicated Internet terminal, a device accessing the Internet using a television set and the like.
  • Clients 102 may have any type of access to their respective ISPs 106 using network interface 114. E.g., clients may connect to their ISPs via modems, other networks, cable television systems and the like.
  • Each ISP 106 is connected in some manner to the Internet 104, as is known in the art.
  • Internet in the description are merely to aid and simplify explanation of the system 100. Actual data flow between entities, e.g., a client 102-1 and the redirection manager 112 would take place via the client's ISP 106 and the Internet 104. Also connected to the Internet 104 is a web host 126 serving a web site
  • Clients 102 may view the contents of the web site 128 using an Internet browser 122 in a manner known in the art.
  • a client 102 may view the web site 128 using a NetscapeTM browser running on the client.
  • the web site 128 may offer, for example, streaming media content which the client may access using the preferred embodiment.
  • the content streaming architecture/system 100 also includes various server computers.
  • An example of a server computer is illustrated in block form in FIGURE 2(b).
  • a server computer includes conventional components similar to those of network client 102 such as a data processor (CPU) 130; volatile and non-volatile primary electronic memory 132; secondary memory 134 such as hard disks and floppy disks or other removable media; network interface components 136; display devices interfaces and drivers 138; and other, components that are well known.
  • the server computer runs an operating system 140 such as the Windows NT operating system from Microsoft Corporation.
  • Network servers and their operating systems are configured in accordance with known technology so that they are capable of streaming data connections with clients.
  • the network servers generally support various network transport protocols, including multicast UDP/IP and unicast protocols such as UDP/IP, TCP/IP, and HTTP.
  • the servers include storage components (such as secondary memory 134), on which various data files are stored, formatted appropriately for efficient transmission using the noted protocols. Compression techniques are preferably used to make the most efficient use of limited Internet bandwidth.
  • the data processors are programmed by means of instructions stored at different times in the various computer-readable storage media of the computers.
  • Programs are typically distributed, for example, on floppy disks or CD-ROMs.
  • the programs may be compiled or interpreted or, if appropriate, distributed and/or executed in some other manner. From the distribution media, the programs are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory.
  • the invention described herein includes these various types of computer-readable storage media when such media contain instructions or programs for implementing the described steps in conjunction with a microprocessor or other data processor.
  • the invention also includes the computer itself when programmed according to the methods and techniques described below. For purposes of illustration only, programs, program components and other mechanisms are shown in FIGURES 2(a) and 2(b) as discrete blocks within a computer, although it is recognized that such programs, components and mechanisms reside at various times in different storage components of the computer.
  • the content streaming architecture/system 100 also includes at least one redirection server 142 having a redirection manager 143 and at least one monitoring server 144 having a monitoring manager 145.
  • the redirection server 142 also referred to herein as the redirector
  • the monitoring server 144 are both connected to the Internet 104.
  • the redirection manager 143 and monitoring manager 145 may be collocated on the same server or they may be on different servers. That is, in some cases the redirection server 142 and the monitoring server 144 may be the same physical server.
  • the content streaming, architecture/system 100 also includes a number of content distribution networks (CDNs) 146-1, 146-2, ..., 146-k (collectively referred to as CDNs 146).
  • CDNs 146 content distribution networks
  • some or all of the CDNs 146 preferably hold the same streaming media content so as to provide a degree of fault tolerance and data redundancy to the system. The manner in which data (content) is acquired and distributed to CDNs 146 will be described below with reference to the content storage and distribution system 148.
  • a personalization server 150, client database 152, real-time bandwidth distribution database 154, CDN database 156 and an advertising database 158 are also accessible to the redirection manager 143 and to the monitoring manager 145, either directly or via other servers.
  • the personalization server 150 accesses the client database 152 which contains information about particular clients and is used, e.g., by the redirection manager 143 to customize a particular client's access.
  • the advertising database 158 contains available advertising content which can be inserted into the content selected by the client. The manner in which the advertising database 158 is populated by an advertising storage and distribution system is described below.
  • the monitoring manager 145 also has access to a realtime logging database 160.
  • FIGURE 1(b) depicts aspects of the content acquisition, publishing, distribution and delivery system according to the present invention.
  • various content providers including Fox 168-1, CBS 168-2, NBC 168-3, ..., and PBS 168-q (collectively 168) provide streaming content in the form of scheduled broadcast events and video on demand events.
  • the content schedule and other information is stored in a electronic program guide
  • a content database 170 contains the actual content obtained in various ways from the content providers 168.
  • the content database 170 may be populated using a so-called crawler 172 which, along with channel definition information obtained from the EPG database 164, automatically uploads content to the content database 170.
  • content providers 168 can, if they so choose, push their content to the content database 170 using content pushing.
  • a storage manager 174 handles requests for storage and retrieval of content data to/from the content database 170.
  • advertising is inserted in or included with streamed content. The adverts are stored in and taken from an advertising database 158. An ad manager 174 takes ads from the advertising database 158 for inclusion in a particular stream.
  • advertising is included in the advertising database 158 based on a real-time advertising auction.
  • Various advertising agencies or advertisers e.g., DoubleClick 176-1, Engage 176-2, and other conventional/traditional broadcast advertising agencies, collectively ad. agencies 176) provide advertising to the advertising database 158, in some cases via an advertising auction, preferably a real-time auction.
  • each advertising agent 176 maintains an account with the auction site and maintains credit (stored in the advertiser / finance database 178)
  • the auction site obtains the available time spot information from the EPG database 164.
  • bidding starts for a particular time spot, the highest bids per spot are noted. Bidding for a particular time spot is closed before air time, preferably two (2) minutes before air time. For each bid, a check is made at the advertiser / finance database 178 to determine whether or not the bidder has sufficient funds or credit to pay for the bid. Ad agencies 176 can purchase additional credits online while they are bidding.
  • CDNs 148 are used to achieve data redundancy. This means that data (content) are stored in more than one CDN distribution point, thereby providing fault tolerance. In some preferred embodiments, instead of storing the same information at all CDNs 148, the information is stored at only some (e.g., 20% to 40% of the CDNs). E.g., if there are a total of 10 or 12 CDNs, data are stored at 2 to 4 CDNs. This approach provides redundancy while minimizing the cost of storage at CDNs. CDN storage cost is a factor applied in load balancing of the system. In preferred embodiments, twenty percent of the content in the content database 170 is stored to serve 80% of the traffic.
  • a client 102 uses browser 122 to display the contents of the web site 110 on some form of display (not shown) such as a computer monitor using display components 138.
  • display not shown
  • Each program or event which a client might wish to play (view, hear, etc) has a corresponding associated identity (Programld or Eventld, respectively).
  • each client (or user) has a ' corresponding associated identity (Clientld).
  • client requests specific content from the web site 128, the client's Internet browser 122 provides both the client's identity (Clientld) and the requested program or event identity (Programld or Eventld).
  • the present invention incorporates an object wrapper (monitor) program (described below).
  • a client 102 needs an object wrapper (monitor) program to be loaded onto the client 102. Accordingly, the first time a particular client 102 accesses the web site 128 in order to display streaming media content, a client object wrapper
  • the client object wrapper module 162 is downloaded automatically to the client 102.
  • the client object wrapper module 162 may be downloaded using a well-known HTML technique such as the following:
  • redirection server 142 The client's browser 122 provides the redirection manager
  • the browser 122 provides the redirection manager
  • Event Identity That is, when the client 102 selects (e.g.,
  • streaming content e.g., audio
  • the client's request goes to redirection manager 143.
  • the redirection manager 143 chooses (in a manner described below) a particular
  • the redirection manager 143 determines which particular CDN 146 the client 102 is to use, the redirection manager 143 then returns information back to the client 102 so that the client can immediately view the requested content.
  • the returned information from the redirection manager 143 is preferably a reference file, e.g., an ASF (Advanced / Active Streaming Format), ASX, RM, SMIL
  • the reference file sent from the redirection manager 143 to the client 102 is an ASX file.
  • ASX file the file returned by the redirection manager 143 to the client 102 will be referred to herein interchangeably as the reference file and as the ASX file.
  • a reference file is a text file that links Web pages to streaming media- based content on a media server.
  • the reference file generally redirects streaming media content away from the client's browser 103 to the appropriate media player mechanism 124 running on the client.
  • the reference file also redirects the client's media player mechanism 105 to the appropriate selected CDN 146.
  • the type of file determined, e.g., from the file's name extension
  • Reference files are generally integrated into the WWW. Hyperlinks to the reference files are placed in Web documents, and a user retrieves a particular reference file by clicking on its hyperlink. In response, the user's Internet browser 122 retrieves the reference file from the network source and opens it with the appropriate player 124, depending on the type of reference file. Player 124, in turn, uses the reference file to establish a streaming data connection which the player then renders.
  • a typical reference file generally includes a plurality of lines, each containing a different resource specifier in standard network Uniform Resource Locator (URL) format.
  • the order of the resource specifiers establishes a preferred order for attempting communications with the resources specified by the resource specifiers.
  • the reference file can specify the preferred order by referencing another file that in turn contains a specification of resources in their preferred order.
  • Each resource specifier designates a network resource and a protocol specifier.
  • a plurality of different resource specifiers can be placed on different lines of a reference file.
  • player 124 opens and reads a reference file, it responds by repeatedly attempting to establish a streaming data connection using the different resource specifiers in the preferred order specified by the reference file until a streaming data connection is successfully established.
  • a basic reference (ASX) file contains at least the URL of some multimedia content on a server.
  • a complex link file may contain multiple files or
  • ASX files are known in the art and can be found, e.g., m http://msdn.microsoft.com/library/psdlj/wm_media/wmpsdkymmp_sdk/overview/ ASX_intro.htm, which is incorporated herein by reference. However, some elements are explained here for convenience.
  • the Entry (“ ⁇ ENTRY>”) element of the file (e.g., lines 5 andl3 in TABLE I), with its associated attributes, defines to the player mechanism 124 meta- information for a single, logical piece of content (called a clip). Elements that are defined within an Entry element are displayed by the player mechanism 124 in a particular information area of the display panel called the Clip information area.
  • a playlist is created by stacking multiple entries. Each Entry element is played by the player mechanism 124 in the order they appear in the file as though the user had manually opened each clip.
  • the Ref element (e.g., lines 11 and 19 in TABLE I) specifies a URL for a content stream. The URL can point to any supported media type, using any protocol supported by the player mechanism 124.
  • the Ref element is commonly used for server or protocol rollover, where, if the player mechanism 124 cannot access media defined in a Ref element, it tries to access the URL in the next Ref element.
  • the ASX file produced by the redirection manager 143 is customized for the particular requesting client 102 based on client information which the redirection manager 143 either has or can obtain from the client 102.
  • the returned ASX file points the client's browser
  • the ASX file may contain pointers, e.g., in the form of URL's, to more than one content.
  • the process of a client 102 obtaining a reference file is summarized with reference to FIGURE 3.
  • the Client 102 selects streaming content (Programld) from Web Site 110 (at 300) by selecting a hyperlink on the web site.
  • the Client 102 is redirected to the Redirection Manager 143 at the Redirection Server 142 (at 302). If needed (e.g., this is a first-time client), the client object wrapper (monitor) module 162 downloaded automatically to the client 102 (at 304).
  • the redirection manager 143 then passes the request for the event to a reference file generator (at 306) which generates a reference file based on certain information including the Clientld (to obtain information from the Client Database 152 directly or via the personalization server 150), the Programld and available program events (from Program Event database 164), advertising (from Advertising Database 158) and available, preferably best available, CDNs 146 (provided by the bandwidth manager 166) (at 308). Then the generated reference (e.g., ASX) file is returned to the client 102 (at 310).
  • a reference file generator e.g., ASX
  • the reference file includes a list of CDNs from which the content is available.
  • the client's player mechanism 124 begins playing the content referred to by the reference file, preferably under the control of the wrapper 162.
  • the client system 102 accesses the streaming media content on one of the CDNs 146, the appropriate CDN 102 begins delivering content to the client 102 as is known in the art and the client renders (e.g., plays and/or displays) the content using the appropriate (built-in or plugin) player mechanism 124.
  • the client's object wrapper 162 While the client 102 is receiving streaming media content from the CDN 146, the client's object wrapper 162 continuously monitors the received network traffic to evaluate quality of service (QOS) at the client 102 by measuring, e.g., network reliability, network congestion and network quality. In some preferred embodiments, the object wrapper 162 monitors the received network traffic for such measures as total bytes received, number of lost packets, number of recovered packets and the like. The client object wrapper 162 sends network status information to the monitoring manager 145 at regular intervals.
  • QOS quality of service
  • the monitoring manager 145 processes all information received from clients, as described below and with reference to FIGURE 6. Some or all of the information is stored in various databases, including in the real-time logging database 160, the client database 152, the CDN database 156, and the real-time bandwidth distribution database 154.
  • the client object wrapper 162 also transmits an indication (e.g., a tag) indicating to the monitoring manager 145 what kind of data/request is being sent.
  • the network status information is sent from the client to the monitoring manager 145 regularly, preferably at fixed intervals.
  • network status information is sent every two (2) minutes, and includes such information as the number of bytes transferred, the number of packets sent and/or received and/or recovered, measures of transmission quality and other types of network information.
  • the network status information includes the following items:
  • the user action/event information sent to the monitoring manager 145 includes data on acts performed by a user at the client 102. Whenever a user at the client 102 performs an event such as plays video, stop, rewind, fast forward and so forth, this user event is transmitted to the momtoring manager 145.
  • the user action/event information includes:
  • the monitoring manager 145 saves all information into the database.
  • the saved information may be data mined at later time to generate various reports, e.g., for customers.
  • the ping information is sent to the monitoring manager 145 regularly, in some embodiments, preferably every thirty (30) seconds.
  • the ping information is used to allow the monitoring manager 145 to know that the client object is still connected and alive.
  • the client object monitor (object wrapper 162) detects a problem with network quality, it initiates a CDN switch-over with the monitoring manager 114 in order to link to another CDN 146 for the content.
  • the client object monitor 162 automatically restores services when streaming or downloading becomes interrupted because of a network problem.
  • the client object monitor 162 sends a switch-over request message to the monitoring manager 114 requesting permission to switch to another CDN for uninterrupted download.
  • a switch-over request message from the client object monitor 162 preferably includes the following:
  • a CDN switch-over reply message preferably includes the following:
  • the client 102 Upon receipt of a CDN switch-over reply message from the momtoring manager 114, the client 102 attempts to switch to the new CDN (represented by the baseURL field of the switch-over reply message). After the client 102 switches over to the new CDN, the client wrapper object 162 sends a report to the momtoring manager 114 to that effect.
  • the client wrapper object 162 may initiate a self- controlled or self-directed CDN switchover.
  • the reference file will preferably include a list of CDNs from which the content is available. If a client needs to . make a self-directed CDN switchover, the client needs only to select one of the CDNs from the list in the reference file.
  • a CDN switchover whether client or manager initiated, causes little or no disruption to the content being displayed.
  • the new CDN needs to begin its content streaming at or substantially close to the current position of the current streamed content.
  • the client wrapper object 162 determines that the quality of the stream from the CDN 146 has degraded to an unacceptable level, e.g., there are too many lost packets or the like, the client wrapper object 162 preferably sends a CDN change request to the monitoring manager 114. Upon receiving such a request from a client system, the monitoring manager 114 chooses a new CDN 146 to supply the streaming media content to the client as described above. The monitoring manager 114 then sends a message to the viewer system (the client
  • the client 102 polls its media player to identify the streaming media which is being played, as well as a time index thereof, e.g., how far the playback is into the stream. The client 102 then advances this time index a predetermined amount of time and sends a request to the new CDN server asking it to begin sending a stream from the identified content to the client at that time. Also, at that advanced time, the client 102 directs its streaming media player to terminate its stream with the old CDN. In this way, reception and playback of the streaming media continues virtually interrupted by the changeover to the new CDN.
  • this predetermined time is around 7-8 seconds. That includes about two to three (2-3) seconds of connection time and about five (5) seconds of buffering. These timing numbers assume good network conditions.
  • a preferred way to do a seamless switch over is as follows.
  • a first Windows Media Object plays on the screen, and a second instance of the Windows media player object is instantiated behind the first one.
  • Both Windows media player objects are synchronized by starting the second Windows Media Object and setting its time mark (current entry and current position variable) equal to that of the first Windows Media Object. After the second Windows Media Player finishes buffering and starts to stream, the first Windows Media Player is killed. Thus creating an effect of instantaneous CDN switch over.
  • the monitoring manager 114 can also initiate a change in the CDN 146 associated with a particular client 102. It may do so, for example, when scheduled maintenance is to be performed on one of the CDNs 146. At a predetermined time in advance of the beginning of the maintenance period, the momtoring manager 114 sends commands to all clients 102 receiving streams from that CDN directing them to begin receiving the streaming content from selected other ones of the CDNs 146. To do so, the monitoring manager 114 first selects new CDNs for each of the affected clients, sends CDN switchover commands to each such client advising it of its new CDN. The affected clients affect CDN changeovers as described above. Presently preferred embodiments use HTTP instead of TCP/IP to communicate' with the monitor.
  • logging information such as the above is sent to the monitoring manager 114 via the Internet 104.
  • the monitoring manager 114 stores this logging information in a client information database 120.
  • the monitoring manager 114 puts all real time network data into the database. It also saves history of network information in the database.
  • the monitoring server can at anytime look at the status of the multiple CDN network and measure network quality and network traffic. The network will adjust itself to balance itself as problems arises.
  • information stored in this database for a particular content provider is available for viewing in real time by that content provider via a web page on the web server.
  • system administrators can view all logging information as well as statistics derived therefrom.
  • a particular client 102 is initially in a start state (S400). As described above, the client 102 requests a reference file from the redirection manager 143. When the ASX file is returned to the client 102, the client connects to the appropriate CDN 146 and the client's player mechanism 105 begins to play the streamed content (at state S402). While the streamed content is being played, the wrapper 162 monitors the system. If the wrapper determines that the network has failed or otherwise determines that the network performance is unacceptable (e.g., there is network congestion), the wrapper 162 moves to a "network bottleneck or CDN switchover" state (S404).
  • the wrapper 162 notifies the monitoring manager 145 about the problems and waits for instructions. While waiting for instructions from the monitoring manager 145, the client's player mechanism 105 continues to play the content, if possible (i.e., if there has not been complete network failure). If the wrapper 162 does not receive instructions from the monitoring manager 145 within a predetermined amount of time (preferably less than 5- 10 seconds), or if the client's wrapper 162 cannot establish a link to the monitoring manager, the client initiates a self-controlled CDN switchover (in state S406). On the other hand, if the wrapper 162 receives timely instructions from the momtoring manager 145, the client initiates a monitor-controlled CDN switchover (in state S408). In either case, when the switchover has taken place, the client's system returns to the play state (S402). When the stream ends, the system enters the "Done" state.
  • the redirection manager 143 Upon a client request for streaming content (at 300 in FIGURE 3), the redirection manager 143 must determine which CDN 146 the requesting client should use. The decision by the redirection manager 143 as to which CDN to use is made preferably according to predetermined rules, e.g., weighing factors such as network load, reliability and cost effectiveness.
  • the redirection server 142 includes a bandwidth manager mechanism 128 which provides the redirection manager 143 with information needed to make its decisions. As shown in FIGURE 5, the redirection manager 143 periodically asks (at 500) the bandwidth manager mechanism 128 how to weight each CDN 146 per a particular content distributor. In some preferred embodiments, the redirection manager 143 asks the bandwidth manager mechanism 128 for information at least every ten (10) minutes. In some preferred embodiments, the redirection manager 143 asks the bandwidth manager mechanism 128 for information when needed in addition to periodically. In response to the request from the redirection manager 143 (or on an ongoing basis) the bandwidth manager mechanism 128 determines (at 502) how to balance the load, minimize the cost and maximize the performance of the system 100.
  • the bandwidth manager mechanism 128 queries the client database 122 (at 504) to determine which CDNs 146 are working with this distributor (customer). In addition, the bandwidth manager mechanism 128 queries the CDN database 126 (at 506) to determine the cost and pay structure per CDN 146. The bandwidth manager mechanism 128 also queries logging information (at 508) in the real-time logging database 130 to evaluate recent network reliability. Having obtained the available information, the bandwidth manager mechanism 128 calculates (at 510) how to balance the load, minimize the cost and maximize the performance of the system 100 and provides the redirection manager (at 512) with information needed to select an appropriate CDN 146 for a particular client and content selection. Once the redirection manager 143 has determined (at 514) which particular CDN 146 the client 102 is to use, the redirection manager 143 then returns information back to the client 102 so that the client can immediately view the requested content.
  • the redirection manager 143 selects the lowest cost CDN 146 for any particular client and content.
  • advertising information (or other content) is added to the ASX file.
  • the advertising may be directed to the client based on the client's identity (Clientld) and other information.
  • ASX file or the streamed content can include instructions to the player mechanism 105 to cut away from a stream and to play other streams or files according to scripting in the file.
  • a script command can be sent at the beginning of every commercial break that instructs each client to play commercials listed in their respective ASX files.
  • scripting in the metafile instructs each client to cut back to the live broadcast.
  • Advertising insertion is preferably implemented using the Event element.
  • FIGURES 8(a) and 8(b) show the inclusion of advertisement in different types of streaming content delivery according to embodiments of the present invention. Specifically, FIGURE 8(a) shows the processing real-time ad insertion in regular (scheduled) programs, whereas FIGURE 8(b) shows that processing for real-time ad insertion for live events.
  • a client 102 requests streaming content (i.e., requests a reference file) that plays a scheduled event (at 800)
  • the redirection manager returns to the client (at 802) a reference file that, when played by the client's player 124, will play that event.
  • the client's web browser asks the ad manager 174 what stream is to be played with this event (at 804).
  • the ad manager 174 queries and gets information from the advertising database 158 and from the personalization server 150 (at 806). Using this information, the ad manager 174 determines which ad is to be played by the client and downloads the ad stream information to the client's web browser (at 808).
  • the client's player 124 starts to queue the ad for play (at 810).
  • the client's player reaches the next item on its play list (the ad)
  • it plays the queued ad (at 812).
  • the player 124 plays the next content item on its playlist (at 814).
  • the redirection manager when a client 102 requests live streaming content (i.e., requests a reference file) that plays a live event (at 816), the redirection manager returns to the client (at 818) a reference file that, when played by the client's player 124, will play the requested event.
  • the ad manager issues an event call to the client when an ad is to be played (at 820). In response to such a call, the client asks the ad manager
  • the ad manager 174 determines which ad is to be played by the client and downloads the ad stream information to the client' s ' web browser (at 826).
  • the client's player 124 queues the ad for play (at 828), stops playing the live event and then plays the queued ad (at 830). Then, when the ad is done, the player 124 continues with the live event (at 832).
  • the ad is preferably selected based on client (personal) information, the ad spot and the content being viewed.
  • an ad is not selected until the spot has been sold and the ad is then served in real-time with an Event call to the client. Normal programming is resumed after the advertisement call.
  • FIGURE 9(a) generally shows real time load balancing with real time feedback according to the preferred embodiment of the present invention.
  • This example assumes that the client has used the system before and so does not need an initialization process. That is, in this example, it is assumed that the client wrapper/monitor mechanism 162 is present on the client's system.
  • first a user/client requests a particular video (at 900). This is done, e.g., by the client selecting a hyperlink for that video on a particular web site.
  • the hyperlink directs the client to the redirection manager 143 and the client provides the redirection manager 143 with the client's identity and the program identity for the desired video.
  • the redirection manager 143 creates a reference (e.g.
  • ASX ASX
  • the client's player 105 then begins to play the video (at 904) while, at the same time, the client wrapper 162 starts to monitor the system (at 906). If the wrapper 162 determines that there is network congestion (or failure) (at 908), then the client contacts the monitoring manager 145 (at 910), reports the problem and asks for a monitor-controlled CDN switchover. The client then waits for a response from the monitoring manager 145. While waiting for a response from the monitoring manager 145, the player 124 continues playing, if possible (i.e., if the connection to the CDN has not been completely lost and/or the player 124 has some content buffered).
  • the wrapper 162 If no network congestion was detected (at 908) by the client wrapper 162, then, if scheduled or necessary, the wrapper 162 reports any information (e.g., ping, status, etc.) and/or user events to the monitoring manager 145 (at 912) and processing continues. If all of the requested content referred to in the reference (ASX) file has been completed by the player 124 (at 914) then processing is done
  • the wrapper/monitor 162 initiates a self-controlled CDN switchover (at 920) and then processing continues (at 914), if there is any content remaining to be played.
  • a self-controlled CDN switchover the player 124 switches over to another CDN specified in the reference file.
  • the client determines that there is congestion (at 908) and is successful in contacting the monitoring manager 145 (at 910) and does not time out, the client obtains new CDN informatiori ' from the monitoring manager
  • the various mechanisms described herein may be implemented in hardware, software or a combination thereof. When implemented in software, they may be implemented in any type of appropriate interpreted or compiled programming language. In preferred embodiments of this invention, the wrapper mechanism is implemented in the machine-independent JavaTM programming language as small, powerful and fast C++ ATL COM objects. When implemented fully or partially in software, aspects of the invention can reside on any memory or storage medium, including but not limited to a ROM, a disk, an ASIC, a PROM and the like. When the various mechanisms of the present invention are running on a particular machine (e.g., the at the client or on a server), they may reside in the memory of the machine or on a storage device or in a combination.
  • a particular machine e.g., the at the client or on a server
  • they may reside in the memory of the machine or on a storage device or in a combination.
  • redirection and monitoring servers may be combined into a single server, or the system may additionally be used to store content developer's streaming media content. Such variations also fall within the scope of the invention.

Abstract

A streaming media delivery system employs multiple client data networks storing copies of the streaming media. When a viewer wishes to see content, the system chooses a client data network which is best for providing the media content and directs a client wrapper object on the viewer's system to that network. When the quality of delivery from that network becomes too low, a client wrapper object on the viewer's system can request a switchover to a new client data network. The system may also redirect the wrapper object to receive content from a different network for maintenance purposes and the like. The viewer wrapper object also provides monitoring information on communication line quality and the like to the system for feedback and logging purposes.

Description

MANAGEMENT AND DELIVERY OF ONLINE WEBCASTS RELATED APPLICATIONS
This application is based on and claims priority under 35 U.S. C. § 120 from U.S. Provisional Patent Application No. 60/205,987 filed May 19, 2000 and U.S. Application Serial No. 09/664,724 filed September 19, 2000 entitled
"Management and Delivery of Online Webcasts", the contents of which are fully incorporated herein by reference.
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is directed to systems for performing online delivery of content over distributed communications networks. More specifically, the invention is directed to systems for delivering streaming media content over the Internet.
2. Background of the Related Art
The Internet and World Wide Web (WWW) have proven to be valuable tools for delivering multimedia to users. In particular, the Internet is becoming effective at delivering streaming multimedia content to a large number of users. When the number of users receiving the streaming media is small, prior art systems are sometimes capable of providing a smooth, jerk-free presentation.
However, prior art systems have had difficulty accommodating very large numbers of users. When the number of users is particularly large, the system becomes slow, provides error-filled, jerky streams and generally exhibits unacceptable performance characteristics.
SUMMARY OF THE INVENTION
The present invention has been made in view of the above and other problems of the prior art. The present invention provides a streaming media distribution system which can accommodate a large number of clients while providing high-quality streaming media to those viewers.
The above objects are achieved according to a first aspect of the present invention by providing a streaming media delivery system which employs multiple data networks storing copies of the streaming media. When a viewer wishes to see content, the system chooses a client data network which is best for providing the media content and directs a client wrapper object on the viewer's system to that network. When the quality of delivery from that network becomes low, the client wrapper object on the viewer's system can request a switchover to a new client data <streaming network> network. The system may also redirect the wrapper object to receive content from a different network for maintenance purposes and the like. The viewer wrapper object also provides monitoring information on communication line quality and the like to the system for feedback and logging purposes.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other objects, features and advantages of the present invention are better understood by reading the following detailed description of the preferred embodiment, taken in conjunction with the accompanying drawings, in which: FIGURE 1(a) shows an example of content streaming architecture/system and network according to a preferred embodiment of the present invention;
FIGURE 1(b) depicts aspects of the content acquisition, publishing,
distribution and delivery system according to the present invention.
FIGURES 2(a) and 2(b) are block diagrams of a client computer and a network server, respectively, in accordance with embodiments of the present invention;
FIGURE 3 is a flowchart summarizing the process of a client obtaining a
reference file according to embodiments of the present invention; FIGURE 4 is a state diagram of a client according to embodiments of the present invention;
FIGURE 5 is a flowchart depicting operation of the redirection and bandwidth managers according to embodiments of the present invention;
FIGURE 6 is a state diagram of a monitoring manager according to embodiments of the present invention;
FIGURE 7 is depicts operations of the monitoring manager according to embodiments of the present invention;
FIGURES 8(a) and 8(b) show the inclusion of advertisement in different types of streaming content delivery according to embodiments of the present invention; and
FIGURE 9 is a flowchart of typical operations of systems according to embodiments of this invention.
DETAΓLED DESCRIPTION OF PRESENTLY PREFERRED EXEMPLARY
EMBODIMENTS FIGURE 1(a) shows a content streaming architecture/system and network, generally designated by the reference numeral 100, according to a preferred embodiment of the present invention. A number of network clients 102-1, 102-2, ..., 102-n (collectively, network clients 102) are connected to the public distributed computer network known as the Internet 104 via their respective Internet Service Providers (ISPs) 106 (only one ISP is shown in the drawing) in a manner known in the art. In the embodiments shown, the system 100 is implemented over the public Internet 104, using the World Wide Web (WWW or Web) and its hyperlinking capabilities. The invention is applicable to other networks as well, although it is particularly suited to networks that are configured to allow hyperlinks. In addition, the invention is also applicable to downloading, wireless streaming and so on.
FIGURE 2(a) shows an example of a client computer 102. Various types of network clients 102 can be utilized, such as palmtop computers, notebook computers, personal organizers, and the like. Client computer 102 includes conventional components, including a data processor, central processing unit (CPU) 108; volatile and non-volatile primary electronic memory 110; secondary memory 112 such as hard disks, floppy disks and/or other removable media; network interface components 114; display devices interfaces and drivers 146; audio recording and rendering components 118; and other components as are common in personal computers. Generally, the invention operates with / on any portable devices, inlcuding any device that can download and play content.
Network clients 102 are preferably configured with a consumer-oriented operating system such as one of Microsoft Corporation's Windows operating systems, referenced in FIGURE 2(a) by numeral 120. In addition, network client 102 runs an Internet browser 122 such as Netscape™ Communicator or Microsoft's Internet Explorer. Network client 102 also includes one or more streaming multimedia data players or rendering components 124. This software component(s) is capable of establishing streaming data connections with Internet servers or other servers, and of rendering the streaming data as audio or video. Specifically, player 124 is configured to open reference files (described below) and of establishing streaming data connections with the network resources specified in the reference files, using the network transport protocols specified in the reference files, or in conjunction with the reference file. The reference files are stored on computer-readable storage media of servers or other network sources or are generated, as described below. In preferred embodiments of this invention, the player 124 is preferably configured to open reference files such as ASX files (files having a filename extension of "asx"), or ASF files (files having a filename extension of "asf" ),
Player(s) 124 can be implemented as a standalone component, program or as a component control such as OCX control (OCX controls are standard features of programs designed for Windows operating systems). In either case, it is registered with the operating system so that it is invoked to open the appropriate reference files (ASX files and the like) in response to user requests. In the Microsoft Windows operating system, such a user request is made by double clicking on an icon representing a reference file. From within an Internet browser, the request for a reference file is made by selecting (e.g., single-clicking on) a hyperlink contained in a hyperlink document that is being displayed. When this happens, the player is loaded and executed, and the subject reference file is provided to the player as a run-time argument.
Each client 102 is or includes some form of computer or similar device capable of accessing the distributed computer network known as the Internet 104 via the client's respective ISP 106 using a typical browser 122. A client 102 may also be a dedicated Internet terminal, a device accessing the Internet using a television set and the like. Clients 102 may have any type of access to their respective ISPs 106 using network interface 114. E.g., clients may connect to their ISPs via modems, other networks, cable television systems and the like.
Each ISP 106 is connected in some manner to the Internet 104, as is known in the art.
In some of the following description, various entities such as the ISPs 106 and the Internet 104 are omitted and all data flow is described directly between the various entities. However, the omission of entities such as the ISPs and the
Internet in the description are merely to aid and simplify explanation of the system 100. Actual data flow between entities, e.g., a client 102-1 and the redirection manager 112 would take place via the client's ISP 106 and the Internet 104. Also connected to the Internet 104 is a web host 126 serving a web site
128 to users over the Internet 104. Clients 102 may view the contents of the web site 128 using an Internet browser 122 in a manner known in the art. For example, a client 102 may view the web site 128 using a Netscape™ browser running on the client. The web site 128 may offer, for example, streaming media content which the client may access using the preferred embodiment.
The content streaming architecture/system 100 also includes various server computers. An example of a server computer is illustrated in block form in FIGURE 2(b). Generally, a server computer includes conventional components similar to those of network client 102 such as a data processor (CPU) 130; volatile and non-volatile primary electronic memory 132; secondary memory 134 such as hard disks and floppy disks or other removable media; network interface components 136; display devices interfaces and drivers 138; and other, components that are well known. The server computer runs an operating system 140 such as the Windows NT operating system from Microsoft Corporation. Network servers and their operating systems are configured in accordance with known technology so that they are capable of streaming data connections with clients. The network servers generally support various network transport protocols, including multicast UDP/IP and unicast protocols such as UDP/IP, TCP/IP, and HTTP. The servers include storage components (such as secondary memory 134), on which various data files are stored, formatted appropriately for efficient transmission using the noted protocols. Compression techniques are preferably used to make the most efficient use of limited Internet bandwidth.
In the case of both network servers and client computer, the data processors are programmed by means of instructions stored at different times in the various computer-readable storage media of the computers. Programs are typically distributed, for example, on floppy disks or CD-ROMs. The programs may be compiled or interpreted or, if appropriate, distributed and/or executed in some other manner. From the distribution media, the programs are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these various types of computer-readable storage media when such media contain instructions or programs for implementing the described steps in conjunction with a microprocessor or other data processor. The invention also includes the computer itself when programmed according to the methods and techniques described below. For purposes of illustration only, programs, program components and other mechanisms are shown in FIGURES 2(a) and 2(b) as discrete blocks within a computer, although it is recognized that such programs, components and mechanisms reside at various times in different storage components of the computer.
The content streaming architecture/system 100 according to embodiments of the present invention also includes at least one redirection server 142 having a redirection manager 143 and at least one monitoring server 144 having a monitoring manager 145. The redirection server 142 (also referred to herein as the redirector) and the monitoring server 144 are both connected to the Internet 104. In some embodiments, the redirection manager 143 and monitoring manager 145 may be collocated on the same server or they may be on different servers. That is, in some cases the redirection server 142 and the monitoring server 144 may be the same physical server.
In addition, the content streaming, architecture/system 100 according to preferred embodiments of the present invention also includes a number of content distribution networks (CDNs) 146-1, 146-2, ..., 146-k (collectively referred to as CDNs 146). In preferred embodiments, some or all of the CDNs 146 preferably hold the same streaming media content so as to provide a degree of fault tolerance and data redundancy to the system. The manner in which data (content) is acquired and distributed to CDNs 146 will be described below with reference to the content storage and distribution system 148.
A personalization server 150, client database 152, real-time bandwidth distribution database 154, CDN database 156 and an advertising database 158 are also accessible to the redirection manager 143 and to the monitoring manager 145, either directly or via other servers. The personalization server 150 accesses the client database 152 which contains information about particular clients and is used, e.g., by the redirection manager 143 to customize a particular client's access. The advertising database 158 contains available advertising content which can be inserted into the content selected by the client. The manner in which the advertising database 158 is populated by an advertising storage and distribution system is described below. The monitoring manager 145 also has access to a realtime logging database 160. FIGURE 1(b) depicts aspects of the content acquisition, publishing, distribution and delivery system according to the present invention. As shown in FIGURE 1(b), various content providers including Fox 168-1, CBS 168-2, NBC 168-3, ..., and PBS 168-q (collectively 168) provide streaming content in the form of scheduled broadcast events and video on demand events. The content schedule and other information is stored in a electronic program guide
(EPG) database 164 in a known manner.
In addition, a content database 170 contains the actual content obtained in various ways from the content providers 168. For example, the content database 170 may be populated using a so-called crawler 172 which, along with channel definition information obtained from the EPG database 164, automatically uploads content to the content database 170. Further, content providers 168 can, if they so choose, push their content to the content database 170 using content pushing. A storage manager 174 handles requests for storage and retrieval of content data to/from the content database 170. In some preferred embodiments of the present invention, advertising is inserted in or included with streamed content. The adverts are stored in and taken from an advertising database 158. An ad manager 174 takes ads from the advertising database 158 for inclusion in a particular stream. In some preferred embodiments, advertising is included in the advertising database 158 based on a real-time advertising auction. Various advertising agencies or advertisers (e.g., DoubleClick 176-1, Engage 176-2, and other conventional/traditional broadcast advertising agencies, collectively ad. agencies 176) provide advertising to the advertising database 158, in some cases via an advertising auction, preferably a real-time auction.
In the auction, various of the ad agencies 176 bid on advertising spots at a real-time ad auction site. Each advertising agent 176 maintains an account with the auction site and maintains credit (stored in the advertiser / finance database 178) The auction site obtains the available time spot information from the EPG database 164.
Once bidding starts for a particular time spot, the highest bids per spot are noted. Bidding for a particular time spot is closed before air time, preferably two (2) minutes before air time. For each bid, a check is made at the advertiser / finance database 178 to determine whether or not the bidder has sufficient funds or credit to pay for the bid. Ad agencies 176 can purchase additional credits online while they are bidding.
While the auction is taking place, all bids are ranked and all bidding parties are shown a count down to the end of bidding and the current bids. When the bidding closes, the ad with the highest bid is stored in the advertising database 158 for use at the appropriate time. When the ad is included in a reference file (and preferably when actually played), the cost of the ad is automatically deducted from the winning agency's available credit in the advertiser / finance database 178.
The operation of the system 100 is described now with reference to FIGURES l(a)-6.
Content is sent from the content database 170 to the various CDNs 148, based on various distribution rules and procedures. Multiple CDNs 148 are used to achieve data redundancy. This means that data (content) are stored in more than one CDN distribution point, thereby providing fault tolerance. In some preferred embodiments, instead of storing the same information at all CDNs 148, the information is stored at only some (e.g., 20% to 40% of the CDNs). E.g., if there are a total of 10 or 12 CDNs, data are stored at 2 to 4 CDNs. This approach provides redundancy while minimizing the cost of storage at CDNs. CDN storage cost is a factor applied in load balancing of the system. In preferred embodiments, twenty percent of the content in the content database 170 is stored to serve 80% of the traffic.
In operation, when a client 102 chooses to view streaming media content from the web site 128, the client uses browser 122 to display the contents of the web site 110 on some form of display (not shown) such as a computer monitor using display components 138. Each program or event which a client might wish to play (view, hear, etc) has a corresponding associated identity (Programld or Eventld, respectively). Also, each client (or user) has a' corresponding associated identity (Clientld). When client requests specific content from the web site 128, the client's Internet browser 122 provides both the client's identity (Clientld) and the requested program or event identity (Programld or Eventld). In some aspects, the present invention incorporates an object wrapper (monitor) program (described below). In preferred embodiments of the present invention, a client 102 needs an object wrapper (monitor) program to be loaded onto the client 102. Accordingly, the first time a particular client 102 accesses the web site 128 in order to display streaming media content, a client object wrapper
(monitor) 162 is downloaded automatically to the client 102. The client object wrapper module 162 may be downloaded using a well-known HTML technique such as the following:
OBJECT classid="CLSID:931EFE2D-1F50-11D4-A821- 00508B8D40C9" codeBase=prjWmpClient.CAB#version=l,0,0,0 id=wmpClientCtl style="LEFT: Opx; TOP: Opx" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="8625"> <PARAM NA E="_ExtentY" VALUE="6509"> <PARAM NAME="FILENAME"
VALUE='^ttp://fusion.broadstream.corri/screenblaster MakePlaylist.as p?CDN=0&FILE_NAME=bats-3w-filmclip 1.asf&.asx"></OBJECT>
Once the wrapper module 162 has been downloaded onto the client 102,
and when the web page from the web site 128 is loaded into client's system, the
client's browser 122 is redirected to the redirection manager 143 on the
redirection server 142. The client's browser 122 provides the redirection manager
143 with information allowing the redirection manager to redirect the client's
request appropriately, according to the present invention. In preferred
embodiments of this invention, the browser 122 provides the redirection manager
143 with the both the client's identity (Clientld) and the requested program or
event identity (Programld or Eventld). That is, when the client 102 selects (e.g.,
clicks on) a link on web site 110 in order to obtain streaming content (e.g., audio,
video, download) therefrom, the client's request goes to redirection manager 143.
The redirection manager 143 chooses (in a manner described below) a particular
CDN 146 to serve that requested media content to the requesting client 102. Once the redirection manager 143 has determined which particular CDN 146 the client 102 is to use, the redirection manager 143 then returns information back to the client 102 so that the client can immediately view the requested content. The returned information from the redirection manager 143 is preferably a reference file, e.g., an ASF (Advanced / Active Streaming Format), ASX, RM, SMIL
(Synchronized Multimedia Integration Language) or other type of content data. In a preferred embodiment, the reference file sent from the redirection manager 143 to the client 102 is an ASX file. For the sake of explanation only, and without loss of generality, the file returned by the redirection manager 143 to the client 102 will be referred to herein interchangeably as the reference file and as the ASX file.
A reference file is a text file that links Web pages to streaming media- based content on a media server. The reference file generally redirects streaming media content away from the client's browser 103 to the appropriate media player mechanism 124 running on the client. In addition, in the present invention, the reference file also redirects the client's media player mechanism 105 to the appropriate selected CDN 146. When the client's browser 103 downloads a reference file, the type of file (determined, e.g., from the file's name extension) causes the browser 103 to invoke the appropriate media player mechanism 105 which then locates and plays the content specified in the file.
Reference files are generally integrated into the WWW. Hyperlinks to the reference files are placed in Web documents, and a user retrieves a particular reference file by clicking on its hyperlink. In response, the user's Internet browser 122 retrieves the reference file from the network source and opens it with the appropriate player 124, depending on the type of reference file. Player 124, in turn, uses the reference file to establish a streaming data connection which the player then renders.
A typical reference file generally includes a plurality of lines, each containing a different resource specifier in standard network Uniform Resource Locator (URL) format. The order of the resource specifiers establishes a preferred order for attempting communications with the resources specified by the resource specifiers. Each resource specifier is preceded, in some protocols, by an identifier of the form "Ref#=URL", where the # portion of the identifier is a number which indicates the preferred order for attempting communications. For example, Refl is before Refl. Alternatively, the reference file can specify the preferred order by referencing another file that in turn contains a specification of resources in their preferred order.
Each resource specifier designates a network resource and a protocol specifier. A plurality of different resource specifiers can be placed on different lines of a reference file. When player 124 opens and reads a reference file, it responds by repeatedly attempting to establish a streaming data connection using the different resource specifiers in the preferred order specified by the reference file until a streaming data connection is successfully established.
A basic reference (ASX) file contains at least the URL of some multimedia content on a server. A complex link file may contain multiple files or
streams arranged in a playlist, instructions on how to play the files or streams, text
and graphic elements, and hyperlinks associated with elements on the media
player interface.
An example of an ASX file is shown in TABLE I below.
TABLE I - Sample ASX File
<ASX version ="3.0">
Figure imgf000016_0001
The various elements of ASX files are known in the art and can be found, e.g., m http://msdn.microsoft.com/library/psdlj/wm_media/wmpsdkymmp_sdk/overview/ ASX_intro.htm, which is incorporated herein by reference. However, some elements are explained here for convenience.
The Entry ("<ENTRY>") element of the file (e.g., lines 5 andl3 in TABLE I), with its associated attributes, defines to the player mechanism 124 meta- information for a single, logical piece of content (called a clip). Elements that are defined within an Entry element are displayed by the player mechanism 124 in a particular information area of the display panel called the Clip information area. A playlist is created by stacking multiple entries. Each Entry element is played by the player mechanism 124 in the order they appear in the file as though the user had manually opened each clip. The Ref element (e.g., lines 11 and 19 in TABLE I) specifies a URL for a content stream. The URL can point to any supported media type, using any protocol supported by the player mechanism 124. The Ref element is commonly used for server or protocol rollover, where, if the player mechanism 124 cannot access media defined in a Ref element, it tries to access the URL in the next Ref element.
Preferably the ASX file produced by the redirection manager 143 is customized for the particular requesting client 102 based on client information which the redirection manager 143 either has or can obtain from the client 102. Amongst other things, the returned ASX file points the client's browser
103 to the requested streaming media content on one of the CDNs 146. As noted above, some or all of the CDNs 146 hold the same streaming media content to provide a degree of fault tolerance and data redundancy to the system. In some embodiments, only some of the CDNs 146 will hold the same content. The ASX file may contain pointers, e.g., in the form of URL's, to more than one content.
The process of a client 102 obtaining a reference file is summarized with reference to FIGURE 3. First, the Client 102 (Clientld) selects streaming content (Programld) from Web Site 110 (at 300) by selecting a hyperlink on the web site. The Client 102 is redirected to the Redirection Manager 143 at the Redirection Server 142 (at 302). If needed (e.g., this is a first-time client), the client object wrapper (monitor) module 162 downloaded automatically to the client 102 (at 304). The redirection manager 143 then passes the request for the event to a reference file generator (at 306) which generates a reference file based on certain information including the Clientld (to obtain information from the Client Database 152 directly or via the personalization server 150), the Programld and available program events (from Program Event database 164), advertising (from Advertising Database 158) and available, preferably best available, CDNs 146 (provided by the bandwidth manager 166) (at 308). Then the generated reference (e.g., ASX) file is returned to the client 102 (at 310).
In preferred embodiments of the present invention, the reference file includes a list of CDNs from which the content is available.
Once the client 102 has received the reference file from the redirection manager 143, the client's player mechanism 124 begins playing the content referred to by the reference file, preferably under the control of the wrapper 162. When the client system 102 accesses the streaming media content on one of the CDNs 146, the appropriate CDN 102 begins delivering content to the client 102 as is known in the art and the client renders (e.g., plays and/or displays) the content using the appropriate (built-in or plugin) player mechanism 124.
While the client 102 is receiving streaming media content from the CDN 146, the client's object wrapper 162 continuously monitors the received network traffic to evaluate quality of service (QOS) at the client 102 by measuring, e.g., network reliability, network congestion and network quality. In some preferred embodiments, the object wrapper 162 monitors the received network traffic for such measures as total bytes received, number of lost packets, number of recovered packets and the like. The client object wrapper 162 sends network status information to the monitoring manager 145 at regular intervals.
The monitoring manager 145 processes all information received from clients, as described below and with reference to FIGURE 6. Some or all of the information is stored in various databases, including in the real-time logging database 160, the client database 152, the CDN database 156, and the real-time bandwidth distribution database 154.
In a presently preferred embodiments of this invention, three types of information are sent from the client 102 to the monitoring manager 145, namely network status information, user action information and so-called ping information. Along with whatever information is sent, the client object wrapper 162 also transmits an indication (e.g., a tag) indicating to the monitoring manager 145 what kind of data/request is being sent.
The network status information is sent from the client to the monitoring manager 145 regularly, preferably at fixed intervals. In one preferred embodiment network status information is sent every two (2) minutes, and includes such information as the number of bytes transferred, the number of packets sent and/or received and/or recovered, measures of transmission quality and other types of network information. In some embodiments, the network status information includes the following items:
Figure imgf000019_0001
When the monitoring manager 145 receives a message/request from a client 120 (from the client's wrapper 162) (at 700 in FIGURE 7), the momtoring manager determines what type of message it has received (at 702) using the tag or code CmdCode sent with the message. If the message tag indicates that the message is network status information (CmdCode = 0x0001), the monitoring manager 145 determines that it has received real-time logging information which it stores in the real-time logging database 130 (at 704).
The user action/event information sent to the monitoring manager 145 includes data on acts performed by a user at the client 102. Whenever a user at the client 102 performs an event such as plays video, stop, rewind, fast forward and so forth, this user event is transmitted to the momtoring manager 145. In some preferred embodiments, the user action/event information includes:
Figure imgf000020_0001
When the momtoring manager 145 receives user action / event information (CmdCode = 0x0008) from a client (at 700), it ... (at 706).
The monitoring manager 145 saves all information into the database. The saved information may be data mined at later time to generate various reports, e.g., for customers. The ping information is sent to the monitoring manager 145 regularly, in some embodiments, preferably every thirty (30) seconds. The ping information is used to allow the monitoring manager 145 to know that the client object is still connected and alive.
Figure imgf000021_0001
When the monitoring manager 145 receives a Ping message (CmdCode = 0x0002) from a client 120 (from the client's wrapper 162) (at 700), the monitoring manager uses the ping information to map bandwidth distribution (at 708) and stores the associated information in the real-time bandwidth distribution database 124 (at 710).
If the client object monitor (object wrapper 162) detects a problem with network quality, it initiates a CDN switch-over with the monitoring manager 114 in order to link to another CDN 146 for the content.
In addition, the client object monitor 162 automatically restores services when streaming or downloading becomes interrupted because of a network problem. The client object monitor 162 sends a switch-over request message to the monitoring manager 114 requesting permission to switch to another CDN for uninterrupted download. A switch-over request message from the client object monitor 162 preferably includes the following:
Figure imgf000021_0002
Figure imgf000022_0001
In response to a switch-over request from a client 102 (CmdCode = 0x0004), the monitoring manager 114 evaluates the real time network status and selects a new CDN based on such factors as availability, reliability and cost- effectiveness. More specifically, the monitoring manager 145 first checks the current load balancing and distribution (at 712), and then generates a CDN switchover command/message (at 714). The identity of the new CDN is provided to the client 102 from the monitoring manager 114 in the form of a CDN switchover reply message (at 716).
A CDN switch-over reply message preferably includes the following:
Figure imgf000022_0002
Upon receipt of a CDN switch-over reply message from the momtoring manager 114, the client 102 attempts to switch to the new CDN (represented by the baseURL field of the switch-over reply message). After the client 102 switches over to the new CDN, the client wrapper object 162 sends a report to the momtoring manager 114 to that effect.
If the client wrapper object 162 is unable to connect to the monitoring manager 114 in order to initiate a switch over, the client may initiate a self- controlled or self-directed CDN switchover. The reference file will preferably include a list of CDNs from which the content is available. If a client needs to . make a self-directed CDN switchover, the client needs only to select one of the CDNs from the list in the reference file.
Preferably a CDN switchover, whether client or manager initiated, causes little or no disruption to the content being displayed. However, since the content is being streamed to the client from the original CDN, the new CDN needs to begin its content streaming at or substantially close to the current position of the current streamed content.
When the client wrapper object 162 determines that the quality of the stream from the CDN 146 has degraded to an unacceptable level, e.g., there are too many lost packets or the like, the client wrapper object 162 preferably sends a CDN change request to the monitoring manager 114. Upon receiving such a request from a client system, the monitoring manager 114 chooses a new CDN 146 to supply the streaming media content to the client as described above. The monitoring manager 114 then sends a message to the viewer system (the client
102) identifying the newly-chosen CDN. The client 102 polls its media player to identify the streaming media which is being played, as well as a time index thereof, e.g., how far the playback is into the stream. The client 102 then advances this time index a predetermined amount of time and sends a request to the new CDN server asking it to begin sending a stream from the identified content to the client at that time. Also, at that advanced time, the client 102 directs its streaming media player to terminate its stream with the old CDN. In this way, reception and playback of the streaming media continues virtually interrupted by the changeover to the new CDN. Currently, this predetermined time is around 7-8 seconds. That includes about two to three (2-3) seconds of connection time and about five (5) seconds of buffering. These timing numbers assume good network conditions.
A preferred way to do a seamless switch over (i.e., perceptibly instantaneous switchover) is as follows. A first Windows Media Object plays on the screen, and a second instance of the Windows media player object is instantiated behind the first one. Both Windows media player objects are synchronized by starting the second Windows Media Object and setting its time mark (current entry and current position variable) equal to that of the first Windows Media Object. After the second Windows Media Player finishes buffering and starts to stream, the first Windows Media Player is killed. Thus creating an effect of instantaneous CDN switch over.
The monitoring manager 114 can also initiate a change in the CDN 146 associated with a particular client 102. It may do so, for example, when scheduled maintenance is to be performed on one of the CDNs 146. At a predetermined time in advance of the beginning of the maintenance period, the momtoring manager 114 sends commands to all clients 102 receiving streams from that CDN directing them to begin receiving the streaming content from selected other ones of the CDNs 146. To do so, the monitoring manager 114 first selects new CDNs for each of the affected clients, sends CDN switchover commands to each such client advising it of its new CDN. The affected clients affect CDN changeovers as described above. Presently preferred embodiments use HTTP instead of TCP/IP to communicate' with the monitor. This allows clients to communicate with the monitoring software through a standard HTTP port. This also means that the CDN switch over command can be issued during the PING cycle. In addition to being used for changeover purposes, logging information such as the above is sent to the monitoring manager 114 via the Internet 104. The monitoring manager 114 stores this logging information in a client information database 120. The monitoring manager 114 puts all real time network data into the database. It also saves history of network information in the database. The monitoring server can at anytime look at the status of the multiple CDN network and measure network quality and network traffic. The network will adjust itself to balance itself as problems arises. Additionally, information stored in this database for a particular content provider is available for viewing in real time by that content provider via a web page on the web server. Preferably, system administrators can view all logging information as well as statistics derived therefrom.
In summary, with reference to the state diagram in FIGURE 4, a particular client 102 is initially in a start state (S400). As described above, the client 102 requests a reference file from the redirection manager 143. When the ASX file is returned to the client 102, the client connects to the appropriate CDN 146 and the client's player mechanism 105 begins to play the streamed content (at state S402). While the streamed content is being played, the wrapper 162 monitors the system. If the wrapper determines that the network has failed or otherwise determines that the network performance is unacceptable (e.g., there is network congestion), the wrapper 162 moves to a "network bottleneck or CDN switchover" state (S404). The wrapper 162 notifies the monitoring manager 145 about the problems and waits for instructions. While waiting for instructions from the monitoring manager 145, the client's player mechanism 105 continues to play the content, if possible (i.e., if there has not been complete network failure). If the wrapper 162 does not receive instructions from the monitoring manager 145 within a predetermined amount of time (preferably less than 5- 10 seconds), or if the client's wrapper 162 cannot establish a link to the monitoring manager, the client initiates a self-controlled CDN switchover (in state S406). On the other hand, if the wrapper 162 receives timely instructions from the momtoring manager 145, the client initiates a monitor-controlled CDN switchover (in state S408). In either case, when the switchover has taken place, the client's system returns to the play state (S402). When the stream ends, the system enters the "Done" state.
The Redirection & Bandwidth Managers
Upon a client request for streaming content (at 300 in FIGURE 3), the redirection manager 143 must determine which CDN 146 the requesting client should use. The decision by the redirection manager 143 as to which CDN to use is made preferably according to predetermined rules, e.g., weighing factors such as network load, reliability and cost effectiveness.
The redirection server 142 includes a bandwidth manager mechanism 128 which provides the redirection manager 143 with information needed to make its decisions. As shown in FIGURE 5, the redirection manager 143 periodically asks (at 500) the bandwidth manager mechanism 128 how to weight each CDN 146 per a particular content distributor. In some preferred embodiments, the redirection manager 143 asks the bandwidth manager mechanism 128 for information at least every ten (10) minutes. In some preferred embodiments, the redirection manager 143 asks the bandwidth manager mechanism 128 for information when needed in addition to periodically. In response to the request from the redirection manager 143 (or on an ongoing basis) the bandwidth manager mechanism 128 determines (at 502) how to balance the load, minimize the cost and maximize the performance of the system 100. Accordingly, the bandwidth manager mechanism 128 queries the client database 122 (at 504) to determine which CDNs 146 are working with this distributor (customer). In addition, the bandwidth manager mechanism 128 queries the CDN database 126 (at 506) to determine the cost and pay structure per CDN 146. The bandwidth manager mechanism 128 also queries logging information (at 508) in the real-time logging database 130 to evaluate recent network reliability. Having obtained the available information, the bandwidth manager mechanism 128 calculates (at 510) how to balance the load, minimize the cost and maximize the performance of the system 100 and provides the redirection manager (at 512) with information needed to select an appropriate CDN 146 for a particular client and content selection. Once the redirection manager 143 has determined (at 514) which particular CDN 146 the client 102 is to use, the redirection manager 143 then returns information back to the client 102 so that the client can immediately view the requested content.
Preferably the redirection manager 143 selects the lowest cost CDN 146 for any particular client and content.
Advertising
In some embodiments of the present invention, when the redirection manager 143 creates the ASX file for a particular client, advertising information (or other content) is added to the ASX file. The advertising may be directed to the client based on the client's identity (Clientld) and other information.
As ASX file or the streamed content can include instructions to the player mechanism 105 to cut away from a stream and to play other streams or files according to scripting in the file. For example, during a live Internet broadcast of an event, a script command can be sent at the beginning of every commercial break that instructs each client to play commercials listed in their respective ASX files. When clients finish playing the commercials, scripting in the metafile instructs each client to cut back to the live broadcast. . Advertising insertion is preferably implemented using the Event element.
FIGURES 8(a) and 8(b) show the inclusion of advertisement in different types of streaming content delivery according to embodiments of the present invention. Specifically, FIGURE 8(a) shows the processing real-time ad insertion in regular (scheduled) programs, whereas FIGURE 8(b) shows that processing for real-time ad insertion for live events.
With reference to FIGURE 8(a), when a client 102 requests streaming content (i.e., requests a reference file) that plays a scheduled event (at 800), the redirection manager returns to the client (at 802) a reference file that, when played by the client's player 124, will play that event. The client's web browser asks the ad manager 174 what stream is to be played with this event (at 804). In response to this request, the ad manager 174 queries and gets information from the advertising database 158 and from the personalization server 150 (at 806). Using this information, the ad manager 174 determines which ad is to be played by the client and downloads the ad stream information to the client's web browser (at 808). The client's player 124 starts to queue the ad for play (at 810). When the client's player reaches the next item on its play list (the ad), it plays the queued ad (at 812). Then, when the ad is done, the player 124 plays the next content item on its playlist (at 814).
With reference to FIGURE 8(b), when a client 102 requests live streaming content (i.e., requests a reference file) that plays a live event (at 816), the redirection manager returns to the client (at 818) a reference file that, when played by the client's player 124, will play the requested event. Unlike the case of scheduled events, where the playlist has markers for the insertion of ads, in the case of a live event, the ad manager issues an event call to the client when an ad is to be played (at 820). In response to such a call, the client asks the ad manager
174 what stream is to be played with this event (at 822). In response to this request, the ad manager 174 queries and gets information from the advertising database 158 and from the personalization server 150 (at 824). Using this information, the ad manager 174 determines which ad is to be played by the client and downloads the ad stream information to the client' s' web browser (at 826).
The client's player 124 queues the ad for play (at 828), stops playing the live event and then plays the queued ad (at 830). Then, when the ad is done, the player 124 continues with the live event (at 832).
In both of the cases described above, the ad is preferably selected based on client (personal) information, the ad spot and the content being viewed.
Preferably an ad is not selected until the spot has been sold and the ad is then served in real-time with an Event call to the client. Normal programming is resumed after the advertisement call. Example of Operation
An example of typical operation of embodiments of this invention is presented here, by way only of example.
Real Time Load Balancing With Real Time Feedback
FIGURE 9(a) generally shows real time load balancing with real time feedback according to the preferred embodiment of the present invention. This example assumes that the client has used the system before and so does not need an initialization process. That is, in this example, it is assumed that the client wrapper/monitor mechanism 162 is present on the client's system. As shown in FIGURE 9(a), first a user/client requests a particular video (at 900). This is done, e.g., by the client selecting a hyperlink for that video on a particular web site. The hyperlink directs the client to the redirection manager 143 and the client provides the redirection manager 143 with the client's identity and the program identity for the desired video. The redirection manager 143 creates a reference (e.g. ASX) file for the requested video and returns the reference file to the client (at 902). The client's player 105 then begins to play the video (at 904) while, at the same time, the client wrapper 162 starts to monitor the system (at 906). If the wrapper 162 determines that there is network congestion (or failure) (at 908), then the client contacts the monitoring manager 145 (at 910), reports the problem and asks for a monitor-controlled CDN switchover. The client then waits for a response from the monitoring manager 145. While waiting for a response from the monitoring manager 145, the player 124 continues playing, if possible (i.e., if the connection to the CDN has not been completely lost and/or the player 124 has some content buffered). If no network congestion was detected (at 908) by the client wrapper 162, then, if scheduled or necessary, the wrapper 162 reports any information (e.g., ping, status, etc.) and/or user events to the monitoring manager 145 (at 912) and processing continues. If all of the requested content referred to in the reference (ASX) file has been completed by the player 124 (at 914) then processing is done
(at 916), otherwise playing and monitoring continue (at 904 and 906).
If the client detects network congestion (at 908) but is unable to contact the monitoring manager 145 or the wait for a request to switchover to another CDN times out (at 918), then the wrapper/monitor 162 initiates a self-controlled CDN switchover (at 920) and then processing continues (at 914), if there is any content remaining to be played. In the case of a self-controlled CDN switchover, the player 124 switches over to another CDN specified in the reference file.
On the other hand, if the client determines that there is congestion (at 908) and is successful in contacting the monitoring manager 145 (at 910) and does not time out, the client obtains new CDN informatiori'from the monitoring manager
145 (at 922) and initiates a CDN switchover (at 924) to the new CDN. If the program has been completed (at 914) then processing is done (at 916), otherwise playing and monitoring continue (at 904 and 906).
The various mechanisms described herein, including, without limitation, the monitoring manager, the redirection manager, the bandwidth manager and the wrapper / monitor mechanism may be implemented in hardware, software or a combination thereof. When implemented in software, they may be implemented in any type of appropriate interpreted or compiled programming language. In preferred embodiments of this invention, the wrapper mechanism is implemented in the machine-independent Java™ programming language as small, powerful and fast C++ ATL COM objects. When implemented fully or partially in software, aspects of the invention can reside on any memory or storage medium, including but not limited to a ROM, a disk, an ASIC, a PROM and the like. When the various mechanisms of the present invention are running on a particular machine (e.g., the at the client or on a server), they may reside in the memory of the machine or on a storage device or in a combination.
While the invention has been described with reference to particular mechanisms (algorithms, processes and functions) and architectures, one skilled in the art would realize that other mechanisms and/or architectures could be used while still achieving the invention.
While embodiments of the present invention have been described with particular setup and initialization procedures, other setup and/or initialization procedures can be used. Further, while many of the operations have been shown as being performed in a particular order, one skilled in the art would realize that other orders, including some parallelization of operations, are possible and are considered to be within the scope of the invention.
The present invention has been described above in connection with a preferred embodiment thereof; however, this has been done for purposes of illustration only, and the invention is not so limited. Indeed, variations of the invention will be readily apparent to those skilled in the art. For example, the redirection and monitoring servers may be combined into a single server, or the system may additionally be used to store content developer's streaming media content. Such variations also fall within the scope of the invention.

Claims

What Is Claimed Is:
1. A system for delivering streaming media over a distributed communication network comprising: a plurality of content distribution networks (CDNs) for delivering the streaming media to a plurality of clients; load balancing means for evenly distributing a delivery load imposed by the plurality of clients over the plurality of delivery means; and client wrapper means, in each client, for providing information to the load balancing means for use in distributing the delivery load.
2. A system as in claim 1 wherein each client wrapper means comprises: means for monitoring network traffic received at the client to evaluate quality of service at the client.
3. A system as in claim 2 wherein the means for monitoring comprises: means for measuring at least one of network reliability, network congestion and network quality.
4. A system as in claim 3 wherein the means for monitoring monitors the received network traffic for at least one of: (a) total bytes received, (b) number of lost packets, and (c) number of recovered packets.
5. A system as in claim 2 wherein the means for monitoring sends to the load balancing means at least one of (a) network status information; (b) user action information; and (c) client status information.
6. A system as in claim 5 wherein the network status information is sent to the load balancing means regularly.
7. A system as in claim 6 wherein the network status information is sent at least every minute
8. A system as in claim 6 wherein the network status information includes at least some of: (a) a number of bytes transferred to the client, (b) a number of packets sent and/or received by the client; and (c) a number of packets recovered by the client from multiple CDNs.
9. A system as in claim 1 wherein the client wrapper means comprises: means for detecting a problem with network quality; and switchover means for, when a problem is detected with network quality, initiating a CDN switchover.
10. A system as in claim 9 wherein the switchover means comprises: means for requesting a CDN switchover from the load balancing means; and means for performing a self-controlled CDN switchover in the event that a requested switchover does not take place.
11. A method of managing delivery of streaming media in a system wherein streaming content is delivered to a client from a plurality of content distribution networks (CDNs), the method comprising, at a client: obtaining a reference file containing a reference to at least one CDN; requesting streaming content from a CDN in the reference file; and monitoring traffic received at the client to evaluate quality of service at the client.
12. A method as in claim 11 further comprising: sending to a monitoring manager information regarding the monitored quality of service at the client.
13. A method as in claim 12 wherein the information sent includes at least one of (a) network status information; (b) user action information; and
(c) client status information.
14. A method as in claim 11 further comprising: initiating a CDN switchover if a problem is detected with network quality,
15. A method as in claim 14 further comprising: performing a self-controlled CDN switchover in the event that a requested switchover does not take place.
16. A method as in claim 11 further comprising: receiving an instruction to perform a directed CDN switchover; and performing a directed CDN switchover.
17. A method of managing delivery of streaming media in a system wherein streaming content is delivered to a plurality of clients from ones of a plurality of content distribution networks (CDNs), the method comprising, at a monitoring manager: receiving status information from ones of the plurality of clients; based on received status information, directing a particular client to switchover to a different CDN.
18. A method of managing delivery of streaming media in a system wherein streaming content is delivered to a plurality of clients from ones of a plurality of content distribution networks (CDNs), the method comprising: receiving a request from a particular client of the plurality of clients to obtain a particular streaming content; selecting a particular CDN to provide the requested content to the particular client; and providing the client with a reference to the selected CDN.
19. A method as in claim 18 wherein the selecting of the particular CDN is based on at least some of:
(a) available CDNs; (b) the requested content;
(c) the status of the network; and
(d) pricing information.
20. A method as in claim 18 further comprising: providing the client with a list of CDNs from which the content may be obtained.
PCT/US2001/016329 2000-05-19 2001-05-21 Management and delivery of online webcasts WO2001091417A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001261788A AU2001261788A1 (en) 2000-05-19 2001-05-21 Management and delivery of online webcasts

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US20598700P 2000-05-19 2000-05-19
US60/205,987 2000-05-19
US66472400A 2000-09-19 2000-09-19
US09/664,724 2000-09-19

Publications (2)

Publication Number Publication Date
WO2001091417A2 true WO2001091417A2 (en) 2001-11-29
WO2001091417A3 WO2001091417A3 (en) 2002-06-06

Family

ID=26900941

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/016329 WO2001091417A2 (en) 2000-05-19 2001-05-21 Management and delivery of online webcasts

Country Status (2)

Country Link
AU (1) AU2001261788A1 (en)
WO (1) WO2001091417A2 (en)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1490997A1 (en) * 2002-04-02 2004-12-29 James Chladek System and method for subscription broadcast medium delivered over a broadband network
EP1519529A1 (en) * 2003-09-25 2005-03-30 Sony NetServices GmbH Content output device
WO2005083976A1 (en) * 2004-02-17 2005-09-09 Koninklijke Philips Electronics N.V. System, receiver, method, and program for distributing content
WO2006085205A1 (en) * 2005-02-14 2006-08-17 William Mutual A system for managing bandwidth
EP2104350A1 (en) * 2006-12-20 2009-09-23 Huawei Technologies Co., Ltd. A method, system and equipment for improving the reliability of a vod service
US7716220B2 (en) 2003-06-04 2010-05-11 Realnetworks, Inc. Content recommendation device with an arrangement engine
US7756880B2 (en) 2005-11-08 2010-07-13 Realnetworks Gmbh Method of providing content items
WO2010141460A1 (en) * 2009-06-01 2010-12-09 Swarmcast, Inc. Data retrieval based on bandwidth cost and delay
WO2010136699A3 (en) * 2009-05-29 2011-01-20 France Telecom Technique for distributing content to a user
US7908362B2 (en) 2007-12-03 2011-03-15 Velocix Ltd. Method and apparatus for the delivery of digital data
US8103786B2 (en) 2003-02-28 2012-01-24 Swarmcast Inc. (Bvi) Parallel data transfer over multiple channels with data order prioritization
US8301732B2 (en) 2008-05-12 2012-10-30 Google Inc. Live media delivery over a packet-based computer network
US8375140B2 (en) 2008-12-04 2013-02-12 Google Inc. Adaptive playback rate with look-ahead
CN103067529A (en) * 2013-02-06 2013-04-24 厦门神州鹰软件科技有限公司 Remote monitoring system
US8458355B1 (en) 2008-06-18 2013-06-04 Google Inc. Dynamic media bit rates based on enterprise data transfer policies
US10848707B2 (en) 2004-03-24 2020-11-24 Onstream Media Corporation Remotely accessed virtual recording room

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
EP0919912A2 (en) * 1997-11-28 1999-06-02 Hitachi, Ltd. Multiserver workflow system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459837A (en) * 1993-04-21 1995-10-17 Digital Equipment Corporation System to facilitate efficient utilization of network resources in a computer network
EP0919912A2 (en) * 1997-11-28 1999-06-02 Hitachi, Ltd. Multiserver workflow system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EL-MARAKBY R; HUTCHISON D: "Delivery of real-time continuous media over the Internet" PROCEEDINGS SECOND IEEE SYMPOSIUM ON COMPUTER AND COMMUNICATIONS, 1 - 3 July 1997, pages 22-26, XP002193746 Alexandria, Egypt *
ROH J R ET AL: "A switchable session management for the distributed multimedia-on-demand system" PROTOCOLS FOR MULTIMEDIA SYSTEMS - MULTIMEDIA NETWORKING, 1997. PROCEEDINGS., IEEE CONFERENCE ON SANTIAGO, CHILE 24-27 NOV. 1997, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 24 November 1997 (1997-11-24), pages 102-111, XP010258846 ISBN: 0-8186-7916-6 *

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1490997A4 (en) * 2002-04-02 2007-09-26 James Chladek System and method for subscription broadcast medium delivered over a broadband network
EP1490997A1 (en) * 2002-04-02 2004-12-29 James Chladek System and method for subscription broadcast medium delivered over a broadband network
US8103786B2 (en) 2003-02-28 2012-01-24 Swarmcast Inc. (Bvi) Parallel data transfer over multiple channels with data order prioritization
US7716220B2 (en) 2003-06-04 2010-05-11 Realnetworks, Inc. Content recommendation device with an arrangement engine
EP1519529A1 (en) * 2003-09-25 2005-03-30 Sony NetServices GmbH Content output device
WO2005032091A1 (en) * 2003-09-25 2005-04-07 Sony Netservices Gmbh Content output device
WO2005083976A1 (en) * 2004-02-17 2005-09-09 Koninklijke Philips Electronics N.V. System, receiver, method, and program for distributing content
US11528446B2 (en) 2004-03-24 2022-12-13 Onstream Media Corporation Remotely accessed virtual recording room
US10848707B2 (en) 2004-03-24 2020-11-24 Onstream Media Corporation Remotely accessed virtual recording room
US11818496B2 (en) 2004-03-24 2023-11-14 Onstream Media Corporation Remotely accessed virtual recording room
US10951855B2 (en) 2004-03-24 2021-03-16 Onstream Media Corporation Remotely accessed virtual recording room
US11128833B2 (en) 2004-03-24 2021-09-21 Onstream Media Corporation Remotely accessed virtual recording room
WO2006085205A1 (en) * 2005-02-14 2006-08-17 William Mutual A system for managing bandwidth
US7756880B2 (en) 2005-11-08 2010-07-13 Realnetworks Gmbh Method of providing content items
US8589367B2 (en) 2005-11-08 2013-11-19 Intel Corporation Method of providing content items
EP2104350A4 (en) * 2006-12-20 2011-02-23 Huawei Tech Co Ltd A method, system and equipment for improving the reliability of a vod service
EP2104350A1 (en) * 2006-12-20 2009-09-23 Huawei Technologies Co., Ltd. A method, system and equipment for improving the reliability of a vod service
US7908362B2 (en) 2007-12-03 2011-03-15 Velocix Ltd. Method and apparatus for the delivery of digital data
US8301732B2 (en) 2008-05-12 2012-10-30 Google Inc. Live media delivery over a packet-based computer network
US8661098B2 (en) 2008-05-12 2014-02-25 Google Inc. Live media delivery over a packet-based computer network
US8458355B1 (en) 2008-06-18 2013-06-04 Google Inc. Dynamic media bit rates based on enterprise data transfer policies
US9112938B2 (en) 2008-12-04 2015-08-18 Google Inc. Adaptive playback with look-ahead
US8375140B2 (en) 2008-12-04 2013-02-12 Google Inc. Adaptive playback rate with look-ahead
US20120072604A1 (en) * 2009-05-29 2012-03-22 France Telecom technique for delivering content to a user
WO2010136699A3 (en) * 2009-05-29 2011-01-20 France Telecom Technique for distributing content to a user
US9948708B2 (en) 2009-06-01 2018-04-17 Google Llc Data retrieval based on bandwidth cost and delay
WO2010141460A1 (en) * 2009-06-01 2010-12-09 Swarmcast, Inc. Data retrieval based on bandwidth cost and delay
CN103067529A (en) * 2013-02-06 2013-04-24 厦门神州鹰软件科技有限公司 Remote monitoring system

Also Published As

Publication number Publication date
WO2001091417A3 (en) 2002-06-06
AU2001261788A1 (en) 2001-12-03

Similar Documents

Publication Publication Date Title
EP0966715B1 (en) System and method for selection and retrieval of diverse types of video data on a computer network
US20160156686A1 (en) System and method for managing media
US7054949B2 (en) System and method for streaming media
US6286031B1 (en) Scalable multimedia distribution method using client pull to retrieve objects in a client-specific multimedia list
US9247277B2 (en) System for the delivery and dynamic presentation of large media assets over bandwidth constrained networks
EP2278775B1 (en) Multicasting method and apparatus
EP0986869B1 (en) Transmitting high bandwidth network content on a low bandwidth communications channel during off peak hours
US7383229B2 (en) Access control and metering system for streaming media
US7203758B2 (en) System and method for selective insertion of content into streaming media
WO2001091417A2 (en) Management and delivery of online webcasts
US8739231B2 (en) System and method for distributed video-on-demand
US20090327079A1 (en) System and method for a delivery network architecture
JP5477655B2 (en) Information processing method and recording medium
US8099511B1 (en) Instantaneous media-on-demand
US7593922B1 (en) Method and system for providing delivery of segmented data files

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
AK Designated states

Kind code of ref document: A3

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US US UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A3

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

32PN Ep: public notification in the ep bulletin as address of the adressee cannot be established

Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 69(1) EPC DATED 27-02-2003

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP