System for video playback using server generated manifest

文档序号:1802516 发布日期:2021-11-05 浏览:27次 中文

阅读说明:本技术 用于使用服务器生成的清单的视频回放的系统 (System for video playback using server generated manifest ) 是由 伊斯梅勒·R·哈里塔奥卢 厄兹坦·哈尔曼哲 阿尔珀·图尔古特 于 2017-05-10 设计创作,主要内容包括:公开了用于使用服务器生成的清单的视频回放的系统。公开了一种装置和方法,用于使用服务器生成每用户清单文件用于提供独特的观看体验和局部化于接收清单文件的视频播放器的代理模块以用于测量具有帧准确度的视频回放事件。在一个方面,服务器可以被用于生成清单文件,用于引导视频播放器播放视频流中的被请求视频内容连同广告或其他可能期望的备选内容。局部化于所述视频播放器的代理模块可以解析所述视频流以将触发器注入在可能期望测量的帧准确位置处,诸如在其中备选内容相对于被请求视频内容的开始、停止和/或到达中点的精确帧处。(A system for video playback using a server-generated manifest is disclosed. An apparatus and method are disclosed for generating per-user manifest files for providing a unique viewing experience and a proxy module localized to a video player receiving the manifest files for measuring video playback events with frame accuracy using a server. In one aspect, a server may be used to generate a manifest file for directing a video player to play requested video content in a video stream along with advertisements or other alternative content that may be desired. A proxy module localized to the video player may parse the video stream to inject triggers at frame-accurate locations where measurements may be desired, such as at precise frames where alternative content relative to the start, stop, and/or midpoint of requested video content.)

1. A system for managing video playback, comprising:

a manifest server comprising a memory and a processing device coupled to the memory to:

(a) receiving a request from a video player on a user device to play a video stream including requested content, wherein the requested content is associated with a first manifest file created for the requested content and distributed to a first content distribution network;

(b) upon receiving the request:

(i) communicating with a first content distribution network to obtain the first manifest file stored at the first content distribution network from the first content distribution network, the first manifest file containing information for allowing the video player to play the requested content stored at the first content distribution network and information for stitching alternative content with the requested content; and

(ii) communicating with a second content distribution network to obtain information for allowing the video player to play the alternative content and generate a detectable event related to the alternative content;

(c) modifying the first manifest file obtained from the first content distribution network using a session identifier identifying a connection between the manifest server and the video player to generate a second manifest file unique to the video player having the request, the second manifest file identifying at least one of the video player or a user of the video player and containing information for allowing the video player to play the requested content and the alternative content stitched to the requested content and generate the detectable event related to the alternative content,

wherein the detectable event associated with the alternative content is detectable during video streaming using the video player of the user and is distinguishable from detectable events associated with other video players or other users.

2. The system of claim 1, wherein the detectable event is generated by a trigger.

3. The system of claim 2, wherein the processing device is to command the video player to respond based on the trigger, the trigger occurring in response to a frame start or stop of the alternate content.

4. The system of claim 2, wherein the processing device is to command the video player to respond based on the trigger, the trigger occurring in response to the alternative content reaching a midpoint.

5. The system of claim 1, wherein the manifest server stitches the segments of the alternative content between the segments of the requested content according to the second manifest file.

6. The system of claim 1, wherein the second manifest file comprises the session identifier.

7. The system of claim 1, wherein the playlist provides an address at which the video stream is to be retrieved and at least one of a data rate and a resolution for the video stream.

8. The system of claim 1, further comprising a measurement server in communication with the inventory server, wherein the measurement server stores the detectable event.

9. The system of claim 1, wherein the detectable event associated with the alternate content is defined via metadata provided for the alternate content, and wherein the metadata defining the detectable event associated with the alternate content is included in a playlist of the second manifest file.

10. The system of claim 1, wherein the processing device is further to:

encrypting the second manifest file using an encryption key generated based on the session identifier prior to transmitting the second manifest file to the video player.

11. A method for managing video playback, the method comprising:

(a) receiving a request from a video player on a user device to play a video stream including requested content, wherein the requested content is associated with a first manifest file created for the requested content and distributed to a first content distribution network;

(b) upon receiving the request:

(i) communicating with a first content distribution network to obtain the first manifest file stored at the first content distribution network from the first content distribution network, the first manifest file containing information for allowing the video player to play the requested content stored at the first content distribution network and information for stitching alternative content with the requested content; and

(ii) communicating with a second content distribution network to obtain information for allowing the video player to play the alternative content and generate a detectable event related to the alternative content;

(c) modifying the first manifest file obtained from the first content distribution network using a session identifier identifying a connection between the manifest server and the video player to generate a second manifest file unique to the video player having the request, the second manifest file identifying at least one of the video player or a user of the video player and containing information for allowing the video player to play the requested content and the alternative content stitched to the requested content and generate the detectable event related to the alternative content,

wherein the detectable event associated with the alternative content is detectable during video streaming using the video player of the user and is distinguishable from detectable events associated with other video players or other users.

12. The method of claim 11, wherein the detectable event is generated by a trigger.

13. The method of claim 12, further comprising: commanding the video player to respond based on the trigger, the trigger occurring in response to a frame start or stop of the alternate content.

14. The method of claim 12, further comprising: commanding the video player to respond based on the trigger, the trigger occurring in response to the alternative content reaching a midpoint.

15. The method of claim 11, further comprising: stitching segments of the alternative content between segments of the requested content according to the second manifest file.

16. The method of claim 11, wherein the second manifest file comprises the session identifier.

17. The method of claim 11, wherein the playlist provides an address at which the video stream is to be retrieved and at least one of a data rate and a resolution for the video stream.

18. The method of claim 11, further comprising: communicating with a measurement server storing the detectable event.

19. The method of claim 11, wherein the detectable event associated with the alternate content is defined via metadata provided for the alternate content, and wherein the metadata defining the detectable event associated with the alternate content is included in a playlist of the second manifest file.

20. The method of claim 11, further comprising:

encrypting the second manifest file using an encryption key generated based on the session identifier prior to transmitting the second manifest file to the video player.

21. A non-transitory computer-readable medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

(a) receiving a request from a video player on a user device to play a video stream including requested content, wherein the requested content is associated with a first manifest file created for the requested content and distributed to a first content distribution network;

(b) upon receiving the request:

(i) communicating with a first content distribution network to obtain the first manifest file stored at the first content distribution network from the first content distribution network, the first manifest file containing information for allowing the video player to play the requested content stored at the first content distribution network and information for stitching alternative content with the requested content; and

(ii) communicating with a second content distribution network to obtain information for allowing the video player to play the alternative content and generate a detectable event related to the alternative content;

(c) modifying the first manifest file obtained from the first content distribution network using a session identifier identifying a connection between the manifest server and the video player to generate a second manifest file unique to the video player having the request, the second manifest file identifying at least one of the video player and a user of the video player and containing information for allowing the video player to play the requested content and the alternative content stitched to the requested content and generate the detectable event related to the alternative content,

wherein the detectable event associated with the alternative content is detectable during video streaming using the video player of the user and is distinguishable from detectable events associated with other video players or other users.

22. The non-transitory computer-readable medium of claim 21, wherein the detectable event is generated by a trigger.

23. The non-transitory computer-readable medium of claim 21, wherein the operations further comprise: commanding the video player to respond based on the trigger, the trigger occurring in response to a frame start or stop of the alternate content.

24. The non-transitory computer-readable medium of claim 21, wherein the operations further comprise: commanding the video player to respond based on the trigger, the trigger occurring in response to the alternative content reaching a midpoint.

Technical Field

The subject matter disclosed herein relates to a method for measuring video playback events that may be unique to each user during a video stream. More particularly, a method and apparatus for generating per-user manifest files for providing a unique viewing experience and a proxy module native to a video player receiving the manifest files for measuring video playback events with frame accuracy using a server is disclosed.

Background

Video streaming allows video content to be delivered to a video player via the internet. Video content is a video signal generated by a content provider for distribution to video consumers. The video signal may be provided in an uncompressed file format such as a Serial Digital Interface (SDI) format or in a compressed format such as a Moving Picture Experts Group (MPEG) file format or a Transport Stream (TS) file format. The video signal is sent to an encoder, which converts the file into a live stream signal. The live streaming signal is preferably a segmented data stream that can be transmitted over the internet using standard hypertext transfer protocol (HTTP). The live stream signal may include multiple streams, where each stream may have a different data rate and/or a different resolution.

Two common formats for live streaming signals includeHTTP Live Streaming (HLS) implemented and method for implementing the sameMicrosoftAndMPEG-Dynamic Adaptive bitrate Streaming over HTTP (MPEG-DASH) implemented by the web browser of (1). In addition to the segmented data stream, the encoder generates a manifest file. The manifest file contains information for the video player to play the segmented data stream, such as the data rate and resolution of each stream, and a playlist providing addresses from which the video content can be retrieved. Historically, encoders have generated a single manifest file for each encoded video signal, where the manifest file is distributed along with the stream signal.

The live stream signal and the manifest file are stored in one or more Content Delivery Networks (CDNs). Each CDN comprises a plurality of edge servers that store the streaming signals and manifest files until requested by the video player. When a streaming signal is provided to multiple CDNs, the CDNs may be in different geographic locations, such as the west coast, east coast, or midwest region. Among other things, each video player may select a CDN based on its geographic proximity in order to reduce transmission latency.

The video player may be any suitable electronic device that receives a streaming signal, such as a desktop computer, a television, a laptop computer, a tablet computer, or a mobile phone. The user initiates a request to view the desired video content on the video player. The video player includes video management software executing on the video player that has knowledge of the address of the CDN and that can provide a list of video content stored on the CDN to the user. After the user has selected the desired video, the video player proceeds to request that the video content be delivered from the CDN.

As further known to those skilled in the art, it is often desirable to integrate advertising or other alternative content with requested video content, for example, to generate revenue that can ultimately support the requested video content. To ensure the effectiveness of such alternative content, it is often desirable for the producer of the alternative content to require the video player to measure aspects of the alternative content being displayed. This may be done, for example, via metadata provided with alternative content for commanding the video player. Such aspects for measurement may include, for example, the precise time at which the alternative content starts, stops, and/or reaches a midpoint relative to the requested video content, a Uniform Resource Locator (URL) address for the video player, and so forth. One example of a standard for communication between a server and a Video player for measuring such aspects of alternative content is a Video Ad Serving Template (VAST) published by the Interactive Advertising Bureau (Interactive Advertising Bureau) IAB.

Additionally, as further known to those skilled in the art, it is often desirable to provide a unique viewing experience to users viewing the same requested video content. For example, while different users may request to view the same video content, such as a television program or a segment of a movie, the users may be in completely different geographic locations and/or may have completely different viewing histories. Such differences may make the display of certain alternative content much more desirable than other alternative content. Providing a unique viewing experience for the user while also ensuring the effectiveness of the alternative content by measuring aspects of the alternative content being displayed creates significant technical challenges.

In addition, the owner or distributor of the video content may desire to provide other information to the user, such as program titles, program change information, breaking news, and the like. However, such information may be geographically specific and it may not be desirable to provide the content within the video stream to all users. Other information may not be directly available to the content provider. Instead of including such information in the video stream, triggers are embedded within the video content alerting the video player to the presence of such content. Upon receiving the trigger, the video player makes a pull request to a content server external to the video stream or out-of-band. The content server returns the appropriate content for the video player to display along with the video stream.

However, out-of-band requests by a separate video player result in the metadata being displayed at a different time relative to the video content being delivered. Different video players are connected to the CDN via a network with different bandwidths, different switching devices, etc., resulting in varying transmission delays. Similarly, video players are connected to the content server via a network with different bandwidths, different switching devices, etc., resulting in varying transmission delays. Thus, delivery of video content from the CDN occurs asynchronously with the delivery indicated from the metadata, and thus, the content indicated by the metadata cannot be displayed in synchronization with a particular frame of the video transmission. Therefore, a system that provides accurate playback of frames with metadata would be desirable.

Historically, metadata has been used to a large extent to identify programming, video clips, commercials, etc. These insertion data are based on a television model in which passive users watch videos presented by content providers. However, streaming video services provide a more interactive experience. The video content may be provided on a computer, mobile phone, or other device that provides user input. Accordingly, it would be desirable to provide a system that allows for the insertion of interactive metadata that requires or requests a response from a user of a video device.

Disclosure of Invention

The subject matter disclosed herein describes a method and apparatus for generating per-user manifest files for providing a unique viewing experience and a proxy module local to a video player receiving the manifest files for measuring video playback events with frame accuracy using a server. In one aspect, a server may be used to generate a manifest file for directing a video player to play requested video content in a video stream along with advertisements or other alternative content that may be desired. A proxy module localized to the video player may parse the video stream to inject triggers at frame-accurate locations that may be desired for measurement, such as at precise frames where alternative content starts, stops, and/or reaches a midpoint relative to the requested video content. The proxy module may redirect the video player to the parsed and injected (modified) video stream such that the video player generates a detectable event at each trigger that can be measured by the server.

An apparatus or method capable of frame accurate playback of metadata and allowing interactive metadata to be inserted in a video stream is also disclosed. The video manager communicates with the encoder to inject the metadata in the video stream. In one embodiment, the video manager may receive a trigger inserted in the video stream through the content provider and retrieve metadata corresponding to the trigger from the content server. In another embodiment, the video manager may further comprise a user interface operable to receive metadata from a third party. The video manager may then insert metadata into the video stream at the desired frame locations for delivery to the video player.

In one embodiment, a system for managing video playback may comprise: a manifest server configured to communicate with a video player and a content distribution network, the manifest server executing a program stored in a non-transitory medium operable to: (a) receiving a request from a video player for playing a video stream including the requested content; (b) upon receiving the request: (i) communicating with a first content distribution network to obtain a first manifest file containing information for allowing a video player to play requested content; and (ii) communicating with a second content distribution network to obtain information for allowing a video player to play alternative content and generate a detectable event related to the alternative content; and (c) modifying the first manifest file to generate a second manifest file unique to the video player having the request, the second manifest file containing information for allowing the video player to play the requested content and the alternate content and generate the detectable event.

According to another embodiment, a method for managing video playback using a manifest server configured to communicate with a video player and a content distribution network may comprise: (a) receiving a request from a video player for playing a video stream including the requested content; (b) upon receiving the request: (i) communicating with a first content distribution network to obtain a first manifest file containing information for allowing a video player to play requested content; and (ii) communicating with a second content distribution network to obtain information for allowing the video player to play the alternative content and generate a detectable event related to the alternative content; and (c) modifying the first manifest file to generate a second manifest file unique to the video player having the request, the second manifest file containing information for allowing the video player to play the requested content and the alternate content and generate the detectable event.

According to another embodiment, a system for managing video playback may comprise: an encoder configured to convert video content from a content provider into a segmented video stream for delivery to a video player; and a video manager in communication with the encoder, the video manager executing a program stored in a non-transitory medium operable to: (a) receiving metadata for insertion into a video stream; and (b) inserting the metadata at a desired frame position within the video stream.

These and other objects, advantages and features of the present disclosure will become apparent to those skilled in the art from the following description and the accompanying drawings. It should be understood, however, that the detailed description and accompanying drawings, while indicating various embodiments of the present disclosure, are given by way of illustration and not of limitation. Many changes and modifications may be made within the scope of the present disclosure without departing from the spirit thereof, and the disclosure includes all such modifications.

Drawings

Various embodiments of the subject matter disclosed herein are illustrated in the accompanying drawings, wherein like reference numerals refer to the like elements throughout, and wherein:

FIG. 1 is a block diagram representation of an environment containing a method for measuring video playback using a manifest file generated by a server of the present disclosure;

FIG. 2 is a flow diagram illustrating measuring video playback using a manifest file generated by a server according to one embodiment of the present disclosure;

fig. 3A is a video signal divided into video segments, and fig. 3B is a modified video signal stitched to include alternative content segments each in accordance with an embodiment of the present disclosure;

FIG. 4 is a segment of a manifest file describing the bandwidth of available streams and the location of each stream for streaming video content according to one embodiment of the present disclosure;

FIG. 5 is a segment of a manifest file including a portion of a playlist according to one embodiment of the present disclosure;

FIG. 6 is a block diagram representation of an environment for generating delivery stream video using per-user manifests;

FIG. 7 is a flow diagram illustrating per-user video manifest generation and playback; and

FIG. 8 is a screenshot of a user interface executing on a video manager for selecting metadata to insert into a video stream according to one embodiment of the present disclosure.

In describing the various embodiments of the present disclosure that are illustrated in the drawings, specific terminology will be resorted to for the sake of clarity. However, the disclosure is not intended to be limited to the specific terms so selected, and it is to be understood that each specific term includes all technical equivalents that operate in a similar manner to accomplish a similar purpose. For example, the words "connected," "attached," or terms like are often used. It is not limited to direct connection but includes connection through other elements where such connection is recognized as being equivalent by those skilled in the art.

Detailed Description

Various features and advantageous details of the subject matter disclosed herein are explained more fully with reference to the non-limiting embodiments that are described in detail in the following description.

Turning first to fig. 1, one environment for measuring video playback using a manifest file generated by a server is illustrated. The content provider 110 generates a video signal 112 to be distributed to video consumers. The video signal may be provided in an uncompressed file format such as an SDI format or in a compressed format such as an MPEG or TS file format. The video signal 112 is sent to an encoder 114 which converts the file into a live stream signal 116. The live stream signal 116 is preferably a segmented data stream that can be transmitted over the internet using standard HTTP or HTTPs protocols. The live stream signal 116 may include multiple streams, where each stream may have a different data rate and/or a different resolution. The format of the live stream signal may be, but is not limited to, HLS or MPEG-DASH. Such as fromOrOther protocols for HTTP Dynamic Streaming (HDS) by Smooth Streaming et al may be used without departing from the scope of the present disclosure.

In addition to the segmented data stream, the encoder generates a manifest file (manifest file). The manifest file contains information such as the data rate and resolution of each stream for the video player 122 to play the segmented data stream and provide a playlist of addresses from which the video content can be retrieved. Encoder 114 generates a single manifest file for each encoded video signal, where the manifest file is distributed along with stream signal 116 and stored on CDN 118. Each CDN118 includes a plurality of edge servers 120 that store the encoded video signals 116 and the manifest files until playback of the video content is requested by a video player 122. Although the embodiment illustrated in fig. 1 shows a single CDN118, it is contemplated that encoded video signal 116 may be stored on multiple CDNs 118. The manifest file may include the address of each CDN so that playback may occur from any of CDNs 118.

As further illustrated in fig. 1, the environment includes a manifest server 124. The manifest server 124 is used to provide a unique manifest file, also referred to herein as a per-user manifest file, to each video player 122 for each requested video content. Each video player 122 includes a native video player module 128 that provides an interface to the user and that manages video playback on the video player 122. Each video player 122 also includes a proxy module 129. The proxy module 129 may be a plug-in or other software module executing on the video player 122 that supplements (i.e., adds additional capabilities) or replaces (i.e., adds additional capabilities and contains video interface and playback capabilities) the native video player module 128. As will be described in more detail below, in one aspect, when a user 125 requests video content for playback on a video player 122, the native video player module 128 may communicate with the proxy module 129 and, in turn, with the manifest server 124 (rather than the CDN 118) to obtain a manifest file for video playback. The manifest server 124 manages the retrieval and delivery of manifest files generated by the encoder 114 to provide a unique manifest file to each video player 122.

As further illustrated in fig. 1, the environment may also include one or more Alternative Content Networks (ACNs) 123 and/or alternative content measurers 127. Alternative content such as commercials may be stored in the ACN 123. While the embodiment illustrated in fig. 1 shows a single ACN123, it is contemplated that alternative content may be stored on multiple ACNs 123 in different geographic locations. Each ACN123 may include a number of edge servers 121 that may store the streaming signals for the alternate content until requested by the manifest server 124. The inventory server 124 may select the ACN123 based on its geographic proximity to reduce transmission latency, among other things. The alternate content measurer 127 may communicate with the video player 122 for measuring detectable events reported by the video player 122 in the video stream, such as triggers relative to alternate content injection for the measurement server.

Turning then to fig. 2, operations performed to measure video playback using a manifest file generated by a server are illustrated. At block 130, the encoder 114 receives the initial video signal 112. It is contemplated that the video signal 112 may be a pre-recorded signal such as a segment of a television program or movie, or the video signal 112 may be a live stream of, for example, a sporting event, a concert, or a news feed. The encoder 114 converts the original video signal into a live stream signal 116 suitable for delivery via HTTP(s). One operation in converting a video signal is to divide the video signal into segments. The segmentation may be, for example, 10 seconds in length. Alternatively, other segment lengths, for example from 1 second up to 10 seconds, may be selected. The length of the video segment must be less than the maximum payload for the HTTP data packet. Referring briefly to fig. 3A, the video signal 116 from the encoder 114 shown by way of example may be composed of video content divided into nine segments of requested video content, illustrated as "c 1", "c 2", "c 3", etc., each segment being 10 seconds in length for a net content length of 90 seconds. After the video signal 116 is generated into segments (also referred to as requested video content), the video signal and manifest file are transmitted to the CDN118 for storage in one of the edge servers 120, as shown in block 132.

The user 125 then requests playback of the desired video segment on the video player 122 via the native video player module 128 at block 134. The video player 122 may be any suitable electronic device that receives the streaming signal 116, such as a desktop computer, a television, a laptop computer, a tablet computer, a Wi-Fi enabled device connected to a video screen, or a mobile phone. At block 136, the native video player module 128 proceeds to request the manifest file from the proxy module 129 in order to retrieve the information necessary to play the requested video content.

At block 138, the proxy module 129 in turn requests the manifest file from the manifest server 124. When the video player 122 requests a manifest file from the manifest server 124, a connection is established between the devices. A session identifier may also be generated to identify the connection. The session identifier may be generated by the video server 122 or the manifest server 124. For purposes of illustration, it may be assumed that the session identifier may be generated by the video player 122. When a manifest file is requested, a session identifier may be transmitted by the video player 122 to the manifest server 124.

Since the manifest server 124 has established a connection with the video players 122, it can customize the manifest file before returning it to the video players 122 and provide a unique manifest file to each video player 122. Without the manifest server 124, the video player 122 retrieves the manifest file directly from the CDN118 and the content of the manifest file is the same for all users. However, since the manifest server 124 provides a unique manifest file to each player, the manifest file may include identification information for the video player 122, the user 125 of the video player, or a combination thereof. Further, the manifest file may be modified to include content specific to the user 125.

At block 140, the manifest server 124 communicates with the ACN123 to request alternative content (alternate content) that may be applied to the user 125 and/or the video player 122. Such alternative content may depend, for example, on the geographic location and/or viewing history of the user 125 and/or the video player 122, among other things. The alternative content may be used, for example, to provide advertisements or other alternative content at the beginning or end of the requested video content or during the break segment. The manifest server 124 may request alternative content from the ACN123 for each user session and for each display opportunity. At block 142, the ACN123 returns alternate content that may eventually be stitched in the video stream for the video player 122.

To ensure the validity of the alternate content, the alternate content may include a payload containing specific event triggers (alternate content payload information) and/or a request for corresponding user session specific data for measuring the alternate content at the video player 122. This may be done, for example, via metadata provided with alternative content for commanding the video player 122 to react. Such event triggers may include, for example, responding to a URL address for the video player 122 at a precise time where a frame of alternative content is relative to the start, stop, and/or midpoint of arrival of the requested video content, etc.

The manifest server 124 then communicates with the CDN118 at block 144, and the latest manifest file corresponding to the request of the particular user is loaded from the CDN118 at block 146. The manifest server 124 may periodically load updates of the manifest file from the CDN118 as may be required. At block 146, the CDN118 provides the manifest file and/or update to the manifest server 124. In turn, the manifest server 124 processes the manifest file from the CDN118 to determine the appropriate location for stitching the alternative content. In one aspect, such a location may be predetermined in the manifest file by the encoder 114.

Thus, the manifest server 124 updates the manifest file to include the alternate content segments in the video stream as appropriate. For example, referring briefly to fig. 3B, with the generated customized manifest file, the video signal 116 may be reconfigured for playback as a modified video signal 116' including two segments of alternative content, illustrated as "a 1" and "a 2", followed by four segments of the requested video content, illustrated as "c 1", "c 2", "c 3" and "c 4", followed by another two segments of alternative content, illustrated as "a 2" and "a 3", and followed by another four segments of the requested video content, illustrated as "c 5", "c 6", "c 7" and "c 8". In the case where the segment is 10 seconds in length, the modified video signal 116' may then have a total content length of 130 seconds. The stitched video stream may reflect, for example, the enforcement of logic rules by the manifest server 124 requiring the initial viewing of a first advertisement and the mid-stream viewing of a second advertisement for the first viewing of the requested video content at the video player 122. Each time a user 125 plays a video, the video player 122 may obtain an updated manifest file from the manifest server 124. The manifest server 124 may separately measure the status and user viewing experience of the video player 122.

Referring also to fig. 4 and 5, segments of the manifest file are illustrated showing a portion of the content that may be available in the manifest file. The manifest file is a text file and the specific content on each line of the text file is identified by an indication at the beginning of the line. For example, fig. 4 identifies different streams in the stream new signal 116, where each stream has a different bandwidth. The location of the playlist for each stream is also included in the manifest file. Fig. 5 is another manifest file that contains a portion of a playlist of video segments. Each row may identify a particular video segment between 1 and 5 (i.e., -1 "," -2 ", etc. before the.ts file extension) and provide the location of the video segment in CDN 118. The manifest file may include any information corresponding to the video stream, such as metadata information for the video stream.

In addition, the aforementioned alternative content payload for measurement may also be added to the manifest file while the segments of the manifest file are updated to provide the alternative content. Referring again to FIG. 2, at block 148, the manifest server 124 transmits the updated manifest file to the proxy module 129.

Then, at block 150, the proxy module 129 parses the updated manifest file and extracts the alternate content payload information for measurement and stores the information in memory. The proxy module 129 then determines the frame position for the start of each alternative content segment. Thus, the proxy module 129 may modify the video stream with the updated manifest file, such as by replacing the video segment (TS file location) in the manifest file with a proxy location (TS proxy file location) for the video segment provided by the proxy module 129. Thus, when the video player 122 makes a request for a video stream, a video segment at the proxy location may be provided. In addition, alternative content payload information for measurement, including metadata, location information, etc., or references to such information, may also be included when replacing a video segment. The newly updated manifest file manipulated by the proxy module 129 at the proxy location with the video segments is then sent to the native video player module 128.

The native video player module 128 may then request a video segment display at block 152 upon receiving the manifest file as requested. Since the manifest file now includes proxy locations for the video segments, the native video player module 128 will request the video segments from the proxy module 129.

At block 154, the proxy module 129 communicates with the CDN118 to request the video content segments; and at block 156, the proxy module 129 loads the video content segment from CDN 118. Before the video content segments are sent to the native video player module 128, the proxy module 129 may repackage the video content segments with alternate content segments and may inject frame accurate triggers, such as according to the ID3 standard for metadata, to form a video stream. These triggers may be set to measure alternative content segments with alternative content payload information, or references to alternative content segments, by triggering on events such as the video player 122 displaying a start, stop, and/or mid-point frame of an alternative segment. Thus, the proxy module 129 may load a video stream (TS file) having a video content segment, an alternate content segment, and a frame accurate trigger corresponding to the alternate content payload information.

At block 158, the proxy module 129 provides the video stream to the native video player module 128, which in turn plays the video stream to the user 125. Upon playback, the video player 122 will trigger on a predetermined frame trigger that has been injected according to the alternate content payload information. These triggers may result in a detectable event that may be measured by a server that measures information about the video player 122 playing the video stream.

At block 160, the video player 122, via the native video player module 128, may play the video stream for the user 125. The user 125, in turn, may also interact with the video player 122, such as searching forward or backward in the video stream, requesting new video content, and so forth. Additionally, at block 162, while the video stream is being played, the video player 122, via the proxy module 129, may trigger on a detectable event, such as a frame accurate trigger corresponding to the alternate content payload content. Such detectable events may be measured by one or more servers or other entities, such as alternate content measurer 127.

Turning then to fig. 6, in accordance with another aspect of the present disclosure, a content provider 210 generates a video signal 212 to be distributed to video consumers. The video signal may be provided in an uncompressed file format such as an SDI format or in a compressed format such as an MPEG or TS file format. The video signal 212 is sent to an encoder 214 which converts the file into a live stream signal 216. The live stream signal 216 is preferably a segmented data stream that can be transmitted over the internet using standard HTTP or HTTPs protocols. The live stream signal 216 may include multiple streams, where each stream may have a different data rate and/or a different resolution. The format of the live stream signal may be, but is not limited to, HLS or MPEG-DASH. However such as fromOrOther protocols for HTTP Dynamic Streaming (HDS) by Smooth Streaming et al may be used without departing from the scope of the present disclosure.

In addition to the segmented data stream, the encoder generates a manifest file. The manifest file contains information such as the data rate and resolution of each stream for the video player to play the segmented data stream and the playlist providing the address from which the video content can be retrieved. Encoder 214 generates a single manifest file for each encoded video signal, where the manifest file is distributed along with stream signal 216 and stored on CDN 218. It should be noted that a "single" manifest file refers to a common or identical manifest file for each encoded signal. The manifest file may include a plurality of data files stored on the CDN, wherein each manifest file contains a portion of the data required to playback the streaming signal. Further, for live streaming video, the manifest file may be updated and retransmitted at periodic intervals as new content is added from the live event. Although multiple files are used, the content generated by the encoder 214 for delivery to each video player 222 is the same. Each CDN218 includes a number of edge servers 220 that store the encoded video signals 216 and the manifest files until playback of the video content is requested by a video player 222. Although the embodiment illustrated in fig. 6 shows a single CDN218, it is contemplated that the encoded video signal 216 may be stored on multiple CDNs 218. The manifest file may include the address of each CDN so that playback may occur from any of the CDNs 218.

As further illustrated in fig. 6, the exemplary environment includes a manifest server 224. The manifest server 224 is used to provide a unique manifest file, also referred to herein as a per-user manifest file, to each video player 222 for each requested video content. Each video player 222 includes a native video player module 228 that provides an interface to the user and that manages video playback on the device 222. Some video players 222 may also include an enhanced video player module 229, illustrated as an optional module in fig. 6. The enhanced video player module 229 may be a plug-in or other software module executing on the video player 222 that supplements (i.e., adds additional capabilities) or replaces (i.e., adds additional capabilities and includes video interface and playback capabilities) the native video player module 228. As will be described in more detail below, when a user 225 requests video content for playback on a video device 222, a native or enhanced video player module 229 communicates with the manifest server 224 instead of the CDN218 to obtain a manifest file for video playback. The manifest server 224 manages the retrieval and delivery of manifest files generated by the encoder 214 to provide a unique manifest file to each video player 222.

The exemplary embodiment also includes a video manager 215 in communication with the encoder 214. The video manager 215 receives triggers from the content provider that are included in the video signal 212. The video manager 215 is also in communication with a content server 217 and a manifest server 224, where the content server 217 may store metadata generated by the content provider 210 and which was previously retrieved by the video player 222 via an out-of-band method. According to one embodiment of the present disclosure, the video manager 215 and the manifest server 214 are implemented on a single server. According to another embodiment of the present disclosure, the video manager 215 and the manifest server 224 are implemented on a single server. Since the inventory server 224 has established a per-user connection with each video player 222, as discussed in more detail below, the video manager 215 is able to identify content intended for the individual video player 222 based on the per-user connection. Upon detecting a trigger in the video signal 212, the video manager 215 contacts the content server 217 to retrieve metadata corresponding to triggers that would otherwise need to be requested out-of-band by the video player 222. The metadata may be generic to all video players 222 or may be tailored, for example, to a geographic region or a particular video player 222. Having retrieved the information, the video manager communicates the information to encoder 214, where it may be included within a transport stream for direct delivery to a video player. Inserting information into a video stream is discussed in more detail below.

Turning then to FIG. 7, the operations performed to create, deliver, and playback per-user manifest files are illustrated. At block 230, the encoder 214 receives the initial video signal 212. It is contemplated that the video signal 212 may be a pre-recorded signal such as a set of television programs or movies or that the video signal 212 may be a live stream of, for example, a sporting event, a concert, or a news feed. The encoder 214 converts the original video signal into a live stream signal 216 suitable for delivery via one or more HTTP. One operation in converting a video signal is to divide the video signal into segments. The segmentation may be, for example, 10 seconds in length. Alternatively, other segment lengths, for example from 1 second up to 10 seconds, may be selected. The length of the video segment must be less than the maximum payload for the HTTP data packet.

After converting the video signal 212 into segments, the encoder 214 may encrypt the video signal 212 to prevent unauthorized viewing of the video content. At block 232, the encoder 214 establishes communication with the key server 226 and requests a key for encrypting the segmented video signal 212. The key server 226 returns the key to the encoder 214 as shown in block 234. The key used to encrypt the segmented video signal 212 will be referred to herein as a content encryption key. The encoder 214 may use any suitable encryption protocol, such as Advanced Encryption Standard (AES), to encrypt the segmented video signal using a content encryption key. The location of the key server and the encryption key used to encrypt the segmented video signal are included in the manifest file. The manifest file and the encrypted video signal are then transmitted to the CDN218 for storage in one of the edge servers 220, as shown in block 236.

At block 238, the user 225 then requests playback of the desired video segment on the video player 222. The video player 222 may be any suitable electronic device that receives the streaming signal 216, such as a desktop computer, a television, a laptop computer, a tablet computer, a Wi-Fi enabled device connected to a video screen, or a mobile phone. The video player 222 requests a manifest file from the manifest server 224 to retrieve the information necessary to play the requested video content. Referring again to fig. 4 and 5, there is illustrated a segment of an exemplary manifest file illustrating a portion of content that may be available in the manifest file. The manifest file is a text file and the specific content on each line of the text file is identified by an indication at the beginning of the line. For example, fig. 4 identifies different streams in the stream signal 216, where each stream has a different bandwidth. The location of the playlist for each stream is also included in the manifest file. Fig. 5 is another manifest file that contains a portion of a playlist of encrypted video segments. Each line starts from the location of the key server to decrypt the video segment, identify the particular video segment between 1 and 5 (i.e., -1 "," -2 ", etc. before the.ts file extension), and provide the location of the video segment in the CDN 218. The manifest file may include any information corresponding to the video stream, such as metadata information for the video stream.

When the video player 222 requests a manifest file from the manifest server 224, a connection is established between the devices. A session identifier is also generated to identify the connection. The session identifier may be generated by the video server 222 or the manifest server 224. For purposes of illustration, it will be assumed that the session identifier is generated by the video player 222. When a manifest file is requested, a session identifier is transmitted by the video player 222 to the manifest server 224. The manifest server 224 then requests the manifest file from the CDN218 at block 242. At block 244, CDN218 returns the manifest file to manifest server 224.

Since the manifest server 224 has established a connection with the video players 222, it can customize the manifest file and provide a unique manifest file to each video player 222 before returning the manifest file to the video player 222. Without the manifest server 224, the video player 222 retrieves the manifest file directly from the CDN218 and the content of the manifest file is the same for all users. However, since the manifest server 224 provides a unique manifest file to each player, the manifest file may include identification information of the video player 222, the user 225 of the video player, or a combination thereof. Further, the manifest file may be modified to include content specific to the user 225.

The manifest server 224 may be configured to generate an encryption key for each manifest file. The encryption key is generated from a unique session identifier generated by the video player 222 when it requests the desired video content. Optionally, an encryption key may also be generated as a function of the requested video content. Thus, each encryption key is unique to a particular session with a particular video player, which results in a single use of a unique encryption key. The one-time use unique encryption key will be referred to herein as a manifest encryption key. At block 246, the manifest server 224 transmits the manifest encryption key to the key server 226, and at block 248, the key server 226 acknowledges receipt of the manifest encryption key.

Optionally, the key server 226 may be configured to generate the manifest encryption key. At block 246, the manifest server 224 transmits the session identifier and the identifier corresponding to the desired video content to the key server instead of passing the manifest encryption key. The key server 226 may then generate the manifest encryption key and, at block 248, return the manifest encryption key to the manifest server 224. After generating or obtaining the manifest encryption key, the manifest server 224 encrypts the manifest file before transmitting the manifest file to the video server 222. The manifest server 224 then transmits the encrypted manifest file to the video player 222 as shown at block 250.

Referring again to FIG. 6, if the video player 222 includes an enhanced video player module 229 from the provider of the manifest server 224, the enhanced video player module 229 may be configured to decrypt the encrypted manifest file directly. The manifest encryption key is encrypted in a manner known to both the manifest server 224 and the enhanced video player module 229. Thus, the enhanced video player module 229 first decodes the manifest encryption key and then decodes the remainder of the manifest file using the manifest encryption key. However, if the video player does not include the enhanced video player module 229 from the provider of the manifest server 224, the manifest server 224 may include a path to the key server 226 similar to that shown in FIG. 5, and the video player 222 requests the manifest encryption key from the key server 226, as shown in block 252. At block 254, the key server 226 returns the manifest encryption key to the video player 222 and the video player 222 decrypts the manifest file. Having decrypted the manifest file, either directly on the video player 222 with the enhanced video player module 229 or by requesting the manifest encryption key from the key server 226 and then decoding the manifest file with the native video player module 228, the enhanced video player module 229 or the native video player module 228 then needs to decode the video content.

In some embodiments, the manifest file may remain unencrypted. While the manifest file remains unencrypted, the manifest server 224 may still generate a unique manifest file for the session with the video player 222. The operations in fig. 7 proceed from block 230 to block 244 as discussed above. However, instead of encoding the manifest file, the manifest server 224 skips blocks 246 and 248 and transmits the unencrypted manifest file to the video player at block 250. The video player 222 reads the manifest file and determines that the video content has been encrypted and therefore must still be decrypted.

The video player module reads the location of the key server 226 for the content encryption key from the manifest file. It is contemplated that a single key server 226 may contain both the manifest encryption key and the content encryption key. Alternatively, a separate key server 226 may be used for each of the encryption keys. The video player 222 requests the content encryption key from the key server 226 identified in the manifest file, as shown in block 256. At block 258, the key server 226 returns the content encryption key to the video player 222. The manifest file will have the address of the CDN218 as the video content containing the segment. Thus, the video player can then begin retrieving video content from the CDN. The video player 222 repeatedly requests the next segment in the playlist from the CDN218 and the CDN returns the requested segment, as shown at blocks 260 and 262. The native video player module 228 then decodes the content from the encrypted video segment and displays the requested video content to the user 225.

Turning then to fig. 8, a user interface 300 executing on the video manager 215 may be provided. The user interface 300 receives input corresponding to desired controls or actions taken on the video player 222 while the video content is being presented to the video player. The user interface 300 includes a frame viewer that displays video content on a frame-by-frame basis to synchronize metadata with particular frames of the video content. The user interface 300 also includes an event selector 320 that identifies a desired action to be taken on the video player 222. The selected event is encoded as metadata, for example, as an ID3 tag for insertion into the video stream.

The video player 22 is increasingly acting as an interactive device, such as a laptop or tablet computer, mobile phone, etc., rather than as a passive viewing device, such as a traditional television. The video player 222 may include a number of native applications, such as a calendar application, a web browser, or a social media plug-in. The event selected for inclusion as metadata may activate one of the native applications for an enhanced viewer experience. For example, a programming change may launch a calendar application and create an appointment for a calendar. The appointment may identify a new time for the program with a prompt to the viewer that allows the viewer to accept the appointment for insertion in their calendar. As another example, the selected event may initiate a web browser with a window providing additional content, such as a list of program websites or links to websites on topics related to documentaries. The viewer may choose to follow one of the presented links. As yet another example, an event may initiate a social media plugin that lets the user indicate whether or not they like a program or provide a review of the program on their social media account.

According to another aspect of the present disclosure, the metadata may relate to advertisements. Instead of simply an advertisement to be displayed on the video player 222, the advertisement may be interactive, requiring the viewer to click on one or more boxes, buttons, etc. within the advertisement. The prompt to the viewer needs to be displayed within the correct frame within the advertisement so the viewer understands what is being requested. Alternatively, the prompt may request that the viewer select one of a plurality of advertisements for viewing, distributing content that is more appealing to the viewer. The metadata may also include instructions to the video player 222 to communicate the viewer interaction back to the user interface 300 for measurement.

According to yet another aspect of the disclosure, the metadata may relate to content of the programming. For example, a viewer may want to watch a live sporting event. However, many playback rules may be in place with respect to events. The playback rules may include, for example, geographic outage limits or geographic transmissions of particular events such as local teams. A live sporting event may run for less than its allotted time or for more than its original time period. When the playback rules may have been initially transmitted according to the original schedule, the rules may need to be updated, for example, to force a power outage that exceeds the schedule when the event is running long or to allow alternative programs to be viewed if the event is running short or cancelled, for example, due to weather. In addition, it is desirable to force rules at particular frames to provide clear transitions to or from live events and alternative programs.

According to yet another aspect of the present disclosure, the metadata may be inserted within a Transport Stream (TS) file containing the video content. When the encoder 214 receives the video signal 212 from the content provider 210, any triggers inserted by the content provider 210 within the video signal 212 are detected. The video manager 215 receives the trigger and identifies the metadata content corresponding to the trigger. The video manager 215 retrieves video content from the content server 217. Optionally, the video manager 215 receives metadata and frame references from the user interface 300. The video manager 215 may encode the metadata according to the requirements of the transport stream into which it is being inserted, or the video manager 215 may transmit the metadata to the encoder 214 in which it is encoded. The transport stream includes a metadata stream that includes the content of the metadata (e.g., displayed text or graphics, launched applications, playback rules, etc.) and the frames at which the metadata is to be displayed or activated. The metadata is then transmitted within the transport stream to the video player 222, as discussed above.

In accordance with yet another aspect of the present disclosure, metadata is inserted in a manifest file for transmission to a video player. The video manager 215 receives triggers from the video signal 212 or metadata from the user interface 300, as previously discussed. Custom tags are defined for insertion into the manifest file. The custom tag includes the content of the metadata and frame references where the metadata is to be displayed or activated. The custom tag is inserted into the playlist of the manifest file and transmitted to the video player 222, as discussed above. The insertion of the custom tag into the manifest file may occur with the encoder 214 or with the manifest server 224. According to one embodiment, the video manager 215 passes the customization flag to the encoder 214 when the video signal 212 is being encoded. The customization marker is inserted into the manifest file generated by the encoder 214 and stored in the CDN 218. The manifest server 224 initially reads the manifest file from the CDN before generating the per-user manifest file, and thus, the custom marker will be in the manifest file. According to another embodiment, the metadata may be provided at the time of delivery rather than at the time the original video stream is encoded. The custom indicia may be transmitted from the video manager 215 to the manifest server 224 and inserted by the manifest server 224 into the per-user manifest file.

The video player 222 receives the transport stream and a manifest file for the requested video content into which the manifest data has been inserted. A native video player module 228 or an enhanced video player module 229 may be used to extract or act on the embedded metadata. If, for example, metadata is inserted into the transport stream, the native video player module 228 receives the transport stream and processes the metadata. However, instead of receiving a trigger only, the transport stream includes metadata content and the video player 222 can take the requested action without requiring an out-of-band connection. Similarly, if metadata is inserted into the manifest file with custom tags, the enhanced video player module 229 identifies the tags and creates a metadata stream within the video player 222. The enhanced video player module 229 inserts the metadata stream into the transport stream at the correct frame locations. Whether the metadata is inserted in the transport stream or the manifest file, the requested action occurs on the video player 222 at the desired frame of the video content without requiring an out-of-band connection to retrieve the content.

In one aspect of the disclosure, a method is provided to insert per-user per-session metadata for advertisements or other alternative content (for metering) received from an alternative content server for a particular user session in a manifest file for delivery to a user's video player.

According to another aspect of the present disclosure, a method is provided for creating frame accurate triggers in a video transport stream from metadata injected into a manifest file by a per-user manifest delivery system (manifest server). This may allow the video player to provide notifications with per-metadata trigger events, with per-frame accuracy, such as to a server.

According to another aspect of the present disclosure, methods are provided for a user to interact with advertisements or other alternative content (which may be stitched together with requested video content) using metadata triggers and actions that may be guided by such metadata triggers. In one aspect, the action may include retrieving information when the user is able to trigger the action by clicking on the alternative content when it is displayed.

According to another aspect of the present disclosure, a method is provided for measuring advertisements or other alternative content for server-stitched live streams using frame-accurate triggers inserted by the system.

According to another aspect of the present disclosure, a system is provided that can address the problem of accurately measuring advertisements or other alternative content when they are stitched together by separate servers (in which case the video player only receives the video file and does not measure the information embedded in the original advertisement or other alternative content).

According to another aspect of the disclosure, hardware or software modules may be implemented in a video player to: processing the unique video manifest file loaded from the manifest server; analyzing a manifest file, which contains alternative content measurement information; processing the manifest file to obtain a total net time for each alternative content segment; and the measurement capability is injected into the video stream (TS file) for the alternative content measurement information via a frame accurate trigger. In this manner, the modified video stream (TS file) is provided to the video player, which may allow the video player to trigger to generate a detectable event that may be measured by a server or other entity at a desired time.

It is to be understood that the disclosure is not limited in its application to the details of construction and the arrangement of components set forth herein. The disclosure is capable of other embodiments and of being practiced or of being carried out in various ways. Variations and modifications of the foregoing are within the scope of the present disclosure. It should also be understood that the present disclosure disclosed and defined herein extends to all alternative combinations of two or more of the individual features mentioned or evident from the text and/or drawings. All of these different combinations constitute various alternative aspects of the present disclosure. The embodiments described herein explain the best modes known for practicing the disclosure and will enable others skilled in the art to utilize the disclosure.

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:屏幕显示和图像处理方法以及嵌入式设备和云服务器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类