Goal-based video analytics

A system and method for generating goal-based video analytics is disclosed. The system includes a processor, a configurable goal module, a communication module and an analytics module. The configurable goal module receives a video goal definition configurable by a user. The communication module receives first media player state data including data describing viewer interest in video data playable by a media player included on a viewing device. The analytics module associates the video goal definition with the first media player state data and generates video analytics based at least in part on the video goal definition and the first media player state data associated with the video goal definition.

TECHNICAL FIELD

The present disclosure generally relates to video analysis and, more specifically, to goal-based video analytics.

BACKGROUND

Entities that publish content, such as video data, to one or more websites typically desire analytics data about the published content. For example, if video data is published to one or more websites, the publishers may seek information about the number of times the video data is viewed. If the video data is functioning as an advertisement, the publisher may want to know the number of users watching the video data or other metrics describing performance of the video data.

In some scenarios, publishers of video content may prefer to see configurable analytics data related to video content. For example, publishers may be interested in knowing how the presence of video content on a webpage may effect a viewer's interaction with that webpage. However, existing technologies for generating analytics data do not provide the functionality allowing publishers to easily discern the effect video content may have on the viewer when it is included on a webpage. Also, existing technologies are incapable of generating analytics information for a specific outcome or goal related to the video content being available on the webpage, nor do existing technologies provide functionalities that relate viewer interaction with the media player to a specific outcome or goal desired by the publisher. Further, existing technologies are incapable of allowing publishers to customize a media player to report viewer interaction with the video content in a manner related to the specific outcome or goal.

SUMMARY

Embodiments disclosed herein provide a system and method for generating goal-based video analytics. The system includes a processor, a configurable goal module, a communication module and an analytics module. The configurable goal module receives a video goal definition configurable by a user. The communication module receives first media player state data including data describing viewer interest in video data playable by the media player included on a viewing device. In one embodiment, the communication module receives a first video data identifier identifying the video data. The analytics module associates the video goal definition with the first media player state data and generates video analytics based at least in part on the video goal definition and the first media player state data associated with the video goal definition. The analytics module may be communicatively coupled to the configurable goal module and the communication module, and is capable of further determining satisfaction of the video goal definition based at least in part on one or more events included in the first media player state data.

The method includes the steps of receiving a video goal definition configurable by a user, receiving first media player state data including data describing viewer interest in video data playable by a media player included on a viewing device and a first video data identifier identifying the video data and generating video analytics based at least in part on the video goal definition and the first media player state data. The generating the video analytics may also further include determining satisfaction of the video goal definition based at least in part on one or more events included in the first media player state data.

DETAILED DESCRIPTION

A system and method for generating goal-based video analytics is described below. In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding of the various embodiments. However, it will be apparent to one skilled in the art that the various embodiments can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the certain details. For example, an embodiment is described below with reference to user interfaces and particular hardware. However, other embodiments can be described with reference to any type of computing device that can receive data and commands, and any peripheral devices providing services.

The present embodiments also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may be a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. The embodiments disclosed may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment including both hardware and software elements. One embodiment is implemented in software comprising instructions or data stored on a computer-readable storage medium, which includes but is not limited to firmware, resident software, microcode or another method for storing instructions for execution by a processor.

Furthermore, the embodiments may take the form of a computer program product accessible from a computer-usable or computer-readable storage medium providing program code for use by, or in connection with, a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable storage medium is any apparatus that can contain, store or transport the program for use by or in connection with the instruction execution system, apparatus or device. The computer-readable storage medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a tangible computer-readable storage medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk, an optical disk, an EPROM, an EEPROM, a magnetic card or an optical card. Examples of optical disks include compact disk-read only memory (CD-ROM), compact disk-read/write (CD-R/W) and digital video disc (DVD).

A data processing system suitable for storing and/or executing program code includes at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements may include local memory employed during actual execution of the program code, bulk storage and cache memories providing temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. In some embodiments, input/output (I/O) devices (such as keyboards, displays, pointing devices or other devices configured to receive data or to present data) are coupled to the system either directly or through intervening I/O controllers.

Network adapters may also be coupled to the data processing system to allow coupling to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just examples of the currently available types of network adapters.

Finally, the algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the disclosure herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. It will be appreciated that a variety of programming languages may be used to implement the disclosure of the embodiments as described herein.

System Overview

FIG. 1shows one embodiment of a system100for generating goal-based video analytics. In the embodiment depicted byFIG. 1, the system100includes a content management system (CMS)110, a data store120, an analytics server123that includes an analytics engine125, a cache130, one or more advertisement servers (“ad servers”)140A-140N (also referred to individually and collectively as140), a network150, a third party video server180, a third party ad server190, one or more user devices160A,160B,160C (also referred to individually and collectively as160) and one or more destination sites170A-170N (also referred to individually and collectively as170). Additionally,FIG. 1also illustrates at least one media player115operating on a user device160and at least one graphical user interface1100displayed on a user device160. However, in other embodiments, the media player115could operate on any or all of the user devices160A,160B,160C, the graphical user interface1100could be displayed on any or all of the user devices160A,160B,160C, and the system100could include different and/or additional components other than those depicted byFIG. 1.

The components of the system100are communicatively coupled to one another. For example, the analytics server123is communicatively coupled to the network150via a signal line199. The content management system110is communicatively coupled to the cache130via a signal line195. The user device160A is communicatively coupled to the network150via a signal line197A. The user device160B is communicatively coupled to the network150via a signal line197B. The user device160C is communicatively coupled to the network150via a signal line197C.

The content management system110includes one or more processors and one or more storage devices storing data or instructions for execution by the one or more processors. For example, the content management system110is a server, a server array or any other computing device, or group of computing devices, having data processing and communication capabilities. The content management system110receives video data and metadata from one or more publishers operating on one or more user device160or other sources. A publisher is a user that publishes a video on one or more of the content management system110, the third party video server180and the destination site170. However, in another embodiment, a publisher may publish a video in the form of an ad on one or more of the third party ad server190, the ad servers140of the content management system119, the analytics server123, or other ad server sources. The content management system110associates the metadata with the video data and communicates the metadata, video data and an association between the video data and metadata to the data store120, allowing the data store120to maintain relationships between video data and the metadata. In one embodiment, the content management system110receives a search query for a video from a user device160and retrieves video data and metadata associated with the video from the data store120based at least in part on the search query.

In one embodiment, the content management system110includes data or instructions for generating a media player115used to present the video data when executed by a processor. For example, the content management system110generates “embed code” that can be included in a web page so that the media player115can be embedded in the web page when the web page is loaded in a browser. The content management system110generates the data for creating the media player115(e.g., embed code) based at least in part on the video data and the metadata associated with the video data.

In another embodiment, the content management system110generates graphical data for providing one or more user interfaces to a publisher that allow the publisher to customize a media player115for presenting video data to viewers. For example, the graphical data generated by the content management system110when executed by a processor depicts a user interface for a publisher to customize the branding or skin of an embedded media player115by modifying configuration settings of the media player115. As another example, the graphical data generated by the content management system110depicts another user interface for a publisher to customize the temporal location and placement of supplemental content (e.g., an advertisement) within video data when the video data is presented by a media player115operating on a user device160. The content management system110is further described below with reference toFIGS. 3A and 3B.

In another embodiment, the destination site170provides the same functionality as the content management system110, including the functionality for generating a media player115used to present video data when executed by a processor, and the functionality to allow the publisher to customize a media player115for presenting video data to viewers.

The data store120is a non-volatile memory device or similar persistent storage device and media coupled to the content management system110for storing video data and metadata associated with the video data. For example, the data store120and the content management system110exchange data with each other via the network150. Alternatively, the data store120and the content management system110exchange data via a dedicated communication channel. While the embodiment shown byFIG. 1depicts the data store120and the content management system110as discrete components, in other embodiments a single component includes the data store120and the content management system110.

In one embodiment, the data store120includes one or more tables associating metadata with video data. For example, the data store120includes a table where an entry in the table includes a field identifying the video data and additional fields that include metadata associated with the video data. Additionally, the data store120includes additional tables identifying data used by a destination site170when storing video data for access by a user device160. In one embodiment, the data store120includes data mapping metadata associated with video data to data used by a destination site170. The mapping of metadata associated with video data to data used by a destination site170allows the data store120to automatically map metadata associated with video data with one or more data fields used by a destination site170, which beneficially reduces the time for a destination site170to store and communicate video data from the data store120to a user device160. In one embodiment, the data store120or the content management system110includes an index to expedite identification and/or retrieval of stored data from the data store120.

The analytics server123is one or more devices having at least one processor coupled to at least one storage device including instructions for execution by the processor. For example, the analytics server123is one or more servers or other computing devices having data processing and data communication capabilities. The analytics server123receives one or more video goals, tracks each instance of the media player115loaded on one or more user devices160by receiving information about events that occur in association with a media player115, and generates video goal analytics based at least in part on the events and video goals.

The analytics server123receives pings from a media player115loaded in a user device160. The data included in the pings describes a state of a media player115or an action taken by the media player115(also collectively referred to herein as media player state data). The pings, for example, are received in the form of hypertext transfer protocol “get” or “post” requests sent from the media player115via a communication device of the user device160, and include parameters identifying a video and an event occurring in association with the video (e.g., a video id, a video version, an embedded URL, an address of the media player115, a video load request, an ad start request, etc.). The analytics server123analyzes the pings to generate video analytics data. Video analytics data is data describing interaction among a video, a media player115and a viewer. For example, the video analytics data describes satisfaction of a video goal configurable by a publisher, where the satisfaction of the video goal is determined by whether one or more criterion included in the video goal definition have been met (e.g., the total views of a video is higher than a predetermined number and the number of video advertisement impressions is higher than a predetermined number, or the total views for all videos is higher than a predetermined number (e.g., >200,000) in a particular locale (e.g., in Germany) or for a particular date range (e.g., per day)).

In one embodiment, the analytics server also tracks websites by receiving website usage data from the one or more user devices160. Website usage data is data describing interaction between one or more web pages and a user device160(also referred to herein as “web page usage data”). For example, the website usage data indicates that a web browser running on the user device160has a web page loaded for 5 minutes before switching to another web page. In one embodiment, the website usage data includes user interaction with a web page. For example, the website usage data includes data describing that a viewer has clicked a link connected to a video.

In another embodiment, the analytics server123also analyzes the website usage data and generates web analytics data from the website usage data. The web analytics data is data describing results yielded from analyzing the website usage data. For example, the web analytics data includes one or more of website click analytics describing interactions with a web page within a website, the number of times a web page has been loaded, the click-through rate of an advertisement, the number of users who clicked on an advertisement, the number of times an advertisement has been delivered, the number of times the web page has been accessed by unique users, and/or other types of analytics data describing interaction with web pages within a web site. In one embodiment, the web analytics data includes one or more statistical results from the website usage data. For example, the web analytics data includes statistical data describing a distribution of website visits according to different geographic locations for a web page.

The analytics server123can also use the website usage data and media player state data to generate analytics data describing the effect of video content on website usage and, conversely, how elements within a web page affect user interaction with video data. For example, the analytics server123analyzes the website usage data and the media player state data for a video included in the web page to determine that a publisher's goal of achieving an additional200unique website visits per day per day is satisfied.

The analytics server123generates one or more reports describing satisfaction of a video goal defined by a publisher based at least in part on a video goal defined by a publisher and associated website usage data (or website analytics data generated therefrom) and/or media player state data. For example, the analytics server123, using the website usage data and the media player state data, generates a report describing number of times a goal defined by the publisher was achieved (e.g., the purchase of a particular product) on a webpage that does not include a video versus the number of times a goal was achieved (e.g., the purchase of the particular product) on a webpage that presents a video of the product. The analytics server123and the analytics engine125are further described below with reference toFIG. 4.

The cache130is coupled to the content management system110using the network150or using a direct communication channel between the content management system110and the cache130. When a user device160or a destination site170retrieves video data from the data store120, the content management system110communicates the video data to the cache130, which stores a copy of the retrieved video data. Similarly, a search query for video data from a user device160or a destination site170is initially transmitted via the network150to the cache130and the video data is communicated to the user device160or the destination site170by the cache130if a copy of the video data is stored by the cache130. If the cache130does not include a copy of the video data, the search query is communicated from the cache130to the content management system110to retrieve the video data. Hence, the cache130expedites retrieval of video data. WhileFIG. 1illustrates a single cache130, in other embodiments, the system100may include multiple caches130.

The one or more advertisement servers (“ad servers”)140A-140N are one or more computing devices having a processor and a computer-readable storage medium storing advertisements (“ads” if plural, or “ad” if singular) and rules for selecting advertisements. An ad server140communicates with the content management system110via the network150or via a communication channel with the content management system110. In one embodiment, an ad server140communicates with a destination site170, the analytics server123, the third party video servers190or a user device160via the network150to communicate advertisements for presentation when a web page is accessed. An ad server140also includes one or more of rules for targeting advertisements to specific users, rules for targeting advertisements to be displayed in conjunction with types of content, rules for targeting advertisements to specific locations or Internet Protocol (IP) addresses or other rules for selecting and/or targeting advertisements.

An ad server140receives metadata associated with video data from the content management system110and selects advertisements for presentation in conjunction with the video data based on the metadata. For example, the ad server140selects stored advertisements based on keywords associated with the video data. Thus, modification of the metadata associated with the video data enables modification of the advertisements presented in conjunction with the video data. In another embodiment, the advertisement is a video which constitutes the main video to be played by a media player115, and the ad server receives a request for the video advertisement based on a video ID associated with the video advertisement.

The network150is a conventional network and may have any number of configurations such as a star configuration, a token ring configuration, or another configuration known to those skilled in the art. In various embodiments, the network150is a wireless network, a wired network or a combination of a wireless and a wired network. Furthermore, the network150may be a local area network (LAN), a wide area network (WAN) (e.g., the Internet) and/or any other interconnected data path across which multiple devices may communicate. In yet another embodiment, the network150may be a peer-to-peer network.

The network150may also be coupled to, or include, portions of a telecommunications network for communicating data using a variety of different communication protocols. In yet another embodiment, the network150includes a Bluetooth communication network and/or a cellular communications network for sending and receiving data. For example, the network150transmits and/or receives data using one or more communication protocols such as short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, email or another suitable communication protocol.

The one or more user devices160A,160B,160C are computing devices having data processing and data communication capabilities. For example, a user device160comprises a desktop computer, a laptop computer, a netbook computer, a tablet computer, a smartphone, a set-top box/unit, an Internet Protocol-connected TV, a smart TV, or the like. In one embodiment, different user devices160A,160B,160C comprise different types of computing devices. For example, the user device160A is a smartphone, the user device160B is a tablet computer and the user device160C is a laptop computer. In one embodiment, a plurality of viewers each have a user device160that includes a media player115to view video data.

In one embodiment, a user inputs a search query into a user device160and the user device160transmits the search query to one of a destination site170, the content management system110and the third party video server180via the network150. The user device160then receives video data matching the search query from one of the destination site170, the content management system110and the third party video server180via the network150for presenting the video data to the user via a media player115. Similarly, the user device160receives metadata associated with a video from a publisher of the video and transmits the metadata to one of a destination site170, the content management system110and the third party video server180via the network150.

In another embodiment, a user device160receives graphical data for depicting a graphical user interface1100that allows a publisher to input a video goal associated with video data to be played by a media player115. For example, the user device160provides a graphical user interface1100with one or more input fields, such as text entry fields, drop-down boxes and check boxes, allowing the publisher to define criterion that must be met to satisfy the video goal.

In another embodiment, a user device160receives graphical data for depicting a graphical user interface that allows a publisher to customize a media player115for presenting a video. For example, the user device160displays a user interface on a screen of the user device160having one or more fields and drop-down boxes allowing a publisher to customize the temporal location and placement of an ad for a video.

The destination sites170A-170N are computing devices having data processing and data communication capabilities, such as web servers. A destination site170includes data describing a website that includes one or more web pages and communicates one or more web pages to a user device160via the network150. One or more web pages stored by a destination site170include data or instructions for presenting video data via a media player115when executed on the user device160. In one embodiment, a destination site170retrieves video data and customizations of the media player115from the content management system110, allowing the destination site170to present video data using the architecture of the content management system110. In another embodiment, a destination site170receives video data and configuration data for a media player115from the content management system110and embeds the video data into web pages to present the video data. For example, a destination site170receives embed code describing inclusion and configuration of the media player115and includes the embed code in a web page. In yet another embodiment, a destination site170stores video data and customizations of the media player115locally and the destination site170retrieves the video data and the customizations from the local store and embeds the video data into web pages to present the video data. In this other embodiment, the destination site170implements some or all of the functionalities provided by the content management system110.

The third party video server180is one or more devices having at least one processor coupled to at least one storage device including instructions for execution by the processor. For example, the third party video server180is a conventional server, a server array or any other computing device or group of computing devices, having data processing and communication capabilities. The third party video server180is communicatively coupled to other components of the system100via the network150. In one embodiment, the third party video server180receives video data and metadata from one or more publishers operating on one or more user device160via the network150. The third party video server180provides the video data to other users via the network150. For example, a publisher publishes a video on the third party video server180, the third party video server180transmits the video via the network150to a user device160, and a media player115on the user device160presents the video data to a viewer of the user device. In one embodiment, the third party video server190implements some or all of the functionalities provided by the content management system110.

The third party ad server190is any computing device having a processor and a computer-readable storage medium storing advertisements and rules for selecting advertisements. For example, the third party ad server190selects an advertisement for a video and sends the advertisement to a user device160when the video is played by a media player115on the user device160. In another example, the third-party ad server190selects a video advertisement and sends the video advertisement to a user device160when the video advertisement is requested by a media player115on the user device160. In this example, the video advertisement constitutes the video data being played by the media player115.

The third party ad server190is communicatively coupled to other components of the system100via the network150. For example, the third party ad server190communicates rules for selecting advertisements with the analytics server123via the network150. In one embodiment, the third party ad server190implements some or all of the functionalities provided by the ad server140. In another embodiment, the third party ad server190implements some or all of the functionalities provided by the third party video server180. While the third party video server180and the third party ad server190are depicted as being separate computing devices inFIG. 1, the system100is not limited to such a configuration, and the third party ad server190and the third party video server180may be implemented, for example, in the same computing device or in other computing devices of system100.

FIG. 2is a block diagram illustrating one embodiment of a user device160. As illustrated inFIG. 2, the user device160includes a network adapter202coupled to a bus204. According to one embodiment, also coupled to the bus204are at least one processor206, a memory208, a graphics adapter210, an input device212, a storage device214and a media player115. In one embodiment, the functionality of the bus204is provided by an interconnecting chipset. The user device160also includes a display218, which is coupled to the graphics adapter210. The input device212, the graphics adapter210and the display218are depicted using dashed lines to indicate that they are optional features of the user device160.

The network adapter202is an interface that couples the user device160to a local or wide area network. For example, the network adapter202is a network controller that couples the user device160to the network150via the signal line197for data communication between the user device160and other components of the system100. In one embodiment, the network adapter202is communicatively coupled to a wireless network (e.g., a wireless local area network) via a wireless channel230.

The processor206may be any general-purpose processor. The processor206comprises an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to the display218. The processor206is coupled to the bus204for communication with other components of the user device160. The processor206processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown inFIG. 2, multiple processors may be included. The user device160also includes an operating system executable by the processor206such as, but not limited to, WINDOWS®, MacOS X, Android, or UNIX® based operating systems.

The memory208holds instructions and data used by the processor206. The instructions and/or data comprise code for performing any and/or all of the techniques described herein. The memory208may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory device known in the art. In one embodiment, the memory208also includes a non-volatile memory such as a hard disk drive or flash drive for storing information on a more permanent basis. The memory208is coupled to the bus204for communication with the other components of the user device160. In one embodiment, the media player115is stored in the memory208and executable by the processor206.

The storage device214is any device capable of holding data, like a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The storage device214is a non-volatile memory device or similar permanent storage device and media. The storage device214stores data and instructions for the processor206and comprises one or more devices including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device known in the art. For clarity, instructions and/or data stored by the storage device214are described herein as different functional “modules,” where different modules are different instructions and/or data included in the storage device that cause the described functionality when executed by the processor206.

The input device212is any device to input data to the user device160. For example, the input device212is one of a mouse, track ball or other type of pointing device to input data to the user device160. In one embodiment, the input device212includes one or more of a keyboard (e.g., a QWERTY keyboard), a microphone, a web camera or similar audio or video capture device. In another embodiment, in addition to or in the lieu of the input device212, a user of the user device160interacts with the user device using one or more fingers of the user via the display218, which is a touch-screen display capable of receiving input from the one or more fingers of the user. In this embodiment, the user device160can execute via the processor206instructions emulating a keyboard capable of receiving input from the one or more fingers of the user via the display218.

The graphics adapter210displays images and other information on the display218. The display218is a conventional type such as a liquid crystal display (LCD) or any other similarly equipped display device, screen or monitor. The display218represents any device equipped to display electronic images and data as described herein. In one embodiment, the display is a touch-screen display capable of receiving input from one or more fingers of the user.

The media player115is software and routines executable by the processor206to present video data to a user. For example, the media player115is a video player executed by the processor206to receive and display a stream of video data received from a video content provider, such as the content management system110, the destination site170or the third party video server180, and present the video data to a user via the display218.

When the media player115is implemented by the user device160, a media player session is established. A media player session spans all activity that happens within the lifetime of the media player and allows the media player115to track events occurring throughout a variety of different viewing experiences occurring within the media player115. For example, during a session, the media player115tracks events occurring during the view of one or more videos, navigation between videos using playlists, and/or displaying of interactive media-rich or other advertisements, and sends the events to the analytics server123. In an embodiment where multiple instances of a media player115are included in a single web page, each instance of the media player115has its own unique session and session ID.

In one embodiment, the media player115is embedded in one or more web pages served to a user device160by one of the destination site170, the third party video server180and the content management system110. For example, the user device160executes an embed code for a media player115included in a web page provided by the destination site170to invoke a media player115that presents video data according to the embed code. During the invocation of the media player115, the user device160receives customization settings for the media player115from one of the destination site170, the third party video server180and the content management system110. The customization settings customize the look, feel, feature set and operation of the media player115. In this embodiment, the session ID associated with the media player115is distinct from the browser session(s) associated with the one or more web pages.

In one embodiment, a viewer's video-related activity occurring within multiple instances of a media player115over a predetermined period of time on a web site can be connected using a web site session and corresponding web site session ID. For example, the when a viewer initially accesses web page of a destination site170, a third party video server180, or a content management system110, the web server of the destination site170, the third party video server180, or the content management system110generates and stores a session ID based on a unique identifier such as user information or location information (e.g., user ID, IP address, etc.). The viewer's web browser also stores a copy of the session ID (e.g., in a cookie) for connecting the viewer's video-related activity occurring in association with the multiple instances of the media player115.

In one embodiment, the media player115is a video player customized by a publisher to track custom events for reporting to the analytics server123. For example, the media player115is tailored by a publisher using extensible metadata294or the customization module296to include one or more customized features. Examples of a feature customized by a publisher include, but are not limited to, adding an age-gating function, adding a user login interface, generating a queue for playback, saving a video for viewing later, adding domain restrictions and/or geographic restrictions for viewing a video and requesting user's agreement to terms and conditions for viewing a video, etc. The domain restrictions to the media player115limit domains in which the media player115is able to present video data. The geographic restrictions limit geographic regions in which the media player115is able to present video data. For example, the domain restrictions and/or the geographic restrictions do not allow the media player115to play the video data outside the United States.

The media player115implements features customized by the publisher invoking actions triggered by customization of the player. For example, the media player115implements an age-gating function by requesting a user to confirm that he/she is at least 18 years old. Examples of an action include, but are not limited to, determining whether a user is above a certain age, requesting a user to log in, generating a queue for the user, generating a “save” button for the user to save the video for viewing later, determining a location (e.g., an IP address) for a user device160, applying domain restrictions and/or geographic restrictions, etc. In one embodiment, a publisher customizes a media player115to track the level of viewer interest in the video data being presented by the media player115. For example, the publisher customizes the media player115to track viewer mouse-over interaction with an interactive rich media advertisement displayed by the media player115.

In the depicted embodiment, the media player115includes, among other things, a communication module290, an event module292, extensible metadata294and a customization module296. These components of the media player115are communicatively coupled to one another. The extensible metadata294and the customization module296are depicted with dashed lines to indicate that they are optional features of the media player115.

The communication module290is software and routines executable by the processor206for handling communication between the media player115and other components of the system100. In one embodiment, the communication module transmits requests for a video stream to one of the destination site170, the third party video server180and the content management system110, and receives transmission of the video stream from one of the destination site170, the third party video server180and the content management system110. In another embodiment, the communication module290receives a data stream for an advertisement from one of the ad server140, the third party ad server190and the analytics server123.

The communication module290, in one embodiment, includes a ping module291communicatively coupled to the other modules of the media player115. The ping module291is software and routines for generating and sending, in the form of one or more pings, media player state data describing operation of the media player115and viewer interest in, and interaction with, the media player115to the analytics server123. In one embodiment, a ping includes one or more of a video identification (“video ID”) to identify a video, a video version (e.g., a second version of a video), a location (e.g., an IP address) for a user device160, an embedded uniform resource locator (“eURL”) referring to the web page on which a player is embedded, and data describing an event. The event included in the ping can be, for example, a custom event triggered by customization of the media player115by the publisher or an event that that does not require customization to detect.

In one embodiment, the ping module291receives data describing one or more events detected by the event module292during a media player session from the event module292and generates and sends (pings) the data describing the one or more events to the analytics server123. For example, via the communication module290, the ping module generates and sends a hypertext transfer protocol “get” or “post” request that includes parameters identifying a video and an event occurring in association with the video (e.g., a video id, a video version, an embedded URL, an address of the media player115, an indication that video data has been loaded, etc.). The analytics server123then analyzes the media player state data sent by the ping module291to determine its relevance to one or more video goals input by a publisher into the analytics engine125.

The event module292is software and routines for detecting an event for the media player115. An event describes a state of the media player115triggered by an action taken or a non-action not taken in the media player115. For example, when the media player115is playing video data being streamed from the content management system110, and the viewer of the video data maximizes the media player to fill the viewable area of the display for optimal viewing performance, a media player maximizing event is detected by the event module292and data describing this event is sent to the ping module291, and the ping module, in turn, sends the data describing the event to the analytics server123via the network150.

Examples of an event include data describing video playback such as an indication that the media player115is loaded on a web page by the user device160, an indication that an ad is starting to play, a report of the viewing progress of an ad at a predetermined interval (e.g., 5 seconds), an indication of the viewing progress of an ad at a checkpoint (e.g., 25%, 50%, 75% and 100% of an ad), an indication that an ad is finished playing, an indication that a video has begun playing, an indication of the viewing progress of a video at a predetermined interval (e.g., 10 seconds), an indication of the viewing progress of a video at a checkpoint (e.g., 25%, 50%, 75% and 100% of a video), an indication a video has completed playing, and a length of time that the media player115has played a video. Examples of an event also include viewer engagement data such as an indication of a viewer preference for a video (the viewer “liked” or “+1'd” the video), an indication a viewer abandoned an advertisement being displayed by the media player115, an indication a viewer interacted with an advertisement being displayed by the media player115, an indication a viewer changed a volume level of the media player115, an indication a viewer placed the media player115in full screen mode, an indication a viewer replayed a segment of a video, an indication a viewer fast-forwarded a video, an indication a viewer rewound a video, an indication a viewer paused playing of a video, and an indication a viewer stopped playing a video, and a viewer instruction to share a video, for example, via email or a social networking web site. Persons of ordinary skill in the art will recognize that other events may be detected by the event module292and sent to the analytics server123via the ping module291.

In one embodiment, an event detected by the event module292is a custom event. A custom event is an event triggered by a feature of the media player115customized by a publisher. For example, if a publisher has added a user login function to the media player115, the event module292detects a login event when the media player115prompts the user to log in. The event module292sends the data describing the detected event to the ping module291for transmission to the analytics server123.

Examples of a custom event include, but are not limited to, player loads, video views, viewing 25% of a video, viewing 50% of a video, viewing 75% of a video, viewing 100% of a video, automatic plays, manual plays, monetizable views, an ad being watched, an ad being clicked, an ad being abandoned, sharing a video via email, sharing a video via an embed copy, sharing a video via a website, marking a video as a liked or disliked video, marking a video as a favorite video, turning caption on or off for a video, switching a caption from one language to another language, adding an comment for a video, subscribing a video, dropping off a video, age-gating, user login, queue for playback, saving for later view and any other events triggered by a publisher's customization of the media player115. This list of custom events is non-exhaustive and persons of ordinary skill in the art will recognize that the media player115may track other custom events.

The customized extensible metadata294is data used to configure the media player115. In one embodiment, the customized extensible metadata294includes configuration settings for the media player115to implement one or more features added by a publisher. For example, when the media player115is loaded by the user device160, the media player115is configured according to the customized extensible metadata294so that one or more features customized by the publisher are added to the media player115. A configuration setting is a set of configuration information describing how a media player115is configured. For example, a configuration setting describes that an age-gating function is added to the media player115so that a user is requested to input an age when viewing a video.

In one embodiment, the customized extensible metadata294is stored in the storage device214and retrieved by the media player115when the media player115is loaded. In another embodiment, the media player115receives the customized extensible metadata294from the player configuration module328of the content management system110via the network150and stores the customized extensible metadata294in the storage device214. The player configuration module328is described below with reference toFIG. 3B.

The customization module296includes application programming interfaces (“APIs”) configured to allow a publisher to customize a media player115according to the publishers preferences. In one embodiment, the customization module296includes APIs that invoke the behavioral features of the media player115. The publisher uses a set of development tools such as a software development kit (“SDK”) to add custom functions to the media player115via the APIs. Examples of custom functions include an age-gating function, a user login interface, a queue for playback, a save feature to save a video for later viewing, domain restrictions and/or geographic restrictions for viewing a video, a gate requesting agreement to terms and conditions for viewing a video, a monitor that monitors a specific viewer interaction with the media player115, etc.

Content Management System (CMS)110

FIG. 3Ais a block diagram illustrating one embodiment of a content management system110. As illustrated inFIG. 3A, the content management system110includes a network adapter302coupled to a bus304. According to one embodiment, also coupled to the bus304are at least one processor306, a memory308, a graphics adapter310, an input device312, a storage device314, a content management module301and a communication device330. In one embodiment, the functionality of the bus304is provided by an interconnecting chipset. The content management system110also includes a display318, which is coupled to the graphics adapter310. The input device312, the graphics adapter310and the display318are depicted using dashed lines to indicate that they are optional features of the content management system110.

The network adapter302is an interface that couples the content management system110to a local or wide area network. For example, the network adapter302is a network controller that couples the content management system110to the network150via the signal line195for data communication between the content management system110and other components of the system100. In one embodiment, the network adapter302is communicatively coupled to a wireless network (e.g., a wireless local area network) via a wireless channel333.

The processor306is any general-purpose processor. The processor306comprises an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to the display318, if included. The processor306is coupled to the bus304for communication with the other components of the content management system110. The processor306processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown inFIG. 3A, multiple processors may be included. The content management system110also includes an operating system executable by the processor306such as, but not limited to, WINDOWS®, Linux®, BSD®, or UNIX® based operating systems.

The memory308holds instructions and data used by the processor306. The instructions and/or data comprise code for performing any and/or all of the techniques described herein. The memory308may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory device known in the art. In one embodiment, the memory308also includes a non-volatile memory such as a hard disk drive or flash drive for storing log information on a more permanent basis. The memory308is coupled to the bus304for communication with the other components of the content management module110. In one embodiment, the content management module301is stored in the memory308and executable by the processor306.

The storage device314is any device capable of holding data, like a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The storage device314is a non-volatile memory device or similar permanent storage device and media. The storage device314stores data and instructions for the processor306and comprises one or more devices including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device known in the art. In some embodiments, the storage device314includes instructions and/or data for maintaining metadata associated with video data, for modifying stored metadata or for retrieving stored video data or stored metadata associated with stored video data. For clarity, instructions and/or data stored by the storage device314are described herein as different functional “modules,” where different modules are different instructions and/or data included in the storage device314that cause the described functionality when executed by the processor306.

The input device312is any device for inputting data into the content management system110. For example, the input device312is one of a mouse, track ball or other type of pointing device to input data to the content management system110. In one embodiment, the input device312includes one or more of a keyboard (e.g., a QWERTY keyboard), a microphone, a web camera or similar audio or video capture device.

The graphics adapter310displays images and other information on the display318. The display318is a conventional type such as a liquid crystal display (LCD) or any other similarly equipped display device, screen or monitor. The display318represents any device equipped to display electronic images and data as described herein. In one embodiment, display318is a touch-screen display that provides the functionality of the input device312.

The communication device330transmits data from the content management system110to the network150and receives data from the network150. The communication device330is coupled to the bus304. In one embodiment, the communication device330also exchanges data with one or more of the analytics server123, the data store120, the cache130, the third party video server180, the third party ad server190and one or more of the ad servers140using communication channels other than the network150.

In one embodiment, the communication device330includes a port for direct physical connection to the network150or to another communication channel. For example, the communication device330includes a USB, SD, CAT-5 or similar port for wired communication with the network150. In another embodiment, the communication device330includes a wireless transceiver for exchanging data with the network150or with another communication channel, using one or more wireless communication methods, such as IEEE 802.11, IEEE 802.16, BLUETOOTH® or any other wireless communication method.

In yet another embodiment, the communication device330includes a cellular communications transceiver for sending and receiving data over a cellular communications network such as via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail or another suitable type of electronic communication. In still another embodiment, the communication device330includes a wired port and a wireless transceiver. The communication device330also provides other conventional connections to the network150for distribution of files and/or media objects using standard network protocols such as TCP/IP, HTTP, HTTPS and SMTP as will be understood to those skilled in the art.

FIG. 3Afurther illustrates a content management module301communicating over the bus304with the other components of the content management system110. The content management module301provides logic and instructions for storing video data from a publisher and providing the video data to other users. In one embodiment, the content management module301is implemented in hardware such as a field programmable gate array (“FPGA” if singular, or “FPGAs” if plural) as illustrated inFIG. 3A. In another embodiment, the content management module301includes software routines and instructions that are stored, for example, in the memory308and/or storage device314and executable by the processor306to cause the processor306to store video data from a publisher and provide the video data to other users. In either embodiment, the content management module301is adapted for cooperation and communication with the processor306and other components of the content management system110. Details describing the functionality and components of the content management module301will be explained in further detail below with reference toFIG. 3B.

As is known in the art, the content management system110can have different and/or other components than those shown inFIG. 3A. In addition, the content management system110can lack certain illustrated components. In one embodiment, the content management system110lacks an input device312, graphics adapter310and/or display318. Moreover, the storage device314can be local and/or remote from the content management system110(such as embodied within a storage area network (SAN)).

As is known in the art, the content management system110is adapted to execute computer program modules for providing functionality described herein. As used herein, the term “module” refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware and/or software. In one embodiment, program modules are stored on the storage device314, loaded into the memory308and executed by the processor306.

Content Management Module301

Turning now to the content management module301,FIG. 3Bis a block diagram illustrating one embodiment of the content management module301. In the embodiment depicted byFIG. 3B, the content management module301includes a data editing module321, a video search module322, a transcoding module325, a user interface module326, a routing module327, a player configuration module328and an operations manager329. In other embodiments, the content management module301includes different and/or additional modules than the ones depicted inFIG. 3B.

In one embodiment, the modules are implemented using instructions and/or data included in the storage device314. In another embodiment, the modules are implemented using one or more hardware devices configured to provide the functionality further described below. For example, the modules are implemented using one or more application specific integrated circuits (ASICs) and/or one or more FPGAs coupled to the bus304and configured to provide the functionality of the modules further described below.

The data editing module321is software and routines executable by the processor306for modifying metadata and/or video data stored in the data store120. In one embodiment, the data editing module321receives data from a user via the user interface module326and uses the received data to generate or modify metadata that is stored by the data store120. Additionally, the data editing module321generates or modifies playlists including a sequence of video data based on data received from a user device160via the user interface module326. For example, the user interface module326receives data for modifying stored metadata associated with video data or identifying metadata for association with video data from a user device160via the network150and the bus304, and the data editing module321then modifies metadata associated with the video data using the received data or stores the received metadata and an association between the received metadata and video data in the data store120as further described below.

In one embodiment, the data editing module321generates an instruction identifying the metadata to be modified and the modification to the metadata or identifying metadata and video data associated with the metadata. The generated instruction is then transmitted to the data store120by the communication device330to modify the metadata. Similarly, the data editing module321generates an instruction modifying a playlist, identifying modifications to the video data included in the playlist or identifying one or more attributes associated with the playlist to be modified. The generated instruction is transmitted to the data store120via the bus304, the communication device330and the network150.

The video search module322is software and routines executable by the processor306for generating data or instructions for retrieving video data from the data store120based on received input, such as search terms. The video search module322searches the data store120for metadata matching, or similar to, search terms received from the communication device330and/or from the user interface module326. Hence, the video search module322allows users to more easily retrieve stored video data using metadata associated with the stored video data. For example, the video search module322accesses the data store120via the network150, the communication device330and the bus304to identify video data associated with metadata matching, or similar to, search terms received from the communication device330and/or from the user interface module326.

Rather than require navigation through a directory structure to retrieve stored video data, like conventional data retrieval, the video search module322searches metadata associated with stored video data to identify and retrieve stored video data. In one embodiment, the video search module322also receives data limiting the metadata to which the search terms are compared. For example, the video search module322receives input limiting comparison of search terms to metadata specifying video title and not to other metadata. The video search module322also receives data from the data store120describing stored video data associated with metadata matching, or similar to, the search terms. The video search module322communicates the description of the stored video data to the user interface module326via the bus304, and the user interface module326generates graphical data for providing a user interface to present the video data from the data store120to a user.

The transcoding module325is software and routines executable by the processor306for generating a copy of the video data encoded in a different format than the video data's original format. The transcoding module325includes one or more codecs for generating differently encoded copies of the video data. For example, the transcoding module325includes multiple video codecs, such as H.262/MPEG-2 Part 2 codecs, H.264/MPEG-4 Advanced Video Coding codecs, MPEG-4 Part 2 codecs, VP8 codecs or other video codecs. By storing different video codecs, the transcoding module325enables generation of a compressed version of stored video data by encoding the video data with one or more of the stored video codecs. The differently-encoded copy of the video data is communicated to the data store120for storage and association with the original video data.

In one embodiment, the transcoding module325automatically encodes video data received by the content management system110using one or more predetermined codecs to generate one or more compressed versions of the video data, which are stored in the data store120along with the original video data. For example, the transcoding module325automatically encodes video data using one or more commonly-used codecs, such as one or more H.264/MPEG-4 Advanced Video Coding codecs or one or more VP8 codecs. This simplifies distribution of the video data to a destination site170by automatically generating compressed versions of the video data using codecs most commonly used by the destination site170. In one embodiment, input received by the user interface module326allows a user to specify one or more codecs that are automatically applied to video data. For example, a user specifies a list of codecs to produce compressed video data compatible with a user-desired destination site170, allowing the content management system110to automatically generate video data compatible with the user-desired destination site170.

The transcoding module325may also receive input via the user interface module326, allowing manual identification of a codec and encode video data using the identified codec. Additionally, a user may communicate one or more codecs to the content management system110via the network150and the transcoding module325stores the user-supplied codecs for subsequent use. Additionally, a destination site170may communicate codecs to the transcoding module325via the network150, allowing the transcoding module325to dynamically modify the codecs used. The transcoding module325may also modify the one or more codecs automatically applied to video data responsive to data from the destination site170and/or from a user device160, enabling dynamic modification of video encoding as different and/or additional codecs become more commonly used.

The user interface module326is software and routines executable by the processor306for generating graphical data to provide one or more user interfaces for receiving data from a user and/or presenting video data and/or metadata associated with video data to a user. For example, the user interface module326includes instructions that, when executed by a processor306, generate user interfaces for displaying metadata associated with video data and/or modifying metadata associated with video data. In one embodiment, data stored in the user interface module326is communicated to a user device160via the communication device330and the network150, and a processor included in the user device160generates a user interface by executing the instructions provided by the user interface module326.

In one embodiment, the user interface module326generates graphical data for providing a user interface to display metadata that is associated with video data and stored in the data store120and receives modification to the stored metadata. In another embodiment, the user interface module326generates graphical data for providing a user interface identifying stored video data associated with a publisher from the data store120, thus expediting the publisher's review of previously stored video data. In yet another embodiment, the user interface module326generates graphical data for providing a user interface for receiving input from a publisher to upload video data from a user device160to the data store120and facilitating publication of the video data by the publisher using the content management system110. In yet another embodiment, the user interface module326generates graphical data for providing a user interface allowing a publisher to customize a media player115for video presentation.

The routing module327is software and routines executable by the processor306for identifying a destination for data received by the content management system110or processed by the content management system110. After the routing module327determines the destination, the communication device330transmits the data to the determined destination using the bus304. In one embodiment, the routing module327includes a routing table associating destinations with different types of data and/or with different commands. For example, the routing module327determines that editing commands from the data editing module321are routed to the data store120and determines that search commands from the video search module322are routed to the data store120. As additional examples, the routing module327determines that data from the user interface module326is directed to a user device160or determines that website usage data or video access data is transmitted to the analytics server123.

The player configuration module328is software and routines executable by the processor306for generating configuration settings for the media player115. In one embodiment, the player configuration module328generates the configuration settings based at least in part on a publisher's customization to the media player115. For example, the player configuration module328generates a configuration setting based any customized function (e.g., age gating, questions about ad tailoring, adding domain restrictions, adding geographic restrictions, etc) added to the media player115by the publisher. The custom functions can be added to the media player, for example, by modifying the metadata (e.g., extensible metadata) of the media player115or via the application programming interfaces (“APIs”) of the media player115. The player configuration module328is depicted with a dashed line to indicate that it is an optional feature of the content management module301. In one embodiment, the player configuration module328is comprised within one or more of the third party video server180, the content management module301and the destination site170.

In one embodiment, a publisher uploads a video to the content management system110and/or customizes a media player115for presenting the video using the player configuration module328. For example, a publisher adds one or more features to the media player115by submitting a description of any customizations to the player configuration module328via a user interface. Descriptions of customizations include, for example, descriptions of age gating, ad tailoring queries, adding domain restrictions, adding geographic restrictions, etc.

The player configuration module328converts the publisher's customization of the media player115into a set of configuration settings and stores the configuration settings as a portion of the customized extensible metadata294in the storage device314. For example, the player configuration module328stores a blacklist identifying domains or geographic regions in which the media player115is unable to present video data. Alternatively, the player configuration module328stores a whitelist identifying domains or geographic regions in which the media player115is able to present video data. In other embodiments, the player configuration module328includes both a whitelist and a blacklist of domains or geographic regions for limiting presentation of video data by the media player115. The customized extensible metadata294includes the blacklist and the whitelist.

In one embodiment, the player configuration module328sends the customized extensible metadata294to a user device160so that the media player115launched in the user device160is configured according to the customized extensible metadata294to implement the features added by the publisher. In another embodiment, the player configuration module328stores the customized extensible metadata294in the storage device314or the data store120.

The operations manager329is software and routines executable by the processor306for generating modifications to metadata stored in the data store120and scheduling modification of the stored metadata. Additionally, the operations manager329determines when data stored by the data store120is changed and notifies the content management system110when stored data has been changed using the communication device330and/or the network150or any other communicative connection to the data store120. In one embodiment, the operations manager329maintains one or more queues for scheduling modification of stored metadata or communicating new metadata to the data store120. The operations manager329also communicates changes of stored metadata to a destination site170via the communication device330and the network150, allowing the destination site170to receive the most current metadata. In one embodiment, the operations manager329generates a queue or other schedule specifying the timing of communication of metadata to a destination site170.

Referring now toFIG. 4, the analytics server123and analytics engine125are shown in more detail.FIG. 4is a block diagram illustrating one embodiment of the analytics server123. As illustrated inFIG. 4, the analytics server123includes a network adapter402coupled to a bus404. According to one embodiment, also coupled to the bus404are at least one processor406, a memory408, a graphics adapter410, an input device412, a storage device414, an analytics engine125, an analytics store420, an advertisement storage (“ad storage”)425and a communication device450. In one embodiment, the functionality of the bus404is provided by an interconnecting chipset. The analytics server123also includes a display418, which is coupled to the graphics adapter410. The input device412, the graphics adapter410, the display418and the ad storage425are depicted using dashed lines to indicate that they are optional features of the analytics server123. Persons of ordinary skill in the art will recognize that the analytics server123may have different and/or other components than those shown inFIG. 4. In addition, the storage device414can be local and/or remote from the analytics server123(such as embodied within a storage area network (SAN)).

As is known in the art, the analytics server123is adapted to execute computer program modules for providing functionality described herein. As used herein, the term “module” refers to computer program logic utilized to provide the specified functionality. Thus, a module can be implemented in hardware, firmware and/or software. In one embodiment, program modules are stored on the storage device, loaded into the memory and executed by the processor406.

The network adapter402is an interface that couples the analytics server123to a local or wide area network. For example, the network adapter402is a network controller that couples the analytics server123to the network150via the signal line199for data communication between the analytics server123and other components of the system100. In one embodiment, the network adapter402is communicatively coupled to a wireless network (e.g., a wireless local area network) via a wireless channel433.

The processor406is any general-purpose processor. The processor406comprises an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to the display418. The processor406is coupled to the bus404for communication with the other components of the analytics server123. The processor406processes data signals and may comprise various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although only a single processor is shown inFIG. 4, multiple processors may be included. The analytics server123also includes an operating system executable by the processor406such as, but not limited to, WINDOWS®, Linux®, BSD®, or UNIX® based operating systems.

The memory408holds instructions and data used by the processor406. The instructions and/or data comprise code for performing any and/or all of the techniques described herein. The memory408may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory device known in the art. In one embodiment, the memory408also includes a non-volatile memory such as a hard disk drive or flash drive for storing information on a more permanent basis. The memory408is coupled to the bus404for communication with the other components of the analytics server123. In one embodiment, the analytics engine125is stored in the memory408and executable by the processor406.

The storage device414is any device capable of holding data, like a hard drive, compact disk read-only memory (CD-ROM), DVD, or a solid-state memory device. The storage device414is a non-volatile memory device or similar permanent storage device and media. The storage device414stores data and instructions for the processor406and comprises one or more devices including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device known in the art. In some embodiments, the storage device414includes instructions and/or data for maintaining metadata associated with video data, for modifying stored metadata or for retrieving stored video data or stored metadata associated with stored video data. For clarity, instructions and/or data stored by the storage device414are described herein as different functional “modules,” where different modules are different instructions and/or data included in the storage device414that cause the described functionality when executed by the processor406.

The input device412is any device to input data to the analytics server123. For example, the input device412is one of a mouse, track ball or other type of pointing device to input data to the analytics server123. In one embodiment, the input device412includes one or more of a keyboard (e.g., a QWERTY keyboard), a microphone, a web camera or similar audio or video capture device.

The graphics adapter410displays images and other information on the display418. The display418is a conventional type such as a liquid crystal display (LCD) or any other similarly equipped display device, screen or monitor. The display418represents any device equipped to display electronic images and data as described herein. In one embodiment, display418is a touch-screen display that provides the functionality of the input device412.

The communication device450transmits data from the analytics server123to the network150and receives data from the network150. For example, the communication device450communicates via the network adapter402to transmit data to, and receive data from, the network150. The communication device450is coupled to the bus404. In one embodiment, the communication device450also exchanges data among one or more of the content management system110, the data store120, the cache130, the third party video server180, the third party ad server190, and one or more of the ad servers140using communication channels other than the network150.

In one embodiment, the communication device450includes a port for direct physical connection to the network150or to another communication channel. For example, the communication device450includes a USB, SD, CAT-5 or similar port for wired communication with the network150. In another embodiment, the communication device450includes a wireless transceiver for exchanging data with the network150, or with another communication channel, using one or more wireless communication methods, such as IEEE 802.11, IEEE 802.16, BLUETOOTH® or another suitable wireless communication method.

In yet another embodiment, the communication device450includes a cellular communications transceiver for sending and receiving data over a cellular communications network such as via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail or another suitable type of electronic communication. In still another embodiment, the communication device450includes a wired port and a wireless transceiver. The communication device450also provides other conventional connections to the network150for distribution of files and/or media objects using standard network protocols such as TCP/IP, HTTP, HTTPS and SMTP as will be understood to those skilled in the art.

The analytics engine125is software and routines executable by the processor406for generating goal-based video analytics from media player state data received from the media player115. The analytics engine125is communicatively coupled to the bus404for communication with other components of the analytics server123. In one embodiment, the analytics engine125provides logic and instructions for performing one or more of the following functions: receiving website usage data; generating web analytics data from website usage data; receiving media player state data; associating media player state data with the web analytics data and/or website usage data; generating video analytics data including metrics from the media player state data and the web analytics data and/or website usage data; and storing the media player state data, the metrics, the video analytics data, the website usage data and the web analytics data.

In one embodiment, the analytics engine125is implemented in hardware (e.g., in an FPGA) as illustrated inFIG. 4. In another embodiment, the analytics engine125includes software routines and instructions that are stored, for example, in the memory408and/or storage device414and executable by the processor406to cause the processor406to implement functionalities described herein.

In the depicted embodiment as shown inFIG. 4, the analytics engine125includes a communication module460, an advertisement determination module (“ad determination module”)465, a ping analysis module470, a configurable goal module475, an analytics module480, a reporting module485and a user interface module490, which are communicatively coupled to one another. The ad determination module465is depicted using a dashed line to indicate that it is an optional feature of the analytics engine125.

The communication module460is software and routines executable by the processor406to handle communication between the analytics engine125and other components of the system100. In one embodiment, the communication module460receives pings from the media player115via the network150and the communication device450. In another embodiment, the communication module460receives website usage data from web pages provided by one of the destination site170, the third party video server180and the content management system110via the network150and the communication device450.

In one embodiment, the communication module460sends a report generated by the reporting module485to a publisher (e.g., the third party video server180). In another embodiment, the communication module460sends a data stream for an ad to the media player115embedded in a web page on a user device160. The ad determination module465is software and routines executable by the processor406to determine an ad to be played on the media player115. For example, the ad determination module465parses metadata associated with a video (e.g., a keyword describing the video) and selects an ad that matches the metadata of the video from the advertisement storage425. In one embodiment, the ad determination module465implements some or all of the functionalities provided by the ad server140or the third party ad server190.

In one embodiment, an ad associated with a video is pre-determined by a publisher when publishing the video. The ad determination module465retrieves the pre-determined ad for the video from the ad storage425. In another embodiment, the ad determination module465retrieves video analytics data for a video from the analytics store420and determines an ad for the video based at least in part on the analytics data. For example, if the video analytics data shows that 60% of the video views are from users interested in jogging, the ad determination module465selects an ad related to a sport product (e.g., running shoes) for the video. In yet another embodiment, the ad determination module465determines temporal location and placement of an ad for a video. For example, the ad determination module465determines to play the ad before the viewing of the video, in the middle of the viewing of the video or after the viewing of the video. In yet another embodiment, the main video to be played by a media player115is a video advertisement stored in ad storage425, and the ad determination module465retrieves the video advertisement from the ad storage425based at least in part on a video ID and a video version provided by the media player115in a request for the video advertisement.

The ping analysis module470is software and routines executable by the processor406for analyzing media player state data. The ping analysis module470receives media player state data in the form of a ping from the media player115via the communication module460. In one embodiment, the ping analysis470module parses the media player state data, sends the parsed media player state data to the configurable goal module to be associated with one or more video goals, and stores the media player state data in the analytics store420. For example, the ping analysis module470is a parser that parses a ping received as an http “get” request from the media player115for a video being played in a media player115. The parser parses the “get” request to retrieve a video ID, a video version, an embedded URL and an event included in the request.

The ping analysis module470also determines whether the event included in the ping is a custom event. In one embodiment, to determine whether the event is a custom event, the ping analysis module470checks the ping for an identifier identifying the event as a custom event. For example, a publisher defines a video goal using the graphical user interface1100and includes in that definition a video ID and one or more custom events for a particular video. Upon receiving a ping from a media player115playing that particular video, the ping analysis module470parses the ping to extract at least the event, an identifier identifying the event as custom and the video ID.

In another embodiment, a list of customizations made to a media player115by a publisher along with a media player identifier is provided by the publisher to the analytics engine125via the communication module460and stored in the analytics store420. Upon receiving a ping, the ping analysis module470of the media player115parses the ping to extract the event, the media player identifier identifying the media player115, and the video ID included in the ping. The ping analysis module470then compares the event to the list of customizations made to the media player115using the media player identifier and the video ID to determine whether the event matches a customization included in the list of customizations. If a match exists, then the event is identified by the ping analysis module470as being a custom event. In yet another embodiment, the ping analysis module470maintains a second list of non-custom events and determines an event to be a custom event if the event is not included in the second list.

The user interface module490is software and routines executable by the processor406to generate graphical data for one or more user interfaces. For example, the user interface module490includes instructions that, when executed by a processor490, generate the graphical user interface1100depicted inFIG. 12. The one or more user interfaces capture video goal data from a publisher and/or present analytics reports including at least goal-based video analytics to the publisher. In one embodiment, the user interface module490communicates instructions based at least in part on video goal data stored in the analytics store420and user interface instructions stored in the user interface module to a user device160via the communication device450and the network150, and a processor included in the user device160generates a user interface by executing the instructions provided by the user interface module490. In another embodiment, the user interface module490generates video goal-based graphical data for a user interface. In yet another embodiment, the user interface module490receives analytics reports from the reporting module485and displays the analytics reports to a publisher.

The graphical user interface1100, as depicted inFIG. 12, includes a video goal name text field1110, a video goal activation toggle1120, a video goal position selector1130, a video goal type selector1140, and video goal details fields1150for information related to a selected video goal type. In the depicted embodiment, to define a video goal, a publisher enters a name for the video goal in the video goal name text field1110and selects a purpose for the video goal using the video goal type selector1140. The video goal type selector1140presents the publisher with a variety of preconfigured video goal types as well as an option to select and configure a custom video goal type. The publisher selects a video goal type using the video goal type selector1140and enters one or more parameters associated with the video goal type in the video goal details fields1150. For example, selecting “URL Destination with Video View” with the video goal type selector1140allows the publisher to define a web page destination as a goal, where the web page destination is a web page that includes a media player115designated to play a particular video or series of videos.

The video goal activation toggle1120tells the analytics engine125whether or not to track and/or report the video goal. For example, if for a period of time a publisher wishes to deactivate the tracking and/or reporting of the video goal, the publisher can access the video goal via the graphical user interface1100and toggle the video goal activation toggle1120to “off” Then, at a later time, the publisher can reactivate tracking and/or reporting of the video goal by the analytics engine125by toggling the video goal activation toggle1120back to “on.”

The video goal position selector1130selects which set of goals the video goal being configured will be associated with, and assigns a unique number to the video goal within the selected set. In one embodiment, the configurable goal module475receives definitions for multiple sets of goals to categorize different types of video goals into different sets, and stores the set definitions in the analytics store420. For example, video goals related to video views, registrations, and monetization are stored as separate sets in the analytics store420. In one embodiment, analytics reports related to each of the sets are generated by the reporting module485of the analytics module480to report comparative video goal satisfaction results between the sets and between the goals of each of the sets.

The video goal details fields1150allow a user (e.g., a publisher) to enter video goal criterion which are used by the analytics engine125in association with media player state data and/or website usage data to determine the number of times a video goal has been satisfied (also referred to herein as the number of “video goal conversions”). In one embodiment, where the video goal type is to track visits to a URL destination that include a video view, the video goal details fields1150include a match type selector1152, a video goal URL field1154, a video ID(s) field1160, a case sensitive checkbox1156, and a video goal value1158. However, depending on the video goal type, the associated video goal details fields1150can include different or customized inputs related to the selected video goal type. For example, for a custom video goal type, a publisher can define customized input fields to create a custom video goal definition. For example, a publisher can define a video goal that seeks to achieve a certain viewing age for a particular video or video series played by a media player115customized to track the viewing age of viewers. In this definition, in addition to at least a video ID(s) field1160, the publisher creates a custom input to define the desired viewing age as being 20 years old.

The match type selector1152is used to select whether satisfaction of the video goal should be limited to video views that occur on a web page with an address that exactly matches the web page address entered in the video goal URL field1154. The video goal URL field1154is used to identify whether the web page address entered matches the letter case of the address of the visited web page by checking the case sensitive checkbox1156.

The video goal value field1158is used to assign a goal value to the video goal. A video goal value reflects the revenue that would be realized from a video goal conversion. For example, the analytics engine125generates a report showing the monetary value produced by video goal conversions, which is derived by multiplying the number of video goal conversions by the value included in the video goal value field1158. From the amount entered in the goal value field1158, the analytics engine125can calculate various metrics such as return on investment and average score, which reflect the monetary effect of the video being included on the web page. A video goal's value can be, for example, determined by a royalty amount associated with the video(s) being played, or an amount of ad revenue associated with the video(s) being played.

In the depicted embodiment, for example, for a video goal type of a URL destination with a video view, a publisher enters a web page address. The web page address is the web page that includes the particular video or series of videos to be played in a video goal URL field1154. A publisher also enters one or more video IDs of the videos associated with the video goal in a video ID(s) field1160. The one or more video IDs input into video ID(s) field1160correspond with one or more video ID(s) included in media player state data pinged by a media player115to the analytics server123that uniquely identify each video viewed using the media player115. The analytics engine125then, for example, generates a report showing the number of visits to the URL designation that included a video view occurring within a specified timeframe using the information input into video goal details fields1150and media player state data received from media players115that played the video data. In one embodiment, the video ID is a unique character string generated to identify a particular video. However, other unique identifiers may be used in the place of a video ID to associate a video goal with media player state data received from a media player115. For example, the Goal URL may be unique to the video being played and may alternatively be used.

The configurable goal module475is software and routines executable by the processor406for receiving video goal definitions from the interface generated on the user device160, associating the video goal definitions with other information and storing the video goal definitions in the analytics store420. In one embodiment, the configurable goal module475associates a video goal with media player state data received from a media player115and parsed by the ping analysis module. For example, the configurable goal module475uses a unique identifier, such as a video ID or a URL included in a definition of a video goal, to associate the video goal with media player state data received from the media player115for a video viewed using the media player115. In an embodiment where multiple videos are being viewed in series, each ping sent by the media player115includes a unique identifier, such as a video ID, for the event included in the ping so the configurable goal module475can associate the event with the appropriate video goal. In one embodiment the configurable goal module475retrieves media player state data from the analytics store420after it has been parsed and stored by the ping analysis module470. In another embodiment, the configurable goal475module receives media player state data directly from the ping analysis module470after it has been parsed.

During a media player session, the media player state data received by the configurable goal module475includes one or more events reflecting user interaction with the media player115and/or user interest in the video viewed using the media player115. In one embodiment, the one or more pings represent a series of events/non-events required to occur in order to establish conversion of a video goal. For example, to report how much of a video has been viewed on a media player115, the media player115sends a ping indicating playback of the video has begun, a series of pings indicating 25%, 50%, 75% and a 100% of the video has been played back, and a ping indicating playback of the video has ended. The configurable goal module475associates these pings with a video goal seeking at least 75% of the video be viewed by viewers in a given timeframe, and the analytics module480, in determining satisfaction of the video goal, analyzes the associated pings to determine that for each viewing session, a ping exists indicating that playback started (e.g. to ensure that the video has not simply been queued up to the 75% point), that at least 75% has been played back, and that playback of the video has ended (e.g., to ensure that the video is not simply in a paused state). The analytics module also analyses the pings to ensure that no fast forward or skip events were received (e.g., to verify the video was played continuously).

In another example, to track how many viewers view a series of videos available for viewing in a media player115, a video goal is stored in the analytics store420by the publisher that includes each of the videos making up the series. In this example, the media player115sends a series of pings including events reflecting the viewing of each of the videos (as identified by video ID, for example) and the configurable goal module475associates the pings with the video goal and stores the association in the analytics store for later use by the analytics module480.

In another embodiment, the configurable goal module475associates website usage data and media player state data with a video goal using a unique identifier. A unique identifier can be a media player session identifier, a browser session identifier corresponding to the web page collecting the website usage data, or any other identifier related to both the website usage data and media player state data. For example, the web browser launched on the user device160collects a media player session identifier from a media player115or a cookie associate therewith and sends it with website usage data and/or a browser session identifier to the configurable goal module475via the network150. In another example, the media player115launched on the user device160collects a browser session identifier from the web browser or a cookie associated therewith and sends it with media player media player state data and/or a media player session identifier to the configurable goal module475via the network150. Session identifiers and cookies are further described below with reference toFIG. 11.

In another example of this embodiment, a publisher submits a video goal to the analytics engine125for a video. On a user device160, a viewer clicks a video thumbnail, included in the web page, of a video the viewer wishes to view. The web page includes JavaScript code provided by the analytics server123that captures and transmits website usage data related to the click of the video to the analytics engine125. Clicking the video thumbnail instructs a media player115included on the web page to begin playing of an associated video and, during playback of the video, the media player115captures and pings media player state data related to the viewing of the video to the analytics engine125. The configurable goal module475associates the website usage data and the media player state data after it has been received from the user device160with the video goal using identifying information (e.g., a session identifier, a video ID of the video being viewed, a URL, etc.).

In yet another embodiment, the configurable goal module475associates a video goal stored in the analytics store420with media player state data received for different videos from a first media player115and a second media player115using identifiers. The identifiers can be a common URL destination for each of the media players115, video IDs for videos being viewed by the first and second media players115, session identifiers, or any other identifiers that relate the video goal and the videos being viewed. For example, a viewer accesses a web page on a user device160that includes two media players115, each presenting a unique video. The viewer views both videos and the media players115ping media player state data including a video ID for each video and events associated with the viewing of the videos to the analytics server123. The configurable goal module475of the analytics engine125associates the media player stated data from each media player115with a stored video goal (such as one customized to track the number of web page visits that include viewing of both videos) using identifying information such as the video IDs of the viewed videos and a browser session identifier.

In another example, a viewer accesses successive web pages on a user device160that each includes a media player115presenting a video. During the viewing of the video on each of the successive web pages, the media players115ping media player state data including a video ID for each video played and events associated with the viewing of the videos to the analytics server123via the network150. The configurable goal module475associates the media player state data received from each media player115with a stored video goal (such as one customized to track the number of successive web page visits with video views) using identifying information such as video IDs of the viewed videos and a browser session identifier.

The analytics module480is software and routines executable by the processor406for determining metrics for events, analyzing events that reflect user interest in, and interaction with, video data being played by the media player115, and generating goal-based video analytics data from event data and one or more video goals defined by a publisher.

A metric is a term categorizing an event. For example, a metric is a category describing one of player loads, video views, viewing 25% of a video, viewing 50% of a video, viewing 75% of a video, viewing 100% of a video, automatic plays, manual plays, monetizable views, an ad being watched, an ad being clicked, an ad being abandoned, sharing a video via email, sharing a video via an embed copy, sharing a video via a website, marking a video as a liked or disliked video, marking a video as a favorite video, turning caption on or off for a video, switching a caption from one language to another language, adding a comment for a video, subscribing to a video, dropping off a video, age-gating, user login, generating a queue for playback, saving for later view and any other events triggered by a publisher's customization of the media player115. The analytics module480stores metrics in the analytics store420.

In one embodiment, the analytics module480maintains a list of metrics for events, including custom events, and stores event data describing the events in the analytics store420according to the metrics. For example, the analytics module480determines a metric for an event and stores event data describing the event in a storage section that is designated for the metric. The analytics module480determines whether the metric for the event is a new metric (e.g., new metric for a new custom event). For example, the analytics module480checks whether the metric is included in the list of metrics and determines the metric as a new metric if the metric is not in the list. The analytics module480adds the new metric to the list and stores the event in the analytics store420according to the new metric.

In another embodiment, the analytics module480analyzes event data describing custom events related to a feature customized by a publisher and obtains video goal analytics data describing satisfaction of one or more video goals based at least in part on user interactions with the feature. To learn the user interactions with the customized feature is beneficial, because it provides feedback on a publisher's customization of the media player115and facilitates the evaluation of the customization in relation to the publisher's video goals. For example, the analytics module480analyzes all the custom events related to a customized feature of “generating a queue for playback” and obtains video analytics data showing that including a queue for playback to view videos in the media player115satisfies the publisher's goal of obtaining a 30% increment of video views for the video. The analytics module480stores the video analytics data in the analytics store420. In one embodiment, the analytics module480sends the video analytics data to the reporting module485.

In another embodiment, the analytics module480analyzes website usage data from one or more web pages and generates web analytics data determining the number of times one or more video goals have been converted. For example, the analytics module480analyzes all the website usage data for a web page and generates web analytics data describing that over 80% of users visiting the web page clicked a link to view a video advertisement on a media player115embedded in the web page. The analytics module480stores the web analytics data in the analytics store420. In one embodiment, the analytics module480sends the web analytics data to the reporting module485.

In yet another embodiment, the analytics module480analyzes website usage data and media player state data associated by the configurable goal module475and stored in the analytics store420with one or more video goals to determine the number of times the one or more video goals have been converted. For example, on a product page for a particular shoe, a product seller includes a video advertisement of the shoe to generate additional interest in the shoe and thereby increase sales of the shoe. The product seller sets a custom video goal to track the number of clicks on a purchase link for viewers who have watched the video advertisement. The analytics module480analyzes the stored association between the website usage data received for the product page and the media player state data received from the media player115playing the video advertisement for a specific time period to determine the number of clicks on the purchase link by customers who viewed the video advertisement.

In yet another embodiment, the analytics module480retrieves event data describing events and metrics related to the events from the analytics store420. For example, the analytics module480retrieves event data and metrics associated with the event data such as video views, viewing 25% of a video, viewing 50% of a video and viewing 75% of a video. The analytics module480calculates a value for each metric using the event data. For example, the analytics module480calculates the number of total video views, the number of video views that have a viewing of 25% of a video, the number of video views that have a viewing of 50% of a video and the number of video views that have a viewing of 75% of a video. The analytics module480also determines geographic information related to the event data. For example, the analytics module480determines one or more geographic locations where users view the video. The analytics module480stores the values for the metrics and the geographic information as a portion of analytics data in the analytics store420.

The reporting module485is software and routines executable by the processor406to generate a report for a user. In one embodiment, the reporting module485retrieves analytics data, event data and video goal definitions from the analytics store420, generates a report based at least in part on the analytics data, event data and the video goal definitions, and sends the report to the user via the user interface module490, the communication device450, and the network150. The report includes one or more of web analytics data, video goal analytics data and other analytics results generated by the analytics module480showing at least video conversion results of one or more video goals. In one embodiment, the reporting module485includes data describing one or more predefined reports to expedite generation of the predefined reports. A predefined report is a report with content predefined by an administrator. For example, a predefined report is a video viewing report with predefined content such as identifying whether the number of total video views and unique video views (e.g., views from unique users) for a video satisfies a related video goal. The reporting module485receives a selection of a predefined report from a user, retrieves analytics data (e.g., web analytics data, video goal analytics data, etc.) from the analytic store420and generates the selected predefined report.

Alternatively, the reporting module485receives a description of a report from the communication device450, allowing a user (e.g., a publisher of a video) to specify parameters for generating a customized report via, for example, the user interface module490. A customized report is a report customized by a user. For example, a customized report is a report describing one or more of video goal analytics data within a specified geographic location, user interactions with features customized by a publisher in the media player115related to a video goal, the frequency with which users perform certain types of interaction with a media player115and how the customization of the media player115affects the views of the video, etc. In one embodiment, the reporting module485provides a customized report to a publisher showing satisfaction of a video goal due to user interactions with a customized feature in the media player115.

In one embodiment, the parameters for generating a report are video goals and metrics associated with the video goals. For example, the parameters for generating a report are a video goal of at least 50% viewing of a video by viewers using metrics of total video views and viewing 50% of a video so that a report associated with total video views and viewing 50% of a video will be generated. The reporting module485retrieves values for the metrics and geographic information related to the events associated with the video goal from the analytics store420. The reporting module485constructs one or more of charts, diagrams and tables using the values of the metrics and the geographic information. For example, the reporting module485generates a table including fields such as the total number of video views for a video, the total number of video views with a viewing of 50% of the video (the video goal) and the number of videos views for different geographic locations. The reporting module485generates a report using the charts, diagrams and tables by incorporating the charts, diagrams and tables into the report.

The analytics store420is a persistent storage device that stores data received from at least a user device160, a media player115, the analytics engine125, the configurable goal module475, the ping analysis module470and the communication device450. For example, the analytics store420stores one or more of video IDs, video versions, metrics for events, event data describing events, event data describing custom events, location data, session data, geographic information for events and custom events, video goal data and other analytics data received from the analytics engine125such as website usage data, web analytics data and video analytics data.

As an example, when a user device160accesses a first web page from a destination site170, the analytics engine125receives data from the user device160identifying that the first web page was accessed by the user device160and stores the data in the analytics store420. While accessing the first web page, if a user accesses video data included in the first web page, the media player115used to access the video data transmits a view request to the analytics engine125via the network150indicating that the video data is being viewed. The analytics engine125stores the view request from the media player115, allowing the analytics store420to store data indicating that the first web page was initially accessed and then the video data was accessed. In one embodiment, the analytics store420stores web analytics data and video analytics data using a session identifier, so that interactions with web pages and video data during a visit are maintained according to the session identifier. The analytics store420is further described below with reference toFIG. 5.

The advertisement storage (“ad storage”)425is a persistent storage device that stores data for advertisements. For example, the ad storage425stores one or more advertisements to be played in conjunction with a video or stores video data sorted by video ID for direct playback by a media player115. In one embodiment, the ad storage425stores metadata for an ad (e.g., a title, a keyword and a description for the ad), allowing the ad determination module465to determine an ad for a video by matching the metadata of the ad against the metadata of the video. For example, the ad determination module465compares a keyword describing the video with keywords for the ads stored in the ad storage425and selects an ad with the same keyword as the video. In another embodiment, the ad storage425stores rules for selecting and displaying advertisements. For example, the ad storage425stores rules for displaying advertisements as pre-roll ads (e.g., ads played before playing a video), mid-roll ads (e.g., ads played in the middle of playing a video) and post-roll ads (e.g., ads played after playing a video).

FIG. 5is a block diagram illustrating one embodiment of the analytics store420. In the depicted embodiment, the analytics store420includes video identification data424, a video version log426, session data428, URL data430, event data434, configurable goal data436, viewer data438, media player identification data440and analytics data448. In one embodiment, media player state data received from a media player115is parsed by the ping analysis module470and stored as video identification data424, video version log426data, URL data430, event data434, player identification data440, session data428and viewer data438. In one embodiment, the analytics store420also stores time and date information related to the media player state data, web analytics data and website usage data. Persons of ordinary skill in the art will recognize that the analytics store420may also store raw data received by the analytics engine125, location data for a video, domain restriction data for a media player115and other data to provide functionalities described herein.

The video identification data424is data identifying a video. In one embodiment, the video identification data424includes a unique video ID that distinguishes one video from another video. In one embodiment, the video identification data424also includes the name of a publisher, a time and date of publication, a title for the video and other video attributes.

The video version log426is a log recording various video versions of a video. For example, a publisher first publishes a video with a video version v1and then proceeds to revise the video and republish the video with video version v2. When a viewer interacts with the media player115, the media player115sends a ping including the video ID, a video version (e.g., v2) and an event for the video being interacted with. Once received, the video version log426stores information included in the ping according to the video version included therein so the analytics module480can associate each event with the appropriate video version in the reports generated by the analytics module480. In one embodiment, the video version log426includes all the video versions for a video and associations between each video version and the events, including custom events, related to each video version.

The event data434is data describing events, including custom events. In one embodiment, the player state data434describes all the events triggered in a media player115, detected by the event module292of the media player115and communicated to the analytics engine125by the ping module291of the media player115. In another embodiment, the event data434includes a combination of events and custom events, where the custom events are caused by one or more customized features in the media player115and user interactions triggering events associated with the one or more customized features. For example, the event data434includes a data describing a viewer's agreement to a publisher's terms and conditions for viewing a video. In this example, the viewer's selection of a play button of a media player115to begin playback of a video triggers a prompt for the viewer to accept the publisher's terms and conditions for viewing the video, and the viewer's acceptance of the publisher's terms is detected by the event module292of the media player115and sent to the ping module291for communication to the analytics server123via the network.

The player identification data440are data received from a media player115that uniquely identifies the media player115and distinguishes it from other media players115. For example, player identification data440include a media player ID and version information describing the version of software the media player was built using and the date the media player was built.

The session data428are data received from a user device that relates website usage data and media player data with one or more video goals. For example, session data includes an association of website usage data and media player state data with one or more video goals using a unique identifier, such as a media player session identifier, a browser session identifier corresponding to the web page collecting website usage data, data from a cookie stored by a web browser or the media player115, or any other identifier related to both the website usage data and media player state data.

The analytics data448are data received from or generated by the analytics engine125. For example, the analytics data448include one or more of web analytics data, video goal analytics data, metrics, categories for metrics, values for metrics, geographic information for custom events and other analytics results generated by the analytics engine125. The analytics data525provides a basis for generating a video goal report to a user. For example, the reporting module485retrieves a portion of the analytics data525based at least in part on some parameters for a report and generates the report using the portion of analytics data525. In one embodiment, the analytics engine125generates all the analytics data. In another embodiment some of the analytics data448is generated remotely and transmitted to the analytics server123for use by the reporting module485of the analytics module480.

The configurable goal data436are data received from the configurable goal module475. For example, the configurable goal data436include an association between one or more video goals defined via an interface generated by the user device160based on instructions from user interface module490, and media player state data received from a media player115.

The viewer data438are data received from a media player115related to a viewer. For example, the viewer data438include a unique identifier for a viewer, such as a username, an email address, or other handle, IP address information, geographic information, viewer preferences, user device information (e.g., operating system information) and other information attributable to the viewer (e.g., age, gender, etc.).

Methods

Referring now toFIGS. 6-11, various embodiments of the method of the specification will be described.FIG. 6is a flow diagram illustrating one embodiment of a method500for generating goal-based video analytics based at least in part on a video goal definition and media player state data. In the example shown byFIG. 6, the analytics engine125receives502a video goal definition from a user device160. In one embodiment, the configurable goal module475receives the video goal definition from a user device160displaying the graphical user interface1100.

The analytics engine125receives504media player state data including event data describing events occurring in association with a media player115. In one embodiment, the ping analysis module470receives media player state data in the form of a ping from the media player115via the communication module460. For example, the ping analysis470module parses the media player state data and stores the associated media player state data in the analytics store420.

The analytics engine125then associates508the video goal definition and the media player state data. In one embodiment, the configurable goal module475associates the media player state data with the video goal definition using a video ID parsed from the media player state data by the ping analysis module470, and then stores data reflecting the association in the analytics store420.

The analytics engine125then generates510goal-based video analytics based at least in part on the associated media player state data and the video goal definition. During the generating510, for example, the analytics module480determines satisfaction of the video goal definition by retrieving the associated media player state data and video goal definition from the analytics store420, computing any necessary metrics needed for comparison to the criterion included in the video goal definition and comparing the criterion included in the video goal definition to the metrics and the media player state data to determine whether the video goal definition has been satisfied. For example, the analytics engine125retrieves media player state data indicating that a video has been viewed 1000 times by957unique viewers for a particular week, and generates analytics data stating the video goal defined by a publisher requiring the video be viewed at least 800 times by700unique viewers was satisfied for that week. In another example, the analytics engine125retrieves media player state data indicating that the total views for all videos associated with a video goal definition exceeded 200,000 views for a particular week, and generates analytics data stating the video goal defined by a publisher requiring the videos be viewed collectively at least 150,000 times was satisfied for that week.

FIGS. 7A and 7Bare flow diagrams illustrating one embodiment of a method600for generating goal-based video analytics based at least in part on a video goal definition and media player state data. In the example shown byFIGS. 7A and 7B, the analytics engine125generates and sends610instructions for a video goal definition interface to user device160of a third party publisher. In one embodiment, the user interface module490generates instructions for the graphical user interface1100depicted inFIG. 12and sends the instructions via the communication device450and network150to the user device160to be rendered for display via a processor206of the user device.

The analytics engine125receives620a video goal definition from a user device160of a third party publisher. In one embodiment, the third party publisher defines a video goal using the inputs of the graphical user interface1100and submits the video goal definition to the analytics server123via the network150. The video goal definition is received620by the communication device450of the analytics server123and routed to the configurable goal module475via the communication module460.

After receiving the video goal definition, the configurable goal module475stores630the video goal definition. In one embodiment, the configurable goal module475stores630the video goal definition as configurable goal data436in the analytics store420.

The analytics engine125receives640media player state data from one or more media players115included on one or more user devices160. In one embodiment, the ping analysis module470receives640the media player state data in the form of pings sent by the one or more media players115on the one or more user devices160. For example, the ping analysis470module parses the media player state data as it is received from the one or more media players115.

The analytics engine125associates650the media player state data received from the one or more media players115with the stored video goal definition. In one embodiment, the configurable goal module475associates the video goal definition with the received media player state data parsed by the ping analysis module470. For example, the configurable goal module475uses a unique identifier, such as a video ID included in a definition of the video goal, to associate650the video goal with media player state data received from the one or more media players115.

The analytics engine125stores660the media player state data in the analytics store420including data reflecting the association between the media player state data and the video goal definition. For example, after parsing the media player state data, the ping analysis module470stores660the video ID, the video version, the embedded URL and the event included in the media player state data as video identification data424, video version log426, URL data430and event data434in the analytics store420, respectively. The configurable goal module475stores data associating the media player state data with the video goal definition as configurable goal data436in the analytics store420. In another embodiment, the ping analysis module475also stores660the raw media player state data in the analytics store420for later use by the analytics engine125.

When the analytics engine125receives670a request for an analytics report from a user device160of the third party publisher, the analytics engine125generates680goal-based video analytics based at least in part on the associated media player state data and the video goal definition. During the generating680, for example, the analytics module480determines satisfaction of the video goal definition by retrieving the associated media player state data and video goal definition from the analytics store420, computing any necessary metrics needed for comparison to the criterion included in the video goal definition and comparing the criterion included in the video goal definition to the metrics and the media player state data to determine whether the video goal definition has been satisfied. In some examples, the analytics module480performs the retrieving periodically (e.g., a day, a week, a month, a season, etc.). In other examples, the retrieving is triggered by a request of a user (e.g., a publisher). The analytics module480then generates a rich report demonstrating the number of video conversions that have been achieved for a given period of time based on the analysis performed by the analytics module480. For example, the reporting module485constructs charts, diagrams and tables illustrating the number of views achieved and the number of views required by the video goal for a given period of time.

Once the analytics report is generated, the analytics engine125sends690the analytics report to the user device160of the third party publisher for review. For example, the reporting module sends the analytics report data to the user interface module490, and the video interface module490generates instructions for an interface to display the analytics report data and transmits the interface to the user device of the third party publisher via the communication device450and the network150to be rendered for display on the user device160via a web browser loaded on the user device160.

FIG. 8is a flow diagram illustrating one embodiment of a method700for generating cross-site goal-based video analytics based at least in part on a video goal definition and media player state data. In the example shown byFIG. 8, the analytics engine125receives710a video goal definition from a user device. In one embodiment, the configurable goal module475receives the video goal definition from a user device160displaying an interface generated by the user interface module490.

The analytics engine125receives720media player state data including event data from a first media player115loaded in a first web page on the user device160. After receiving720media player state data including the event data from the first media player115, the analytics engine125receives730media player state data including event data from a second media player115loaded in a second web page on the user device. For example, the analytics engine125receives720media player state data including events indicating a viewer viewed a video with the first media player115on the first web page. The analytics engine125then receives720media player state data including events indicating the viewer clicked an advertisement displayed by the first media player was redirected to the second web page. The analytics engine125then receives730media player state data including events indicating the viewer viewed a video with the second media player115on the second web page.

The analytics engine125then associates740the video goal definition and the media player state data received from the first media player115and the second media player115. In one embodiment, the configurable goal module475associates the media player state data with the video goal definition using a referrer identifier, such as a referring web page address, and video IDs parsed from the media player state data by the ping analysis module470, and then stores data reflecting the association in the analytics store420. In another embodiment, the first web page and the second web page are located on different websites and a third party cookie is used to track cross-site traffic.

The analytics engine125then generates750goal-based video analytics based at least in part on the associated media player state data and the video goal definition. During the generating750, for example, the analytics module480determines satisfaction of the video goal definition by retrieving the associated media player state data and video goal definition from the analytics store420, computing any necessary metrics needed for comparison to the criterion included in the video goal definition, and comparing the criterion included in the video goal definition to the metrics and the media player state data to determine whether the video goal definition has been satisfied. The analytics engine is not limited to receiving media player state data from a first and second media player115, but can receive media player state data from any number of media players115located on web pages hosted on the same or different web domains, and can associate the media player state data from the any number of media players115with the appropriate video goal definition using available identifiers.

FIG. 9is a flow diagram illustrating one embodiment of a method800for capturing events occurring in association with a media player115and sending the events to the analytics server123. In the example shown byFIG. 9, a viewer instructs a user device160to load810a web page including a media player115.

Upon loading, the media player115captures820events occurring in the media player115which are associated with a video goal configured by a publisher and stored in the analytics server123. In one embodiment, the media player115captures video playback activity and user interaction with the media player115. For example, the media player115captures events such as the start of a video view, the displaying of an advertisement, the clicking of an advertisement by a viewer, etc.

When an event is captured, the media player instructs the user device160to transmit830media player state data to the analytics server123via the network150and the communication device450. For example, the media player115instructs the user device to send a hypertext transfer protocol “get” request including parameters identifying a video and an event occurring in association with the video.

FIG. 10is an event diagram illustrating one embodiment of a method for configuring a video goal, capturing events from a media player115related to the video goal and generating goal-based video analytics from the video goal and the events.FIG. 10illustrates one of many possible scenarios demonstrating the interaction between the elements of the system100for generating goal-based video analytics, and should not be construed as limiting. In the example shown byFIG. 10, a publisher904instructs a user device160to load910a web page that includes a video goal definition interface provided by user interface module490. A publisher904inputs data into the video goal definition interface and instructs the user device160to send915a video goal definition to the analytics server125. The analytics server123receives the video goal definition and stores920the video goal definition in the analytics store420. A viewer903on a user device160instructs the user device160to load a web page including embedded instructions to load930a media player115. Optionally, as indicated by the dashed lines, a publisher may pre-configure925the media player115being loaded to include customized features and logic to detect events associated with the customized features. In an embodiment where the media player115is customized, instructions for the customizations to the media player115are received by the media player115via the communication module290of the viewer's user device160from one or more of the destination site170, the third party video server180or the content management system110, for example.

Once the media player115is loaded930by the viewer's user device160, the media player115instructs the viewer's user device160to send media player state data, i.e., media player load ping951, to the analytics server123indicating that the media player has been loaded on the viewer's user device160, and the analytics server123processes and stores972the media player load ping951in the analytics store420.

The media player115then proceeds to load video data940streaming from a video content source, such as the destination device170, the third party video server180, or the content management system110, via the network150to the viewer's user device160. Once a predetermined amount of the video data has been loaded, the media player115instructs the viewer's user device160to send a video load ping953to the analytics server123and the analytics server123processes and stores974the video load ping953in the analytics store420.

Once playback of the video begins950, the media player115instructs the viewer's user device160to send a video start ping955to the analytics server123indicating that playback of the video has begun. The analytics server123processes and stores976the video start ping955in the analytics store420. In one embodiment, playback of the video begins automatically once the media player115has been loaded by a viewer's web browser launched on the viewer's user device160. In another embodiment, a viewer initiates playback manually by selecting a play button of the media player115. In response, the media player instructs the user device160to send (not shown) a video playback request to the video server hosting the video, the video server sends (not shown) the video data stream over the network to the media player115in response to the request, and the media player receives (not shown) the video data stream and commences950playback.

During playback of the video, the viewer interacts960with the media player115and the media player115detects the viewer's interaction with the media player and instructs the viewer's user device160to send an event ping957to the analytics server123, and the analytics server123processes and stores978the event ping957in the analytics store420. In one embodiment, for example, the publisher904defines a video goal to achieve a certain number of interactions with an interactive feature (e.g., an advertisement layered over the video data) included in a customized media player115. The publisher customizes the media player115to include the interactive feature and instructs the media player115to detect when and how a viewer interacts with the interactive feature. When a viewer interacts960with the interactive feature (e.g., clicks on the advertisement layered over the video data), the media player115detects the event instructs the user device160to send an event ping957to the analytics server123indicating that the user interacted with the interactive feature.

Once video playback ends without abandonment965, the media player115detects the event and instructs the viewer's user device160to send a video end ping959to the analytics server123, and the analytics server123processes and stores979the video end ping959in the analytics store420.

After a plurality of viewers903have viewed the video data associated with the video goal definition over a predetermined period of time, and media players115on the viewers' user devices160have sent media player state data associated with the viewing of the video data, a publisher904instructs a user device160to request975goal-based video analytics from the analytics server123via the network150. Responsive to this request, the analytics engine of125of the analytics server123generates980goal-based video analytics in the form of a report and instructs the communication device450to send the report to the publisher's user device160for display.

In one embodiment, the analytics engine125generates980the goal-based video analytics by retrieving, for example, the event pings and the video goal definition stored in the video analytics store420, and determining the number of video goal conversions that have been achieved based an association between the event pings and the video goal definition. In one embodiment, the data included in the event pings is associated with the video goal definition by the ping analysis module470parsing the event pings at the time the event pings are received and the configurable goal module475associating the parsed event pings with the video goal definition using a video ID of the video data. The video analytics generated by the analytics engine125show, for example, the number of video goal conversions that have been achieved over one or more periods of time (e.g., by week, by month, by year, etc.), by geographic area, or by other criterion.

FIG. 11is a flow diagram illustrating one embodiment of a method1000for determining whether to associate website usage data and media player state data with a video goal. In one embodiment, the steps identified byFIG. 11are performed by the media player115executed on a user device160.

Initially, the media player115determines1010whether a tracking cookie is associated with the web page in which the media player115is launched. In one embodiment, the tracking cookie included in the web page is a first party cookie. For example, the media player115places a call to the web page to identify the web page tracking cookie. If no information identifying the web page tracking cookie is received from the web page or if the media player is otherwise unable to identify the web page tracking cookie, the method ends. Accordingly, website usage data is not transmitted to the analytics engine125because the web page is not being tracked by the analytics engine125. However, media player state data from the media player115are pinged to the analytics engine125to allow tracking of interactions for video data.

However, if the media player115determines1010that a web page tracking cookie is associated with the web page, the media player115identifies1020a unique identifier associated with the web page tracking cookie. For example, the web page communicates the web page tracking cookie or data identifying the web page tracking cookie to the media player115. The media player115then identifies1020the unique identifier associated with the web page tracking cookie. Alternatively, the web page identifies1020the unique identifier associated with the web page tracking cookie.

The media player115then determines1030whether the unique identifier associated with the web page tracking cookie matches a unique identifier associated with the media player cookie. If the unique identifier associated with the web page tracking cookie does not match a unique identifier associated with the media player cookie, the method ends and website usage data is not transmitted to the analytics engine125. For example, if the unique identifier associated with the web page tracking cookie differs from the media player cookie, the web page and the media player115are owned by different entities so that website usage data is not transmitted. However, the requests from the media player115are transmitted to the analytics engine125.

Responsive to the unique identifier associated with the web page tracking cookie matching the unique identifier associated with the media player cookie, the media player115initiates a command to establish1040a connection between the user device160and the analytics engine125. In one embodiment, the media player115associates a browser session identifier or a media player session identifier with the tracking cookie and the media player cookie. The session identifier is included with the website usage data and the requests transmitted to the analytics engine125. Associating a session identifier with the requests and the website usage data allows the analytics engine125to associate the received website usage data and requests with each other in a session that includes website usage data and requests.