Many businesses and individuals wish to distribute and view video over the internet, often within the context of a web browser. As video is distributed in this form, issues arise relating to the amount of control a distributor has in how a video is displayed, as well as how a distributor can realize revenue from popular videos. Existing technologies may allow commercials, links, or text to be included within distributed videos, however these technologies may have the drawback of requiring changes to the distributed video files themselves. Other technologies may require explicit linking of given videos to given advertisements or resources, such that changing the linking to respond to changing sponsors, changing markets, changing contexts, or user responses is difficult.
The present invention broadly relates to systems and methods for deploying video content in a video player which enables context-specific actions and policies. In some embodiments, this comprises a video player operating in a web browser which receives a policy file or a hierarchy of policy files describing specific actions, such as displaying a text, image, link, or video, to be taken when a certain element is encountered or a condition is satisfied in a video. The video player may then receive a video and an accompanying cue file or data stream which describes elements within the video. As the video player plays the video, the player processes the cue file or stream and takes any actions dictated by corresponding policies based on an available context. In this manner, individual video content may be separated from policy decisions such as when to show links, advertisements, related content, or taking any other action with respect to the video and the context.
In one aspect, the present invention relates to a method for enabling context-specific actions with respect to streaming video viewed in a web browser. In one embodiment, the method comprises: receiving, by a video player, one or more associations to be applied to at least one video, each association comprising a key and a resource; receiving, by the video player, at least a portion of a video; receiving, by the video player, one or more cues expressed in a markup language, each cue linking a temporal portion of the video to a key; playing, by the video player, at least a portion of the video; determining, by the video player, a key specified in a first cue corresponds to a key in a first association; and applying, by the video player at the temporal portion of the video specified in the first cue, the resource specified in the first association.
In another aspect, the present invention relates to a client for enabling context-specific actions with respect to streaming video viewed in a web browser. In one embodiment, the client comprises: a transceiver which receives: at least a portion of a video, receives one or more associations to be applied to the at least one video, each association comprising a key and a resource, and receives one or more cues expressed in a markup language, each cue linking a temporal portion of the video to a key; and a processor which executes a video player, the video player playing at least a portion of a video; determines a key specified in a first cue corresponds to a key in a first association; and applies, at the temporal portion of the video specified in the first cue, the resource specified in the first association.
The foregoing and other objects, aspects, features, and advantages of the invention will become more apparent and may be better understood by referring to the following description taken in conjunction with the accompanying drawings, in which:
Referring now to
Still referring to
As shown, the client 102 is connected to a video platform 100 via a network 104. The network 104 may comprise the Internet, local networks, web servers, file servers, routers, load balancers, databases, computers, servers, network appliances, or any other computing devices capable of sending and receiving information. The network 104 may comprise computing devices connected via cables, IR ports, wireless signals, or any other means of connecting multiple computing devices. The network and any devices connected to the networks may communicate via any communication protocol used to communicate among or within computing devices, including without limitation RMTP, Real Time Streaming Protocol (RTSP), Microsoft Media Server (MMS) protocol, Move Media Services leverage Quantum Streaming, RTCP, RTP, PNA (Progressive Networks Audio), SSL, HTML, XML, SOAP, AMF, REST, JSON, SFTP, RDP, ICA, FTP, HTTP, TCP, IP, UDP, IPX, SPX, NetBIOS, NetBEUI, SMB, SMTP, POP, IMAP, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802. 11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections, or any combination thereof. The network 104 may comprise mobile telephone networks utilizing any protocol or protocols used to communicate among mobile devices, including AMPS, TDMA, CDMA, GSM, GPRS or UMTS. The network may comprise a plurality of physically distinct networks, and the network may comprise a plurality of sub-networks connected in any manner.
A video platform 100 may comprise any server or servers capable of sending and receiving data. A video platform 100 may perform any function related to the delivery and processing of video, including without limitation serving and/or streaming videos, receiving and processing user requests, receiving and processing user information received from a video player 300, and distributing policies and key associations corresponding to a video. In some embodiments, some functions of a video platform may be split among multiple physical or logical devices. For example, a streaming server 106a may manage and deliver streaming video content to players, while a policy server 106b manages and transmits policies relating to requested videos, while a player server 106c may manage and deliver the video player 300 in response to user requests to download the functionality.
Referring now to
Still referring to
The content developer may pass the video content to a content manager 103. The content manager 103 may develop a cue file for the video content. A cue file may comprise any digital representation of a correspondence between a spatial or temporal portion of the video and a key. An example cue file, where an XML format is used to identify such correspondences is shown below. In the example below, a number of “timelineevents”, each with a title and type are specified. Examples of types include commentary, video advertisements, polls, graphics, and jumps to different times within the clip (specified below in the “utype” parameter). Each timeline event may have an associated stop or start time, and any associated data, such as text or graphics to display. Each timeline event may also have a parameter specifying whether the event is localized to a particular timepoint or occurs over a timespan (specified below in the “type” field).
Although the cue file above is XML, any other language and/or markup language may be used including without limitation HTML and SVG.
A policy manager may create one or more policies relating to keys within the cue file. These policies may be created before or after the creation of the cue file. In some embodiments, a set of policies may be created which apply globally to any videos played by the video player. For example, a policy manager may wish to have a global policy that a ten-second commercial should be shown before every video. In other embodiments, a set of policies may be created which apply to any videos from a given domain. For example, a policy manager may create a policy that all videos from a site xyz.com should display commercials for xyz product whenever a commercial event is encountered. In still other embodiments, a set of policies may be created which apply to a given set of videos. For example, a policy manager may create a policy that all episodes of show A should link to brand Y's products whenever a given event occurs. In still other embodiments, a policy may be specific to a single video. In other embodiments, policies may specify actions based on information including without limitation, previous videos viewed, total viewing time, geo-location of viewer, responses to polls, site video is being viewed on, other pages visited, and graphic overlays selected. An example of a policy file is shown below. In the example below, an XML file specifies a number of policies to be applied to videos shown through a player, including without limitation a minimum clock time interval, the maximum number of ads that may be shown during a single session, an overlay or skin for the player.
Although the policy file above is XML, any other language and/or markup language may be used including without limitation HTML.
The cue file and video content may be passed to a user who plays the video content in a player equipped to process the video content in accordance with the cue A user may then receive the video content, cue file, and policy file and play the video via a video player that processes the video content according to the cue file and one or more policy files. The video player may transmit user data back to the policy manager relating to the viewed video content. Such user data may comprise any information relating to video content, including without limitation the length, identity, and number of videos watched, a user action such as clicking on a link or responding to a poll within a video, or a user activating or closing the video player at a given time. A policy manager may then use that data to calibrate future policies and/or future cue files. The policy manager may also report any of the data received to a content owner or distributor.
In some embodiments, the content developer, video editor, and policy manager may all be parts of a single corporate entity. In other embodiments, the content developer, video editor, and policy manager may comprise any number of different corporate or individual identities. For example, a television network may develop a television show, and then wish to make the episodes of that show available online. The network may then contact a separate company which provides an internet video player. The separate company may create the cue files and/or policy files, or alternatively, may provide the network with one or more tools for the network to create the cue files and/or policy files. The videos may then be delivered to users via a web site operated by the television network.
The central processing unit 202 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 204. In many embodiments, the central processing unit is provided by a microprocessor unit, such as those manufactured by Intel Corporation of Mountain View, Calif.; those manufactured by Motorola Corporation of Schaumburg, Ill.; the Crusoe and Efficeon lines of processors manufactured by Transmeta Corporation of Santa Clara, Calif.; the lines of processors manufactured by International Business Machines of White Plains, N.Y.; or the lines of processors manufactured by Advanced Micro Devices of Sunnyvale, Calif.
Main memory unit 204 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 202, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM). In the embodiment shown in
In the embodiment shown in
A wide variety of I/O devices 230 may be present in the computer system 200. Input devices include keyboards, mice, trackpads, trackballs, cameras, video cameras, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers. An I/O device may also provide mass storage for the computer system 800 such as a hard disk drive, a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, and USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif.
In further embodiments, an I/O device 230 may be a bridge between the system bus 250 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-132 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
General-purpose computers of the sort depicted in
For embodiments comprising mobile devices, the device may be a JAVA-enabled cellular telephone, such as the i55sr, i58sr, i85s, or the i88s, all of which are manufactured by Motorola Corp. of Schaumburg, Ill.; the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan; the iPhone manufactured by Apple Computer of Cupertino, Calif., or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea. In other embodiments comprising mobile devices, a mobile device may be a personal digital assistant (PDA) operating under control of the PalmOS operating system, such as the Tungsten W, the VII, the VIIx, the i705, all of which are manufactured by palmOne, Inc. of Milpitas, Calif. In further embodiments, the client 113 may be a personal digital assistant (PDA) operating under control of the PocketPC operating system, such as the iPAQ 4155, iPAQ 5555, iPAQ 1945, iPAQ 2215, and iPAQ 4255, all of which manufactured by Hewlett-Packard Corporation of Palo Alto, Calif.; the ViewSonic V36, manufactured by ViewSonic of Walnut, Calif.; or the Toshiba PocketPC e405, manufactured by Toshiba America, Inc. of New York, N.Y. In still other embodiments, the mobile device is a combination PDA/telephone device such as the Treo 180, Treo 270, Treo 600, Treo 650, Treo 700, or the Treo 700w, all of which are manufactured by palmOne, Inc. of Milpitas, Calif. In still further embodiments, the mobile device is a cellular telephone that operates under control of the PocketPC operating system, such as the MPx200, manufactured by Motorola Corp. A typical mobile device may comprise many of the elements described above in
Referring now to
Still referring to
Referring now to
Still referring to
A video editor 350 may also comprise an event interface 322 which may accept input of any information pertaining to a specific event, including start and end time, physical location, keywords, event type, description, and an associated advertising campaign. In some embodiments, some of this event information may be automatically filled in. For example, a user may be able to drag an area within the video 302 to specify a location and time corresponding to an event.
After data corresponding to a video 302 has been entered, a video editor 350 may create any number of files for storing the event data. In one embodiment, the video editor 350 may generate one or more cue files specifying event information entered via the video editor 350.
Referring now to
Still referring to
The one or more associations may be received from any source. In one embodiment, the associations may be received from a policy server 106b. In another embodiment, the associations may be received from the same server from which video content is received. In still another embodiment, the associations may be received from a web server as part of a web page comprising the video and/or video player.
In some embodiments, the one or more associations may take the form of one or more policies. In some embodiments, one or more policies and/or associations may be arranged in a hierarchy.
A key may comprise any type or form of identifier, including without limitation a string, number, alphanumeric sequence, symbol, bit sequence, or byte sequence. In some embodiments, a key may be an identifier created within the video player system. In other embodiments, a key may have external meaning as well. For example, a key may comprise a UPC or SKU number for a product. In some embodiments, a key may be globally unique. For example, a given television show may be assigned a globally unique identifier to distinguish it from all other television shows. Or for example, a single key may be selected to refer to a given brand, product, or item across all videos. In other embodiments, a key may be locally unique to a set of videos. For example, within one video, (a cooking show, for example) the key “chips” may be used to designate potato chips, while “chips” within a technology show may be used to designate microchips.
A resource associated with a key may comprise any element including without limitation a URL, a video, an image, a text element, a sound, a policy, an interactive element. Interactive elements may include without limitation games, polls, surveys, purchase options, rating, comment, advertising opt-ins, other flash files and/or decision screens. In some embodiments, a resource may be received along with the association. For example, if an association associates a policy with an image to be displayed, in some embodiments the image file may be received along with the association. In other embodiments, a link to the image file may be provided, and the video player may download the resource on an as-needed basis.
In some embodiments, the association between a key and a resource may be an unconditional association—e.g. “anytime key X is encountered, apply resource Y.” In other embodiments, an association may be conditional. For example, an association may take the form of “when key X is encountered, play resource Y IF no other resource has been applied within the past 2 minutes.” In some embodiments, the conditions contained in an association may be hierarchical in nature or based on an external context.
In some embodiments, an association may associate a plurality of keys with a given resource. In other embodiments, an association may association a plurality of resources with a given key.
A video player may receive at least a portion of a video in any manner (step 403). In some embodiments, the video player may receive the portion via streaming. In other embodiments, the portion may be downloaded and saved. In other embodiments, the portion may be progressively downloaded. In some embodiments, the video may be received from a server. In other embodiments, the video may be received from a peer.
The portion of the video may comprise any portion of any video content. In some embodiments, the portion may comprise the entirety of the video content. In some embodiments, the portion may comprise a time segment of a video. In some embodiments, the video player may receive a plurality of portions of a video. These portions may be received sequentially and/or simultaneously. In some embodiments, a video player may receive a portion of a plurality of videos.
The portion of the video may be received in response to a request from the video player and/or a request from a user of the video player. For example, a user may click on a link or otherwise indicate a desire to watch a given video. This request may then be sent to a server, and the video may then be sent to the player. In other embodiments, the portion of the video may be transmitted without receiving a request from the video player and/or a user of the video player. For example, a video player may process a policy with respect to a currently viewed video and determine that a second video should be played as a commercial during the currently viewed video. The video player may transmit a request for the second video and then receive one or more portions of that video. Or for example, a video player may transmit a non-specific request for a commercial, upon which a server determines a video to send to the video player.
The video player may receive one or more cues expressed in a markup language, each cue linking a temporal portion of the video to a key in any manner (step 405). In some embodiments, the video player may receive a cue file comprising one or more cues. The video player may receive the one or more cues at any time, including before, during, or after receiving the portion of the video and the one or more associations. In some embodiments, a video player may delay playing a portion of a video until the video player has received a corresponding cue file.
The video player may then play at least a portion of the video in any manner (step 407). In some embodiments, the played portion may comprise the received portion of the video. In other embodiments, the played portion may comprise a subset of the received portion of the video. In some embodiments, the video player may play the video in response to a user action, such as a user clicking on a link or clicking a “play” button. In other embodiments, the video player may play the video without user input.
The video player may determine a key specified in a first cue corresponds to a key in a first association in any manner (step 409). In some embodiments, the video player may use a hash table or any other search or sorting method to determine whether a key specified in a cue corresponds to a key contained in an association or policy. In some embodiments, a video player may determine that a key in a cue corresponds to a key in a plurality of associations. In these circumstances, the video player may apply all of the associations, or use a policy hierarchy or other decision logic to determine which association to apply.
The video player may then apply, at the temporal portion of the video specified in the first cue, the resource specified in the first association in any manner (step 411). A temporal portion may comprise any timing indication related to the video. In some embodiments, the indicated temporal portion may be a single point in time. In other embodiments, the indicated temporal portion may comprise a time span. In some embodiments, the temporal portion indicated may comprise the entirety of the video.
In some embodiments, the cue may specify a screen location in addition to the temporal location. For example, the cue may specify certain pixel x and y coordinates within the video. In other embodiments, the cue may specify a changing screen location over an indicated time span. For example, the cue may specify a first set of coordinates for a first second of the time span, and a second and third set of coordinates for the second and third seconds of the time span. In these embodiments, the video player may interpolate coordinates between one or more sets of coordinates. For example, a cue may specify a first set of coordinates at time 0, and a second set of coordinates at time 8. At time 4, the video player may apply the specified resource to a set of coordinates interpolated between the first and second set. In these embodiments, any interpolation method may be used. For example, a straight-line smoothing algorithm may be used consisting of the following. A graphic is given a path consisting of moving its top left position defined by XG and YG moving from origin coordinate XO and YO to destination coordinate XD and YD in equal increments over interval T. Inverval T is determined by a provided start time TO and end time TD. At any point in time, T1, the position of the graphic (XG, YG) is set equal to (X1, Y1) by the formula:
X
1
=X
O+((XD−XO)*((T1−TO)/(TD−TO)))
Y
1
=Y
O+((YD−YO)*((T1−TO)/(TD−TO)))
Applying the resource may comprise any use or display of the resource. In some embodiments, applying a resource may comprise executing the resource, such as if the resource is a policy or a script or an executable file. In other embodiments, applying a resource may comprise displaying or playing the resource, such as if the resource is a text string, image, sound file, or video. In still other embodiments, applying a resource may comprise transmitting a message, such as if the resource is an address where user feedback relating to the video can be sent. In some embodiments, a user may be given a choice as to whether a resource should be applied.
In some embodiments, the video player may pause, stop, or otherwise suspend playing the video while the resource is applied. For example, if the resource is another video, the video player may stop the current video to begin playing the other video. After the other video is finished, the video player may then return to playing the previous video. In other embodiments, the video player may continue to play the video while the resource is being applied.
In some embodiments, the video player may send, to a server, an indication that the resource specified in the first association was applied (step 413). The indication may comprise any information regarding the application of the resource, and may be transmitted in any manner and at any time. In some embodiments, the video player may send the indication substantially simultaneously or soon after the resource is applied. In other embodiments, the video player may store a record of the resource being applied and transmit the record to the server at a later time.
A video player may send any information regarding the application of a resource including without limitation the time, duration, and context wherein a resource was applied. A video player may also send any information relating to a user response to the applied resource. For example, a video player may send information indicating that at 15:34 June 14, video “A” was played as a commercial during video “B.” The video player may also send information regarding whether the user positively responded to the commercial video, such as by clicking on an advertisement within the video, or negatively responded to the video, such as by closing, muting, or minimizing the video. Additional reporting information may include: program played, actual video file played, date/time of player, IP address of computer, unique session id of browser, browser version, percent of video played in pre-determined increments, player, containing page of video play, referring page of video play, user identifier
Referring now to
Still referring to
Referring now to
Still referring to
Referring now to
Referring now to
Still referring to
The poll may also be specified in an XML file, such as the one below.
While the invention has been particularly shown and described with reference to specific preferred embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein departing from the spirit and scope of the invention as defined by the appended claims.