The Internet has become a popular medium for transmitting streaming video from a source to a user, but in many cases popularity has preceded profitability. For example, Google's YouTube video sharing service has become one of the most popular sites on the web by offering end users free access to upload and download video, but Google has yet to demonstrate that the service can be operated profitably, while it still struggles to enforce copyright rights over materials uploaded by the users.
Hulu has become another of the fastest growing sites by offering streaming video from prime-time network television shows to end users supported by accompanying advertising. However, it is unclear whether advertising revenues alone will be able to offset the required network access charges.
Finally, neither of these free services offers an answer to providers of high-value multimedia content to paying audiences, whose business models rest on charging for access to their content. Login mechanisms for authorizing access to content exist, but have not yet been embraced by video consumers, due in part to the difficulty in getting the consumers to enter into a login account relationship with each potential provider.
Thus, a need exists for a method and apparatus that allows access to video to be authorized from a number of providers in a manner that places a minimal authentication burden load on the end user, while still protecting copyright and licensing arrangements specified individually by a plurality of multimedia content providers.
In accordance with the principles of the invention, members of a licensee organization are permitted to view video selections in conventional browsers running in computers connected to an intranet belonging to the organization. Licensed access to the videos is provided by a licensing service organization that obtains licenses from video content providers and combines these licenses into a new license for selected videos for the licensee organization. Administrators at the licensee organization then obtain a video authorization key for each video selection from the licensing service organization and embed those keys into web pages that are accessible via the intranet. A viewer desiring to display a video selection navigates to a web page for that selection from a computer connected to the intranet causing a viewing request that includes the embedded video authorization key to be sent to a server at the licensing service organization. The server uses the incoming information to determine whether the request can be granted based conditions in a license for that video selection. If the request can be granted, the licensing service organization returns an access token to the viewer browser, which token can be used to download and display the video from a content provider network.
In one embodiment, the server uses the video authorization key to identify a license that applies to the licensee organization and the video selection.
In another embodiment, the internet IP address of the viewer's computer is sent to the licensing service organization server along with the video authorization key and the IP address is compared to valid address ranges in the new license for the licensee organization to determine if the request is valid.
In still another embodiment, when the viewer navigates to a web page for a video selection a display program is downloaded from the licensing service organization and the display program generates the viewing request.
The set up process starts in step 100 and proceeds to step 102 where video content providers (video content providers 200 and 202 are illustratively shown in
Terms for Video Content Provider 1:
(T1) Organizations may license video content on a subscription basis for viewing of any one video selection up to 50 times, on any number of occasions.
(T2) For additional payment of $X, organizations may purchase a license for viewing of a single video selection up to 500 times.
Terms for Video Content Provider 2:
(T3) Organizations may license video content on a subscription basis for viewing of all video selections on any number of occasions, for a period of one year.
In step 104, the terms for each license are stored in a terms database 210 by a server 212 at the LSO location as indicated schematically by arrow 214. In the terms database 210, the terms can be stored in data structures such as those illustrated in U.S. Pat. No. 5,991,876. At some point, video content providers 200 and 202 also upload the actual video content into a content distribution network (CDN) server 236 via Internet 226 as indicated schematically by arrows 238 and 240.
In accordance with the principles of the invention, a licensee organization customer can purchase content viewing licenses from the licensing service organization for users that are members of the organization. For example, in step 106, a licensee organization customer 216 requests to purchase a one-year subscription license from the LSO 204 that allows its member users to view multimedia content from both video content provider 1 and video content provider 2 as shown schematically by arrow 218.
As part of the purchase request, the licensee organization 216 provides the LSO 204 with a range of internet protocol (IP) addresses. Each address within the range corresponds to a network address of a network-attached computer on which members of the licensee organization may view the licensed content. These address range is stored in data structures such as those shown in
The IP address range table 302 includes fields which store the low and high IP addresses corresponding to the ends of the range in both “dot” notation (12.345.678.900) and as a value (12345678900).
In response to the request, the LSO server 214 accesses terms database 210 as indicated by arrow 214 and extracts the relevant terms, for example, the terms shown above for video content providers 1 and 2. Then, as set forth in step 108, the LSO server 212 constructs a new license. This new license contains a union of the relevant terms from the license agreements between the LSO 204 and video content providers 1 and 2 (200, 202) and includes the IP address range provided by the licensee organization. For example, the new license might include terms such as:
New License:
(L1) licensee organization members may view video content provider 1 content at their discretion, with up to 50 members viewing any one selection. (T1)
(L2) licensee organization members may view video content provider 2 content at their discretion, for a period of one year. (T1)
(L3) licensee organization members may view any of the above licensed content from network-attached computers using publicly-available IP addresses ranging from 12.345.678.001 to 12.345.678.254.
In step 110, as indicated schematically by arrow 222, the LSO server 212 records the new license terms in a license database 220 in data structures such as those shown in
The right table 406 contains one record for each “limit type” that the rightsholder chooses to authorize. In the illustrative embodiment, two limit types, “use count” and “time limit” are shown. However, those skilled in the art would understand that other limit types could be incorporated without changing the scope and spirit of the invention.
As with the tables illustrated in
Specifically, for each content item for which the licensee organization desires a license, the licensee organization accesses the content_item table 402 stored in the license database 220 with a content_item_id and uses the rightholder_id stored therein to access the rightsholder table 400. The licensee organization chooses a right to license from the list of rights stored in the rights table 406 and belonging to the selected rightsholder_id. The licensee organization then purchases a license for the selected right.
For each license purchased, the LSO server creates a new license record in the license table 408 and a corresponding record in one of the license subtype tables as determined by the value of the limit_type_id field in the new license record. In the illustrative embodiment, the value of the limit_type_id field selects one of use_count_license table 414 or time_limit_license table 416 with the table attributes populated appropriately.
The LSO server also inserts a corresponding record into the auth_key table 410 in the keys database 230. The license_id field contains the primary key of the new license record and the hash field contains a value that is either a large random number or a strong cryptographic hash of the license attributes and the current date-time. The hash value is unique for every license granted.
After purchasing the content viewing license from the LSO 204, personnel from the licensee organization 216 can embed video authorization keys into web pages of an intranet associated with the organization as set forth in step 112. As described in more detail below, each video authorization key allows a member of the organization to access an intranet web page and view a video selection associated with that page. The set up process then finishes in step 114.
In response to the request, as indicated in step 504, the LSO server 212 uses the customer ID and the content_item_id to access the license table 408 in the licenses database 220 to select a license purchased by the licensee organization for the requested content item. The LSO server 212 then retrieves the hash field value from the auth_key table 410 of the keys database 230 using the license_id as indicated by arrow 232.
Next, in step 506, the LSO server 212 sends information to the browser 224 via the Internet 226 as indicated by arrow 234. This information causes a string to be displayed on the browser 224. The string contains a video authorization key in the form of an HTML <EMBED> tag required to display a browser-based video player. The tag references a URL of a video display program hosted at the LSO website by server 212, which displays the requested video, and includes the aforementioned hash value.
In step 508, the administrator copies the text of the <EMBED> tag and pastes the text into the source code of an intranet web page hosted by server 244 and stored in database 246. This latter action is indicated schematically by arrow 242. The process of embedding the video authorization key then finishes in step 510. This process is repeated for each video that can be viewed by members of the licensee organization 216 so that a key for that video is embedded into at least one intranet web page.
Next, in step 606 and as indicated schematically by arrow 708, the video display player program 702 requests an access token from the LSO server 212, presenting the customer id of the licensee organization, the hash value extracted from the HTML <EMBED> tag and the IP address of the computer from which the request originated.
In step 608, the LSO server uses the IP address received in the request to access the IP range table 302 in the terms database 210 as indicated by arrow 214. If the IP address is determined to be invalid in step 610, then the process proceeds, via off-page connectors 614, 618, 632, 636, 652 and 656 to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670. Alternatively, if the IP address falls within an IP address range contained in one of the records in table 302 as determined in step 610, the LSO server retrieves that record and the process proceeds, via off-page connectors 612 and 616, to step 620 where the LSO server uses the customer_id field value in the retrieved record to access the customer table 300 and retrieve the customer name.
Next, in step 622, the LSO server 212 attempts to use the hash value received in the access token request to access the auth_key table 410 in the keys database 230 as indicated by arrow 232. Then, in step 624, a determination is made whether the hash value is valid by determining whether the access attempt is successful. If it is determined in step 620 that the hash value is invalid, then the process proceeds, via off-page connectors 632, 636, 652 and 656, to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670.
Alternatively, if in step 624 it is determined that the hash value is valid, then, in step 626, the LSO server 212 retrieves the license_id field value from the auth_key table 410 and uses it to access the license table 408 in the licenses database 220 and retrieve the corresponding license for the licensee organization. The customer_id field value of the retrieved license record is then used to access the customer table 404 and retrieve the customer name.
In step 628, the customer name obtained in step 620 is compared to the customer name obtained in step 626. If it is determined in step 628 that the customer names do not match, the process proceeds, via off-page connectors 632, 636, 652 and 656, to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670.
Alternatively, if it is determined in step 628 that the retrieved customer names match, then the process proceeds, via off-page connectors 630 and 634, to step 638 where the LSO server 212 retrieves the content_item_id value from the corresponding field in the license record that was retrieved in step 626.
Next, in step 640, a determination is made whether the license record that was retrieved in step 626 defines a use count license. This determination is made by examining the value of the limit_type_id field in the license record. If it is determined in step 640 that the license is a use count license, then the process proceeds to step 642 where a determination is made whether the value of the current_use_count field in the license record is less than the value of the max_use_count field in the license record. If this comparison indicates that the maximum number of uses has been reached, then no further viewing of the selected content item is allowed. In this case the process proceeds, via off-page connectors 652 and 656, to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670.
Alternatively, if it is determined in step 642 that the maximum number of uses has not been reached, then the process proceeds to step 644 where the value of the current_use_count field is incremented. The process then proceeds to step 648, which is described below.
If in step 640 it is determined that the retrieved license record is not a use count license, then in the illustrative embodiment, the license must be a time limit license. If additional license type alternatives are available, then the process shown would be modified in a well-known manner. In the case of a time limit license, in step 646, a determination is made whether the current date and time fall within the allowed range defined by the values of the start_date_time and exp_date_time fields in the retrieved license. If the current date and time fall outside of the allowed range, then the license has expired and the process proceeds, via off-page connectors 652 and 656, to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670.
Alternatively, if in step 646, it is determined that the license has not expired, then the process proceeds to step 648 where the LSO server 212 generates a content delivery network (CDN) access token allowing access to the selected media file and returns it to the video display program 702 running in the viewer browser 224 as indicated schematically by arrow 710. The LSO server 212 may generate this token using an algorithm provided by the CDN server 236, or by requesting that the CDN server 236 generate a token corresponding to the selected media file and return it to the LCO server 212. The token is auto-expiring so that it will become invalid after a predetermined period of time after issuance.
The process then proceeds, via off-page connectors 650 and 654 to step 658 where the video display program 702 requests the video stream for the requested media file from the CDN server by presenting the access token received in step 646 as indicated schematically by arrow 712.
In step 660, using its own data structures, the CDN server 236 checks the access token to make sure that the token is valid, has not been used before and has not expired. If it is determined in step 662 that the access token is invalid, then the process proceeds to step 668 where a message is displayed to the viewer that the selected video cannot be displayed. The process then ends in step 670. Alternatively if it is determined in step 662, that the access token is valid, the process proceeds to step 664 where CDN server 236 returns a video stream for the selected media file to the video display program 702 as schematically illustrated by arrow 714. In step 666, the video display program 702 displays the video stream and the process finishes in step 670.
While the invention has been shown and described with reference to a number of embodiments thereof, it will be recognized by those skilled in the art that various changes in form and detail may be made herein without departing from the spirit and scope of the invention as defined by the appended claims.