The invention relates to network media and other online content, and methods of managing access to such media.
The invention provides methods and apparatuses for managed access to network media, whereby users are able to access media on an account basis rather than on a license basis. Methods are provided whereby publishers of network media can offer such media on more flexible terms of service than have hitherto been supported, while still restricting access to users who have complied with the terms.
HTTP (for HyperText Transfer Protocol) is the primary method used to convey information on the World Wide Web.
A Uniform Resource Locator, URL or Web address, is a standardized address for some resource (such as a document or image) on the Internet or elsewhere. First created by Tim Berners-Lee for use on the World Wide Web, the currently used forms are detailed by Internet standard RFC 1738.
An HTTP cookie (usually called simply a cookie) is a packet of information sent by a server to a World Wide Web browser and then sent back by the browser each time it accesses that server. Cookies are used by a server to maintain state between otherwise stateless HTTP transactions, and are often used for authentication, personalization, shopping baskets, and other information about the user accessing the server.
The term “server”, when used here, is broadly understood to mean any computing entity or family of such entities capable of responding to user requests over a network. The computing entities may be computer servers or server farms, general purpose digital computers, personal digital assistants, special-purpose devices such as printers or scanners with digital processors built in, or specialized hardware devices such as XML chips or XML computers; either containing storage units or making use of storage units elsewhere on the network. The family of computing entities may be geographically distributed or may be “virtual” entities within a larger entity.
The terms “media” and “network content”, when used here, are broadly understood to mean any form of digital data capable of being rendered into a form or forms capable of apprehension by human senses, be they vision, hearing, smell, touch, taste, or other. It can include voice, video, audio, either streaming or downloaded; electronic games, broadcast television, video-on-demand, IPTV, interactive television, advertisements, text, graphics, and other forms of human-sensible digital data.
The term “media server”, when used here, is broadly understood to mean a server capable of providing media over a network.
The term “publisher”, when used here, is broadly understood to mean an entity, public or private, owning rights to some form of media and offering it for sale or distribution via a network.
The term “publishing point”, when used here, is broadly understood to mean an address of a service running on a server and capable of providing access to media over a network. It can include a URL when the network is the Internet, a network address, or other method of addressing such a service. The service identified by the publishing point may not have direct access to the media, and may instead provide access to the media via forwarding to another publishing point, which may in turn forward to another publishing point. The term “source publishing point” when used here, is broadly understood to mean a publishing point which provides access to media without forwarding.
The term “plug-in”, when used here, is broadly understood to mean a set of computer instructions capable of executing on a server. It can include a DLL, shared library, a compiled program in a language such as C, C++, Visual Basic, COBOL, a script in a scripting language such as Perl, JavaScript, Ruby, MS-DOS batch file, or Unix shell script, a set of byte codes interpreted by an interpreter such as Java or Python, or other computer code.
The term “media player”, when used here, is broadly understood to mean any computing or electronic entity or family of such entities capable of rendering electronic media into a form or forms capable of apprehension by human senses, be they vision, hearing, smell, touch, taste, or other. The computing or electronic entities may be televisions, CD players, stereo systems, home media centers, personal computers, personal music players such as MP3 players, video game consoles such as Sony Playstation, Microsoft's Xbox or Xbox 360, personal digital assistants such as PalmPilots or iPaqs, wired telephones, cell phones, or other devices.
The term “transaction”, when used here, is broadly understood to mean an action performed between at least two parties, one of whom is an entity acting on behalf of a publisher of network content, and another of whom is a user wishing to gain access to such content. The transaction could include payment via cash, check, credit card, PayPal or other such payment services, presentation of a coupon or other promotional offer, or any means whereby the user meets the access requirements of the publisher.
Publishers of network media have a business goal to retain control of their media objects and prevent the objects from becoming freely available, or pirated, as has happened with online music and movies on the Internet in the past. Further, even when a media object has been properly licensed or sold to an individual user, unlimited copying of such objects by the user must be prevented. Vendors of network hardware and software endeavor to meet such goals by various systems of encryption, licensing, digital rights management hardware and software, subscription models, micropayments and the like. Frequently these systems function by restricting the user's ability to access the media object to a single media player. These systems may be termed “license-based.” However, many users own multiple media players and would naturally prefer a model wherein a single purchase provides the user with the ability to access the media on one or more of the user's media players. There is a need for an “account-based” system of controlling access to media.
The web page 200, running in a web browser on computing entity 230, causes the voucher to be submitted to the media access controller server 270, at step 240.
Media access controller server 270 performs a method of validating the voucher, in pseudo-code:
In one embodiment, the step ‘generateToken(voucher)’ is performed by a one-way hash function, such as MD5 or other one-way function, on the following arguments:
Web page 250 contains a command allowing the user to begin access to the content, and the token described above. The user begins access at step 340, passing the token to media player 220, which could be Windows Media Player, Real Player, Winamp, or any other suitable software or hardware media player. Media player 220 then invokes media access manager server 300 at step 260, passing the token to 300.
Upon receipt of the token, media access manager server 300 invokes a playlist generation step on Playlist generator server 210 at step 330, sending a URL containing ‘/playlist.php?token=t’. Step 330 thus includes the token ‘t’ and a request ‘playlist.php’ to generate the playlist. It should be noted that Playlist generator server 210 need not be a separate machine from media access manager 300. 210 and 300 could both be software services running on a single hardware server. In step 330, Playlist generator server 210 validates the token, and creates a dynamic playlist of media to be delivered at step 280, according to the following pseudo-code:
Note that the playlist can be customized depending on the token, and may be specific to a particular user, demographic group, geographical area, time of day or season of year, or any other relevant business consideration. The playlist may include advertising, promotional materials, coupons or other media, as well as the network content access to which is authorized by the voucher. Or, if the token is invalid, expired, or otherwise not usable, 210 may return error messages in the playlist.
Media access manager server 300 delivers the content specified in the playlist it receives in 280 to the media player 220 in step 340. Media player 220 then renders the media for the user.
In
The web page 200, running in a web browser on computing entity 230, causes the voucher to be submitted to the media access controller server 270, at step 240. The voucher could be embedded in the web page, or a cookie containing the voucher could have been sent, or any other suitable method of passing the voucher could be used.
Media access controller server 270 performs a method of validating the voucher, in pseudo-code:
Web page 250 contains a command allowing the user to start the stream, and a token, the content of which is described below. The user starts the stream at step 340, passing the token to media player 220, which could be Windows Media Player, Real Player, Winamp, or any other suitable software or hardware media player. Media player 220 then invokes media access manager server 300 at step 260, passing the token to 300.
Custom plugin 350 running on media access manager server 300 executes an algorithm represented by the following pseudo-code:
switch (event)
Plug-in 350 also executes the logic illustrated in
In this embodiment, the web page 250 contains multiple source publishing points which the user is invited to select from. For example, the multiple source publishing points could represent different radio stations all owned by a common owner, or different mirror sites for a download service. In this example, there are three source publishing points, ‘src1’, ‘src2’, and ‘src3’. Media access controller server 270 performs a method of validating the voucher, in the following pseudo-code:
In this embodiment, all components are as described above in
The user selects a source publishing point ‘src1’ and starts the stream at step 340, passing the string ‘/pp1?token=t&unique_id=voucher.unique-id&endtime=voucher.endtime&src=src1’ to media player 220. In step 330, the source publishing point id ‘src1’ is used to direct the playlist generation step to one of the source publishing points 360, as in the following pseudo-code:
Media access manager server 300 delivers the content specified in the playlistit receives in 280 (in this example ‘/sc1’) to the media player 220 in step 340. Media player 220 then renders the media for the user.
Foregoing described embodiments of the invention are provided as illustrations and descriptions. They are not intended to limit the invention to precise form described. In particular, it is contemplated that functional implementation of invention described herein may be implemented equivalently in hardware, software, firmware, and/or other available functional components or building blocks, and that networks may be wired, wireless, or a combination of wired and wireless. Other variations and embodiments are possible in light of above teachings, and it is thus intended that the scope of invention not be limited by this Detailed Description, but rather by Claims following.
This patent application is a conversion of U.S. provisional application Ser. No. 60/578,758, filed Jun. 9, 2004; pending, the priority date of which is claimed and the disclosure of which is incorporated by reference.
Number | Name | Date | Kind |
---|---|---|---|
6360254 | Linden et al. | Mar 2002 | B1 |
6484197 | Donohue | Nov 2002 | B1 |
6505300 | Chan et al. | Jan 2003 | B2 |
6718328 | Norris | Apr 2004 | B1 |
6779115 | Naim | Aug 2004 | B1 |
6868403 | Wiser et al. | Mar 2005 | B1 |
6948061 | Dierks | Sep 2005 | B1 |
7454356 | Fields et al. | Nov 2008 | B2 |
7603469 | Fletcher et al. | Oct 2009 | B2 |
7962415 | Gupta et al. | Jun 2011 | B2 |
8051491 | Cavage et al. | Nov 2011 | B1 |
8095972 | Floyd et al. | Jan 2012 | B1 |
8281136 | Ramakrishna | Oct 2012 | B2 |
8316091 | Hirvela et al. | Nov 2012 | B2 |
8333317 | Buer et al. | Dec 2012 | B2 |
8447858 | Venkatraman | May 2013 | B1 |
20010045451 | Tan et al. | Nov 2001 | A1 |
20020177433 | Bravo et al. | Nov 2002 | A1 |
20030037070 | Marston | Feb 2003 | A1 |
20030061250 | Fujita et al. | Mar 2003 | A1 |
20030099353 | Goh et al. | May 2003 | A1 |
20030120943 | Hughes | Jun 2003 | A1 |
20040243475 | Aronsson et al. | Dec 2004 | A1 |
20050060389 | Cherkasova et al. | Mar 2005 | A1 |
20060059346 | Sherman et al. | Mar 2006 | A1 |
20060085862 | Witt et al. | Apr 2006 | A1 |
20060095779 | Bhat et al. | May 2006 | A9 |
20060184997 | La Rotonda et al. | Aug 2006 | A1 |
20060190616 | Mayerhofer et al. | Aug 2006 | A1 |
20060225138 | Toyohara et al. | Oct 2006 | A1 |
20070219908 | Martinez | Sep 2007 | A1 |
20080183628 | Oliver et al. | Jul 2008 | A1 |
Entry |
---|
“Speedera Streaming Solutions”, Streaming Services. <http://www.speedera.com/pdfs/Streaming—Datasheet.pdf> 2004 Speedera Networks, Inc. Santa Clara, CA. |
“Bringing your audio and video streams to the world—securely”, SpeedSuite. <http://www.speedera.com/primary/services/Secure.htm> 2005 Speedera Networks, Inc. Santa Clara, CA. |
“Secure Streaming”, Akamai Streaming. <http://www.akamai.com/en/html/services/streaming—secure.html> 2005 Akamai Technologies, Inc. Beverly Hills, MI. |
“Abacast Secure Stream API Reference”, Doc Version 1.0.30.3, Abacast Streaming Media Software. Jun. 18, 2004. Abacast, Inc. Washougal, WA. |
Number | Date | Country | |
---|---|---|---|
60578758 | Jun 2004 | US |