It is becoming increasingly popular for people to download media content from the Internet. Such content includes various types of pre-recorded video and audio files, as well as live programming, and includes both content that is free or paid for in some way, such as by subscription.
One problem is that when content is delivered through a web server, there is little or no control over how the user views and/or listens to the content. For example, a viewer may choose to skip over certain content, or seek within the content. As one consequence, this essentially means that there is no easy way to serve content that earns reasonable revenue from advertisements, as advertisers will not pay, or will pay relatively little, when there is no guarantee that a viewer will not just skip over their advertisements. No known standard and/or solution currently exist to control user interaction with served content.
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a technology by which a server controllably sends pieces of media content to a client in response to client requests. For each client request (or for a subset of the requests), the server determines whether the client is allowed to receive a particular piece of media content that corresponds to that request. If so, the server sends that particular piece of media content.
In one example implementation, the server creates a session for the client, and maintains session-related data corresponding to that session. For example, the session-related data may track the content previously sent to the client. The determination as to whether the client is allowed to receive a particular piece of media content may be made by evaluating a playlist associated with the client against the session-related data. A playlist provider may provide the playlist. The playlist provider may also be coupled to the server and to a media content source to provide the media content as content items in response to the client requests for media content.
In one aspect, media content may be sent to the client based on a dynamic condition, and/or a playlist may be dynamically adapted. Further, a particular piece of media content may comprise an advertisement. The advertisement may be selected (e.g., by the server or a playlist provider) from among a plurality of possible advertisements, such as based upon user profile information associated with the client, and/or based upon location information associated with the client.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards facilitating the controlled delivery of web media content, including by progressive download from a web server. As will be understood, this provides the ability to exercise server control on media delivery. Among other aspects, this allows server-side control over operating functionality exposed to the client, such as seek, skip forward, skip backward and/or the like.
With sever control, content may be delivered in a way that is flexible with respect to various customer needs, yet is extensible for various business models and the like. For example, content may be served differently based on user-related and/or location-related considerations, such as to target advertisements to certain locations and/or types of users. Further, such control may prevent skipping or seeking, or may allow some interaction to an extent based on conditions, such as how much percentage of the total content has been sent to a client thus far; e.g., a client may be allowed to skip forward to the next content in the playlist after eighty percent of that piece of content was previously sent. Some operations may be allowed for certain clients and disallowed for others, such as allowing paid subscribers to skip over content but not allowing the same functionality to non-paying clients.
While various examples herein are primarily described with respect to interaction between a single client and a single web server that acts as an intermediary to selectively and controllably retrieve content from a content source, in which enforcement of server controls is accomplished via a client/user session, it is understood that these are only examples. For example, it is understood that the technology described herein is intended for use in a networking (e.g. Internet) environment that includes many clients coupled to possibly many servers, which in turn may receive content supplied by various content providers. Moreover, it is feasible for the server to contain the content, and indeed may cache content (e.g., popular content) and/or employ a local virtual-like content provider to avoid unnecessary communication with a remote content provider.
As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in computing, networking and content delivery in general.
Turning to
In the example implementation of
In return, the server 104 provides the client 102 with a client-side playlist (e.g., in the form of an .asx file that references one or more content files or the like) that has entries to some or all of the media content. The client may now select among the one or more entries in the playlist for playing the corresponding content. As generally represented in
By way of example, a client may be requesting to skip forward by requesting a particular piece of content that is out-of-order with respect to another piece of content not yet sent to the client. Whether that request (a skip operation) is allowed is evaluated by the control logic 114 based on what the playlist states (if anything) about skipping over content. The playlist may include data specifying under what conditions a skip is allowed, such as if based on how many bits the user has been previously sent.
In the example of
As represented in
By way of example, consider that content downloaded to certain users contains advertisements tailored to the user's profile and/or location, such as advertisements for local car dealerships that are generally close to a viewer's location. Not only may the advertisements be selectively chosen for that viewer/location, but the playlist may disallow skipping over such advertisements for free (e.g., non-premium paying) viewers. However, with a different playlist such as for other types of users, certain users such as premium subscribers may be allowed to seek and skip at will. Each of the users see the desired content, but different types of users are able to interact differently with the content (e.g., skip or not) each according to that user's respective playlist maintained at the server.
Moreover, because content is downloaded in pieces of partial content, the server remains in control, whereby for example the typical viewing process may be dynamically changed by the server (or possibly the provider 106) at any time. This allows the interruption of regular content viewing such as to play a commercial advertisement during an unpredictable break (e.g., a timeout during a sporting event), or to convey an emergency weather warning, and so forth. Via server control, content playback can also be regulated, e.g., a user may be prevented from receiving the same content again and again, such as to prevent playing the same song more than three times in an hour.
Multiple formats may be specified in the same playlist. A client 102 (e.g., manually by the user or by an automated process) may then choose the type of format for the content. For example, one client may want an .asx formatted playlist, while another client wants a differently-formatted playlist. Note that the playlist format is extensible, e.g., a particular implementation may use .asx as the format while others may use their own custom client-side playlist formats. Further, the playlist may contain items that are different format types, e.g., a single playlist could have .wma, .wmv, .mp3 and so on from which a user or process may choose.
To summarize, some of the various aspects and/or alternatives thus include delivering the content in multiple formats through a single playlist, and/or delivering the content using existing client-side playlist formats. The content may be user-specific and location-specific, and further may be delivered based on dynamic events. For example, a tornado warning may be overlaid or substituted for other content for users in a certain location, an unexpected disruption of a sporting event (e.g., rain delay) can covered by advertisements and/or prerecorded content, and so forth; tailored and/or dynamic control may apply to many different events and situations. Still other aspects include the ability to build an extensible solution for providing server-controlled media content delivery, which allows solutions to be easily customized through generic interfaces exposed by a base solution.
Another alternative variation is represented in
In one example implementation, namely an Internet Information Server (IIS) implementation generally represented in
With respect to a user session, the handler 330 starts and maintains a user session for client requests. As described above, the user session is used to keep track of data such as bytes downloaded, to enforce the playlist attributes. Note that one example feature implements a server-side playlist through a client-side playlist. In this implementation, there is a chance that the player may not respect the playlist attributes, or that the client-side playlist may be edited.
In one example implementation, the handler 330 creates a GUID or the like as a session identifier as soon as it gets a request. The user session is identified through this GUID, which passed during the communications. The response to the request comprises a client-side playlist, e.g., passed as a bit stream. This client-side playlist may contain obfuscated entries that have these GUIDs as a part of each media entry URL. Note that protection mechanisms may be provided for user sessions, such as to protect the content from being linked to an unauthorized source. For example, if a user watches a playlist containing an advertisement and a movie clip, the user may otherwise intercept the movie clip URL, and post it to a blog/forum. To protect the content from such an unauthorized link, the server can make sure there is only a limited amount of concurrent connections (e.g. two, one for current play and one for pre-rolling a next entry) for one user session, and/or have a timeout mechanism so that the user session is terminated after some time of inactivity. Further, if the user session data (such as the GUID in the URL) is tampered with in any way, the server may fail the request, in order to protect the content.
Other aspects related to giving the media content owner better protection include that the media content or contents that are referenced by the playlist do not need to be located in the published web server URL namespace. In such a situation, it is not possible for the client to directly access the media content by static file URLs (such as http://server/abc123.wmv); instead, the only way to get to content is via the playlist handler, including following the rules defined by the playlist. On the server side, the content can reside in locations that require special user credentials, whereby a server administrator may configure access options so that only a web playlist or the like may have access to that location.
A server-controlled playlist also prevents unauthorized links to the content in the playlist. With a server-controlled playlist, (in contrast to a traditional playlist in which users can directly share the links to one piece of content of a playlist and ignore other controls), it is not possible to directly share the playlist content URLs among clients because of enforcement mechanisms, such as the concurrent client connection limit and session timeout set forth above.
Still further, the client-side cache may be disabled when serving content from the playlist so that ordinary clients are unable to play the same content from a local cache. With such a mechanism, clients have to request the desired content from the server each time. Note that this only provides partial protection with ordinary users, as it is possible to modify clients to cache the content. However, digital rights management (DRM) technology can be used in conjunction with web playlist for more comprehensive content protection.
As mentioned above,
With respect to a playlist store 444 (
Note that the default provider 506 may achieve some of the above-described scenarios using a declarative syntax. For example, configuration sections may be written that allow for patterns. These patterns may be then matched to tags on the media content to retrieve the correct media content based on user or location attributes.
Turning to extensibility, it can be readily appreciated that custom providers may extend the playlist support. This may be of considerable value, such as in situations that provide user-specific and/or location-specific content through the use of cookies, URL modifiers, IP addresses, user profile attributes, group attributes, roles, and so forth. The custom providers may be written in managed or unmanaged code. However writing managed code is typically faster and easier, whereby having managed custom providers improves the chances of community involvement.
By way of summary,
In
When a client request is received as detected by step 612, further processing continues. In this example, at step 614 the server first considers whether there is a special situation of which the server is aware (at least with respect to this particular client) that takes precedence over a client content request, such as an emergency warning that is returned regardless of the client request. If so, step 616 returns corresponding special content. Note that in one alternative, step 614 may be within the wait loop (e.g., before step 612) so as to push special content such as an emergency warning to a client independent of a client request, although the client may need to be configured to accept such pushed content. In another alternative, the server may superimpose or insert graphics or the like over or adjacent another piece of video content (e.g., to be returned at step 626), and thus provide special content without interrupting the main or other video content.
If there is no special situation, step 618 evaluates whether the client request corresponds to ending the session. For example, the client may explicitly log out, such as if after reviewing the playlist no content is desired, or may indicate that no more content is desired, such as following a free preview and deciding not to purchase. Note that while step 618 exemplifies a session end, an additional alternative is to provide a mechanism for a client to select different content from the playlist or request a new playlist without ending the session.
When the client has requested content and the “no” branch of step 618 is followed, step 620 represents validating the client request, such as the GUID or other credentials that indicate the client is authorized to make the request; if not, the request is rejected (step 624). If validated, step 622 considers the requested content versus the playlist. For example, the playlist may indicate that this particular client, such as one that is viewing a program for free in exchange for having to view advertisements, cannot skip forward and is instead required to receive the content completely and in order (as opposed to a premium-level client, for example). If in such an example the client request is directed towards receiving content on the playlist that is ahead of the proper order, the request is rejected (step 624). Note that even when a client is not allowed to skip ahead, the playlist may contain entries for different portions of content within a single program, so that a client can skip backward to an earlier portion, for example, or skip forward within already received content.
If at step 716 the client is validated and at step 718 the client request is allowed according to the playlist, at step 722 the server computes a request for corresponding content, and communicates the request to the provider. Otherwise the server may reject the request (step 720). The server receives whatever item of content the provider returns, and forwards that item onto the client. As can be readily appreciated, the computation at step 722, and/or the provider's ability to selectively return content items enables an adaptive system.
As can be seen, there is described herein the controlled delivery of media content from the web in various, flexible ways. Scenarios including monetization and/or compliance are enabled through the use of controlled media content delivery as described herein.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 810 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 810 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 810. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above may also be included within the scope of computer-readable media.
The system memory 830 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 831 and random access memory (RAM) 832. A basic input/output system 833 (BIOS), containing the basic routines that help to transfer information between elements within computer 810, such as during start-up, is typically stored in ROM 831. RAM 832 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 820. By way of example, and not limitation,
The computer 810 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 810 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 880. The remote computer 880 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 810, although only a memory storage device 881 has been illustrated in
When used in a LAN networking environment, the computer 810 is connected to the LAN 871 through a network interface or adapter 870. When used in a WAN networking environment, the computer 810 typically includes a modem 872 or other means for establishing communications over the WAN 873, such as the Internet. The modem 872, which may be internal or external, may be connected to the system bus 821 via the user input interface 860 or other appropriate mechanism. A wireless networking component 874 such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 810, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 899 (e.g., for auxiliary display of content) may be connected via the user interface 860 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 899 may be connected to the modem 872 and/or network interface 870 to allow communication between these systems while the main processing unit 820 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.
Number | Date | Country | |
---|---|---|---|
60997132 | Oct 2007 | US |