HK1237151B - Method and apparatus for predicting end of streaming media using prediction model - Google Patents

Method and apparatus for predicting end of streaming media using prediction model Download PDF

Info

Publication number
HK1237151B
HK1237151B HK17110902.7A HK17110902A HK1237151B HK 1237151 B HK1237151 B HK 1237151B HK 17110902 A HK17110902 A HK 17110902A HK 1237151 B HK1237151 B HK 1237151B
Authority
HK
Hong Kong
Prior art keywords
streaming media
bandwidth
streaming
media
prediction model
Prior art date
Application number
HK17110902.7A
Other languages
Chinese (zh)
Other versions
HK1237151A1 (en
Inventor
贝斯汉尼克 J
Original Assignee
尼尔森(美国)有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 尼尔森(美国)有限公司 filed Critical 尼尔森(美国)有限公司
Publication of HK1237151A1 publication Critical patent/HK1237151A1/en
Publication of HK1237151B publication Critical patent/HK1237151B/en

Links

Abstract

Methods and apparatus to predict end of streaming media using a prediction model are disclosed herein. Examples disclosed herein determine a bandwidth rate associated with streaming media presented in a streaming media application from a proxy. Examples disclosed herein also generate a prediction model based on characteristics of the bandwidth rate and determine an end time for the streaming media from the prediction model.

Description

Method, apparatus, and device for predicting the end of streaming media using a prediction model
Technical Field
The present disclosure relates generally to monitoring streaming media, and more particularly to methods and apparatus for predicting the end of streaming media using a predictive model.
Background Art
As used herein, streaming media refers to the media presented to the user by a presentation device that is at least partially parallel with the media sent from a media provider to the presentation device (or a device associated with the presentation device) (e.g., via a network). Sometimes, streaming media is used to present live events. However, streaming media can also be used for non-live events (e.g., time-shifted media presentation and/or video on demand presentation). Typically, temporally adjacent portions of a streaming media file are delivered to and stored in a buffer or temporary memory cache of a streaming media device while presenting streaming media to the user. The buffer releases the stored streaming media for presentation while continuing to be filled with the unplayed portion of streaming media. This process continues until the user terminates the presentation of streaming media and/or has delivered (e.g., downloaded) a complete streaming media file. In the event that a complete streaming media file has been delivered, the streaming media device typically continues to release the buffered streaming media for presentation until the buffer is cleared.
Buffers are used to compensate for issues such as fluctuations in bandwidth usage that cause "lag," or discontinuous delivery of media. Buffers mitigate the appearance of "lag" by holding a portion of a stream that can be presented while waiting for the delivery of additional streams. In some cases, as the buffer fills, the download speed of the stream (e.g., the rate of bandwidth usage) can speed up or slow down depending on the remaining space in the buffer.
In recent years, streaming media has become a popular medium for delivering media to users. Services like Netflix ™ and Amazon Instant Video ™ , as well as on-demand services provided by Internet Protocol (IP)-based television services (e.g., AT&T Uverse ™ ), are examples of providers of such streaming media. The instantaneous nature of streaming media and the increase in bandwidth capabilities of Internet service providers have contributed to the popularity of streaming media due to the high resolutions that can be streamed (which require increased delivery bandwidth). For example, when a user of a streaming device selects a movie from a streaming media distributor (such as Netflix ™ ), the movie can be presented almost immediately without having to wait for the entire movie file to be downloaded to the user's device.
Summary of the Invention
The present invention provides a method for predicting the end of streaming media, which includes the following steps: using a processor to execute instructions to determine the bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; using the processor to execute instructions to generate a prediction model based on the characteristics of the bandwidth rate; and using the processor to execute instructions to determine the time when the output of the prediction model is lower than a minimum bandwidth threshold as the end time of the presentation of the streaming media, and the end time of the presentation corresponds to the time when the streaming application stops presenting the streaming media on the presentation device.
The method further includes the step of determining a type of the streaming media presented in the streaming application, wherein the step of generating a prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
A decay factor for the prediction model is determined based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The step of generating the prediction model further includes calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The method further comprises the step of sending target media to the streaming application at the presentation end time of the streaming media.
The method further comprises the step of sending a survey to the streaming application at the end time of the presentation of the streaming media.
The present invention provides a device for predicting the end of streaming media, which includes: a unit for determining a bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; a unit for generating a prediction model based on characteristics of the bandwidth rate; and a unit for determining a time when an output of the prediction model is lower than a minimum bandwidth threshold as an end time of presentation of the streaming media, wherein the end time of presentation corresponds to a time when the streaming application stops presenting the streaming media on the presentation device.
The apparatus further comprises means for determining a type of the streaming media presented in the streaming application, wherein generating the prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
The apparatus further includes means for determining a decay factor for the prediction model based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The means for generating the prediction model further includes: a means for calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The apparatus further comprises: a unit for sending target media to the streaming application at the presentation end time of the streaming media.
The apparatus further comprises means for sending a survey to the streaming application at the end time of the presentation of the streaming media.
A device for predicting the end of streaming media, the device comprising: a bandwidth recorder that determines a bandwidth rate associated with streaming media presented in a streaming media application based on information received from an agent; a modeler that generates a prediction model based on characteristics of the bandwidth rate; and a predictor that determines a time when an output of the prediction model falls below a minimum bandwidth threshold as an end time of presentation of the streaming media, the end time corresponding to a time when the streaming media application stops presenting the streaming media on the presentation device, at least one of the bandwidth recorder, the modeler, and the predictor being implemented by a processor connected to a memory.
The device also includes: an identifier that determines the type of streaming media presented in the streaming application; and a threshold generator that sets the minimum bandwidth threshold based on the type of streaming media, wherein the modeler generates the prediction model in response to the bandwidth rate exceeding the minimum bandwidth threshold.
The type of the streaming media is at least one of video and audio.
The apparatus further includes a parameter generator that determines a decay factor for the prediction model based on the type of the streaming media.
The parameter generator further calculates prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The proxy also: routes the streaming media from a streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The device further includes a stream end processor configured to send target media to the streaming application at the presentation end time of the streaming media.
The stream end processor further sends target media to the streaming application at the presentation end time of the streaming media.
A tangible computer readable medium comprising instructions which, when executed, cause a machine to perform the above method.
BRIEF DESCRIPTION OF THE DRAWINGS
1 is a block diagram of an example system for streaming media to user devices.
FIG2 is a diagram of an example streaming media application.
3 is a block diagram of an example implementation of the predictor of FIG. 1 that predicts the end of streaming media.
FIG. 4 is an example graph illustrating bandwidth rates of streaming media applications observed during the processing of streaming media.
5A is an example graph of (a) the observed bandwidth rates of FIG. 4 and (b) an example prediction model.
5B is an example graph of (a) observed bandwidth rates of a streaming media application during the processing of streaming media and (b) a prediction model associated with the observed bandwidth rates.
6 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for predicting the end of streaming media.
7 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating parameters for predictive model generation.
8 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating a prediction model and forecasting a predicted end time for streaming media.
9 is a block diagram of an example processor system that may execute any of the machine-readable instructions represented by FIG. 6 , FIG. 7 , and/or FIG. 8 that implement the example predictor of FIG. 1 and/or FIG. 3 .
DETAILED DESCRIPTION
When a media device streams media from a streaming media distributor, data can be obtained from the communication between the streaming media device and the streaming media distributor. This data can be obtained by analyzing traffic patterns, analyzing communication packets, network taps, etc. Example data (or metadata) about the streaming media and/or streaming environment include media file formats, available buffer space of the streaming media device, bandwidth usage of the streaming media device, etc. This descriptive data can be used to supplement traditional data obtained by AME (e.g., audience composition and/or media identification associated with traditional media (e.g., radio and/or television) broadcasts) to create a more robust data set and allow the application of more fine-grained statistical methods.
Predicting the end of streaming is important in situations where access to the streaming distributor and/or streaming application is not available to directly obtain information about the end. For example, predicting the end of a streaming session can allow for more accurate streaming ad extraction for media credit ratings. In some cases, predicting the end of streaming can allow for targeted survey delivery. That is, predicting the end of streaming allows for the delivery of a survey near the end of streaming (e.g., shortly before the end) before the user shifts their attention away from the media presentation device at the end of the media presentation.
In some cases, the duration of the streaming presentation is extended or shortened from the duration of the streaming during media monitoring. For example, by rewinding, jumping, or fast-forwarding (e.g., tracking mode operation) the streaming (e.g., via progress bar manipulation), the duration of the presentation can be significantly longer or shorter than the duration of the streaming (e.g., when the streaming is applied without any tracking mode operation). By extrapolating or inferring the end of the streaming (and updating the analysis during the presentation), a more detailed and/or accurate duration can be obtained. Additionally or alternatively, target media can be provided to the user of the streaming media. Instead of waiting for a signal at the user device that the streaming media has ended, it is advantageous to predict when the streaming media will end. By predicting the end time, a more seamless transition to the target media can be generated.
The examples disclosed herein use a prediction model to predict the end of a streaming media presentation, the prediction model being based on characteristics of bandwidth during periods of buffer fill associated with the streaming of the media. The examples disclosed herein use the characteristics of bandwidth to extract parameters for use in the prediction model. The example prediction model is used to predict when the end of a streaming media file will be reached.
The examples disclosed herein may be applied to any streaming media protocol (e.g., Dynamic Adaptive Streaming over HTTP (DASH), adaptive bitrate streaming, HTTP Live Streaming (HLS), Real-Time Streaming Protocol (RTSP), Real-Time Protocol (RTP), Real-Time Control Protocol (RTCP), and/or any suitable combination or future protocols).
FIG1 is a block diagram of an example environment in which example methods, apparatus, and/or articles of manufacture disclosed herein can be used to predict the end time of streaming media. In the example environment of FIG1 , media is streamed from a streaming media distributor 120 to example user devices 101a-101c. The example environment includes example user devices 101a-101c, an example proxy server 105, an example network 115, and an example streaming media distributor 120. In the example of FIG1 , an audience measurement entity 125, such as Nielsen (USA) LLC, includes an example predictor 130 for predicting the end of streaming media.
In the illustrated example, one of the example user devices 101a-101c (e.g., example user device 101a) initiates a streaming application to stream the media. A request for media streaming is sent by the example user device 101a to the example streaming distributor 120. The request is routed via the example proxy server 105 and the example network 115. The example streaming distributor 120 responds to the request and begins streaming the media to the example user device 101a via the example proxy server 105 using an encrypted stream. The encrypted stream prevents the proxy server 105 from accessing information about tracking mode operation and/or timestamp information associated with the streaming media. While streaming the media to the example user device 101a, the example proxy server 105 extracts available data and/or metadata associated with the streaming media (e.g., bandwidth rate, source and destination ports, Internet Protocol addresses, etc.) and sends the extracted data and/or metadata to the predictor 130 at the example audience measurement entity 125. The example predictor 130 uses the transmitted data (e.g., bandwidth rate) to predict when the media will stop (or has stopped) being presented on the user device 101 a. For example, the predictor 130 predicts an end time during which the streaming of the media is not directly accessible to the example proxy server 105, the audience measurement entity 125, or the example predictor 130.
The example user devices 101a-101c of the illustrated example can be implemented by any device that supports streaming applications and/or streaming media (e.g., smart TVs, tablets, game consoles, mobile phones, smartphones, streaming devices, computers, laptops, tablets, digital versatile disc (DVD) players, Roku ™ devices, Internet television devices (e.g., Google ™ Chiomecast ™ , Google ™ TV, Apple ™ TV, etc.), and/or other electronic devices). The example user devices 101a-101c communicate with the example streaming media distributor 120 via the proxy server 105 using the network 115.
Example network 115 can be any type of communication network (e.g., the Internet, a local area network, a wide area network, a cellular data network, etc.) facilitated by wired and/or wireless connections (e.g., cable/DSL/satellite modems, cellular towers, etc.). Example networks can be local area networks, wide area networks, or any combination of networks.
The example proxy server 105 of the illustrated example is a network device located in a monitored home that acts as an intermediary for communications (e.g., including streaming requests and responses for streaming media) involving one or more of the example user devices 101a-101c and/or one or more other components connected to the example network 115. Alternatively, the example proxy server 105 can be located at a location separate from the monitored home. For example, the example proxy server 105 can be a router, gateway, server, and/or any device capable of acting as an intermediary for network traffic. For example, a broadband modem and/or a router can implement the proxy server 105. According to the illustrated example, the proxy server 105 acts as an intermediary for communications between the example user devices 101a-101c and the example streaming media distributor 120.
For example, when the example user device 101a sends a request for media to the streaming media distributor 120, the request is first routed to the example proxy server 105. The example proxy server 105 then sends the request to the example streaming media distributor 120 (e.g., the request may be sent after being modified to indicate that a response to the request should be routed to the proxy server 105). When the example streaming media distributor 120 responds to the request, the response is routed to the example proxy server 105, which resends the request to the example user device 101a.
As the example proxy server 105 is involved in communications associated with the example user devices 101a-101c, the example proxy server 105 is able to collect information about those communications. Although the example proxy server 105 is referred to as a "proxy" device, the proxy server 105 may not perform functions typically associated with a proxy (e.g., perform packet translation). Instead, the functions of the proxy server 105 described in the examples herein may be performed by any type of device that collects information about communications between the example user devices 101a-101c and the example streaming provider 120 (e.g., the example proxy server 105 may not participate in the communication chain, but may instead monitor communications from the sidelines using, for example, packet monitoring, packet snooping, or any other technology).
In the illustrated example, the proxy server 105 sends the collected information to the audience measurement entity 125. The example proxy server 105 collects, calculates, and/or correlates bandwidth information for streaming applications. In some examples, the example proxy server 105 identifies and collects data originating from the streaming distributor 120 and delivered to the user devices 101a-101c. For example, the example proxy server 105 may collect and correlate traffic based on one or more characteristics, such as Simple Network Management Protocol (SNMP), Internet Protocol (IP) address, a subprotocol of the Internet Protocol suite (e.g., Real Time Streaming Protocol (RTSP), port information, service destination, user agent, etc. One or more of the above characteristics may indicate a specific streaming distributor 120 (e.g., source IP address). The example proxy server 105 also determines the rate at which data passes through the proxy server 105 (e.g., bandwidth rate) and/or the rate at which data is streamed from the streaming distributor 120 to the user devices 101a-101c. Combining the correlation of traffic volume and the rate at which traffic is passing through the device (e.g., data rate, bandwidth rate, etc.) allows application-specific bandwidth rate monitoring. The proxy server 105 collects and sends the bandwidth rate and application identity of the streaming media application to the example predictor 130. In this way, neither data (e.g., bandwidth rate) needs to be sent from the media device rendering the streaming media nor data needs to be sent from the streaming media distributor sending the streaming media to the media device. Additionally or alternatively, the example proxy server 105 monitors the traffic volume to the example predictor 130 to collect, calculate, and/or correlate.
Other network topologies besides the one illustrated in FIG1 can be used with the example methods and apparatus disclosed herein. For example, the proxy server 105 can be excluded from the system 100 when other devices or components can provide information about the communications (e.g., bandwidth rates can be reported by the user devices 101a-101c). Additionally or alternatively, communications can be routed and/or monitored to the example audience measurement entity 125. In some such examples, the audience measurement entity 125 monitors and collects information about the communications with or without information from other devices, such as the proxy server 105.
The audience measurement entity 125 of the illustrated example includes an example predictor 130. In this example, the example predictor 130 obtains bandwidth rates from the proxy server 105 while the example user devices 101a-101c stream media from the example streaming distributor 120. However, as explained above, data rates (e.g., bandwidth rates) may alternatively be provided by other means. In some examples, control information, text overlays, etc. are embedded within the stream. Thus, it is desirable to create a threshold bandwidth rate that distinguishes the transmission of streaming media from the transmission of other data carried in the stream. An example selection of such a threshold is described in conjunction with FIG3 . In the illustrated example of FIG1 , the example predictor 130 analyzes the bandwidth rate forwarded by the example proxy server 105 and determines the stream end time of the streaming media when the bandwidth exceeds the threshold.
In the illustrated example, one or more of the user devices 101a-101c are associated with a panelist who has consented to be monitored by the audience measurement entity 125. A panelist is a user registered on a panel maintained by a rating entity (e.g., the audience measurement entity 125) that owns and/or operates the rating entity subsystem. Traditionally, an audience measurement entity (also referred to herein as a "rating entity") determines demographic coverage for advertising and media broadcasts based on the registered panelists. That is, the audience measurement entity 125 recruits people who consent to being monitored into the panel. During recruitment, the audience measurement entity receives demographic information from the recruiting personnel so that subsequent correlation can be made between advertising/media exposure to those panelists and different demographic markets.
People become panel members via, for example, a user interface presented on user devices 101a-101c (e.g., via a website). People may become panel members in additional or alternative ways (such as, for example, via a telephone interview, by completing an online survey, etc.). Additionally or alternatively, people may be contacted and/or recruited using any desired methodology (e.g., random selection, static selection, telephone solicitation, Internet advertising, surveys, advertising in a mall, product packaging, etc.).
In the illustrated example group member system, consent is obtained from the user when the user joins and/or registers for the group to monitor and analyze network data. For example, group members may consent to have their network traffic monitored by proxy server 105. While the example system of FIG. 1 is a group member-based system, non-group member and/or mixed group member systems may alternatively be employed.
FIG2 illustrates an example streaming application 201 executing on one of the example user devices 101a-101c. The example streaming application 201 of this example presents media obtained from a streaming media distributor 120 on the corresponding example device 101a-101c. The graphical user interface of the streaming application 201 presents data related to the presentation of the streaming media. In the example streaming application 201 of FIG2 , an elapsed time indicator 202 displays the length of the media presentation segment and the total length of the media. A file ID indicator 203 displays the file name of the streaming media being presented.
In some examples, the file ID indicator 203, when available (e.g., if the streaming media is being sent in an unencrypted stream), is analyzed by the example predictor 130 to determine the file format. The example predictor 130 can access the contents of the unencrypted streaming media packets (or encrypted packets where decryption is available). The example data packets can include headers or leading data indicating what video and/or audio is being streamed to the streaming application 201. The example bandwidth indication field 204 displays the current bandwidth usage rate of the streaming application 201. The example time remaining indicator 206 displays the predicted end time of the media, as indicated by the user device (e.g., 101a). The example progress bar 208 displays a graphical representation of the time remaining based on the values of the example elapsed time indicator 202 and the example time remaining indicator 206.
In some examples, the data displayed by the streaming application 201 (e.g., codec type, file name, and/or elapsed time) may be difficult to reach the example predictor 130. However, the example predictor 130 can measure the value of the bandwidth rate by monitoring the traffic between the user devices 101a-101c and the streaming distributor 120.
FIG3 is a block diagram of an example implementation of the example predictor 130 of FIG1. The example predictor 130 of FIG3 is provided with an example bandwidth recorder 304, an example identifier 306, an example threshold generator 308, an example parameter generator 310, an example modeler 312, an example forecaster 314, and an example end-of-flow processor 316.
The example bandwidth recorder 304 of Figure 3 observes and records bandwidth rates forwarded by the example proxy server 105 of Figure 1. In example Figure 3, the bandwidth recorder 304 communicates with the example identifier 306 and the example threshold generator 308. The bandwidth rates forwarded by the example proxy server 105 are the bandwidth rates associated with the streaming media application 201 when the streaming media application 201 streams media.
The example identifier 306 determines the format of the media streamed in the streaming application 201. In the example illustrated in Figure 3, when the streaming application 201 begins streaming media, the example identifier 306 analyzes the data transmitted by the proxy server 105 to the example bandwidth recorder 304 to determine the audio and/or video codec of the streaming media. In some examples, the example identifier 306 knows the file format of the media used by the streaming application 201 before streaming (because such file format can be proprietary) (for example, the file format is notified to the example identifier 306 by the example proxy server 105). The media format determined by the example identifier 306 is sent to the example bandwidth recorder 304. In some examples where the media format is not determined by the example identifier 306, the example bandwidth recorder 304 is notified that the media format has not been determined.
In the illustrated example, the example threshold generator 308 obtains the media format of the streaming media from the example identifier 306. Upon obtaining the media format, the example threshold generator 308 references a lookup table to determine a threshold value for the bandwidth rate, which indicates (1) that the bandwidth rate should begin (e.g., when the bandwidth exceeds a threshold) or stop (e.g., when the bandwidth is below a threshold) being stored in the metering data set and (2) that a prediction should be made regarding the end time of the stream. For example, when the bandwidth rate is above the set threshold, the bandwidth rate is recorded in the metering data set, and the predictor 130 is ready to generate a prediction. When the bandwidth rate is below the threshold, the bandwidth rate is not recorded in the metering data set, and the predictor 130 should generate a prediction regarding the complete metering data set.
In examples where the media format is not determined by the example identifier 306, the threshold value can be set to a default or predetermined value by the example threshold value generator 308. In some examples, the threshold value generator 308 determines that the format of the streaming media only contains streaming media and does not contain any other information such as text overlays and/or tracking mode commands. In such examples, the threshold value may not be set to record the bandwidth rate (e.g., because there is no need to distinguish between streaming media and other information carried in the stream, it can be determined that the threshold value is unnecessary or can be otherwise excluded). The threshold value generator 308 of the illustrated example sends the threshold value to the example bandwidth recorder 304.
In the illustrated example of FIG3 , the example bandwidth recorder 304 monitors and/or records bandwidth rates forwarded by the example proxy server 105 and compares the bandwidth rates to thresholds determined by the example threshold generator 308. When the example bandwidth recorder 304 determines that the bandwidth rate has reached or exceeded the threshold, the example bandwidth recorder 304 begins storing the bandwidth rate and its associated timestamp in a metering dataset. The metering dataset stores values of the bandwidth rate from a first time when the bandwidth rate meets or exceeds the threshold until a second time after the first time when the bandwidth rate reaches or falls below the threshold. When the metering dataset is complete, the metering dataset values are used to generate parameters (e.g., prediction model parameters) used to generate the prediction model. The example bandwidth recorder 304 monitors the bandwidth rate to determine when the bandwidth rate falls below a threshold set by the example threshold generator 308. When the bandwidth rate falls below the threshold after previously reaching or exceeding the threshold, the example modeler 312 is notified that the metering dataset (the bandwidth rate recorded between the time when the bandwidth rate reached or exceeded the threshold and the later time when the bandwidth rate reached or fell below the threshold) is ready for processing by the example parameter generator 310. The example bandwidth recorder 304 continues to monitor the bandwidth rate forwarded by the proxy server after the data set is complete.
The example parameter generator 310 of the illustrated example calculates and/or identifies a prediction model to generate a stream duration prediction model. Each time a prediction model is generated, the example parameter generator 310 generates a new set of parameters if the characteristics of the streaming media change. For example, if the streaming media is streamed using adaptive bitrate streaming, the bitrate of the streaming media may change during the streaming. The example parameter generator 310 accesses a metering dataset and begins a series of calculations to determine characteristic parameters of the metering dataset. In the illustrated example, the parameter generator 310 calculates the mean and standard deviation of the metering dataset. The example parameter generator 310 also identifies a decay factor for the prediction model. The decay factor represents the rate at which the prediction model decays or decreases from a peak value of the prediction model to zero (or negative infinity based on the prediction model used). In some examples, the decay factor can be identified based on the type of streaming media (e.g., audio and/or video). In other examples, the decay factor can be identified based on the codec of the streaming media. In some examples, the decay factor can be identified based on the bitrate of the streaming media. In yet other examples, the attenuation factor can be uniform for all media types and/or codecs. The example parameter generator 310 stores the prediction model parameters and the attenuation factor associated with the prediction model parameters. When the example parameter generator 310 generates parameters for a data set, the example parameter generator 310 notifies the example modeler 312.
The example modeler 312 of FIG3 generates a prediction model based on the prediction model parameters created by the example parameter generator 310. When the example modeler 312 receives notification from the example parameter generator 310 that a prediction model is to be generated, the example modeler 312 retrieves the prediction model parameters and attenuation factor associated with the streaming media. The example modeler 312 uses the parameters provided by the example parameter generator 310 to generate the prediction model. In some examples, the prediction model parameters can be adjusted before releasing the prediction model to the example forecaster 314. For example, the adjustments made by the example modeler 312 can align the numerical range (e.g., amplitude) and mean (e.g., time position) of the prediction model with the numerical range and mean of the metering data set used to generate the prediction model. When the numerical range and mean of the example prediction model match the numerical range and mean of the original data set, the prediction model is forwarded to the example bandwidth recorder 304 and the example forecaster 314.
The example bandwidth recorder 304 uses the prediction model while continuing to monitor the bandwidth rate sent by the example proxy server 105. When the prediction model has been generated, the example bandwidth recorder 304 continues to create a metering data set as described above and also compares the observed bandwidth rate with the prediction model. If the value of the bandwidth rate exceeds the prediction model (e.g., the magnitude of the bandwidth rate exceeds the magnitude of the prediction model), the example bandwidth recorder 304 signals the example parameter generator 310 that new parameters should be generated for the new metering data set to generate an updated prediction model.
The example forecaster 314 of FIG. 3 obtains a prediction model and begins iterating through the prediction model using time increments (e.g., tenths, hundredths, or thousandths of a second) starting from the mean (the mean is the time position of the maximum value of the metered data set). The prediction model is a function of time (as described in more detail below in conjunction with FIG. 6 ). Therefore, using the time value, the example forecaster 314 calculates a value for each time unit after the time position of the mean. The example forecaster 314 continues iterating by increasing the time value until the prediction model produces (or indicates) a value at or below the threshold generated by the example threshold generator 308. The value at or below the threshold indicates the time at which the example forecaster 314 predicts that the streaming media will end, or more specifically, the time at which the buffer on the user device is cleared and the presentation of the streaming media is complete after the streaming media is transferred via the network 115. When a value at or below the threshold is reached, the example forecaster 314 determines that the time at which the value at or below the threshold is identified is the predicted stream end time and forwards the stream end time to the example stream end processor 316. In some examples, when a threshold is not used, iterations performed by the example predictor 314 may stop when a value of zero (or the first negative value) is reached.
The example stream end processor 316 stores and/or transmits the predicted stream end time to a data collection facility located at or remote from the audience measurement entity 125. In some examples, the stream end processor 316 can perform other actions in response to the stream end time. For example, at the time indicated as the stream end time, the stream end processor 316 can transmit a survey to the user devices 101a-101c that streamed the media. In other examples, the predicted stream end time can be used to transmit a command to extract advertisements embedded in the streaming media.
Although an example manner of implementing the predictor 130 of FIG1 is illustrated in FIG3, one or more of the elements, processes, and/or devices illustrated in FIG3 may be combined, divided, rearranged, omitted, eliminated, and/or implemented in any other manner. Further, the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example forecaster 314, and the example flow end processor 316, and/or more generally the example predictor 130 of FIG1 may be implemented by hardware, software, firmware, and/or any combination of hardware, software, and/or firmware. Thus, for example, any of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or more generally the example predictor 130, can be implemented by one or more circuits, programmable processors, application specific integrated circuits (ASICs), programmable logic devices (PLDs), and/or field programmable logic devices (FPLDs). When reading any of the apparatus or system claims of this patent covering pure software and/or firmware implementations, at least one of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or the example predictor 130 is expressly defined herein as including a tangible computer-readable storage device or storage disk (such as a memory, DVD, CD, Blu-ray disc, etc.) storing software and/or firmware. Still further, the example predictor 130 of FIG. 1 may include one or more elements, processes, and/or devices in addition to or in place of those illustrated in FIG. 3 , and/or may include more than one of any or all of the illustrated elements, processes, and devices.
FIG4 illustrates a graphical illustration 400 of an example bandwidth rate forwarded from the example proxy server 105 of FIG1 for streaming example media to one of the example user devices 101a-101c. The example bandwidth rate represents the rate of traffic between the example streaming media distributor 120 and one of the example user devices 101a-101c, as seen by the proxy server 105. In the illustrated example of FIG4 , a buffer fill period during media streaming is represented by a bandwidth rate curve 402. For example, a buffer fill period is a period of time during which the buffer fills at an increasing rate and then at a decreasing rate with the downloaded media to be presented uninterrupted. In some examples of adaptive bitrate streaming, the streaming media file is divided into smaller packets for download. Downloading smaller packets to the buffer causes this rapid increase in bandwidth at approximately the same time as the buffer fill and empty cycles.
Observe that the example bandwidth rate curve 402 increases as the buffers of user devices 101a-101c fill (or a portion of the media is downloaded), and decreases when the buffers reach capacity (or a portion of the media has been transferred). At a certain capacity of the buffers or after downloading a certain percentage (e.g., 50%) of packets, user devices 101a-101c gradually reduce the bandwidth rate, or the speed at which data is downloaded. The gradual reduction occurs so that the downloaded data is not lost due to lack of buffer space. This behavior is represented by the shape of the bandwidth rate curve 402. As the buffers begin to fill, the bandwidth rate gradually increases to a peak value, and then begins to gradually decrease as the certain capacity is reached. This gradual reduction continues until the entire media file is downloaded (assuming no interruptions to the streaming).
In the illustrated example, bandwidth recorder 304 monitors the bandwidth forwarded by example proxy server 105. Example identifier 306 determines that the streaming media is in a flash video format, for example, and notifies example threshold generator 308 of the video format. Example threshold generator 308 sets threshold 404 and notifies example bandwidth recorder 304 of the threshold. When the bandwidth rate is observed to be at threshold 404 at time 405, example bandwidth recorder 304 begins storing the bandwidth rate in the metered data set. When the bandwidth rate is observed to be at threshold 404 at time 408 after previously exceeding the threshold at time 405, bandwidth recorder 304 stops adding values to the metered data set. Thus, the values of the bandwidth curve between time 405 and time 408 comprise metered data set 402 (also referred to herein as bandwidth rate curve 402). Although in some examples example predictor 130 does not know the time at which the media stops streaming at user devices 101a-101c (e.g., however, the end time can be predicted by predictor 130), the media is illustrated as ending presentation at time 410. Although streaming has stopped, reading from the buffers at the user devices 101a-101c continues for a period of time thereafter.
FIG5A illustrates the example curve 402 of FIG4 on a timeline with an example predictive model curve 502 generated by the example predictor 130 based on predictive model parameters generated from the metering dataset 402. At time 408 when the example metering dataset 402 falls below the example threshold 404, the example bandwidth recorder 304 notifies the example parameter generator 310 that the metering dataset 402 is complete. In the illustrated example of FIG5, the example parameter generator 310 calculates the mean 508, amplitude 514, and standard deviation 516 of the metering dataset 402. In addition, the parameter generator 310 determines an attenuation factor associated with the identified media type (e.g., flash video). The example parameter generator 310 makes the predictive model parameters (mean, amplitude, standard deviation, and attenuation factor) available to the example modeler 312. The example modeler 312 then generates the predictive model curve 502 using a model based on the predictive model parameters generated by the example parameter generator 310. In the illustrated example, the prediction model 502 is generated using an exponentially modified Gaussian (EMG) distribution function. Alternatively, other suitable prediction models may be used, as described in further detail below. The example modeler 312 sends the prediction model to the example bandwidth recorder 304 and the example forecaster 314.
The example predictor 314 then iterates the time values in the example prediction model 502 until the time-dependent solution (or value) 512 of the example prediction model 502 is at or below the threshold 404. In the illustrated example, the threshold 404 is used to determine the stream end time due to the characteristics of the prediction model used (exponentially modified Gaussian (EMG)). The EMG function does not go to zero until it reaches infinity, so the threshold can be used to indicate the bandwidth rate below which streaming is determined to have substantially ceased. In some examples, a second threshold can be used that is substantially closer to zero than the threshold 404 used to create the metering dataset. Regardless, the time position of the value 512 determined to be at or below the threshold is reported as the predicted stream end time. This method has been empirically found to predict a stream end time that is substantially close to the actual stream end time 410 observed at one of the user devices 101a-101c. The stream end time represents the time at which the entire media stream has been played out of the buffer.
FIG5B is an example graph illustrating observed bandwidth for streaming media and an associated predictive model curve. The illustrated example of FIG5B includes the example metering dataset 402 and the example predictive model curve 502 of FIG5A. However, in the example of FIG5B, after the bandwidth rate falls below the threshold 404, the media continues to stream, and the bandwidth recorder 304 determines that the bandwidth rate is at or above the threshold 404 at a second time 520. In response to the bandwidth rate exceeding the threshold 404 at time 520, the example bandwidth recorder 304 creates a second metering dataset 524. While recording the second metering dataset 524, the example bandwidth recorder 304 compares the recorded bandwidth rate with the previously generated predictive model curve 502. The example bandwidth recorder 304 determines that at time 526, the second metering dataset 524 has reached or exceeded the previous predictive model curve 502. If the bandwidth rate (e.g., the bandwidth rate of the second metering dataset 524) is greater than the bandwidth rate of the previous predictive model (e.g., the predictive model curve 502) when compared, a new predictive model is generated. The example bandwidth recorder 304 notifies the example forecaster 314 to disregard the example prediction model curve 502. The example parameter generator 310 generates new prediction model parameters upon observing that the second metering data set is at or below the threshold 404 at a second time (e.g., at time 527). The example modeler 312 generates a second prediction model 528, and the example forecaster 314 determines a new predicted flow end time 530 that is substantially close to the example flow end time 560 observed at the corresponding user devices 101a-101c. The example bandwidth recorder 304 continues to monitor the bandwidth rate as the data rate rises for a third time 570. However, because the third rapid rise in bandwidth rate 570 does not reach or exceed the threshold 404, no action is taken in this case. By continuing to monitor bandwidth rates and comparing them to the generated prediction model to trigger regeneration of the prediction model, a more accurate flow end time can be predicted.
FIG6 shows a flowchart representing example machine-readable instructions for implementing the predictor 130 of FIG3 . In this example, the machine-readable instructions comprise a program for execution by a processor, such as the processor 912 shown in the example processor platform 900 discussed below with respect to FIG6 . The program can be embodied as software stored on a tangible computer-readable storage medium (such as a CR-ROM, floppy disk, hard drive, digital versatile disk (DVD), Blu-ray disk), or memory associated with the processor 912 , but the entire program and/or portions of the program can alternatively be executed by a device other than the processor 912 and/or embodied in firmware or dedicated hardware. Furthermore, while the example program is described with reference to the flowchart illustrated in FIG6 , many other methods of implementing the example predictor 130 can alternatively be used. For example, the order of execution of the blocks can be changed, and/or some of the blocks can be changed, eliminated, or combined.
As described above, the example processes of Figures 6, 7, and 8 can be implemented using encoded instructions (e.g., computer and/or machine-readable instructions) stored on a tangible computer-readable storage medium (such as a hard drive, flash memory, read-only memory (ROM), compact disc (CD), digital versatile disc (DVD), cache, random access memory (RAM), and/or any other storage device or storage disk that internally stores information for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term tangible computer-readable storage medium is expressly defined to include any type of computer-readable storage device and/or storage disk, and is defined to exclude propagating signals. As used herein, "tangible computer-readable storage medium" and "tangible machine-readable storage substrate" are used interchangeably. Additionally or alternatively, the example processes of Figures 6, 7, and 8 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium, such as a hard drive, flash memory, read-only memory, compact disc, digital versatile disc, cache, random access memory, and/or any other storage device or storage disk that stores information internally for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable device and/or disk, and is defined to exclude propagating signals. As used herein, when the term "at least" is used as a transitional term in the preamble of a claim, the phrase is open ended in the same manner as the term "comprising" is open ended.
6 is a flow diagram representative of example machine-readable instructions that may be executed to implement the example predictor 130. The example program 600 may be initiated, for example, when the example user device 101a begins streaming media from the example streaming distributor 120 in a streaming application.
Initially, at block 601, the example identifier 306 identifies the format of a streaming media associated with information received by the example bandwidth recorder 304 from the example proxy server 105 and forwards the identified format to the example threshold generator 308. For example, when information about the streaming media arrives at the example bandwidth recorder 304 of the audience measurement entity 125, the media format is determined based on the information (e.g., audio-only format, video-only format, or a container format containing both audio and video). Additionally or alternatively, the media format can be identified in the information (e.g., the proxy server 105 can determine and report the format). The example threshold generator 308 cross-references the determined media format with thresholds for known media formats to establish a bandwidth rate threshold (e.g., threshold 404 of Figures 4, 5A, and 5B) to distinguish between the media and auxiliary information embedded in the streaming media (block 602). The example threshold generator 308 sets the threshold for media differentiation based on the determined media format. The threshold represents a base value for bandwidth rate and is used to provide more accurate predictions than would be possible without a threshold (e.g., assuming that bandwidth below the threshold is so insignificant that monitoring should not occur until the threshold is achieved). For example, without a threshold, a prediction model could be created for bandwidth rate overlays of text embedded in a stream, which could lead to inconsistent end-of-stream predictions in some cases.
At block 603, the example bandwidth recorder 304 monitors the bandwidth rate forwarded from the example proxy server 105. In some examples, the bandwidth rate may fluctuate erratically while streaming media. In order to observe smoother bandwidth values, the example bandwidth recorder 304 uses a monitoring period to obtain a time-averaged bandwidth rate. For example, at the example bandwidth recorder 304, bandwidth values are monitored every tenth of a second over a two-second period. The value recorded as the bandwidth value by the example bandwidth recorder 304 is the average of twenty observed bandwidth usage rate values during the two-second period. In other examples, the value recorded by the example bandwidth recorder 304 can be an instantaneous bandwidth usage rate value, or can be averaged over an arbitrary time interval.
At block 604, the example bandwidth recorder 304 determines whether a media session is currently active between the user devices 101a-101c and the streaming media distributor 120. For example, the illustrated example bandwidth recorder 304 determines whether the proxy server 105 reports that the streaming media session is still open. If the example bandwidth recorder 304 determines that the streaming media session is no longer active, the example process 600 terminates. However, if the media session is still open, control passes to block 605.
At block 605, the example bandwidth recorder 304 compares the bandwidth rate to a threshold value to determine whether a prediction model should be generated. If the bandwidth rate is below the threshold, control returns to block 603 to wait for the bandwidth rate to exceed the threshold. If the example bandwidth recorder 304 determines that the measured bandwidth rate value exceeds the threshold, the example bandwidth recorder 304 uses the bandwidth rate that exceeded the threshold and the time at which the bandwidth rate exceeded the threshold as the initial value recorded in the metering data set (block 606). The example bandwidth recorder 304 records the subsequent bandwidth rate and associated timestamp in the metering data set and moves to block 618.
At block 618 , the bandwidth rate is below the threshold. When it is determined that the bandwidth value 400 is above the threshold, control remains at block 618 while the example bandwidth recorder 304 monitors the bandwidth value at or below the threshold.
When it is determined that the bandwidth value is below the threshold (block 618), the metering data set is determined to be complete. The example parameter generator 310 determines prediction model parameters based on the metering data set (block 620), which are used to generate the prediction model. For example, parameters such as mean, range (i.e., amplitude), standard deviation, and variance may be calculated by the example parameter generator 310. An example flow chart illustrating example machine-readable instructions (e.g., instructions for implementing the parameter generator 310) that may be executed to implement block 620 is depicted in FIG7. Upon calculating the prediction model parameters, the example parameter generator 310 notifies the example modeler 312 that the parameters are available for use in generating the prediction model 502. Control proceeds to block 625.
At block 625, the example modeler 312 generates a prediction model using the prediction model parameters calculated based on the metering data set. The prediction model can be generated by the example modeler 312 using a distribution function. For example, the prediction can be modeled using a Gaussian distribution modified in an exponential form.
In Equation 1, μ represents the mean of the metering dataset, σ2 represents the variance of the metering dataset, and λ represents the exponential rate (e.g., a decay factor). μ and σ2 are based on the metering dataset, and λ can be customized or adjusted based on the type of media being streamed.
Other suitable distributions may include chi-squared distribution, exponential distribution, gamma distribution, Laplace distribution, Pareto distribution, Weibull distribution, lognormal distribution, or any other suitable probability distribution that can be modeled with right-handed decay. In some other examples, a piecewise function consisting of multiple functions that define the behavior during a time interval can be used to generate a suitable prediction model. In other words, the example prediction model will have a maximum value over the time interval (-∞ < t < ∞) and will meet one of the following properties:
If the prediction model meets one of the above restrictions, the prediction model will decay after a maximum value and approach zero (or negative infinity) as time approaches infinity.
An example flow chart representing machine-readable instructions that may be used to implement block 625 is illustrated in FIG. 8 .
When the prediction model is generated, the example forecaster 314 iterates over the prediction model to determine when the value of the prediction model falls below a threshold value and returns the time as the predicted stream end time for the streaming media (block 627). Once identified, the example forecaster 314 forwards the time to the example stream end processor 316 to report (block 629). The time returned by the example stream end processor 316 can be a timestamp of the predicted end time and/or the amount of time remaining for the streaming media to be presented. When the predicted stream end time is reported, control returns to block 602 where the example bandwidth recorder 304 continues to monitor the bandwidth rate.
FIG7 is a flow chart 700 representing example machine-readable instructions that may be executed to implement block 620 of FIG6 for calculating parameters for a prediction model. At block 708, the example parameter generator 310 determines parameters using the values of the original data set to generate a distribution model. For example, the example parameter generator 310 may calculate the mean, standard deviation, magnitude, and variance of the metrology data set.
Next, the example parameter generator 310 identifies an attenuation factor associated with the characteristics of the streaming media (e.g., type, bitrate, codec, carrier, etc.) for use in generating the example prediction model (block 710). For the example exponentially modified Gaussian function, the attenuation factor would be λ of Equation 1, which determines the attenuation rate. In some examples, the value for λ is identified based on the type of media being streamed (e.g., video and/or audio). In other examples, the value of λ depends on the codec of the streamed media. For example, the example parameter generator 310 can reference a table of codecs with associated attenuation values (e.g., Flash Video or ".flv" files). In other examples, the value of λ is preconfigured prior to using the example predictor 130.
At block 712 , the generated parameters from block 708 and the identified attenuation factors from block 710 are stored for use by the example modeler 312 in generating a predictive model.
FIG8 is a flowchart 800 representing example machine-readable instructions of blocks 625 and 627 of FIG6 that may be executed to implement the prediction of flow end times. Beginning at block 802, the example modeler 312 obtains parameters and attenuation factors from the example parameter generator 310. At block 804, the example modeler 312 uses the parameter and attenuation factor values to generate a prediction model. For example, the mean, standard deviation, amplitude, and attenuation factor calculated from the metering data set are used in conjunction with Equation 1. Additionally, the time associated with each value in the metering data set is inserted, for example, as the value of x in Equation 1. Thus, using the function of Equation 1, a prediction model is generated based on the example exponentially modified Gaussian distribution.
At block 808, the example forecaster 314 of the illustrated example of FIG3 iterates over the prediction model generated in block 804 to determine when the value of the prediction model falls below a threshold. The iterative process can iterate over the prediction model in predetermined increments (or in some examples, adjustable increments). For example, the iterations can take several milliseconds. The example forecaster 314 begins iterations using the identified mean of the prediction model obtained from the generated parameters of block 708 of FIG7. As the prediction model begins to decay after the presence of a local peak, starting the forecast process at the mean (e.g., the time position of the peak) allows for faster processing by not calculating predicted values that occur before the peak.
Blocks 810 and 812 of the illustrated example illustrate iterative checks performed by the example forecaster 314. For example, if the value observed at block 810 is not below the threshold, the example forecaster 314 observes the next incremental value (block 812) and returns to block 810. When the value observed at block 810 is at or below the threshold, the example forecaster 314 moves to block 814.
At block 814, the example forecaster 314 obtains a time value associated with the observed value that is at or below the threshold. In some examples, the example forecaster 314 stores the time value as a predicted stream end time to predict the stream end time of the streaming media based on the metering data set. In some examples, the forecaster 314 may additionally or alternatively calculate the predicted duration of the streaming media by subtracting the stream end time from the media start time identified in the information received by the example bandwidth recorder 304.
9 is a block diagram of an example processor platform 900 capable of executing the instructions of FIG6 , FIG7 , and FIG8 to implement the predictor 130 of FIG3 . The processor platform 900 may be, for example, a server, a personal computer, a mobile device (e.g., a cellular phone, a smart phone, a tablet computer (such as an iPad ™ )), an Internet appliance, a digital video recorder, a smart TV, a smart Blu-ray player, a game console, a personal video recorder, a set-top box, or any other type of computing device capable of streaming media.
The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented via one or more integrated circuits, logic circuits, microprocessors, or controllers from any desired family or manufacturer.
The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example communicates with a main memory including a volatile memory 914 and a non-volatile memory 916 via a bus 918. The volatile memory 914 can be implemented via synchronous dynamic random access memory (SDRAM), dynamic random access memory (DRAM), memory bus dynamic random access memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 916 can be implemented via flash memory and/or any other desired type of memory device. Access to the main memories 914 and 916 is controlled by a memory controller.
The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented via any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 922 are connected to the interface circuitry 920. The input devices 922 allow a user to enter data and commands into the processor 912. The input devices may be implemented by, for example, an audio sensor, a microphone, a still camera or video recorder, a keyboard, buttons, a mouse, a touch screen, a touchpad, a trackball, isopoint, and/or a voice recognition system.
One or more output devices 924 are also connected to the illustrated interface circuit 920. The output device 924 can be implemented, for example, by a display device (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube (CRT) display, a touch screen, a tactile output device, a light emitting diode (LED), and/or a speaker). Thus, the illustrated interface circuit 920 typically includes a graphics driver card.
The interface circuitry 920 of the illustrated example also includes communication devices (such as transmitters, receivers, transceivers, modems, and/or network interface cards) that facilitate the exchange of data with an external machine (e.g., any kind of computing device) via a network 926 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, a coaxial cable, a cellular telephone system, etc.).
The processor platform 900 of the illustrated example also includes one or more mass storage devices 928 for storing software and/or data. Examples of such mass storage devices 928 include floppy disk drives, hard drives, optical disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.
The encoded instructions 932 of Figures 6, 7, and 8 may be stored in the mass storage device 928, in the volatile memory 914, in the non-volatile memory 916, and/or on a removable tangible computer-readable storage medium such as a CD or DVD.
From the foregoing, it will be appreciated that the examples disclosed above facilitate the use of prediction models to predict the end time of streaming media. Furthermore, the disclosed examples provide the ability to forecast the end time of a stream derived from the traffic behavior of a streaming media stream without accessing the streaming media application on user devices 101a-101c. This allows audience measurement entities and/or data collection facilities to accurately predict the end of a streaming media stream for targeted media delivery, more accurate ad extraction of ads embedded in streaming media, presentation of user surveys, and the like.
The disclosed examples also facilitate bandwidth conservation within the monitored home. The disclosed examples can be used to deliver targeted media and/or surveys at appropriate times without interrupting streaming. In homes with limited bandwidth, by anticipating the end of streaming, the audience measurement entity can determine when to deliver targeted media and/or surveys through continuous queries without consuming additional bandwidth.
The disclosed examples also facilitate conserving system bandwidth. In examples where a proxy server sends characteristic information about a streaming media stream instead of monitoring the streaming media, the required bandwidth is significantly reduced compared to monitoring methods. This monitoring method requires the entire streaming media stream to be monitored to the audience measurement entity, which requires a bandwidth equal to the streaming media bandwidth. Using the disclosed examples, the required bandwidth from the proxy server to the audience measurement entity is significantly reduced.
Although certain example methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.
Method, apparatus, and device for predicting the end of streaming media using a prediction model
Technical Field
The present disclosure relates generally to monitoring streaming media, and more particularly to methods and apparatus for predicting the end of streaming media using a predictive model.
Background Art
As used herein, streaming media refers to the media presented to the user by a presentation device that is at least partially parallel with the media sent from a media provider to the presentation device (or a device associated with the presentation device) (e.g., via a network). Sometimes, streaming media is used to present live events. However, streaming media can also be used for non-live events (e.g., time-shifted media presentation and/or video on demand presentation). Typically, temporally adjacent portions of a streaming media file are delivered to and stored in a buffer or temporary memory cache of a streaming media device while presenting streaming media to the user. The buffer releases the stored streaming media for presentation while continuing to be filled with the unplayed portion of streaming media. This process continues until the user terminates the presentation of streaming media and/or has delivered (e.g., downloaded) a complete streaming media file. In the event that a complete streaming media file has been delivered, the streaming media device typically continues to release the buffered streaming media for presentation until the buffer is cleared.
Buffers are used to compensate for issues such as fluctuations in bandwidth usage that cause "lag," or discontinuous delivery of media. Buffers mitigate the appearance of "lag" by holding a portion of a stream that can be presented while waiting for the delivery of additional streams. In some cases, as the buffer fills, the download speed of the stream (e.g., the rate of bandwidth usage) can speed up or slow down depending on the remaining space in the buffer.
In recent years, streaming media has become a popular medium for delivering media to users. Services like Netflix ™ and Amazon Instant Video ™ , as well as on-demand services provided by Internet Protocol (IP)-based television services (e.g., AT&T Uverse ™ ), are examples of providers of such streaming media. The instantaneous nature of streaming media and the increase in bandwidth capabilities of Internet service providers have contributed to the popularity of streaming media due to the high resolutions that can be streamed (which require increased delivery bandwidth). For example, when a user of a streaming device selects a movie from a streaming media distributor (such as Netflix ™ ), the movie can be presented almost immediately without having to wait for the entire movie file to be downloaded to the user's device.
Summary of the Invention
The present invention provides a method for predicting the end of streaming media, which includes the following steps: using a processor to execute instructions to determine the bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; using the processor to execute instructions to generate a prediction model based on the characteristics of the bandwidth rate; and using the processor to execute instructions to determine the time when the output of the prediction model is lower than a minimum bandwidth threshold as the end time of the presentation of the streaming media, and the end time of the presentation corresponds to the time when the streaming application stops presenting the streaming media on the presentation device.
The method further includes the step of determining a type of the streaming media presented in the streaming application, wherein the step of generating a prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
A decay factor for the prediction model is determined based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The step of generating the prediction model further includes calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The method further comprises the step of sending target media to the streaming application at the presentation end time of the streaming media.
The method further comprises the step of sending a survey to the streaming application at the end time of the presentation of the streaming media.
The present invention provides a device for predicting the end of streaming media, which includes: a unit for determining a bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; a unit for generating a prediction model based on characteristics of the bandwidth rate; and a unit for determining a time when an output of the prediction model is lower than a minimum bandwidth threshold as an end time of presentation of the streaming media, wherein the end time of presentation corresponds to a time when the streaming application stops presenting the streaming media on the presentation device.
The apparatus further comprises means for determining a type of the streaming media presented in the streaming application, wherein generating the prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
The apparatus further includes means for determining a decay factor for the prediction model based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The means for generating the prediction model further includes: a means for calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The apparatus further comprises: a unit for sending target media to the streaming application at the presentation end time of the streaming media.
The apparatus further comprises means for sending a survey to the streaming application at the end time of the presentation of the streaming media.
A device for predicting the end of streaming media, the device comprising: a bandwidth recorder that determines a bandwidth rate associated with streaming media presented in a streaming media application based on information received from an agent; a modeler that generates a prediction model based on characteristics of the bandwidth rate; and a predictor that determines a time when an output of the prediction model falls below a minimum bandwidth threshold as an end time of presentation of the streaming media, the end time corresponding to a time when the streaming media application stops presenting the streaming media on the presentation device, at least one of the bandwidth recorder, the modeler, and the predictor being implemented by a processor connected to a memory.
The device also includes: an identifier that determines the type of streaming media presented in the streaming application; and a threshold generator that sets the minimum bandwidth threshold based on the type of streaming media, wherein the modeler generates the prediction model in response to the bandwidth rate exceeding the minimum bandwidth threshold.
The type of the streaming media is at least one of video and audio.
The apparatus further includes a parameter generator that determines a decay factor for the prediction model based on the type of the streaming media.
The parameter generator further calculates prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The proxy also: routes the streaming media from a streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The device further includes a stream end processor configured to send target media to the streaming application at the presentation end time of the streaming media.
The stream end processor further sends target media to the streaming application at the presentation end time of the streaming media.
A tangible computer readable medium comprising instructions which, when executed, cause a machine to perform the above method.
BRIEF DESCRIPTION OF THE DRAWINGS
1 is a block diagram of an example system for streaming media to user devices.
FIG2 is a diagram of an example streaming media application.
3 is a block diagram of an example implementation of the predictor of FIG. 1 that predicts the end of streaming media.
FIG. 4 is an example graph illustrating bandwidth rates of streaming media applications observed during the processing of streaming media.
5A is an example graph of (a) the observed bandwidth rates of FIG. 4 and (b) an example prediction model.
5B is an example graph of (a) observed bandwidth rates of a streaming media application during the processing of streaming media and (b) a prediction model associated with the observed bandwidth rates.
6 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for predicting the end of streaming media.
7 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating parameters for predictive model generation.
8 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating a prediction model and forecasting a predicted end time for streaming media.
9 is a block diagram of an example processor system that may execute any of the machine-readable instructions represented by FIG. 6 , FIG. 7 , and/or FIG. 8 that implement the example predictor of FIG. 1 and/or FIG. 3 .
DETAILED DESCRIPTION
When a media device streams media from a streaming media distributor, data can be obtained from the communication between the streaming media device and the streaming media distributor. This data can be obtained by analyzing traffic patterns, analyzing communication packets, network taps, etc. Example data (or metadata) about the streaming media and/or streaming environment include media file formats, available buffer space of the streaming media device, bandwidth usage of the streaming media device, etc. This descriptive data can be used to supplement traditional data obtained by AME (e.g., audience composition and/or media identification associated with traditional media (e.g., radio and/or television) broadcasts) to create a more robust data set and allow the application of more fine-grained statistical methods.
Predicting the end of streaming is important in situations where access to the streaming distributor and/or streaming application is not available to directly obtain information about the end. For example, predicting the end of a streaming session can allow for more accurate streaming ad extraction for media credit ratings. In some cases, predicting the end of streaming can allow for targeted survey delivery. That is, predicting the end of streaming allows for the delivery of a survey near the end of streaming (e.g., shortly before the end) before the user shifts their attention away from the media presentation device at the end of the media presentation.
In some cases, the duration of the streaming presentation is extended or shortened from the duration of the streaming during media monitoring. For example, by rewinding, jumping, or fast-forwarding (e.g., tracking mode operation) the streaming (e.g., via progress bar manipulation), the duration of the presentation can be significantly longer or shorter than the duration of the streaming (e.g., when the streaming is applied without any tracking mode operation). By extrapolating or inferring the end of the streaming (and updating the analysis during the presentation), a more detailed and/or accurate duration can be obtained. Additionally or alternatively, target media can be provided to the user of the streaming media. Instead of waiting for a signal at the user device that the streaming media has ended, it is advantageous to predict when the streaming media will end. By predicting the end time, a more seamless transition to the target media can be generated.
The examples disclosed herein use a prediction model to predict the end of a streaming media presentation, the prediction model being based on characteristics of bandwidth during periods of buffer fill associated with the streaming of the media. The examples disclosed herein use the characteristics of bandwidth to extract parameters for use in the prediction model. The example prediction model is used to predict when the end of a streaming media file will be reached.
The examples disclosed herein may be applied to any streaming media protocol (e.g., Dynamic Adaptive Streaming over HTTP (DASH), adaptive bitrate streaming, HTTP Live Streaming (HLS), Real-Time Streaming Protocol (RTSP), Real-Time Protocol (RTP), Real-Time Control Protocol (RTCP), and/or any suitable combination or future protocols).
FIG1 is a block diagram of an example environment in which example methods, apparatus, and/or articles of manufacture disclosed herein can be used to predict the end time of streaming media. In the example environment of FIG1 , media is streamed from a streaming media distributor 120 to example user devices 101a-101c. The example environment includes example user devices 101a-101c, an example proxy server 105, an example network 115, and an example streaming media distributor 120. In the example of FIG1 , an audience measurement entity 125, such as Nielsen (USA) LLC, includes an example predictor 130 for predicting the end of streaming media.
In the illustrated example, one of the example user devices 101a-101c (e.g., example user device 101a) initiates a streaming application to stream the media. A request for media streaming is sent by the example user device 101a to the example streaming distributor 120. The request is routed via the example proxy server 105 and the example network 115. The example streaming distributor 120 responds to the request and begins streaming the media to the example user device 101a via the example proxy server 105 using an encrypted stream. The encrypted stream prevents the proxy server 105 from accessing information about tracking mode operation and/or timestamp information associated with the streaming media. While streaming the media to the example user device 101a, the example proxy server 105 extracts available data and/or metadata associated with the streaming media (e.g., bandwidth rate, source and destination ports, Internet Protocol addresses, etc.) and sends the extracted data and/or metadata to the predictor 130 at the example audience measurement entity 125. The example predictor 130 uses the transmitted data (e.g., bandwidth rate) to predict when the media will stop (or has stopped) being presented on the user device 101 a. For example, the predictor 130 predicts an end time during which the streaming of the media is not directly accessible to the example proxy server 105, the audience measurement entity 125, or the example predictor 130.
The example user devices 101a-101c of the illustrated example can be implemented by any device that supports streaming applications and/or streaming media (e.g., smart TVs, tablets, game consoles, mobile phones, smartphones, streaming devices, computers, laptops, tablets, digital versatile disc (DVD) players, Roku ™ devices, Internet television devices (e.g., Google ™ Chiomecast ™ , Google ™ TV, Apple ™ TV, etc.), and/or other electronic devices). The example user devices 101a-101c communicate with the example streaming media distributor 120 via the proxy server 105 using the network 115.
Example network 115 can be any type of communication network (e.g., the Internet, a local area network, a wide area network, a cellular data network, etc.) facilitated by wired and/or wireless connections (e.g., cable/DSL/satellite modems, cellular towers, etc.). Example networks can be local area networks, wide area networks, or any combination of networks.
The example proxy server 105 of the illustrated example is a network device located in a monitored home that acts as an intermediary for communications (e.g., including streaming requests and responses for streaming media) involving one or more of the example user devices 101a-101c and/or one or more other components connected to the example network 115. Alternatively, the example proxy server 105 can be located at a location separate from the monitored home. For example, the example proxy server 105 can be a router, gateway, server, and/or any device capable of acting as an intermediary for network traffic. For example, a broadband modem and/or a router can implement the proxy server 105. According to the illustrated example, the proxy server 105 acts as an intermediary for communications between the example user devices 101a-101c and the example streaming media distributor 120.
For example, when the example user device 101a sends a request for media to the streaming media distributor 120, the request is first routed to the example proxy server 105. The example proxy server 105 then sends the request to the example streaming media distributor 120 (e.g., the request may be sent after being modified to indicate that a response to the request should be routed to the proxy server 105). When the example streaming media distributor 120 responds to the request, the response is routed to the example proxy server 105, which resends the request to the example user device 101a.
As the example proxy server 105 is involved in communications associated with the example user devices 101a-101c, the example proxy server 105 is able to collect information about those communications. Although the example proxy server 105 is referred to as a "proxy" device, the proxy server 105 may not perform functions typically associated with a proxy (e.g., perform packet translation). Instead, the functions of the proxy server 105 described in the examples herein may be performed by any type of device that collects information about communications between the example user devices 101a-101c and the example streaming provider 120 (e.g., the example proxy server 105 may not participate in the communication chain, but may instead monitor communications from the sidelines using, for example, packet monitoring, packet snooping, or any other technology).
In the illustrated example, the proxy server 105 sends the collected information to the audience measurement entity 125. The example proxy server 105 collects, calculates, and/or correlates bandwidth information for streaming applications. In some examples, the example proxy server 105 identifies and collects data originating from the streaming distributor 120 and delivered to the user devices 101a-101c. For example, the example proxy server 105 may collect and correlate traffic based on one or more characteristics, such as Simple Network Management Protocol (SNMP), Internet Protocol (IP) address, a subprotocol of the Internet Protocol suite (e.g., Real Time Streaming Protocol (RTSP), port information, service destination, user agent, etc. One or more of the above characteristics may indicate a specific streaming distributor 120 (e.g., source IP address). The example proxy server 105 also determines the rate at which data passes through the proxy server 105 (e.g., bandwidth rate) and/or the rate at which data is streamed from the streaming distributor 120 to the user devices 101a-101c. Combining the correlation of traffic volume and the rate at which traffic is passing through the device (e.g., data rate, bandwidth rate, etc.) allows application-specific bandwidth rate monitoring. The proxy server 105 collects and sends the bandwidth rate and application identity of the streaming media application to the example predictor 130. In this way, neither data (e.g., bandwidth rate) needs to be sent from the media device rendering the streaming media nor data needs to be sent from the streaming media distributor sending the streaming media to the media device. Additionally or alternatively, the example proxy server 105 monitors the traffic volume to the example predictor 130 to collect, calculate, and/or correlate.
Other network topologies besides the one illustrated in FIG1 can be used with the example methods and apparatus disclosed herein. For example, the proxy server 105 can be excluded from the system 100 when other devices or components can provide information about the communications (e.g., bandwidth rates can be reported by the user devices 101a-101c). Additionally or alternatively, communications can be routed and/or monitored to the example audience measurement entity 125. In some such examples, the audience measurement entity 125 monitors and collects information about the communications with or without information from other devices, such as the proxy server 105.
The audience measurement entity 125 of the illustrated example includes an example predictor 130. In this example, the example predictor 130 obtains bandwidth rates from the proxy server 105 while the example user devices 101a-101c stream media from the example streaming distributor 120. However, as explained above, data rates (e.g., bandwidth rates) may alternatively be provided by other means. In some examples, control information, text overlays, etc. are embedded within the stream. Thus, it is desirable to create a threshold bandwidth rate that distinguishes the transmission of streaming media from the transmission of other data carried in the stream. An example selection of such a threshold is described in conjunction with FIG3 . In the illustrated example of FIG1 , the example predictor 130 analyzes the bandwidth rate forwarded by the example proxy server 105 and determines the stream end time of the streaming media when the bandwidth exceeds the threshold.
In the illustrated example, one or more of the user devices 101a-101c are associated with a panelist who has consented to be monitored by the audience measurement entity 125. A panelist is a user registered on a panel maintained by a rating entity (e.g., the audience measurement entity 125) that owns and/or operates the rating entity subsystem. Traditionally, an audience measurement entity (also referred to herein as a "rating entity") determines demographic coverage for advertising and media broadcasts based on the registered panelists. That is, the audience measurement entity 125 recruits people who consent to being monitored into the panel. During recruitment, the audience measurement entity receives demographic information from the recruiting personnel so that subsequent correlation can be made between advertising/media exposure to those panelists and different demographic markets.
People become panel members via, for example, a user interface presented on user devices 101a-101c (e.g., via a website). People may become panel members in additional or alternative ways (such as, for example, via a telephone interview, by completing an online survey, etc.). Additionally or alternatively, people may be contacted and/or recruited using any desired methodology (e.g., random selection, static selection, telephone solicitation, Internet advertising, surveys, advertising in a mall, product packaging, etc.).
In the illustrated example group member system, consent is obtained from the user when the user joins and/or registers for the group to monitor and analyze network data. For example, group members may consent to have their network traffic monitored by proxy server 105. While the example system of FIG. 1 is a group member-based system, non-group member and/or mixed group member systems may alternatively be employed.
FIG2 illustrates an example streaming application 201 executing on one of the example user devices 101a-101c. The example streaming application 201 of this example presents media obtained from a streaming media distributor 120 on the corresponding example device 101a-101c. The graphical user interface of the streaming application 201 presents data related to the presentation of the streaming media. In the example streaming application 201 of FIG2 , an elapsed time indicator 202 displays the length of the media presentation segment and the total length of the media. A file ID indicator 203 displays the file name of the streaming media being presented.
In some examples, the file ID indicator 203, when available (e.g., if the streaming media is being sent in an unencrypted stream), is analyzed by the example predictor 130 to determine the file format. The example predictor 130 can access the contents of the unencrypted streaming media packets (or encrypted packets where decryption is available). The example data packets can include headers or leading data indicating what video and/or audio is being streamed to the streaming application 201. The example bandwidth indication field 204 displays the current bandwidth usage rate of the streaming application 201. The example time remaining indicator 206 displays the predicted end time of the media, as indicated by the user device (e.g., 101a). The example progress bar 208 displays a graphical representation of the time remaining based on the values of the example elapsed time indicator 202 and the example time remaining indicator 206.
In some examples, the data displayed by the streaming application 201 (e.g., codec type, file name, and/or elapsed time) may be difficult to reach the example predictor 130. However, the example predictor 130 can measure the value of the bandwidth rate by monitoring the traffic between the user devices 101a-101c and the streaming distributor 120.
FIG3 is a block diagram of an example implementation of the example predictor 130 of FIG1. The example predictor 130 of FIG3 is provided with an example bandwidth recorder 304, an example identifier 306, an example threshold generator 308, an example parameter generator 310, an example modeler 312, an example forecaster 314, and an example end-of-flow processor 316.
The example bandwidth recorder 304 of Figure 3 observes and records bandwidth rates forwarded by the example proxy server 105 of Figure 1. In example Figure 3, the bandwidth recorder 304 communicates with the example identifier 306 and the example threshold generator 308. The bandwidth rates forwarded by the example proxy server 105 are the bandwidth rates associated with the streaming media application 201 when the streaming media application 201 streams media.
The example identifier 306 determines the format of the media streamed in the streaming application 201. In the example illustrated in Figure 3, when the streaming application 201 begins streaming media, the example identifier 306 analyzes the data transmitted by the proxy server 105 to the example bandwidth recorder 304 to determine the audio and/or video codec of the streaming media. In some examples, the example identifier 306 knows the file format of the media used by the streaming application 201 before streaming (because such file format can be proprietary) (for example, the file format is notified to the example identifier 306 by the example proxy server 105). The media format determined by the example identifier 306 is sent to the example bandwidth recorder 304. In some examples where the media format is not determined by the example identifier 306, the example bandwidth recorder 304 is notified that the media format has not been determined.
In the illustrated example, the example threshold generator 308 obtains the media format of the streaming media from the example identifier 306. Upon obtaining the media format, the example threshold generator 308 references a lookup table to determine a threshold value for the bandwidth rate, which indicates (1) that the bandwidth rate should begin (e.g., when the bandwidth exceeds a threshold) or stop (e.g., when the bandwidth is below a threshold) being stored in the metering data set and (2) that a prediction should be made regarding the end time of the stream. For example, when the bandwidth rate is above the set threshold, the bandwidth rate is recorded in the metering data set, and the predictor 130 is ready to generate a prediction. When the bandwidth rate is below the threshold, the bandwidth rate is not recorded in the metering data set, and the predictor 130 should generate a prediction regarding the complete metering data set.
In examples where the media format is not determined by the example identifier 306, the threshold value can be set to a default or predetermined value by the example threshold value generator 308. In some examples, the threshold value generator 308 determines that the format of the streaming media only contains streaming media and does not contain any other information such as text overlays and/or tracking mode commands. In such examples, the threshold value may not be set to record the bandwidth rate (e.g., because there is no need to distinguish between streaming media and other information carried in the stream, it can be determined that the threshold value is unnecessary or can be otherwise excluded). The threshold value generator 308 of the illustrated example sends the threshold value to the example bandwidth recorder 304.
In the illustrated example of FIG3 , the example bandwidth recorder 304 monitors and/or records bandwidth rates forwarded by the example proxy server 105 and compares the bandwidth rates to thresholds determined by the example threshold generator 308. When the example bandwidth recorder 304 determines that the bandwidth rate has reached or exceeded the threshold, the example bandwidth recorder 304 begins storing the bandwidth rate and its associated timestamp in a metering dataset. The metering dataset stores values of the bandwidth rate from a first time when the bandwidth rate meets or exceeds the threshold until a second time after the first time when the bandwidth rate reaches or falls below the threshold. When the metering dataset is complete, the metering dataset values are used to generate parameters (e.g., prediction model parameters) used to generate the prediction model. The example bandwidth recorder 304 monitors the bandwidth rate to determine when the bandwidth rate falls below a threshold set by the example threshold generator 308. When the bandwidth rate falls below the threshold after previously reaching or exceeding the threshold, the example modeler 312 is notified that the metering dataset (the bandwidth rate recorded between the time when the bandwidth rate reached or exceeded the threshold and the later time when the bandwidth rate reached or fell below the threshold) is ready for processing by the example parameter generator 310. The example bandwidth recorder 304 continues to monitor the bandwidth rate forwarded by the proxy server after the data set is complete.
The example parameter generator 310 of the illustrated example calculates and/or identifies a prediction model to generate a stream duration prediction model. Each time a prediction model is generated, the example parameter generator 310 generates a new set of parameters if the characteristics of the streaming media change. For example, if the streaming media is streamed using adaptive bitrate streaming, the bitrate of the streaming media may change during the streaming. The example parameter generator 310 accesses a metering dataset and begins a series of calculations to determine characteristic parameters of the metering dataset. In the illustrated example, the parameter generator 310 calculates the mean and standard deviation of the metering dataset. The example parameter generator 310 also identifies a decay factor for the prediction model. The decay factor represents the rate at which the prediction model decays or decreases from a peak value of the prediction model to zero (or negative infinity based on the prediction model used). In some examples, the decay factor can be identified based on the type of streaming media (e.g., audio and/or video). In other examples, the decay factor can be identified based on the codec of the streaming media. In some examples, the decay factor can be identified based on the bitrate of the streaming media. In yet other examples, the attenuation factor can be uniform for all media types and/or codecs. The example parameter generator 310 stores the prediction model parameters and the attenuation factor associated with the prediction model parameters. When the example parameter generator 310 generates parameters for a data set, the example parameter generator 310 notifies the example modeler 312.
The example modeler 312 of FIG3 generates a prediction model based on the prediction model parameters created by the example parameter generator 310. When the example modeler 312 receives notification from the example parameter generator 310 that a prediction model is to be generated, the example modeler 312 retrieves the prediction model parameters and attenuation factor associated with the streaming media. The example modeler 312 uses the parameters provided by the example parameter generator 310 to generate the prediction model. In some examples, the prediction model parameters can be adjusted before releasing the prediction model to the example forecaster 314. For example, the adjustments made by the example modeler 312 can align the numerical range (e.g., amplitude) and mean (e.g., time position) of the prediction model with the numerical range and mean of the metering data set used to generate the prediction model. When the numerical range and mean of the example prediction model match the numerical range and mean of the original data set, the prediction model is forwarded to the example bandwidth recorder 304 and the example forecaster 314.
The example bandwidth recorder 304 uses the prediction model while continuing to monitor the bandwidth rate sent by the example proxy server 105. When the prediction model has been generated, the example bandwidth recorder 304 continues to create a metering data set as described above and also compares the observed bandwidth rate with the prediction model. If the value of the bandwidth rate exceeds the prediction model (e.g., the magnitude of the bandwidth rate exceeds the magnitude of the prediction model), the example bandwidth recorder 304 signals the example parameter generator 310 that new parameters should be generated for the new metering data set to generate an updated prediction model.
The example forecaster 314 of FIG. 3 obtains a prediction model and begins iterating through the prediction model using time increments (e.g., tenths, hundredths, or thousandths of a second) starting from the mean (the mean is the time position of the maximum value of the metered data set). The prediction model is a function of time (as described in more detail below in conjunction with FIG. 6 ). Therefore, using the time value, the example forecaster 314 calculates a value for each time unit after the time position of the mean. The example forecaster 314 continues iterating by increasing the time value until the prediction model produces (or indicates) a value at or below the threshold generated by the example threshold generator 308. The value at or below the threshold indicates the time at which the example forecaster 314 predicts that the streaming media will end, or more specifically, the time at which the buffer on the user device is cleared and the presentation of the streaming media is complete after the streaming media is transferred via the network 115. When a value at or below the threshold is reached, the example forecaster 314 determines that the time at which the value at or below the threshold is identified is the predicted stream end time and forwards the stream end time to the example stream end processor 316. In some examples, when a threshold is not used, iterations performed by the example predictor 314 may stop when a value of zero (or the first negative value) is reached.
The example stream end processor 316 stores and/or transmits the predicted stream end time to a data collection facility located at or remote from the audience measurement entity 125. In some examples, the stream end processor 316 can perform other actions in response to the stream end time. For example, at the time indicated as the stream end time, the stream end processor 316 can transmit a survey to the user devices 101a-101c that streamed the media. In other examples, the predicted stream end time can be used to transmit a command to extract advertisements embedded in the streaming media.
Although an example manner of implementing the predictor 130 of FIG1 is illustrated in FIG3, one or more of the elements, processes, and/or devices illustrated in FIG3 may be combined, divided, rearranged, omitted, eliminated, and/or implemented in any other manner. Further, the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example forecaster 314, and the example flow end processor 316, and/or more generally the example predictor 130 of FIG1 may be implemented by hardware, software, firmware, and/or any combination of hardware, software, and/or firmware. Thus, for example, any of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or more generally the example predictor 130, can be implemented by one or more circuits, programmable processors, application specific integrated circuits (ASICs), programmable logic devices (PLDs), and/or field programmable logic devices (FPLDs). When reading any of the apparatus or system claims of this patent covering pure software and/or firmware implementations, at least one of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or the example predictor 130 is expressly defined herein as including a tangible computer-readable storage device or storage disk (such as a memory, DVD, CD, Blu-ray disc, etc.) storing software and/or firmware. Still further, the example predictor 130 of FIG. 1 may include one or more elements, processes, and/or devices in addition to or in place of those illustrated in FIG. 3 , and/or may include more than one of any or all of the illustrated elements, processes, and devices.
FIG4 illustrates a graphical illustration 400 of an example bandwidth rate forwarded from the example proxy server 105 of FIG1 for streaming example media to one of the example user devices 101a-101c. The example bandwidth rate represents the rate of traffic between the example streaming media distributor 120 and one of the example user devices 101a-101c, as seen by the proxy server 105. In the illustrated example of FIG4 , a buffer fill period during media streaming is represented by a bandwidth rate curve 402. For example, a buffer fill period is a period of time during which the buffer fills at an increasing rate and then at a decreasing rate with the downloaded media to be presented uninterrupted. In some examples of adaptive bitrate streaming, the streaming media file is divided into smaller packets for download. Downloading smaller packets to the buffer causes this rapid increase in bandwidth at approximately the same time as the buffer fill and empty cycles.
Observe that the example bandwidth rate curve 402 increases as the buffers of user devices 101a-101c fill (or a portion of the media is downloaded), and decreases when the buffers reach capacity (or a portion of the media has been transferred). At a certain capacity of the buffers or after downloading a certain percentage (e.g., 50%) of packets, user devices 101a-101c gradually reduce the bandwidth rate, or the speed at which data is downloaded. The gradual reduction occurs so that the downloaded data is not lost due to lack of buffer space. This behavior is represented by the shape of the bandwidth rate curve 402. As the buffers begin to fill, the bandwidth rate gradually increases to a peak value, and then begins to gradually decrease as the certain capacity is reached. This gradual reduction continues until the entire media file is downloaded (assuming no interruptions to the streaming).
In the illustrated example, bandwidth recorder 304 monitors the bandwidth forwarded by example proxy server 105. Example identifier 306 determines that the streaming media is in a flash video format, for example, and notifies example threshold generator 308 of the video format. Example threshold generator 308 sets threshold 404 and notifies example bandwidth recorder 304 of the threshold. When the bandwidth rate is observed to be at threshold 404 at time 405, example bandwidth recorder 304 begins storing the bandwidth rate in the metered data set. When the bandwidth rate is observed to be at threshold 404 at time 408 after previously exceeding the threshold at time 405, bandwidth recorder 304 stops adding values to the metered data set. Thus, the values of the bandwidth curve between time 405 and time 408 comprise metered data set 402 (also referred to herein as bandwidth rate curve 402). Although in some examples example predictor 130 does not know the time at which the media stops streaming at user devices 101a-101c (e.g., however, the end time can be predicted by predictor 130), the media is illustrated as ending presentation at time 410. Although streaming has stopped, reading from the buffers at the user devices 101a-101c continues for a period of time thereafter.
FIG5A illustrates the example curve 402 of FIG4 on a timeline with an example predictive model curve 502 generated by the example predictor 130 based on predictive model parameters generated from the metering dataset 402. At time 408 when the example metering dataset 402 falls below the example threshold 404, the example bandwidth recorder 304 notifies the example parameter generator 310 that the metering dataset 402 is complete. In the illustrated example of FIG5, the example parameter generator 310 calculates the mean 508, amplitude 514, and standard deviation 516 of the metering dataset 402. In addition, the parameter generator 310 determines an attenuation factor associated with the identified media type (e.g., flash video). The example parameter generator 310 makes the predictive model parameters (mean, amplitude, standard deviation, and attenuation factor) available to the example modeler 312. The example modeler 312 then generates the predictive model curve 502 using a model based on the predictive model parameters generated by the example parameter generator 310. In the illustrated example, the prediction model 502 is generated using an exponentially modified Gaussian (EMG) distribution function. Alternatively, other suitable prediction models may be used, as described in further detail below. The example modeler 312 sends the prediction model to the example bandwidth recorder 304 and the example forecaster 314.
The example predictor 314 then iterates the time values in the example prediction model 502 until the time-dependent solution (or value) 512 of the example prediction model 502 is at or below the threshold 404. In the illustrated example, the threshold 404 is used to determine the stream end time due to the characteristics of the prediction model used (exponentially modified Gaussian (EMG)). The EMG function does not go to zero until it reaches infinity, so the threshold can be used to indicate the bandwidth rate below which streaming is determined to have substantially ceased. In some examples, a second threshold can be used that is substantially closer to zero than the threshold 404 used to create the metering dataset. Regardless, the time position of the value 512 determined to be at or below the threshold is reported as the predicted stream end time. This method has been empirically found to predict a stream end time that is substantially close to the actual stream end time 410 observed at one of the user devices 101a-101c. The stream end time represents the time at which the entire media stream has been played out of the buffer.
FIG5B is an example graph illustrating observed bandwidth for streaming media and an associated predictive model curve. The illustrated example of FIG5B includes the example metering dataset 402 and the example predictive model curve 502 of FIG5A. However, in the example of FIG5B, after the bandwidth rate falls below the threshold 404, the media continues to stream, and the bandwidth recorder 304 determines that the bandwidth rate is at or above the threshold 404 at a second time 520. In response to the bandwidth rate exceeding the threshold 404 at time 520, the example bandwidth recorder 304 creates a second metering dataset 524. While recording the second metering dataset 524, the example bandwidth recorder 304 compares the recorded bandwidth rate with the previously generated predictive model curve 502. The example bandwidth recorder 304 determines that at time 526, the second metering dataset 524 has reached or exceeded the previous predictive model curve 502. If the bandwidth rate (e.g., the bandwidth rate of the second metering dataset 524) is greater than the bandwidth rate of the previous predictive model (e.g., the predictive model curve 502) when compared, a new predictive model is generated. The example bandwidth recorder 304 notifies the example forecaster 314 to disregard the example prediction model curve 502. The example parameter generator 310 generates new prediction model parameters upon observing that the second metering data set is at or below the threshold 404 at a second time (e.g., at time 527). The example modeler 312 generates a second prediction model 528, and the example forecaster 314 determines a new predicted flow end time 530 that is substantially close to the example flow end time 560 observed at the corresponding user devices 101a-101c. The example bandwidth recorder 304 continues to monitor the bandwidth rate as the data rate rises for a third time 570. However, because the third rapid rise in bandwidth rate 570 does not reach or exceed the threshold 404, no action is taken in this case. By continuing to monitor bandwidth rates and comparing them to the generated prediction model to trigger regeneration of the prediction model, a more accurate flow end time can be predicted.
FIG6 shows a flowchart representing example machine-readable instructions for implementing the predictor 130 of FIG3 . In this example, the machine-readable instructions comprise a program for execution by a processor, such as the processor 912 shown in the example processor platform 900 discussed below with respect to FIG6 . The program can be embodied as software stored on a tangible computer-readable storage medium (such as a CR-ROM, floppy disk, hard drive, digital versatile disk (DVD), Blu-ray disk), or memory associated with the processor 912 , but the entire program and/or portions of the program can alternatively be executed by a device other than the processor 912 and/or embodied in firmware or dedicated hardware. Furthermore, while the example program is described with reference to the flowchart illustrated in FIG6 , many other methods of implementing the example predictor 130 can alternatively be used. For example, the order of execution of the blocks can be changed, and/or some of the blocks can be changed, eliminated, or combined.
As described above, the example processes of Figures 6, 7, and 8 can be implemented using encoded instructions (e.g., computer and/or machine-readable instructions) stored on a tangible computer-readable storage medium (such as a hard drive, flash memory, read-only memory (ROM), compact disc (CD), digital versatile disc (DVD), cache, random access memory (RAM), and/or any other storage device or storage disk that internally stores information for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term tangible computer-readable storage medium is expressly defined to include any type of computer-readable storage device and/or storage disk, and is defined to exclude propagating signals. As used herein, "tangible computer-readable storage medium" and "tangible machine-readable storage substrate" are used interchangeably. Additionally or alternatively, the example processes of Figures 6, 7, and 8 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium, such as a hard drive, flash memory, read-only memory, compact disc, digital versatile disc, cache, random access memory, and/or any other storage device or storage disk that stores information internally for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable device and/or disk, and is defined to exclude propagating signals. As used herein, when the term "at least" is used as a transitional term in the preamble of a claim, the phrase is open ended in the same manner as the term "comprising" is open ended.
6 is a flow diagram representative of example machine-readable instructions that may be executed to implement the example predictor 130. The example program 600 may be initiated, for example, when the example user device 101a begins streaming media from the example streaming distributor 120 in a streaming application.
Initially, at block 601, the example identifier 306 identifies the format of a streaming media associated with information received by the example bandwidth recorder 304 from the example proxy server 105 and forwards the identified format to the example threshold generator 308. For example, when information about the streaming media arrives at the example bandwidth recorder 304 of the audience measurement entity 125, the media format is determined based on the information (e.g., audio-only format, video-only format, or a container format containing both audio and video). Additionally or alternatively, the media format can be identified in the information (e.g., the proxy server 105 can determine and report the format). The example threshold generator 308 cross-references the determined media format with thresholds for known media formats to establish a bandwidth rate threshold (e.g., threshold 404 of Figures 4, 5A, and 5B) to distinguish between the media and auxiliary information embedded in the streaming media (block 602). The example threshold generator 308 sets the threshold for media differentiation based on the determined media format. The threshold represents a base value for bandwidth rate and is used to provide more accurate predictions than would be possible without a threshold (e.g., assuming that bandwidth below the threshold is so insignificant that monitoring should not occur until the threshold is achieved). For example, without a threshold, a prediction model could be created for bandwidth rate overlays of text embedded in a stream, which could lead to inconsistent end-of-stream predictions in some cases.
At block 603, the example bandwidth recorder 304 monitors the bandwidth rate forwarded from the example proxy server 105. In some examples, the bandwidth rate may fluctuate erratically while streaming media. In order to observe smoother bandwidth values, the example bandwidth recorder 304 uses a monitoring period to obtain a time-averaged bandwidth rate. For example, at the example bandwidth recorder 304, bandwidth values are monitored every tenth of a second over a two-second period. The value recorded as the bandwidth value by the example bandwidth recorder 304 is the average of twenty observed bandwidth usage rate values during the two-second period. In other examples, the value recorded by the example bandwidth recorder 304 can be an instantaneous bandwidth usage rate value, or can be averaged over an arbitrary time interval.
At block 604, the example bandwidth recorder 304 determines whether a media session is currently active between the user devices 101a-101c and the streaming media distributor 120. For example, the illustrated example bandwidth recorder 304 determines whether the proxy server 105 reports that the streaming media session is still open. If the example bandwidth recorder 304 determines that the streaming media session is no longer active, the example process 600 terminates. However, if the media session is still open, control passes to block 605.
At block 605, the example bandwidth recorder 304 compares the bandwidth rate to a threshold value to determine whether a prediction model should be generated. If the bandwidth rate is below the threshold, control returns to block 603 to wait for the bandwidth rate to exceed the threshold. If the example bandwidth recorder 304 determines that the measured bandwidth rate value exceeds the threshold, the example bandwidth recorder 304 uses the bandwidth rate that exceeded the threshold and the time at which the bandwidth rate exceeded the threshold as the initial value recorded in the metering data set (block 606). The example bandwidth recorder 304 records the subsequent bandwidth rate and associated timestamp in the metering data set and moves to block 618.
At block 618 , the bandwidth rate is below the threshold. When it is determined that the bandwidth value 400 is above the threshold, control remains at block 618 while the example bandwidth recorder 304 monitors the bandwidth value at or below the threshold.
When it is determined that the bandwidth value is below the threshold (block 618), the metering data set is determined to be complete. The example parameter generator 310 determines prediction model parameters based on the metering data set (block 620), which are used to generate the prediction model. For example, parameters such as mean, range (i.e., amplitude), standard deviation, and variance may be calculated by the example parameter generator 310. An example flow chart illustrating example machine-readable instructions (e.g., instructions for implementing the parameter generator 310) that may be executed to implement block 620 is depicted in FIG7. Upon calculating the prediction model parameters, the example parameter generator 310 notifies the example modeler 312 that the parameters are available for use in generating the prediction model 502. Control proceeds to block 625.
At block 625, the example modeler 312 generates a prediction model using the prediction model parameters calculated based on the metering data set. The prediction model can be generated by the example modeler 312 using a distribution function. For example, the prediction can be modeled using a Gaussian distribution modified in an exponential form.
In Equation 1, μ represents the mean of the metering dataset, σ2 represents the variance of the metering dataset, and λ represents the exponential rate (e.g., a decay factor). μ and σ2 are based on the metering dataset, and λ can be customized or adjusted based on the type of media being streamed.
Other suitable distributions may include chi-squared distribution, exponential distribution, gamma distribution, Laplace distribution, Pareto distribution, Weibull distribution, lognormal distribution, or any other suitable probability distribution that can be modeled with right-handed decay. In some other examples, a piecewise function consisting of multiple functions that define the behavior during a time interval can be used to generate a suitable prediction model. In other words, the example prediction model will have a maximum value over the time interval (-∞ < t < ∞) and will meet one of the following properties:
If the prediction model meets one of the above restrictions, the prediction model will decay after a maximum value and approach zero (or negative infinity) as time approaches infinity.
An example flow chart representing machine-readable instructions that may be used to implement block 625 is illustrated in FIG. 8 .
When the prediction model is generated, the example forecaster 314 iterates over the prediction model to determine when the value of the prediction model falls below a threshold value and returns the time as the predicted stream end time for the streaming media (block 627). Once identified, the example forecaster 314 forwards the time to the example stream end processor 316 to report (block 629). The time returned by the example stream end processor 316 can be a timestamp of the predicted end time and/or the amount of time remaining for the streaming media to be presented. When the predicted stream end time is reported, control returns to block 602 where the example bandwidth recorder 304 continues to monitor the bandwidth rate.
FIG7 is a flow chart 700 representing example machine-readable instructions that may be executed to implement block 620 of FIG6 for calculating parameters for a prediction model. At block 708, the example parameter generator 310 determines parameters using the values of the original data set to generate a distribution model. For example, the example parameter generator 310 may calculate the mean, standard deviation, magnitude, and variance of the metrology data set.
Next, the example parameter generator 310 identifies an attenuation factor associated with the characteristics of the streaming media (e.g., type, bitrate, codec, carrier, etc.) for use in generating the example prediction model (block 710). For the example exponentially modified Gaussian function, the attenuation factor would be λ of Equation 1, which determines the attenuation rate. In some examples, the value for λ is identified based on the type of media being streamed (e.g., video and/or audio). In other examples, the value of λ depends on the codec of the streamed media. For example, the example parameter generator 310 can reference a table of codecs with associated attenuation values (e.g., Flash Video or ".flv" files). In other examples, the value of λ is preconfigured prior to using the example predictor 130.
At block 712 , the generated parameters from block 708 and the identified attenuation factors from block 710 are stored for use by the example modeler 312 in generating a predictive model.
FIG8 is a flowchart 800 representing example machine-readable instructions of blocks 625 and 627 of FIG6 that may be executed to implement the prediction of flow end times. Beginning at block 802, the example modeler 312 obtains parameters and attenuation factors from the example parameter generator 310. At block 804, the example modeler 312 uses the parameter and attenuation factor values to generate a prediction model. For example, the mean, standard deviation, amplitude, and attenuation factor calculated from the metering data set are used in conjunction with Equation 1. Additionally, the time associated with each value in the metering data set is inserted, for example, as the value of x in Equation 1. Thus, using the function of Equation 1, a prediction model is generated based on the example exponentially modified Gaussian distribution.
At block 808, the example forecaster 314 of the illustrated example of FIG3 iterates over the prediction model generated in block 804 to determine when the value of the prediction model falls below a threshold. The iterative process can iterate over the prediction model in predetermined increments (or in some examples, adjustable increments). For example, the iterations can take several milliseconds. The example forecaster 314 begins iterations using the identified mean of the prediction model obtained from the generated parameters of block 708 of FIG7. As the prediction model begins to decay after the presence of a local peak, starting the forecast process at the mean (e.g., the time position of the peak) allows for faster processing by not calculating predicted values that occur before the peak.
Blocks 810 and 812 of the illustrated example illustrate iterative checks performed by the example forecaster 314. For example, if the value observed at block 810 is not below the threshold, the example forecaster 314 observes the next incremental value (block 812) and returns to block 810. When the value observed at block 810 is at or below the threshold, the example forecaster 314 moves to block 814.
At block 814, the example forecaster 314 obtains a time value associated with the observed value that is at or below the threshold. In some examples, the example forecaster 314 stores the time value as a predicted stream end time to predict the stream end time of the streaming media based on the metering data set. In some examples, the forecaster 314 may additionally or alternatively calculate the predicted duration of the streaming media by subtracting the stream end time from the media start time identified in the information received by the example bandwidth recorder 304.
9 is a block diagram of an example processor platform 900 capable of executing the instructions of FIG6 , FIG7 , and FIG8 to implement the predictor 130 of FIG3 . The processor platform 900 may be, for example, a server, a personal computer, a mobile device (e.g., a cellular phone, a smart phone, a tablet computer (such as an iPad ™ )), an Internet appliance, a digital video recorder, a smart TV, a smart Blu-ray player, a game console, a personal video recorder, a set-top box, or any other type of computing device capable of streaming media.
The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented via one or more integrated circuits, logic circuits, microprocessors, or controllers from any desired family or manufacturer.
The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example communicates with a main memory including a volatile memory 914 and a non-volatile memory 916 via a bus 918. The volatile memory 914 can be implemented via synchronous dynamic random access memory (SDRAM), dynamic random access memory (DRAM), memory bus dynamic random access memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 916 can be implemented via flash memory and/or any other desired type of memory device. Access to the main memories 914 and 916 is controlled by a memory controller.
The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented via any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 922 are connected to the interface circuitry 920. The input devices 922 allow a user to enter data and commands into the processor 912. The input devices may be implemented by, for example, an audio sensor, a microphone, a still camera or video recorder, a keyboard, buttons, a mouse, a touch screen, a touchpad, a trackball, isopoint, and/or a voice recognition system.
One or more output devices 924 are also connected to the illustrated interface circuit 920. The output device 924 can be implemented, for example, by a display device (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube (CRT) display, a touch screen, a tactile output device, a light emitting diode (LED), and/or a speaker). Thus, the illustrated interface circuit 920 typically includes a graphics driver card.
The interface circuitry 920 of the illustrated example also includes communication devices (such as transmitters, receivers, transceivers, modems, and/or network interface cards) that facilitate the exchange of data with an external machine (e.g., any kind of computing device) via a network 926 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, a coaxial cable, a cellular telephone system, etc.).
The processor platform 900 of the illustrated example also includes one or more mass storage devices 928 for storing software and/or data. Examples of such mass storage devices 928 include floppy disk drives, hard drives, optical disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.
The encoded instructions 932 of Figures 6, 7, and 8 may be stored in the mass storage device 928, in the volatile memory 914, in the non-volatile memory 916, and/or on a removable tangible computer-readable storage medium such as a CD or DVD.
From the foregoing, it will be appreciated that the examples disclosed above facilitate the use of prediction models to predict the end time of streaming media. Furthermore, the disclosed examples provide the ability to forecast the end time of a stream derived from the traffic behavior of a streaming media stream without accessing the streaming media application on user devices 101a-101c. This allows audience measurement entities and/or data collection facilities to accurately predict the end of a streaming media stream for targeted media delivery, more accurate ad extraction of ads embedded in streaming media, presentation of user surveys, and the like.
The disclosed examples also facilitate bandwidth conservation within the monitored home. The disclosed examples can be used to deliver targeted media and/or surveys at appropriate times without interrupting streaming. In homes with limited bandwidth, by anticipating the end of streaming, the audience measurement entity can determine when to deliver targeted media and/or surveys through continuous queries without consuming additional bandwidth.
The disclosed examples also facilitate conserving system bandwidth. In examples where a proxy server sends characteristic information about a streaming media stream instead of monitoring the streaming media, the required bandwidth is significantly reduced compared to monitoring methods. This monitoring method requires the entire streaming media stream to be monitored to the audience measurement entity, which requires a bandwidth equal to the streaming media bandwidth. Using the disclosed examples, the required bandwidth from the proxy server to the audience measurement entity is significantly reduced.
Although certain example methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.
Technical Field
The present disclosure relates generally to monitoring streaming media, and more particularly to methods and apparatus for predicting the end of streaming media using a predictive model.
Background Art
As used herein, streaming media refers to the media presented to the user by a presentation device that is at least partially parallel with the media sent from a media provider to the presentation device (or a device associated with the presentation device) (e.g., via a network). Sometimes, streaming media is used to present live events. However, streaming media can also be used for non-live events (e.g., time-shifted media presentation and/or video on demand presentation). Typically, temporally adjacent portions of a streaming media file are delivered to and stored in a buffer or temporary memory cache of a streaming media device while presenting streaming media to the user. The buffer releases the stored streaming media for presentation while continuing to be filled with the unplayed portion of streaming media. This process continues until the user terminates the presentation of streaming media and/or has delivered (e.g., downloaded) a complete streaming media file. In the event that a complete streaming media file has been delivered, the streaming media device typically continues to release the buffered streaming media for presentation until the buffer is cleared.
Buffers are used to compensate for issues such as fluctuations in bandwidth usage that cause "lag," or discontinuous delivery of media. Buffers mitigate the appearance of "lag" by holding a portion of a stream that can be presented while waiting for the delivery of additional streams. In some cases, as the buffer fills, the download speed of the stream (e.g., the rate of bandwidth usage) can speed up or slow down depending on the remaining space in the buffer.
In recent years, streaming media has become a popular medium for delivering media to users. Services like Netflix ™ and Amazon Instant Video ™ , as well as on-demand services provided by Internet Protocol (IP)-based television services (e.g., AT&T Uverse ™ ), are examples of providers of such streaming media. The instantaneous nature of streaming media and the increase in bandwidth capabilities of Internet service providers have contributed to the popularity of streaming media due to the high resolutions that can be streamed (which require increased delivery bandwidth). For example, when a user of a streaming device selects a movie from a streaming media distributor (such as Netflix ™ ), the movie can be presented almost immediately without having to wait for the entire movie file to be downloaded to the user's device.
Summary of the Invention
The present invention provides a method for predicting the end of streaming media, which includes the following steps: using a processor to execute instructions to determine the bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; using the processor to execute instructions to generate a prediction model based on the characteristics of the bandwidth rate; and using the processor to execute instructions to determine the time when the output of the prediction model is lower than a minimum bandwidth threshold as the end time of the presentation of the streaming media, and the end time of the presentation corresponds to the time when the streaming application stops presenting the streaming media on the presentation device.
The method further includes the step of determining a type of the streaming media presented in the streaming application, wherein the step of generating a prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
A decay factor for the prediction model is determined based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The step of generating the prediction model further includes calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The method further comprises the step of sending target media to the streaming application at the presentation end time of the streaming media.
The method further comprises the step of sending a survey to the streaming application at the end time of the presentation of the streaming media.
The present invention provides a device for predicting the end of streaming media, which includes: a unit for determining a bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; a unit for generating a prediction model based on characteristics of the bandwidth rate; and a unit for determining a time when an output of the prediction model is lower than a minimum bandwidth threshold as an end time of presentation of the streaming media, wherein the end time of presentation corresponds to a time when the streaming application stops presenting the streaming media on the presentation device.
The apparatus further comprises means for determining a type of the streaming media presented in the streaming application, wherein generating the prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
The apparatus further includes means for determining a decay factor for the prediction model based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The means for generating the prediction model further includes: a means for calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The apparatus further comprises: a unit for sending target media to the streaming application at the presentation end time of the streaming media.
The apparatus further comprises means for sending a survey to the streaming application at the end time of the presentation of the streaming media.
A device for predicting the end of streaming media, the device comprising: a bandwidth recorder that determines a bandwidth rate associated with streaming media presented in a streaming media application based on information received from an agent; a modeler that generates a prediction model based on characteristics of the bandwidth rate; and a predictor that determines a time when an output of the prediction model falls below a minimum bandwidth threshold as an end time of presentation of the streaming media, the end time corresponding to a time when the streaming media application stops presenting the streaming media on the presentation device, at least one of the bandwidth recorder, the modeler, and the predictor being implemented by a processor connected to a memory.
The device also includes: an identifier that determines the type of streaming media presented in the streaming application; and a threshold generator that sets the minimum bandwidth threshold based on the type of streaming media, wherein the modeler generates the prediction model in response to the bandwidth rate exceeding the minimum bandwidth threshold.
The type of the streaming media is at least one of video and audio.
The apparatus further includes a parameter generator that determines a decay factor for the prediction model based on the type of the streaming media.
The parameter generator further calculates prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The proxy also: routes the streaming media from a streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The device further includes a stream end processor configured to send target media to the streaming application at the presentation end time of the streaming media.
The stream end processor further sends target media to the streaming application at the presentation end time of the streaming media.
A tangible computer readable medium comprising instructions which, when executed, cause a machine to perform the above method.
BRIEF DESCRIPTION OF THE DRAWINGS
1 is a block diagram of an example system for streaming media to user devices.
FIG2 is a diagram of an example streaming media application.
3 is a block diagram of an example implementation of the predictor of FIG. 1 that predicts the end of streaming media.
FIG. 4 is an example graph illustrating bandwidth rates of streaming media applications observed during the processing of streaming media.
5A is an example graph of (a) the observed bandwidth rates of FIG. 4 and (b) an example prediction model.
5B is an example graph of (a) observed bandwidth rates of a streaming media application during the processing of streaming media and (b) a prediction model associated with the observed bandwidth rates.
6 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for predicting the end of streaming media.
7 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating parameters for predictive model generation.
8 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating a prediction model and forecasting a predicted end time for streaming media.
9 is a block diagram of an example processor system that may execute any of the machine-readable instructions represented by FIG. 6 , FIG. 7 , and/or FIG. 8 that implement the example predictor of FIG. 1 and/or FIG. 3 .
DETAILED DESCRIPTION
When a media device streams media from a streaming media distributor, data can be obtained from the communication between the streaming media device and the streaming media distributor. This data can be obtained by analyzing traffic patterns, analyzing communication packets, network taps, etc. Example data (or metadata) about the streaming media and/or streaming environment include media file formats, available buffer space of the streaming media device, bandwidth usage of the streaming media device, etc. This descriptive data can be used to supplement traditional data obtained by AME (e.g., audience composition and/or media identification associated with traditional media (e.g., radio and/or television) broadcasts) to create a more robust data set and allow the application of more fine-grained statistical methods.
Predicting the end of streaming is important in situations where access to the streaming distributor and/or streaming application is not available to directly obtain information about the end. For example, predicting the end of a streaming session can allow for more accurate streaming ad extraction for media credit ratings. In some cases, predicting the end of streaming can allow for targeted survey delivery. That is, predicting the end of streaming allows for the delivery of a survey near the end of streaming (e.g., shortly before the end) before the user shifts their attention away from the media presentation device at the end of the media presentation.
In some cases, the duration of the streaming presentation is extended or shortened from the duration of the streaming during media monitoring. For example, by rewinding, jumping, or fast-forwarding (e.g., tracking mode operation) the streaming (e.g., via progress bar manipulation), the duration of the presentation can be significantly longer or shorter than the duration of the streaming (e.g., when the streaming is applied without any tracking mode operation). By extrapolating or inferring the end of the streaming (and updating the analysis during the presentation), a more detailed and/or accurate duration can be obtained. Additionally or alternatively, target media can be provided to the user of the streaming media. Instead of waiting for a signal at the user device that the streaming media has ended, it is advantageous to predict when the streaming media will end. By predicting the end time, a more seamless transition to the target media can be generated.
The examples disclosed herein use a prediction model to predict the end of a streaming media presentation, the prediction model being based on characteristics of bandwidth during periods of buffer fill associated with the streaming of the media. The examples disclosed herein use the characteristics of bandwidth to extract parameters for use in the prediction model. The example prediction model is used to predict when the end of a streaming media file will be reached.
The examples disclosed herein may be applied to any streaming media protocol (e.g., Dynamic Adaptive Streaming over HTTP (DASH), adaptive bitrate streaming, HTTP Live Streaming (HLS), Real-Time Streaming Protocol (RTSP), Real-Time Protocol (RTP), Real-Time Control Protocol (RTCP), and/or any suitable combination or future protocols).
FIG1 is a block diagram of an example environment in which example methods, apparatus, and/or articles of manufacture disclosed herein can be used to predict the end time of streaming media. In the example environment of FIG1 , media is streamed from a streaming media distributor 120 to example user devices 101a-101c. The example environment includes example user devices 101a-101c, an example proxy server 105, an example network 115, and an example streaming media distributor 120. In the example of FIG1 , an audience measurement entity 125, such as Nielsen (USA) LLC, includes an example predictor 130 for predicting the end of streaming media.
In the illustrated example, one of the example user devices 101a-101c (e.g., example user device 101a) initiates a streaming application to stream the media. A request for media streaming is sent by the example user device 101a to the example streaming distributor 120. The request is routed via the example proxy server 105 and the example network 115. The example streaming distributor 120 responds to the request and begins streaming the media to the example user device 101a via the example proxy server 105 using an encrypted stream. The encrypted stream prevents the proxy server 105 from accessing information about tracking mode operation and/or timestamp information associated with the streaming media. While streaming the media to the example user device 101a, the example proxy server 105 extracts available data and/or metadata associated with the streaming media (e.g., bandwidth rate, source and destination ports, Internet Protocol addresses, etc.) and sends the extracted data and/or metadata to the predictor 130 at the example audience measurement entity 125. The example predictor 130 uses the transmitted data (e.g., bandwidth rate) to predict when the media will stop (or has stopped) being presented on the user device 101 a. For example, the predictor 130 predicts an end time during which the streaming of the media is not directly accessible to the example proxy server 105, the audience measurement entity 125, or the example predictor 130.
The example user devices 101a-101c of the illustrated example can be implemented by any device that supports streaming applications and/or streaming media (e.g., smart TVs, tablets, game consoles, mobile phones, smartphones, streaming devices, computers, laptops, tablets, digital versatile disc (DVD) players, Roku ™ devices, Internet television devices (e.g., Google ™ Chiomecast ™ , Google ™ TV, Apple ™ TV, etc.), and/or other electronic devices). The example user devices 101a-101c communicate with the example streaming media distributor 120 via the proxy server 105 using the network 115.
Example network 115 can be any type of communication network (e.g., the Internet, a local area network, a wide area network, a cellular data network, etc.) facilitated by wired and/or wireless connections (e.g., cable/DSL/satellite modems, cellular towers, etc.). Example networks can be local area networks, wide area networks, or any combination of networks.
The example proxy server 105 of the illustrated example is a network device located in a monitored home that acts as an intermediary for communications (e.g., including streaming requests and responses for streaming media) involving one or more of the example user devices 101a-101c and/or one or more other components connected to the example network 115. Alternatively, the example proxy server 105 can be located at a location separate from the monitored home. For example, the example proxy server 105 can be a router, gateway, server, and/or any device capable of acting as an intermediary for network traffic. For example, a broadband modem and/or a router can implement the proxy server 105. According to the illustrated example, the proxy server 105 acts as an intermediary for communications between the example user devices 101a-101c and the example streaming media distributor 120.
For example, when the example user device 101a sends a request for media to the streaming media distributor 120, the request is first routed to the example proxy server 105. The example proxy server 105 then sends the request to the example streaming media distributor 120 (e.g., the request may be sent after being modified to indicate that a response to the request should be routed to the proxy server 105). When the example streaming media distributor 120 responds to the request, the response is routed to the example proxy server 105, which resends the request to the example user device 101a.
As the example proxy server 105 is involved in communications associated with the example user devices 101a-101c, the example proxy server 105 is able to collect information about those communications. Although the example proxy server 105 is referred to as a "proxy" device, the proxy server 105 may not perform functions typically associated with a proxy (e.g., perform packet translation). Instead, the functions of the proxy server 105 described in the examples herein may be performed by any type of device that collects information about communications between the example user devices 101a-101c and the example streaming provider 120 (e.g., the example proxy server 105 may not participate in the communication chain, but may instead monitor communications from the sidelines using, for example, packet monitoring, packet snooping, or any other technology).
In the illustrated example, the proxy server 105 sends the collected information to the audience measurement entity 125. The example proxy server 105 collects, calculates, and/or correlates bandwidth information for streaming applications. In some examples, the example proxy server 105 identifies and collects data originating from the streaming distributor 120 and delivered to the user devices 101a-101c. For example, the example proxy server 105 may collect and correlate traffic based on one or more characteristics, such as Simple Network Management Protocol (SNMP), Internet Protocol (IP) address, a subprotocol of the Internet Protocol suite (e.g., Real Time Streaming Protocol (RTSP), port information, service destination, user agent, etc. One or more of the above characteristics may indicate a specific streaming distributor 120 (e.g., source IP address). The example proxy server 105 also determines the rate at which data passes through the proxy server 105 (e.g., bandwidth rate) and/or the rate at which data is streamed from the streaming distributor 120 to the user devices 101a-101c. Combining the correlation of traffic volume and the rate at which traffic is passing through the device (e.g., data rate, bandwidth rate, etc.) allows application-specific bandwidth rate monitoring. The proxy server 105 collects and sends the bandwidth rate and application identity of the streaming media application to the example predictor 130. In this way, neither data (e.g., bandwidth rate) needs to be sent from the media device rendering the streaming media nor data needs to be sent from the streaming media distributor sending the streaming media to the media device. Additionally or alternatively, the example proxy server 105 monitors the traffic volume to the example predictor 130 to collect, calculate, and/or correlate.
Other network topologies besides the one illustrated in FIG1 can be used with the example methods and apparatus disclosed herein. For example, the proxy server 105 can be excluded from the system 100 when other devices or components can provide information about the communications (e.g., bandwidth rates can be reported by the user devices 101a-101c). Additionally or alternatively, communications can be routed and/or monitored to the example audience measurement entity 125. In some such examples, the audience measurement entity 125 monitors and collects information about the communications with or without information from other devices, such as the proxy server 105.
The audience measurement entity 125 of the illustrated example includes an example predictor 130. In this example, the example predictor 130 obtains bandwidth rates from the proxy server 105 while the example user devices 101a-101c stream media from the example streaming distributor 120. However, as explained above, data rates (e.g., bandwidth rates) may alternatively be provided by other means. In some examples, control information, text overlays, etc. are embedded within the stream. Thus, it is desirable to create a threshold bandwidth rate that distinguishes the transmission of streaming media from the transmission of other data carried in the stream. An example selection of such a threshold is described in conjunction with FIG3 . In the illustrated example of FIG1 , the example predictor 130 analyzes the bandwidth rate forwarded by the example proxy server 105 and determines the stream end time of the streaming media when the bandwidth exceeds the threshold.
In the illustrated example, one or more of the user devices 101a-101c are associated with a panelist who has consented to be monitored by the audience measurement entity 125. A panelist is a user registered on a panel maintained by a rating entity (e.g., the audience measurement entity 125) that owns and/or operates the rating entity subsystem. Traditionally, an audience measurement entity (also referred to herein as a "rating entity") determines demographic coverage for advertising and media broadcasts based on the registered panelists. That is, the audience measurement entity 125 recruits people who consent to being monitored into the panel. During recruitment, the audience measurement entity receives demographic information from the recruiting personnel so that subsequent correlation can be made between advertising/media exposure to those panelists and different demographic markets.
People become panel members via, for example, a user interface presented on user devices 101a-101c (e.g., via a website). People may become panel members in additional or alternative ways (such as, for example, via a telephone interview, by completing an online survey, etc.). Additionally or alternatively, people may be contacted and/or recruited using any desired methodology (e.g., random selection, static selection, telephone solicitation, Internet advertising, surveys, advertising in a mall, product packaging, etc.).
In the illustrated example group member system, consent is obtained from the user when the user joins and/or registers for the group to monitor and analyze network data. For example, group members may consent to have their network traffic monitored by proxy server 105. While the example system of FIG. 1 is a group member-based system, non-group member and/or mixed group member systems may alternatively be employed.
FIG2 illustrates an example streaming application 201 executing on one of the example user devices 101a-101c. The example streaming application 201 of this example presents media obtained from a streaming media distributor 120 on the corresponding example device 101a-101c. The graphical user interface of the streaming application 201 presents data related to the presentation of the streaming media. In the example streaming application 201 of FIG2 , an elapsed time indicator 202 displays the length of the media presentation segment and the total length of the media. A file ID indicator 203 displays the file name of the streaming media being presented.
In some examples, the file ID indicator 203, when available (e.g., if the streaming media is being sent in an unencrypted stream), is analyzed by the example predictor 130 to determine the file format. The example predictor 130 can access the contents of the unencrypted streaming media packets (or encrypted packets where decryption is available). The example data packets can include headers or leading data indicating what video and/or audio is being streamed to the streaming application 201. The example bandwidth indication field 204 displays the current bandwidth usage rate of the streaming application 201. The example time remaining indicator 206 displays the predicted end time of the media, as indicated by the user device (e.g., 101a). The example progress bar 208 displays a graphical representation of the time remaining based on the values of the example elapsed time indicator 202 and the example time remaining indicator 206.
In some examples, the data displayed by the streaming application 201 (e.g., codec type, file name, and/or elapsed time) may be difficult to reach the example predictor 130. However, the example predictor 130 can measure the value of the bandwidth rate by monitoring the traffic between the user devices 101a-101c and the streaming distributor 120.
FIG3 is a block diagram of an example implementation of the example predictor 130 of FIG1. The example predictor 130 of FIG3 is provided with an example bandwidth recorder 304, an example identifier 306, an example threshold generator 308, an example parameter generator 310, an example modeler 312, an example forecaster 314, and an example end-of-flow processor 316.
The example bandwidth recorder 304 of Figure 3 observes and records bandwidth rates forwarded by the example proxy server 105 of Figure 1. In example Figure 3, the bandwidth recorder 304 communicates with the example identifier 306 and the example threshold generator 308. The bandwidth rates forwarded by the example proxy server 105 are the bandwidth rates associated with the streaming media application 201 when the streaming media application 201 streams media.
The example identifier 306 determines the format of the media streamed in the streaming application 201. In the example illustrated in Figure 3, when the streaming application 201 begins streaming media, the example identifier 306 analyzes the data transmitted by the proxy server 105 to the example bandwidth recorder 304 to determine the audio and/or video codec of the streaming media. In some examples, the example identifier 306 knows the file format of the media used by the streaming application 201 before streaming (because such file format can be proprietary) (for example, the file format is notified to the example identifier 306 by the example proxy server 105). The media format determined by the example identifier 306 is sent to the example bandwidth recorder 304. In some examples where the media format is not determined by the example identifier 306, the example bandwidth recorder 304 is notified that the media format has not been determined.
In the illustrated example, the example threshold generator 308 obtains the media format of the streaming media from the example identifier 306. Upon obtaining the media format, the example threshold generator 308 references a lookup table to determine a threshold value for the bandwidth rate, which indicates (1) that the bandwidth rate should begin (e.g., when the bandwidth exceeds a threshold) or stop (e.g., when the bandwidth is below a threshold) being stored in the metering data set and (2) that a prediction should be made regarding the end time of the stream. For example, when the bandwidth rate is above the set threshold, the bandwidth rate is recorded in the metering data set, and the predictor 130 is ready to generate a prediction. When the bandwidth rate is below the threshold, the bandwidth rate is not recorded in the metering data set, and the predictor 130 should generate a prediction regarding the complete metering data set.
In examples where the media format is not determined by the example identifier 306, the threshold value can be set to a default or predetermined value by the example threshold value generator 308. In some examples, the threshold value generator 308 determines that the format of the streaming media only contains streaming media and does not contain any other information such as text overlays and/or tracking mode commands. In such examples, the threshold value may not be set to record the bandwidth rate (e.g., because there is no need to distinguish between streaming media and other information carried in the stream, it can be determined that the threshold value is unnecessary or can be otherwise excluded). The threshold value generator 308 of the illustrated example sends the threshold value to the example bandwidth recorder 304.
In the illustrated example of FIG3 , the example bandwidth recorder 304 monitors and/or records bandwidth rates forwarded by the example proxy server 105 and compares the bandwidth rates to thresholds determined by the example threshold generator 308. When the example bandwidth recorder 304 determines that the bandwidth rate has reached or exceeded the threshold, the example bandwidth recorder 304 begins storing the bandwidth rate and its associated timestamp in a metering dataset. The metering dataset stores values of the bandwidth rate from a first time when the bandwidth rate meets or exceeds the threshold until a second time after the first time when the bandwidth rate reaches or falls below the threshold. When the metering dataset is complete, the metering dataset values are used to generate parameters (e.g., prediction model parameters) used to generate the prediction model. The example bandwidth recorder 304 monitors the bandwidth rate to determine when the bandwidth rate falls below a threshold set by the example threshold generator 308. When the bandwidth rate falls below the threshold after previously reaching or exceeding the threshold, the example modeler 312 is notified that the metering dataset (the bandwidth rate recorded between the time when the bandwidth rate reached or exceeded the threshold and the later time when the bandwidth rate reached or fell below the threshold) is ready for processing by the example parameter generator 310. The example bandwidth recorder 304 continues to monitor the bandwidth rate forwarded by the proxy server after the data set is complete.
The example parameter generator 310 of the illustrated example calculates and/or identifies a prediction model to generate a stream duration prediction model. Each time a prediction model is generated, the example parameter generator 310 generates a new set of parameters if the characteristics of the streaming media change. For example, if the streaming media is streamed using adaptive bitrate streaming, the bitrate of the streaming media may change during the streaming. The example parameter generator 310 accesses a metering dataset and begins a series of calculations to determine characteristic parameters of the metering dataset. In the illustrated example, the parameter generator 310 calculates the mean and standard deviation of the metering dataset. The example parameter generator 310 also identifies a decay factor for the prediction model. The decay factor represents the rate at which the prediction model decays or decreases from a peak value of the prediction model to zero (or negative infinity based on the prediction model used). In some examples, the decay factor can be identified based on the type of streaming media (e.g., audio and/or video). In other examples, the decay factor can be identified based on the codec of the streaming media. In some examples, the decay factor can be identified based on the bitrate of the streaming media. In yet other examples, the attenuation factor can be uniform for all media types and/or codecs. The example parameter generator 310 stores the prediction model parameters and the attenuation factor associated with the prediction model parameters. When the example parameter generator 310 generates parameters for a data set, the example parameter generator 310 notifies the example modeler 312.
The example modeler 312 of FIG3 generates a prediction model based on the prediction model parameters created by the example parameter generator 310. When the example modeler 312 receives notification from the example parameter generator 310 that a prediction model is to be generated, the example modeler 312 retrieves the prediction model parameters and attenuation factor associated with the streaming media. The example modeler 312 uses the parameters provided by the example parameter generator 310 to generate the prediction model. In some examples, the prediction model parameters can be adjusted before releasing the prediction model to the example forecaster 314. For example, the adjustments made by the example modeler 312 can align the numerical range (e.g., amplitude) and mean (e.g., time position) of the prediction model with the numerical range and mean of the metering data set used to generate the prediction model. When the numerical range and mean of the example prediction model match the numerical range and mean of the original data set, the prediction model is forwarded to the example bandwidth recorder 304 and the example forecaster 314.
The example bandwidth recorder 304 uses the prediction model while continuing to monitor the bandwidth rate sent by the example proxy server 105. When the prediction model has been generated, the example bandwidth recorder 304 continues to create a metering data set as described above and also compares the observed bandwidth rate with the prediction model. If the value of the bandwidth rate exceeds the prediction model (e.g., the magnitude of the bandwidth rate exceeds the magnitude of the prediction model), the example bandwidth recorder 304 signals the example parameter generator 310 that new parameters should be generated for the new metering data set to generate an updated prediction model.
The example forecaster 314 of FIG. 3 obtains a prediction model and begins iterating through the prediction model using time increments (e.g., tenths, hundredths, or thousandths of a second) starting from the mean (the mean is the time position of the maximum value of the metered data set). The prediction model is a function of time (as described in more detail below in conjunction with FIG. 6 ). Therefore, using the time value, the example forecaster 314 calculates a value for each time unit after the time position of the mean. The example forecaster 314 continues iterating by increasing the time value until the prediction model produces (or indicates) a value at or below the threshold generated by the example threshold generator 308. The value at or below the threshold indicates the time at which the example forecaster 314 predicts that the streaming media will end, or more specifically, the time at which the buffer on the user device is cleared and the presentation of the streaming media is complete after the streaming media is transferred via the network 115. When a value at or below the threshold is reached, the example forecaster 314 determines that the time at which the value at or below the threshold is identified is the predicted stream end time and forwards the stream end time to the example stream end processor 316. In some examples, when a threshold is not used, iterations performed by the example predictor 314 may stop when a value of zero (or the first negative value) is reached.
The example stream end processor 316 stores and/or transmits the predicted stream end time to a data collection facility located at or remote from the audience measurement entity 125. In some examples, the stream end processor 316 can perform other actions in response to the stream end time. For example, at the time indicated as the stream end time, the stream end processor 316 can transmit a survey to the user devices 101a-101c that streamed the media. In other examples, the predicted stream end time can be used to transmit a command to extract advertisements embedded in the streaming media.
Although an example manner of implementing the predictor 130 of FIG1 is illustrated in FIG3, one or more of the elements, processes, and/or devices illustrated in FIG3 may be combined, divided, rearranged, omitted, eliminated, and/or implemented in any other manner. Further, the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example forecaster 314, and the example flow end processor 316, and/or more generally the example predictor 130 of FIG1 may be implemented by hardware, software, firmware, and/or any combination of hardware, software, and/or firmware. Thus, for example, any of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or more generally the example predictor 130, can be implemented by one or more circuits, programmable processors, application specific integrated circuits (ASICs), programmable logic devices (PLDs), and/or field programmable logic devices (FPLDs). When reading any of the apparatus or system claims of this patent covering pure software and/or firmware implementations, at least one of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or the example predictor 130 is expressly defined herein as including a tangible computer-readable storage device or storage disk (such as a memory, DVD, CD, Blu-ray disc, etc.) storing software and/or firmware. Still further, the example predictor 130 of FIG. 1 may include one or more elements, processes, and/or devices in addition to or in place of those illustrated in FIG. 3 , and/or may include more than one of any or all of the illustrated elements, processes, and devices.
FIG4 illustrates a graphical illustration 400 of an example bandwidth rate forwarded from the example proxy server 105 of FIG1 for streaming example media to one of the example user devices 101a-101c. The example bandwidth rate represents the rate of traffic between the example streaming media distributor 120 and one of the example user devices 101a-101c, as seen by the proxy server 105. In the illustrated example of FIG4 , a buffer fill period during media streaming is represented by a bandwidth rate curve 402. For example, a buffer fill period is a period of time during which the buffer fills at an increasing rate and then at a decreasing rate with the downloaded media to be presented uninterrupted. In some examples of adaptive bitrate streaming, the streaming media file is divided into smaller packets for download. Downloading smaller packets to the buffer causes this rapid increase in bandwidth at approximately the same time as the buffer fill and empty cycles.
Observe that the example bandwidth rate curve 402 increases as the buffers of user devices 101a-101c fill (or a portion of the media is downloaded), and decreases when the buffers reach capacity (or a portion of the media has been transferred). At a certain capacity of the buffers or after downloading a certain percentage (e.g., 50%) of packets, user devices 101a-101c gradually reduce the bandwidth rate, or the speed at which data is downloaded. The gradual reduction occurs so that the downloaded data is not lost due to lack of buffer space. This behavior is represented by the shape of the bandwidth rate curve 402. As the buffers begin to fill, the bandwidth rate gradually increases to a peak value, and then begins to gradually decrease as the certain capacity is reached. This gradual reduction continues until the entire media file is downloaded (assuming no interruptions to the streaming).
In the illustrated example, bandwidth recorder 304 monitors the bandwidth forwarded by example proxy server 105. Example identifier 306 determines that the streaming media is in a flash video format, for example, and notifies example threshold generator 308 of the video format. Example threshold generator 308 sets threshold 404 and notifies example bandwidth recorder 304 of the threshold. When the bandwidth rate is observed to be at threshold 404 at time 405, example bandwidth recorder 304 begins storing the bandwidth rate in the metered data set. When the bandwidth rate is observed to be at threshold 404 at time 408 after previously exceeding the threshold at time 405, bandwidth recorder 304 stops adding values to the metered data set. Thus, the values of the bandwidth curve between time 405 and time 408 comprise metered data set 402 (also referred to herein as bandwidth rate curve 402). Although in some examples example predictor 130 does not know the time at which the media stops streaming at user devices 101a-101c (e.g., however, the end time can be predicted by predictor 130), the media is illustrated as ending presentation at time 410. Although streaming has stopped, reading from the buffers at the user devices 101a-101c continues for a period of time thereafter.
FIG5A illustrates the example curve 402 of FIG4 on a timeline with an example predictive model curve 502 generated by the example predictor 130 based on predictive model parameters generated from the metering dataset 402. At time 408 when the example metering dataset 402 falls below the example threshold 404, the example bandwidth recorder 304 notifies the example parameter generator 310 that the metering dataset 402 is complete. In the illustrated example of FIG5, the example parameter generator 310 calculates the mean 508, amplitude 514, and standard deviation 516 of the metering dataset 402. In addition, the parameter generator 310 determines an attenuation factor associated with the identified media type (e.g., flash video). The example parameter generator 310 makes the predictive model parameters (mean, amplitude, standard deviation, and attenuation factor) available to the example modeler 312. The example modeler 312 then generates the predictive model curve 502 using a model based on the predictive model parameters generated by the example parameter generator 310. In the illustrated example, the prediction model 502 is generated using an exponentially modified Gaussian (EMG) distribution function. Alternatively, other suitable prediction models may be used, as described in further detail below. The example modeler 312 sends the prediction model to the example bandwidth recorder 304 and the example forecaster 314.
The example predictor 314 then iterates the time values in the example prediction model 502 until the time-dependent solution (or value) 512 of the example prediction model 502 is at or below the threshold 404. In the illustrated example, the threshold 404 is used to determine the stream end time due to the characteristics of the prediction model used (exponentially modified Gaussian (EMG)). The EMG function does not go to zero until it reaches infinity, so the threshold can be used to indicate the bandwidth rate below which streaming is determined to have substantially ceased. In some examples, a second threshold can be used that is substantially closer to zero than the threshold 404 used to create the metering dataset. Regardless, the time position of the value 512 determined to be at or below the threshold is reported as the predicted stream end time. This method has been empirically found to predict a stream end time that is substantially close to the actual stream end time 410 observed at one of the user devices 101a-101c. The stream end time represents the time at which the entire media stream has been played out of the buffer.
FIG5B is an example graph illustrating observed bandwidth for streaming media and an associated predictive model curve. The illustrated example of FIG5B includes the example metering dataset 402 and the example predictive model curve 502 of FIG5A. However, in the example of FIG5B, after the bandwidth rate falls below the threshold 404, the media continues to stream, and the bandwidth recorder 304 determines that the bandwidth rate is at or above the threshold 404 at a second time 520. In response to the bandwidth rate exceeding the threshold 404 at time 520, the example bandwidth recorder 304 creates a second metering dataset 524. While recording the second metering dataset 524, the example bandwidth recorder 304 compares the recorded bandwidth rate with the previously generated predictive model curve 502. The example bandwidth recorder 304 determines that at time 526, the second metering dataset 524 has reached or exceeded the previous predictive model curve 502. If the bandwidth rate (e.g., the bandwidth rate of the second metering dataset 524) is greater than the bandwidth rate of the previous predictive model (e.g., the predictive model curve 502) when compared, a new predictive model is generated. The example bandwidth recorder 304 notifies the example forecaster 314 to disregard the example prediction model curve 502. The example parameter generator 310 generates new prediction model parameters upon observing that the second metering data set is at or below the threshold 404 at a second time (e.g., at time 527). The example modeler 312 generates a second prediction model 528, and the example forecaster 314 determines a new predicted flow end time 530 that is substantially close to the example flow end time 560 observed at the corresponding user devices 101a-101c. The example bandwidth recorder 304 continues to monitor the bandwidth rate as the data rate rises for a third time 570. However, because the third rapid rise in bandwidth rate 570 does not reach or exceed the threshold 404, no action is taken in this case. By continuing to monitor bandwidth rates and comparing them to the generated prediction model to trigger regeneration of the prediction model, a more accurate flow end time can be predicted.
FIG6 shows a flowchart representing example machine-readable instructions for implementing the predictor 130 of FIG3 . In this example, the machine-readable instructions comprise a program for execution by a processor, such as the processor 912 shown in the example processor platform 900 discussed below with respect to FIG6 . The program can be embodied as software stored on a tangible computer-readable storage medium (such as a CR-ROM, floppy disk, hard drive, digital versatile disk (DVD), Blu-ray disk), or memory associated with the processor 912 , but the entire program and/or portions of the program can alternatively be executed by a device other than the processor 912 and/or embodied in firmware or dedicated hardware. Furthermore, while the example program is described with reference to the flowchart illustrated in FIG6 , many other methods of implementing the example predictor 130 can alternatively be used. For example, the order of execution of the blocks can be changed, and/or some of the blocks can be changed, eliminated, or combined.
As described above, the example processes of Figures 6, 7, and 8 can be implemented using encoded instructions (e.g., computer and/or machine-readable instructions) stored on a tangible computer-readable storage medium (such as a hard drive, flash memory, read-only memory (ROM), compact disc (CD), digital versatile disc (DVD), cache, random access memory (RAM), and/or any other storage device or storage disk that internally stores information for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term tangible computer-readable storage medium is expressly defined to include any type of computer-readable storage device and/or storage disk, and is defined to exclude propagating signals. As used herein, "tangible computer-readable storage medium" and "tangible machine-readable storage substrate" are used interchangeably. Additionally or alternatively, the example processes of Figures 6, 7, and 8 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium, such as a hard drive, flash memory, read-only memory, compact disc, digital versatile disc, cache, random access memory, and/or any other storage device or storage disk that stores information internally for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable device and/or disk, and is defined to exclude propagating signals. As used herein, when the term "at least" is used as a transitional term in the preamble of a claim, the phrase is open ended in the same manner as the term "comprising" is open ended.
6 is a flow diagram representative of example machine-readable instructions that may be executed to implement the example predictor 130. The example program 600 may be initiated, for example, when the example user device 101a begins streaming media from the example streaming distributor 120 in a streaming application.
Initially, at block 601, the example identifier 306 identifies the format of a streaming media associated with information received by the example bandwidth recorder 304 from the example proxy server 105 and forwards the identified format to the example threshold generator 308. For example, when information about the streaming media arrives at the example bandwidth recorder 304 of the audience measurement entity 125, the media format is determined based on the information (e.g., audio-only format, video-only format, or a container format containing both audio and video). Additionally or alternatively, the media format can be identified in the information (e.g., the proxy server 105 can determine and report the format). The example threshold generator 308 cross-references the determined media format with thresholds for known media formats to establish a bandwidth rate threshold (e.g., threshold 404 of Figures 4, 5A, and 5B) to distinguish between the media and auxiliary information embedded in the streaming media (block 602). The example threshold generator 308 sets the threshold for media differentiation based on the determined media format. The threshold represents a base value for bandwidth rate and is used to provide more accurate predictions than would be possible without a threshold (e.g., assuming that bandwidth below the threshold is so insignificant that monitoring should not occur until the threshold is achieved). For example, without a threshold, a prediction model could be created for bandwidth rate overlays of text embedded in a stream, which could lead to inconsistent end-of-stream predictions in some cases.
At block 603, the example bandwidth recorder 304 monitors the bandwidth rate forwarded from the example proxy server 105. In some examples, the bandwidth rate may fluctuate erratically while streaming media. In order to observe smoother bandwidth values, the example bandwidth recorder 304 uses a monitoring period to obtain a time-averaged bandwidth rate. For example, at the example bandwidth recorder 304, bandwidth values are monitored every tenth of a second over a two-second period. The value recorded as the bandwidth value by the example bandwidth recorder 304 is the average of twenty observed bandwidth usage rate values during the two-second period. In other examples, the value recorded by the example bandwidth recorder 304 can be an instantaneous bandwidth usage rate value, or can be averaged over an arbitrary time interval.
At block 604, the example bandwidth recorder 304 determines whether a media session is currently active between the user devices 101a-101c and the streaming media distributor 120. For example, the illustrated example bandwidth recorder 304 determines whether the proxy server 105 reports that the streaming media session is still open. If the example bandwidth recorder 304 determines that the streaming media session is no longer active, the example process 600 terminates. However, if the media session is still open, control passes to block 605.
At block 605, the example bandwidth recorder 304 compares the bandwidth rate to a threshold value to determine whether a prediction model should be generated. If the bandwidth rate is below the threshold, control returns to block 603 to wait for the bandwidth rate to exceed the threshold. If the example bandwidth recorder 304 determines that the measured bandwidth rate value exceeds the threshold, the example bandwidth recorder 304 uses the bandwidth rate that exceeded the threshold and the time at which the bandwidth rate exceeded the threshold as the initial value recorded in the metering data set (block 606). The example bandwidth recorder 304 records the subsequent bandwidth rate and associated timestamp in the metering data set and moves to block 618.
At block 618 , the bandwidth rate is below the threshold. When it is determined that the bandwidth value 400 is above the threshold, control remains at block 618 while the example bandwidth recorder 304 monitors the bandwidth value at or below the threshold.
When it is determined that the bandwidth value is below the threshold (block 618), the metering data set is determined to be complete. The example parameter generator 310 determines prediction model parameters based on the metering data set (block 620), which are used to generate the prediction model. For example, parameters such as mean, range (i.e., amplitude), standard deviation, and variance may be calculated by the example parameter generator 310. An example flow chart illustrating example machine-readable instructions (e.g., instructions for implementing the parameter generator 310) that may be executed to implement block 620 is depicted in FIG7. Upon calculating the prediction model parameters, the example parameter generator 310 notifies the example modeler 312 that the parameters are available for use in generating the prediction model 502. Control proceeds to block 625.
At block 625, the example modeler 312 generates a prediction model using the prediction model parameters calculated based on the metering data set. The prediction model can be generated by the example modeler 312 using a distribution function. For example, the prediction can be modeled using a Gaussian distribution modified in an exponential form.
In Equation 1, μ represents the mean of the metering dataset, σ2 represents the variance of the metering dataset, and λ represents the exponential rate (e.g., a decay factor). μ and σ2 are based on the metering dataset, and λ can be customized or adjusted based on the type of media being streamed.
Other suitable distributions may include chi-squared distribution, exponential distribution, gamma distribution, Laplace distribution, Pareto distribution, Weibull distribution, lognormal distribution, or any other suitable probability distribution that can be modeled with right-handed decay. In some other examples, a piecewise function consisting of multiple functions that define the behavior during a time interval can be used to generate a suitable prediction model. In other words, the example prediction model will have a maximum value over the time interval (-∞ < t < ∞) and will meet one of the following properties:
If the prediction model meets one of the above restrictions, the prediction model will decay after a maximum value and approach zero (or negative infinity) as time approaches infinity.
An example flow chart representing machine-readable instructions that may be used to implement block 625 is illustrated in FIG. 8 .
When the prediction model is generated, the example forecaster 314 iterates over the prediction model to determine when the value of the prediction model falls below a threshold value and returns the time as the predicted stream end time for the streaming media (block 627). Once identified, the example forecaster 314 forwards the time to the example stream end processor 316 to report (block 629). The time returned by the example stream end processor 316 can be a timestamp of the predicted end time and/or the amount of time remaining for the streaming media to be presented. When the predicted stream end time is reported, control returns to block 602 where the example bandwidth recorder 304 continues to monitor the bandwidth rate.
FIG7 is a flow chart 700 representing example machine-readable instructions that may be executed to implement block 620 of FIG6 for calculating parameters for a prediction model. At block 708, the example parameter generator 310 determines parameters using the values of the original data set to generate a distribution model. For example, the example parameter generator 310 may calculate the mean, standard deviation, magnitude, and variance of the metrology data set.
Next, the example parameter generator 310 identifies an attenuation factor associated with the characteristics of the streaming media (e.g., type, bitrate, codec, carrier, etc.) for use in generating the example prediction model (block 710). For the example exponentially modified Gaussian function, the attenuation factor would be λ of Equation 1, which determines the attenuation rate. In some examples, the value for λ is identified based on the type of media being streamed (e.g., video and/or audio). In other examples, the value of λ depends on the codec of the streamed media. For example, the example parameter generator 310 can reference a table of codecs with associated attenuation values (e.g., Flash Video or ".flv" files). In other examples, the value of λ is preconfigured prior to using the example predictor 130.
At block 712 , the generated parameters from block 708 and the identified attenuation factors from block 710 are stored for use by the example modeler 312 in generating a predictive model.
FIG8 is a flowchart 800 representing example machine-readable instructions of blocks 625 and 627 of FIG6 that may be executed to implement the prediction of flow end times. Beginning at block 802, the example modeler 312 obtains parameters and attenuation factors from the example parameter generator 310. At block 804, the example modeler 312 uses the parameter and attenuation factor values to generate a prediction model. For example, the mean, standard deviation, amplitude, and attenuation factor calculated from the metering data set are used in conjunction with Equation 1. Additionally, the time associated with each value in the metering data set is inserted, for example, as the value of x in Equation 1. Thus, using the function of Equation 1, a prediction model is generated based on the example exponentially modified Gaussian distribution.
At block 808, the example forecaster 314 of the illustrated example of FIG3 iterates over the prediction model generated in block 804 to determine when the value of the prediction model falls below a threshold. The iterative process can iterate over the prediction model in predetermined increments (or in some examples, adjustable increments). For example, the iterations can take several milliseconds. The example forecaster 314 begins iterations using the identified mean of the prediction model obtained from the generated parameters of block 708 of FIG7. As the prediction model begins to decay after the presence of a local peak, starting the forecast process at the mean (e.g., the time position of the peak) allows for faster processing by not calculating predicted values that occur before the peak.
Blocks 810 and 812 of the illustrated example illustrate iterative checks performed by the example forecaster 314. For example, if the value observed at block 810 is not below the threshold, the example forecaster 314 observes the next incremental value (block 812) and returns to block 810. When the value observed at block 810 is at or below the threshold, the example forecaster 314 moves to block 814.
At block 814, the example forecaster 314 obtains a time value associated with the observed value that is at or below the threshold. In some examples, the example forecaster 314 stores the time value as a predicted stream end time to predict the stream end time of the streaming media based on the metering data set. In some examples, the forecaster 314 may additionally or alternatively calculate the predicted duration of the streaming media by subtracting the stream end time from the media start time identified in the information received by the example bandwidth recorder 304.
9 is a block diagram of an example processor platform 900 capable of executing the instructions of FIG6 , FIG7 , and FIG8 to implement the predictor 130 of FIG3 . The processor platform 900 may be, for example, a server, a personal computer, a mobile device (e.g., a cellular phone, a smart phone, a tablet computer (such as an iPad ™ )), an Internet appliance, a digital video recorder, a smart TV, a smart Blu-ray player, a game console, a personal video recorder, a set-top box, or any other type of computing device capable of streaming media.
The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented via one or more integrated circuits, logic circuits, microprocessors, or controllers from any desired family or manufacturer.
The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example communicates with a main memory including a volatile memory 914 and a non-volatile memory 916 via a bus 918. The volatile memory 914 can be implemented via synchronous dynamic random access memory (SDRAM), dynamic random access memory (DRAM), memory bus dynamic random access memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 916 can be implemented via flash memory and/or any other desired type of memory device. Access to the main memories 914 and 916 is controlled by a memory controller.
The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented via any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 922 are connected to the interface circuitry 920. The input devices 922 allow a user to enter data and commands into the processor 912. The input devices may be implemented by, for example, an audio sensor, a microphone, a still camera or video recorder, a keyboard, buttons, a mouse, a touch screen, a touchpad, a trackball, isopoint, and/or a voice recognition system.
One or more output devices 924 are also connected to the illustrated interface circuit 920. The output device 924 can be implemented, for example, by a display device (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube (CRT) display, a touch screen, a tactile output device, a light emitting diode (LED), and/or a speaker). Thus, the illustrated interface circuit 920 typically includes a graphics driver card.
The interface circuitry 920 of the illustrated example also includes communication devices (such as transmitters, receivers, transceivers, modems, and/or network interface cards) that facilitate the exchange of data with an external machine (e.g., any kind of computing device) via a network 926 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, a coaxial cable, a cellular telephone system, etc.).
The processor platform 900 of the illustrated example also includes one or more mass storage devices 928 for storing software and/or data. Examples of such mass storage devices 928 include floppy disk drives, hard drives, optical disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.
The encoded instructions 932 of Figures 6, 7, and 8 may be stored in the mass storage device 928, in the volatile memory 914, in the non-volatile memory 916, and/or on a removable tangible computer-readable storage medium such as a CD or DVD.
From the foregoing, it will be appreciated that the examples disclosed above facilitate the use of prediction models to predict the end time of streaming media. Furthermore, the disclosed examples provide the ability to forecast the end time of a stream derived from the traffic behavior of a streaming media stream without accessing the streaming media application on user devices 101a-101c. This allows audience measurement entities and/or data collection facilities to accurately predict the end of a streaming media stream for targeted media delivery, more accurate ad extraction of ads embedded in streaming media, presentation of user surveys, and the like.
The disclosed examples also facilitate bandwidth conservation within the monitored home. The disclosed examples can be used to deliver targeted media and/or surveys at appropriate times without interrupting streaming. In homes with limited bandwidth, by anticipating the end of streaming, the audience measurement entity can determine when to deliver targeted media and/or surveys through continuous queries without consuming additional bandwidth.
The disclosed examples also facilitate conserving system bandwidth. In examples where a proxy server sends characteristic information about a streaming media stream instead of monitoring the streaming media, the required bandwidth is significantly reduced compared to monitoring methods. This monitoring method requires the entire streaming media stream to be monitored to the audience measurement entity, which requires a bandwidth equal to the streaming media bandwidth. Using the disclosed examples, the required bandwidth from the proxy server to the audience measurement entity is significantly reduced.
Although certain example methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.
Technical Field
The present disclosure relates generally to monitoring streaming media, and more particularly to methods and apparatus for predicting the end of streaming media using a predictive model.
Background Art
As used herein, streaming media refers to the media presented to the user by a presentation device that is at least partially parallel with the media sent from a media provider to the presentation device (or a device associated with the presentation device) (e.g., via a network). Sometimes, streaming media is used to present live events. However, streaming media can also be used for non-live events (e.g., time-shifted media presentation and/or video on demand presentation). Typically, temporally adjacent portions of a streaming media file are delivered to and stored in a buffer or temporary memory cache of a streaming media device while presenting streaming media to the user. The buffer releases the stored streaming media for presentation while continuing to be filled with the unplayed portion of streaming media. This process continues until the user terminates the presentation of streaming media and/or has delivered (e.g., downloaded) a complete streaming media file. In the event that a complete streaming media file has been delivered, the streaming media device typically continues to release the buffered streaming media for presentation until the buffer is cleared.
Buffers are used to compensate for issues such as fluctuations in bandwidth usage that cause "lag," or discontinuous delivery of media. Buffers mitigate the appearance of "lag" by holding a portion of a stream that can be presented while waiting for the delivery of additional streams. In some cases, as the buffer fills, the download speed of the stream (e.g., the rate of bandwidth usage) can speed up or slow down depending on the remaining space in the buffer.
In recent years, streaming media has become a popular medium for delivering media to users. Services like Netflix ™ and Amazon Instant Video ™ , as well as on-demand services provided by Internet Protocol (IP)-based television services (e.g., AT&T Uverse ™ ), are examples of providers of such streaming media. The instantaneous nature of streaming media and the increase in bandwidth capabilities of Internet service providers have contributed to the popularity of streaming media due to the high resolutions that can be streamed (which require increased delivery bandwidth). For example, when a user of a streaming device selects a movie from a streaming media distributor (such as Netflix ™ ), the movie can be presented almost immediately without having to wait for the entire movie file to be downloaded to the user's device.
Summary of the Invention
The present invention provides a method for predicting the end of streaming media, which includes the following steps: using a processor to execute instructions to determine the bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; using the processor to execute instructions to generate a prediction model based on the characteristics of the bandwidth rate; and using the processor to execute instructions to determine the time when the output of the prediction model is lower than a minimum bandwidth threshold as the end time of the presentation of the streaming media, and the end time of the presentation corresponds to the time when the streaming application stops presenting the streaming media on the presentation device.
The method further includes the step of determining a type of the streaming media presented in the streaming application, wherein the step of generating a prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
A decay factor for the prediction model is determined based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The step of generating the prediction model further includes calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The method further comprises the step of sending target media to the streaming application at the presentation end time of the streaming media.
The method further comprises the step of sending a survey to the streaming application at the end time of the presentation of the streaming media.
The present invention provides a device for predicting the end of streaming media, which includes: a unit for determining a bandwidth rate associated with streaming media presented in a streaming application based on information received from an agent; a unit for generating a prediction model based on characteristics of the bandwidth rate; and a unit for determining a time when an output of the prediction model is lower than a minimum bandwidth threshold as an end time of presentation of the streaming media, wherein the end time of presentation corresponds to a time when the streaming application stops presenting the streaming media on the presentation device.
The apparatus further comprises means for determining a type of the streaming media presented in the streaming application, wherein generating the prediction model occurs in response to a bandwidth rate exceeding the minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of the streaming media.
The type of the streaming media is at least one of video and audio.
The apparatus further includes means for determining a decay factor for the prediction model based on the type of the streaming media.
The bandwidth rate also includes a timestamp associated with the bandwidth rate.
The means for generating the prediction model further includes: a means for calculating prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The agent: routes the streaming media from the streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The apparatus further comprises: a unit for sending target media to the streaming application at the presentation end time of the streaming media.
The apparatus further comprises means for sending a survey to the streaming application at the end time of the presentation of the streaming media.
A device for predicting the end of streaming media, the device comprising: a bandwidth recorder that determines a bandwidth rate associated with streaming media presented in a streaming media application based on information received from an agent; a modeler that generates a prediction model based on characteristics of the bandwidth rate; and a predictor that determines a time when an output of the prediction model falls below a minimum bandwidth threshold as an end time of presentation of the streaming media, the end time corresponding to a time when the streaming media application stops presenting the streaming media on the presentation device, at least one of the bandwidth recorder, the modeler, and the predictor being implemented by a processor connected to a memory.
The device also includes: an identifier that determines the type of streaming media presented in the streaming application; and a threshold generator that sets the minimum bandwidth threshold based on the type of streaming media, wherein the modeler generates the prediction model in response to the bandwidth rate exceeding the minimum bandwidth threshold.
The type of the streaming media is at least one of video and audio.
The apparatus further includes a parameter generator that determines a decay factor for the prediction model based on the type of the streaming media.
The parameter generator further calculates prediction model parameters by: determining a mean of the bandwidth rate; determining a magnitude of the bandwidth rate; and determining a standard deviation of the bandwidth rate.
The bandwidth rate is not received from a media device rendering the streaming media or a streaming media distributor sending the streaming media to the media device.
The agent is between the streaming application that presents the streaming media and the streaming distributor that sends the streaming media to the streaming application.
The proxy also: routes the streaming media from a streaming media distributor to the streaming media application; determines the bandwidth rate; and sends the bandwidth rate to an audience measurement entity.
The device further includes a stream end processor configured to send target media to the streaming application at the presentation end time of the streaming media.
The stream end processor further sends target media to the streaming application at the presentation end time of the streaming media.
A tangible computer readable medium comprising instructions which, when executed, cause a machine to perform the above method.
BRIEF DESCRIPTION OF THE DRAWINGS
1 is a block diagram of an example system for streaming media to user devices.
FIG2 is a diagram of an example streaming media application.
3 is a block diagram of an example implementation of the predictor of FIG. 1 that predicts the end of streaming media.
FIG. 4 is an example graph illustrating bandwidth rates of streaming media applications observed during the processing of streaming media.
5A is an example graph of (a) the observed bandwidth rates of FIG. 4 and (b) an example prediction model.
5B is an example graph of (a) observed bandwidth rates of a streaming media application during the processing of streaming media and (b) a prediction model associated with the observed bandwidth rates.
6 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for predicting the end of streaming media.
7 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating parameters for predictive model generation.
8 is a flow diagram representative of example machine readable instructions that may be executed to implement the example predictor of FIG. 3 for generating a prediction model and forecasting a predicted end time for streaming media.
9 is a block diagram of an example processor system that may execute any of the machine-readable instructions represented by FIG. 6 , FIG. 7 , and/or FIG. 8 that implement the example predictor of FIG. 1 and/or FIG. 3 .
DETAILED DESCRIPTION
When a media device streams media from a streaming media distributor, data can be obtained from the communication between the streaming media device and the streaming media distributor. This data can be obtained by analyzing traffic patterns, analyzing communication packets, network taps, etc. Example data (or metadata) about the streaming media and/or streaming environment include media file formats, available buffer space of the streaming media device, bandwidth usage of the streaming media device, etc. This descriptive data can be used to supplement traditional data obtained by AME (e.g., audience composition and/or media identification associated with traditional media (e.g., radio and/or television) broadcasts) to create a more robust data set and allow the application of more fine-grained statistical methods.
Predicting the end of streaming is important in situations where access to the streaming distributor and/or streaming application is not available to directly obtain information about the end. For example, predicting the end of a streaming session can allow for more accurate streaming ad extraction for media credit ratings. In some cases, predicting the end of streaming can allow for targeted survey delivery. That is, predicting the end of streaming allows for the delivery of a survey near the end of streaming (e.g., shortly before the end) before the user shifts their attention away from the media presentation device at the end of the media presentation.
In some cases, the duration of the streaming presentation is extended or shortened from the duration of the streaming during media monitoring. For example, by rewinding, jumping, or fast-forwarding (e.g., tracking mode operation) the streaming (e.g., via progress bar manipulation), the duration of the presentation can be significantly longer or shorter than the duration of the streaming (e.g., when the streaming is applied without any tracking mode operation). By extrapolating or inferring the end of the streaming (and updating the analysis during the presentation), a more detailed and/or accurate duration can be obtained. Additionally or alternatively, target media can be provided to the user of the streaming media. Instead of waiting for a signal at the user device that the streaming media has ended, it is advantageous to predict when the streaming media will end. By predicting the end time, a more seamless transition to the target media can be generated.
The examples disclosed herein use a prediction model to predict the end of a streaming media presentation, the prediction model being based on characteristics of bandwidth during periods of buffer fill associated with the streaming of the media. The examples disclosed herein use the characteristics of bandwidth to extract parameters for use in the prediction model. The example prediction model is used to predict when the end of a streaming media file will be reached.
The examples disclosed herein may be applied to any streaming media protocol (e.g., Dynamic Adaptive Streaming over HTTP (DASH), adaptive bitrate streaming, HTTP Live Streaming (HLS), Real-Time Streaming Protocol (RTSP), Real-Time Protocol (RTP), Real-Time Control Protocol (RTCP), and/or any suitable combination or future protocols).
FIG1 is a block diagram of an example environment in which example methods, apparatus, and/or articles of manufacture disclosed herein can be used to predict the end time of streaming media. In the example environment of FIG1 , media is streamed from a streaming media distributor 120 to example user devices 101a-101c. The example environment includes example user devices 101a-101c, an example proxy server 105, an example network 115, and an example streaming media distributor 120. In the example of FIG1 , an audience measurement entity 125, such as Nielsen (USA) LLC, includes an example predictor 130 for predicting the end of streaming media.
In the illustrated example, one of the example user devices 101a-101c (e.g., example user device 101a) initiates a streaming application to stream the media. A request for media streaming is sent by the example user device 101a to the example streaming distributor 120. The request is routed via the example proxy server 105 and the example network 115. The example streaming distributor 120 responds to the request and begins streaming the media to the example user device 101a via the example proxy server 105 using an encrypted stream. The encrypted stream prevents the proxy server 105 from accessing information about tracking mode operation and/or timestamp information associated with the streaming media. While streaming the media to the example user device 101a, the example proxy server 105 extracts available data and/or metadata associated with the streaming media (e.g., bandwidth rate, source and destination ports, Internet Protocol addresses, etc.) and sends the extracted data and/or metadata to the predictor 130 at the example audience measurement entity 125. The example predictor 130 uses the transmitted data (e.g., bandwidth rate) to predict when the media will stop (or has stopped) being presented on the user device 101 a. For example, the predictor 130 predicts an end time during which the streaming of the media is not directly accessible to the example proxy server 105, the audience measurement entity 125, or the example predictor 130.
The example user devices 101a-101c of the illustrated example can be implemented by any device that supports streaming applications and/or streaming media (e.g., smart TVs, tablets, game consoles, mobile phones, smartphones, streaming devices, computers, laptops, tablets, digital versatile disc (DVD) players, Roku ™ devices, Internet television devices (e.g., Google ™ Chiomecast ™ , Google ™ TV, Apple ™ TV, etc.), and/or other electronic devices). The example user devices 101a-101c communicate with the example streaming media distributor 120 via the proxy server 105 using the network 115.
Example network 115 can be any type of communication network (e.g., the Internet, a local area network, a wide area network, a cellular data network, etc.) facilitated by wired and/or wireless connections (e.g., cable/DSL/satellite modems, cellular towers, etc.). Example networks can be local area networks, wide area networks, or any combination of networks.
The example proxy server 105 of the illustrated example is a network device located in a monitored home that acts as an intermediary for communications (e.g., including streaming requests and responses for streaming media) involving one or more of the example user devices 101a-101c and/or one or more other components connected to the example network 115. Alternatively, the example proxy server 105 can be located at a location separate from the monitored home. For example, the example proxy server 105 can be a router, gateway, server, and/or any device capable of acting as an intermediary for network traffic. For example, a broadband modem and/or a router can implement the proxy server 105. According to the illustrated example, the proxy server 105 acts as an intermediary for communications between the example user devices 101a-101c and the example streaming media distributor 120.
For example, when the example user device 101a sends a request for media to the streaming media distributor 120, the request is first routed to the example proxy server 105. The example proxy server 105 then sends the request to the example streaming media distributor 120 (e.g., the request may be sent after being modified to indicate that a response to the request should be routed to the proxy server 105). When the example streaming media distributor 120 responds to the request, the response is routed to the example proxy server 105, which resends the request to the example user device 101a.
As the example proxy server 105 is involved in communications associated with the example user devices 101a-101c, the example proxy server 105 is able to collect information about those communications. Although the example proxy server 105 is referred to as a "proxy" device, the proxy server 105 may not perform functions typically associated with a proxy (e.g., perform packet translation). Instead, the functions of the proxy server 105 described in the examples herein may be performed by any type of device that collects information about communications between the example user devices 101a-101c and the example streaming provider 120 (e.g., the example proxy server 105 may not participate in the communication chain, but may instead monitor communications from the sidelines using, for example, packet monitoring, packet snooping, or any other technology).
In the illustrated example, the proxy server 105 sends the collected information to the audience measurement entity 125. The example proxy server 105 collects, calculates, and/or correlates bandwidth information for streaming applications. In some examples, the example proxy server 105 identifies and collects data originating from the streaming distributor 120 and delivered to the user devices 101a-101c. For example, the example proxy server 105 may collect and correlate traffic based on one or more characteristics, such as Simple Network Management Protocol (SNMP), Internet Protocol (IP) address, a subprotocol of the Internet Protocol suite (e.g., Real Time Streaming Protocol (RTSP), port information, service destination, user agent, etc. One or more of the above characteristics may indicate a specific streaming distributor 120 (e.g., source IP address). The example proxy server 105 also determines the rate at which data passes through the proxy server 105 (e.g., bandwidth rate) and/or the rate at which data is streamed from the streaming distributor 120 to the user devices 101a-101c. Combining the correlation of traffic volume and the rate at which traffic is passing through the device (e.g., data rate, bandwidth rate, etc.) allows application-specific bandwidth rate monitoring. The proxy server 105 collects and sends the bandwidth rate and application identity of the streaming media application to the example predictor 130. In this way, neither data (e.g., bandwidth rate) needs to be sent from the media device rendering the streaming media nor data needs to be sent from the streaming media distributor sending the streaming media to the media device. Additionally or alternatively, the example proxy server 105 monitors the traffic volume to the example predictor 130 to collect, calculate, and/or correlate.
Other network topologies besides the one illustrated in FIG1 can be used with the example methods and apparatus disclosed herein. For example, the proxy server 105 can be excluded from the system 100 when other devices or components can provide information about the communications (e.g., bandwidth rates can be reported by the user devices 101a-101c). Additionally or alternatively, communications can be routed and/or monitored to the example audience measurement entity 125. In some such examples, the audience measurement entity 125 monitors and collects information about the communications with or without information from other devices, such as the proxy server 105.
The audience measurement entity 125 of the illustrated example includes an example predictor 130. In this example, the example predictor 130 obtains bandwidth rates from the proxy server 105 while the example user devices 101a-101c stream media from the example streaming distributor 120. However, as explained above, data rates (e.g., bandwidth rates) may alternatively be provided by other means. In some examples, control information, text overlays, etc. are embedded within the stream. Thus, it is desirable to create a threshold bandwidth rate that distinguishes the transmission of streaming media from the transmission of other data carried in the stream. An example selection of such a threshold is described in conjunction with FIG3 . In the illustrated example of FIG1 , the example predictor 130 analyzes the bandwidth rate forwarded by the example proxy server 105 and determines the stream end time of the streaming media when the bandwidth exceeds the threshold.
In the illustrated example, one or more of the user devices 101a-101c are associated with a panelist who has consented to be monitored by the audience measurement entity 125. A panelist is a user registered on a panel maintained by a rating entity (e.g., the audience measurement entity 125) that owns and/or operates the rating entity subsystem. Traditionally, an audience measurement entity (also referred to herein as a "rating entity") determines demographic coverage for advertising and media broadcasts based on the registered panelists. That is, the audience measurement entity 125 recruits people who consent to being monitored into the panel. During recruitment, the audience measurement entity receives demographic information from the recruiting personnel so that subsequent correlation can be made between advertising/media exposure to those panelists and different demographic markets.
People become panel members via, for example, a user interface presented on user devices 101a-101c (e.g., via a website). People may become panel members in additional or alternative ways (such as, for example, via a telephone interview, by completing an online survey, etc.). Additionally or alternatively, people may be contacted and/or recruited using any desired methodology (e.g., random selection, static selection, telephone solicitation, Internet advertising, surveys, advertising in a mall, product packaging, etc.).
In the illustrated example group member system, consent is obtained from the user when the user joins and/or registers for the group to monitor and analyze network data. For example, group members may consent to have their network traffic monitored by proxy server 105. While the example system of FIG. 1 is a group member-based system, non-group member and/or mixed group member systems may alternatively be employed.
FIG2 illustrates an example streaming application 201 executing on one of the example user devices 101a-101c. The example streaming application 201 of this example presents media obtained from a streaming media distributor 120 on the corresponding example device 101a-101c. The graphical user interface of the streaming application 201 presents data related to the presentation of the streaming media. In the example streaming application 201 of FIG2 , an elapsed time indicator 202 displays the length of the media presentation segment and the total length of the media. A file ID indicator 203 displays the file name of the streaming media being presented.
In some examples, the file ID indicator 203, when available (e.g., if the streaming media is being sent in an unencrypted stream), is analyzed by the example predictor 130 to determine the file format. The example predictor 130 can access the contents of the unencrypted streaming media packets (or encrypted packets where decryption is available). The example data packets can include headers or leading data indicating what video and/or audio is being streamed to the streaming application 201. The example bandwidth indication field 204 displays the current bandwidth usage rate of the streaming application 201. The example time remaining indicator 206 displays the predicted end time of the media, as indicated by the user device (e.g., 101a). The example progress bar 208 displays a graphical representation of the time remaining based on the values of the example elapsed time indicator 202 and the example time remaining indicator 206.
In some examples, the data displayed by the streaming application 201 (e.g., codec type, file name, and/or elapsed time) may be difficult to reach the example predictor 130. However, the example predictor 130 can measure the value of the bandwidth rate by monitoring the traffic between the user devices 101a-101c and the streaming distributor 120.
FIG3 is a block diagram of an example implementation of the example predictor 130 of FIG1. The example predictor 130 of FIG3 is provided with an example bandwidth recorder 304, an example identifier 306, an example threshold generator 308, an example parameter generator 310, an example modeler 312, an example forecaster 314, and an example end-of-flow processor 316.
The example bandwidth recorder 304 of Figure 3 observes and records bandwidth rates forwarded by the example proxy server 105 of Figure 1. In example Figure 3, the bandwidth recorder 304 communicates with the example identifier 306 and the example threshold generator 308. The bandwidth rates forwarded by the example proxy server 105 are the bandwidth rates associated with the streaming media application 201 when the streaming media application 201 streams media.
The example identifier 306 determines the format of the media streamed in the streaming application 201. In the example illustrated in Figure 3, when the streaming application 201 begins streaming media, the example identifier 306 analyzes the data transmitted by the proxy server 105 to the example bandwidth recorder 304 to determine the audio and/or video codec of the streaming media. In some examples, the example identifier 306 knows the file format of the media used by the streaming application 201 before streaming (because such file format can be proprietary) (for example, the file format is notified to the example identifier 306 by the example proxy server 105). The media format determined by the example identifier 306 is sent to the example bandwidth recorder 304. In some examples where the media format is not determined by the example identifier 306, the example bandwidth recorder 304 is notified that the media format has not been determined.
In the illustrated example, the example threshold generator 308 obtains the media format of the streaming media from the example identifier 306. Upon obtaining the media format, the example threshold generator 308 references a lookup table to determine a threshold value for the bandwidth rate, which indicates (1) that the bandwidth rate should begin (e.g., when the bandwidth exceeds a threshold) or stop (e.g., when the bandwidth is below a threshold) being stored in the metering data set and (2) that a prediction should be made regarding the end time of the stream. For example, when the bandwidth rate is above the set threshold, the bandwidth rate is recorded in the metering data set, and the predictor 130 is ready to generate a prediction. When the bandwidth rate is below the threshold, the bandwidth rate is not recorded in the metering data set, and the predictor 130 should generate a prediction regarding the complete metering data set.
In examples where the media format is not determined by the example identifier 306, the threshold value can be set to a default or predetermined value by the example threshold value generator 308. In some examples, the threshold value generator 308 determines that the format of the streaming media only contains streaming media and does not contain any other information such as text overlays and/or tracking mode commands. In such examples, the threshold value may not be set to record the bandwidth rate (e.g., because there is no need to distinguish between streaming media and other information carried in the stream, it can be determined that the threshold value is unnecessary or can be otherwise excluded). The threshold value generator 308 of the illustrated example sends the threshold value to the example bandwidth recorder 304.
In the illustrated example of FIG3 , the example bandwidth recorder 304 monitors and/or records bandwidth rates forwarded by the example proxy server 105 and compares the bandwidth rates to thresholds determined by the example threshold generator 308. When the example bandwidth recorder 304 determines that the bandwidth rate has reached or exceeded the threshold, the example bandwidth recorder 304 begins storing the bandwidth rate and its associated timestamp in a metering dataset. The metering dataset stores values of the bandwidth rate from a first time when the bandwidth rate meets or exceeds the threshold until a second time after the first time when the bandwidth rate reaches or falls below the threshold. When the metering dataset is complete, the metering dataset values are used to generate parameters (e.g., prediction model parameters) used to generate the prediction model. The example bandwidth recorder 304 monitors the bandwidth rate to determine when the bandwidth rate falls below a threshold set by the example threshold generator 308. When the bandwidth rate falls below the threshold after previously reaching or exceeding the threshold, the example modeler 312 is notified that the metering dataset (the bandwidth rate recorded between the time when the bandwidth rate reached or exceeded the threshold and the later time when the bandwidth rate reached or fell below the threshold) is ready for processing by the example parameter generator 310. The example bandwidth recorder 304 continues to monitor the bandwidth rate forwarded by the proxy server after the data set is complete.
The example parameter generator 310 of the illustrated example calculates and/or identifies a prediction model to generate a stream duration prediction model. Each time a prediction model is generated, the example parameter generator 310 generates a new set of parameters if the characteristics of the streaming media change. For example, if the streaming media is streamed using adaptive bitrate streaming, the bitrate of the streaming media may change during the streaming. The example parameter generator 310 accesses a metering dataset and begins a series of calculations to determine characteristic parameters of the metering dataset. In the illustrated example, the parameter generator 310 calculates the mean and standard deviation of the metering dataset. The example parameter generator 310 also identifies a decay factor for the prediction model. The decay factor represents the rate at which the prediction model decays or decreases from a peak value of the prediction model to zero (or negative infinity based on the prediction model used). In some examples, the decay factor can be identified based on the type of streaming media (e.g., audio and/or video). In other examples, the decay factor can be identified based on the codec of the streaming media. In some examples, the decay factor can be identified based on the bitrate of the streaming media. In yet other examples, the attenuation factor can be uniform for all media types and/or codecs. The example parameter generator 310 stores the prediction model parameters and the attenuation factor associated with the prediction model parameters. When the example parameter generator 310 generates parameters for a data set, the example parameter generator 310 notifies the example modeler 312.
The example modeler 312 of FIG3 generates a prediction model based on the prediction model parameters created by the example parameter generator 310. When the example modeler 312 receives notification from the example parameter generator 310 that a prediction model is to be generated, the example modeler 312 retrieves the prediction model parameters and attenuation factor associated with the streaming media. The example modeler 312 uses the parameters provided by the example parameter generator 310 to generate the prediction model. In some examples, the prediction model parameters can be adjusted before releasing the prediction model to the example forecaster 314. For example, the adjustments made by the example modeler 312 can align the numerical range (e.g., amplitude) and mean (e.g., time position) of the prediction model with the numerical range and mean of the metering data set used to generate the prediction model. When the numerical range and mean of the example prediction model match the numerical range and mean of the original data set, the prediction model is forwarded to the example bandwidth recorder 304 and the example forecaster 314.
The example bandwidth recorder 304 uses the prediction model while continuing to monitor the bandwidth rate sent by the example proxy server 105. When the prediction model has been generated, the example bandwidth recorder 304 continues to create a metering data set as described above and also compares the observed bandwidth rate with the prediction model. If the value of the bandwidth rate exceeds the prediction model (e.g., the magnitude of the bandwidth rate exceeds the magnitude of the prediction model), the example bandwidth recorder 304 signals the example parameter generator 310 that new parameters should be generated for the new metering data set to generate an updated prediction model.
The example forecaster 314 of FIG. 3 obtains a prediction model and begins iterating through the prediction model using time increments (e.g., tenths, hundredths, or thousandths of a second) starting from the mean (the mean is the time position of the maximum value of the metered data set). The prediction model is a function of time (as described in more detail below in conjunction with FIG. 6 ). Therefore, using the time value, the example forecaster 314 calculates a value for each time unit after the time position of the mean. The example forecaster 314 continues iterating by increasing the time value until the prediction model produces (or indicates) a value at or below the threshold generated by the example threshold generator 308. The value at or below the threshold indicates the time at which the example forecaster 314 predicts that the streaming media will end, or more specifically, the time at which the buffer on the user device is cleared and the presentation of the streaming media is complete after the streaming media is transferred via the network 115. When a value at or below the threshold is reached, the example forecaster 314 determines that the time at which the value at or below the threshold is identified is the predicted stream end time and forwards the stream end time to the example stream end processor 316. In some examples, when a threshold is not used, iterations performed by the example predictor 314 may stop when a value of zero (or the first negative value) is reached.
The example stream end processor 316 stores and/or transmits the predicted stream end time to a data collection facility located at or remote from the audience measurement entity 125. In some examples, the stream end processor 316 can perform other actions in response to the stream end time. For example, at the time indicated as the stream end time, the stream end processor 316 can transmit a survey to the user devices 101a-101c that streamed the media. In other examples, the predicted stream end time can be used to transmit a command to extract advertisements embedded in the streaming media.
Although an example manner of implementing the predictor 130 of FIG1 is illustrated in FIG3, one or more of the elements, processes, and/or devices illustrated in FIG3 may be combined, divided, rearranged, omitted, eliminated, and/or implemented in any other manner. Further, the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example forecaster 314, and the example flow end processor 316, and/or more generally the example predictor 130 of FIG1 may be implemented by hardware, software, firmware, and/or any combination of hardware, software, and/or firmware. Thus, for example, any of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or more generally the example predictor 130, can be implemented by one or more circuits, programmable processors, application specific integrated circuits (ASICs), programmable logic devices (PLDs), and/or field programmable logic devices (FPLDs). When reading any of the apparatus or system claims of this patent covering pure software and/or firmware implementations, at least one of the example bandwidth recorder 304, the example identifier 306, the example threshold generator 308, the example parameter generator 310, the example modeler 312, the example predictor 314, and the example flow end processor 316, and/or the example predictor 130 is expressly defined herein as including a tangible computer-readable storage device or storage disk (such as a memory, DVD, CD, Blu-ray disc, etc.) storing software and/or firmware. Still further, the example predictor 130 of FIG. 1 may include one or more elements, processes, and/or devices in addition to or in place of those illustrated in FIG. 3 , and/or may include more than one of any or all of the illustrated elements, processes, and devices.
FIG4 illustrates a graphical illustration 400 of an example bandwidth rate forwarded from the example proxy server 105 of FIG1 for streaming example media to one of the example user devices 101a-101c. The example bandwidth rate represents the rate of traffic between the example streaming media distributor 120 and one of the example user devices 101a-101c, as seen by the proxy server 105. In the illustrated example of FIG4 , a buffer fill period during media streaming is represented by a bandwidth rate curve 402. For example, a buffer fill period is a period of time during which the buffer fills at an increasing rate and then at a decreasing rate with the downloaded media to be presented uninterrupted. In some examples of adaptive bitrate streaming, the streaming media file is divided into smaller packets for download. Downloading smaller packets to the buffer causes this rapid increase in bandwidth at approximately the same time as the buffer fill and empty cycles.
Observe that the example bandwidth rate curve 402 increases as the buffers of user devices 101a-101c fill (or a portion of the media is downloaded), and decreases when the buffers reach capacity (or a portion of the media has been transferred). At a certain capacity of the buffers or after downloading a certain percentage (e.g., 50%) of packets, user devices 101a-101c gradually reduce the bandwidth rate, or the speed at which data is downloaded. The gradual reduction occurs so that the downloaded data is not lost due to lack of buffer space. This behavior is represented by the shape of the bandwidth rate curve 402. As the buffers begin to fill, the bandwidth rate gradually increases to a peak value, and then begins to gradually decrease as the certain capacity is reached. This gradual reduction continues until the entire media file is downloaded (assuming no interruptions to the streaming).
In the illustrated example, bandwidth recorder 304 monitors the bandwidth forwarded by example proxy server 105. Example identifier 306 determines that the streaming media is in a flash video format, for example, and notifies example threshold generator 308 of the video format. Example threshold generator 308 sets threshold 404 and notifies example bandwidth recorder 304 of the threshold. When the bandwidth rate is observed to be at threshold 404 at time 405, example bandwidth recorder 304 begins storing the bandwidth rate in the metered data set. When the bandwidth rate is observed to be at threshold 404 at time 408 after previously exceeding the threshold at time 405, bandwidth recorder 304 stops adding values to the metered data set. Thus, the values of the bandwidth curve between time 405 and time 408 comprise metered data set 402 (also referred to herein as bandwidth rate curve 402). Although in some examples example predictor 130 does not know the time at which the media stops streaming at user devices 101a-101c (e.g., however, the end time can be predicted by predictor 130), the media is illustrated as ending presentation at time 410. Although streaming has stopped, reading from the buffers at the user devices 101a-101c continues for a period of time thereafter.
FIG5A illustrates the example curve 402 of FIG4 on a timeline with an example predictive model curve 502 generated by the example predictor 130 based on predictive model parameters generated from the metering dataset 402. At time 408 when the example metering dataset 402 falls below the example threshold 404, the example bandwidth recorder 304 notifies the example parameter generator 310 that the metering dataset 402 is complete. In the illustrated example of FIG5, the example parameter generator 310 calculates the mean 508, amplitude 514, and standard deviation 516 of the metering dataset 402. In addition, the parameter generator 310 determines an attenuation factor associated with the identified media type (e.g., flash video). The example parameter generator 310 makes the predictive model parameters (mean, amplitude, standard deviation, and attenuation factor) available to the example modeler 312. The example modeler 312 then generates the predictive model curve 502 using a model based on the predictive model parameters generated by the example parameter generator 310. In the illustrated example, the prediction model 502 is generated using an exponentially modified Gaussian (EMG) distribution function. Alternatively, other suitable prediction models may be used, as described in further detail below. The example modeler 312 sends the prediction model to the example bandwidth recorder 304 and the example forecaster 314.
The example predictor 314 then iterates the time values in the example prediction model 502 until the time-dependent solution (or value) 512 of the example prediction model 502 is at or below the threshold 404. In the illustrated example, the threshold 404 is used to determine the stream end time due to the characteristics of the prediction model used (exponentially modified Gaussian (EMG)). The EMG function does not go to zero until it reaches infinity, so the threshold can be used to indicate the bandwidth rate below which streaming is determined to have substantially ceased. In some examples, a second threshold can be used that is substantially closer to zero than the threshold 404 used to create the metering dataset. Regardless, the time position of the value 512 determined to be at or below the threshold is reported as the predicted stream end time. This method has been empirically found to predict a stream end time that is substantially close to the actual stream end time 410 observed at one of the user devices 101a-101c. The stream end time represents the time at which the entire media stream has been played out of the buffer.
FIG5B is an example graph illustrating observed bandwidth for streaming media and an associated predictive model curve. The illustrated example of FIG5B includes the example metering dataset 402 and the example predictive model curve 502 of FIG5A. However, in the example of FIG5B, after the bandwidth rate falls below the threshold 404, the media continues to stream, and the bandwidth recorder 304 determines that the bandwidth rate is at or above the threshold 404 at a second time 520. In response to the bandwidth rate exceeding the threshold 404 at time 520, the example bandwidth recorder 304 creates a second metering dataset 524. While recording the second metering dataset 524, the example bandwidth recorder 304 compares the recorded bandwidth rate with the previously generated predictive model curve 502. The example bandwidth recorder 304 determines that at time 526, the second metering dataset 524 has reached or exceeded the previous predictive model curve 502. If the bandwidth rate (e.g., the bandwidth rate of the second metering dataset 524) is greater than the bandwidth rate of the previous predictive model (e.g., the predictive model curve 502) when compared, a new predictive model is generated. The example bandwidth recorder 304 notifies the example forecaster 314 to disregard the example prediction model curve 502. The example parameter generator 310 generates new prediction model parameters upon observing that the second metering data set is at or below the threshold 404 at a second time (e.g., at time 527). The example modeler 312 generates a second prediction model 528, and the example forecaster 314 determines a new predicted flow end time 530 that is substantially close to the example flow end time 560 observed at the corresponding user devices 101a-101c. The example bandwidth recorder 304 continues to monitor the bandwidth rate as the data rate rises for a third time 570. However, because the third rapid rise in bandwidth rate 570 does not reach or exceed the threshold 404, no action is taken in this case. By continuing to monitor bandwidth rates and comparing them to the generated prediction model to trigger regeneration of the prediction model, a more accurate flow end time can be predicted.
FIG6 shows a flowchart representing example machine-readable instructions for implementing the predictor 130 of FIG3 . In this example, the machine-readable instructions comprise a program for execution by a processor, such as the processor 912 shown in the example processor platform 900 discussed below with respect to FIG6 . The program can be embodied as software stored on a tangible computer-readable storage medium (such as a CR-ROM, floppy disk, hard drive, digital versatile disk (DVD), Blu-ray disk), or memory associated with the processor 912 , but the entire program and/or portions of the program can alternatively be executed by a device other than the processor 912 and/or embodied in firmware or dedicated hardware. Furthermore, while the example program is described with reference to the flowchart illustrated in FIG6 , many other methods of implementing the example predictor 130 can alternatively be used. For example, the order of execution of the blocks can be changed, and/or some of the blocks can be changed, eliminated, or combined.
As described above, the example processes of Figures 6, 7, and 8 can be implemented using encoded instructions (e.g., computer and/or machine-readable instructions) stored on a tangible computer-readable storage medium (such as a hard drive, flash memory, read-only memory (ROM), compact disc (CD), digital versatile disc (DVD), cache, random access memory (RAM), and/or any other storage device or storage disk that internally stores information for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term tangible computer-readable storage medium is expressly defined to include any type of computer-readable storage device and/or storage disk, and is defined to exclude propagating signals. As used herein, "tangible computer-readable storage medium" and "tangible machine-readable storage substrate" are used interchangeably. Additionally or alternatively, the example processes of Figures 6, 7, and 8 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium, such as a hard drive, flash memory, read-only memory, compact disc, digital versatile disc, cache, random access memory, and/or any other storage device or storage disk that stores information internally for any duration (e.g., for an extended period of time, permanently, briefly, temporarily buffered, and/or cached). As used herein, the term non-transitory computer readable medium is expressly defined to include any type of computer readable device and/or disk, and is defined to exclude propagating signals. As used herein, when the term "at least" is used as a transitional term in the preamble of a claim, the phrase is open ended in the same manner as the term "comprising" is open ended.
6 is a flow diagram representative of example machine-readable instructions that may be executed to implement the example predictor 130. The example program 600 may be initiated, for example, when the example user device 101a begins streaming media from the example streaming distributor 120 in a streaming application.
Initially, at block 601, the example identifier 306 identifies the format of a streaming media associated with information received by the example bandwidth recorder 304 from the example proxy server 105 and forwards the identified format to the example threshold generator 308. For example, when information about the streaming media arrives at the example bandwidth recorder 304 of the audience measurement entity 125, the media format is determined based on the information (e.g., audio-only format, video-only format, or a container format containing both audio and video). Additionally or alternatively, the media format can be identified in the information (e.g., the proxy server 105 can determine and report the format). The example threshold generator 308 cross-references the determined media format with thresholds for known media formats to establish a bandwidth rate threshold (e.g., threshold 404 of Figures 4, 5A, and 5B) to distinguish between the media and auxiliary information embedded in the streaming media (block 602). The example threshold generator 308 sets the threshold for media differentiation based on the determined media format. The threshold represents a base value for bandwidth rate and is used to provide more accurate predictions than would be possible without a threshold (e.g., assuming that bandwidth below the threshold is so insignificant that monitoring should not occur until the threshold is achieved). For example, without a threshold, a prediction model could be created for bandwidth rate overlays of text embedded in a stream, which could lead to inconsistent end-of-stream predictions in some cases.
At block 603, the example bandwidth recorder 304 monitors the bandwidth rate forwarded from the example proxy server 105. In some examples, the bandwidth rate may fluctuate erratically while streaming media. In order to observe smoother bandwidth values, the example bandwidth recorder 304 uses a monitoring period to obtain a time-averaged bandwidth rate. For example, at the example bandwidth recorder 304, bandwidth values are monitored every tenth of a second over a two-second period. The value recorded as the bandwidth value by the example bandwidth recorder 304 is the average of twenty observed bandwidth usage rate values during the two-second period. In other examples, the value recorded by the example bandwidth recorder 304 can be an instantaneous bandwidth usage rate value, or can be averaged over an arbitrary time interval.
At block 604, the example bandwidth recorder 304 determines whether a media session is currently active between the user devices 101a-101c and the streaming media distributor 120. For example, the illustrated example bandwidth recorder 304 determines whether the proxy server 105 reports that the streaming media session is still open. If the example bandwidth recorder 304 determines that the streaming media session is no longer active, the example process 600 terminates. However, if the media session is still open, control passes to block 605.
At block 605, the example bandwidth recorder 304 compares the bandwidth rate to a threshold value to determine whether a prediction model should be generated. If the bandwidth rate is below the threshold, control returns to block 603 to wait for the bandwidth rate to exceed the threshold. If the example bandwidth recorder 304 determines that the measured bandwidth rate value exceeds the threshold, the example bandwidth recorder 304 uses the bandwidth rate that exceeded the threshold and the time at which the bandwidth rate exceeded the threshold as the initial value recorded in the metering data set (block 606). The example bandwidth recorder 304 records the subsequent bandwidth rate and associated timestamp in the metering data set and moves to block 618.
At block 618 , the bandwidth rate is below the threshold. When it is determined that the bandwidth value 400 is above the threshold, control remains at block 618 while the example bandwidth recorder 304 monitors the bandwidth value at or below the threshold.
When it is determined that the bandwidth value is below the threshold (block 618), the metering data set is determined to be complete. The example parameter generator 310 determines prediction model parameters based on the metering data set (block 620), which are used to generate the prediction model. For example, parameters such as mean, range (i.e., amplitude), standard deviation, and variance may be calculated by the example parameter generator 310. An example flow chart illustrating example machine-readable instructions (e.g., instructions for implementing the parameter generator 310) that may be executed to implement block 620 is depicted in FIG7. Upon calculating the prediction model parameters, the example parameter generator 310 notifies the example modeler 312 that the parameters are available for use in generating the prediction model 502. Control proceeds to block 625.
At block 625, the example modeler 312 generates a prediction model using the prediction model parameters calculated based on the metering data set. The prediction model can be generated by the example modeler 312 using a distribution function. For example, the prediction can be modeled using a Gaussian distribution modified in an exponential form.
In Equation 1, μ represents the mean of the metering dataset, σ2 represents the variance of the metering dataset, and λ represents the exponential rate (e.g., a decay factor). μ and σ2 are based on the metering dataset, and λ can be customized or adjusted based on the type of media being streamed.
Other suitable distributions may include chi-squared distribution, exponential distribution, gamma distribution, Laplace distribution, Pareto distribution, Weibull distribution, lognormal distribution, or any other suitable probability distribution that can be modeled with right-handed decay. In some other examples, a piecewise function consisting of multiple functions that define the behavior during a time interval can be used to generate a suitable prediction model. In other words, the example prediction model will have a maximum value over the time interval (-∞ < t < ∞) and will meet one of the following properties:
If the prediction model meets one of the above restrictions, the prediction model will decay after a maximum value and approach zero (or negative infinity) as time approaches infinity.
An example flow chart representing machine-readable instructions that may be used to implement block 625 is illustrated in FIG. 8 .
When the prediction model is generated, the example forecaster 314 iterates over the prediction model to determine when the value of the prediction model falls below a threshold value and returns the time as the predicted stream end time for the streaming media (block 627). Once identified, the example forecaster 314 forwards the time to the example stream end processor 316 to report (block 629). The time returned by the example stream end processor 316 can be a timestamp of the predicted end time and/or the amount of time remaining for the streaming media to be presented. When the predicted stream end time is reported, control returns to block 602 where the example bandwidth recorder 304 continues to monitor the bandwidth rate.
FIG7 is a flow chart 700 representing example machine-readable instructions that may be executed to implement block 620 of FIG6 for calculating parameters for a prediction model. At block 708, the example parameter generator 310 determines parameters using the values of the original data set to generate a distribution model. For example, the example parameter generator 310 may calculate the mean, standard deviation, magnitude, and variance of the metrology data set.
Next, the example parameter generator 310 identifies an attenuation factor associated with the characteristics of the streaming media (e.g., type, bitrate, codec, carrier, etc.) for use in generating the example prediction model (block 710). For the example exponentially modified Gaussian function, the attenuation factor would be λ of Equation 1, which determines the attenuation rate. In some examples, the value for λ is identified based on the type of media being streamed (e.g., video and/or audio). In other examples, the value of λ depends on the codec of the streamed media. For example, the example parameter generator 310 can reference a table of codecs with associated attenuation values (e.g., Flash Video or ".flv" files). In other examples, the value of λ is preconfigured prior to using the example predictor 130.
At block 712 , the generated parameters from block 708 and the identified attenuation factors from block 710 are stored for use by the example modeler 312 in generating a predictive model.
FIG8 is a flowchart 800 representing example machine-readable instructions of blocks 625 and 627 of FIG6 that may be executed to implement the prediction of flow end times. Beginning at block 802, the example modeler 312 obtains parameters and attenuation factors from the example parameter generator 310. At block 804, the example modeler 312 uses the parameter and attenuation factor values to generate a prediction model. For example, the mean, standard deviation, amplitude, and attenuation factor calculated from the metering data set are used in conjunction with Equation 1. Additionally, the time associated with each value in the metering data set is inserted, for example, as the value of x in Equation 1. Thus, using the function of Equation 1, a prediction model is generated based on the example exponentially modified Gaussian distribution.
At block 808, the example forecaster 314 of the illustrated example of FIG3 iterates over the prediction model generated in block 804 to determine when the value of the prediction model falls below a threshold. The iterative process can iterate over the prediction model in predetermined increments (or in some examples, adjustable increments). For example, the iterations can take several milliseconds. The example forecaster 314 begins iterations using the identified mean of the prediction model obtained from the generated parameters of block 708 of FIG7. As the prediction model begins to decay after the presence of a local peak, starting the forecast process at the mean (e.g., the time position of the peak) allows for faster processing by not calculating predicted values that occur before the peak.
Blocks 810 and 812 of the illustrated example illustrate iterative checks performed by the example forecaster 314. For example, if the value observed at block 810 is not below the threshold, the example forecaster 314 observes the next incremental value (block 812) and returns to block 810. When the value observed at block 810 is at or below the threshold, the example forecaster 314 moves to block 814.
At block 814, the example forecaster 314 obtains a time value associated with the observed value that is at or below the threshold. In some examples, the example forecaster 314 stores the time value as a predicted stream end time to predict the stream end time of the streaming media based on the metering data set. In some examples, the forecaster 314 may additionally or alternatively calculate the predicted duration of the streaming media by subtracting the stream end time from the media start time identified in the information received by the example bandwidth recorder 304.
9 is a block diagram of an example processor platform 900 capable of executing the instructions of FIG6 , FIG7 , and FIG8 to implement the predictor 130 of FIG3 . The processor platform 900 may be, for example, a server, a personal computer, a mobile device (e.g., a cellular phone, a smart phone, a tablet computer (such as an iPad ™ )), an Internet appliance, a digital video recorder, a smart TV, a smart Blu-ray player, a game console, a personal video recorder, a set-top box, or any other type of computing device capable of streaming media.
The processor platform 900 of the illustrated example includes a processor 912. The processor 912 of the illustrated example is hardware. For example, the processor 912 can be implemented via one or more integrated circuits, logic circuits, microprocessors, or controllers from any desired family or manufacturer.
The processor 912 of the illustrated example includes a local memory 913 (e.g., a cache). The processor 912 of the illustrated example communicates with a main memory including a volatile memory 914 and a non-volatile memory 916 via a bus 918. The volatile memory 914 can be implemented via synchronous dynamic random access memory (SDRAM), dynamic random access memory (DRAM), memory bus dynamic random access memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 916 can be implemented via flash memory and/or any other desired type of memory device. Access to the main memories 914 and 916 is controlled by a memory controller.
The processor platform 900 of the illustrated example also includes an interface circuit 920. The interface circuit 920 may be implemented via any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 922 are connected to the interface circuitry 920. The input devices 922 allow a user to enter data and commands into the processor 912. The input devices may be implemented by, for example, an audio sensor, a microphone, a still camera or video recorder, a keyboard, buttons, a mouse, a touch screen, a touchpad, a trackball, isopoint, and/or a voice recognition system.
One or more output devices 924 are also connected to the illustrated interface circuit 920. The output device 924 can be implemented, for example, by a display device (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube (CRT) display, a touch screen, a tactile output device, a light emitting diode (LED), and/or a speaker). Thus, the illustrated interface circuit 920 typically includes a graphics driver card.
The interface circuitry 920 of the illustrated example also includes communication devices (such as transmitters, receivers, transceivers, modems, and/or network interface cards) that facilitate the exchange of data with an external machine (e.g., any kind of computing device) via a network 926 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, a coaxial cable, a cellular telephone system, etc.).
The processor platform 900 of the illustrated example also includes one or more mass storage devices 928 for storing software and/or data. Examples of such mass storage devices 928 include floppy disk drives, hard drives, optical disk drives, Blu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.
The encoded instructions 932 of Figures 6, 7, and 8 may be stored in the mass storage device 928, in the volatile memory 914, in the non-volatile memory 916, and/or on a removable tangible computer-readable storage medium such as a CD or DVD.
From the foregoing, it will be appreciated that the examples disclosed above facilitate the use of prediction models to predict the end time of streaming media. Furthermore, the disclosed examples provide the ability to forecast the end time of a stream derived from the traffic behavior of a streaming media stream without accessing the streaming media application on user devices 101a-101c. This allows audience measurement entities and/or data collection facilities to accurately predict the end of a streaming media stream for targeted media delivery, more accurate ad extraction of ads embedded in streaming media, presentation of user surveys, and the like.
The disclosed examples also facilitate bandwidth conservation within the monitored home. The disclosed examples can be used to deliver targeted media and/or surveys at appropriate times without interrupting streaming. In homes with limited bandwidth, by anticipating the end of streaming, the audience measurement entity can determine when to deliver targeted media and/or surveys through continuous queries without consuming additional bandwidth.
The disclosed examples also facilitate conserving system bandwidth. In examples where a proxy server sends characteristic information about a streaming media stream instead of monitoring the streaming media, the required bandwidth is significantly reduced compared to monitoring methods. This monitoring method requires the entire streaming media stream to be monitored to the audience measurement entity, which requires a bandwidth equal to the streaming media bandwidth. Using the disclosed examples, the required bandwidth from the proxy server to the audience measurement entity is significantly reduced.
Although certain example methods, apparatus, and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.

Claims (33)

1. A method for predicting the end of a streaming media stream using a predictive model, the method comprising the following steps:
By utilizing the processor to execute instructions, the bandwidth rate associated with the streaming media presented on the presentation device in the streaming application is determined based on information received from the agent;
By utilizing the processor to execute instructions, a predictive model is generated based on the characteristics of the bandwidth rate; and
By using the processor to execute instructions, the time when the output of the prediction model falls below a minimum bandwidth threshold is determined as the presentation end time of the streaming media, which corresponds to the time when the streaming media application stops presenting the streaming media on the presentation device.
2. The method according to claim 1, further comprising the following steps:
Determine the type of streaming media presented in the streaming media application, wherein the step of generating a prediction model occurs in response to a bandwidth rate exceeding a minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of streaming media.
3. The method of claim 2, wherein the type of the streaming media is at least one of video and audio.
4. The method according to claim 2, further comprising the following steps:
The attenuation factor for the prediction model is determined based on the type of the streaming media.
5. The method of claim 1, wherein the bandwidth rate further includes a timestamp associated with the bandwidth rate.
6. The method according to claim 1, wherein the step of generating the prediction model further comprises:
The prediction model parameters are calculated as follows:
Determine the average value of the bandwidth rate;
Determine the magnitude of the bandwidth rate; and
Determine the standard deviation of the bandwidth rate.
7. The method of claim 1, wherein the bandwidth rate is not received from the media device presenting the streaming media or from the streaming media distributor sending the streaming media to the media device.
8. The method according to any one of claims 1 to 7, wherein the agent is between the streaming media application that presents the streaming media and the streaming media distributor that sends the streaming media to the streaming media application.
9. The method of claim 8, wherein the agent:
The streaming media is routed from the streaming media distribution direction to the streaming media application;
Determine the bandwidth rate; and
The bandwidth rate is sent to the audience measurement entity.
10. The method according to any one of claims 1 to 7, further comprising the step of:
The target media is sent to the streaming application at the end of the streaming media presentation time.
11. The method according to any one of claims 1 to 7, further comprising the step of:
A survey is sent to the streaming application at the end of the streaming media presentation time.
12. An apparatus for predicting the end of a streaming media using a predictive model, the apparatus comprising:
A unit for determining the bandwidth rate associated with the streaming media presented on the presentation device in a streaming media application based on information received from the agent;
A unit for generating a prediction model based on the characteristics of the bandwidth rate; and
A unit for determining the time when the output of the prediction model falls below a minimum bandwidth threshold as the presentation end time of the streaming media, the presentation end time corresponding to the time when the streaming media application stops presenting the streaming media on the presentation device.
13. The apparatus of claim 12, further comprising:
A unit for determining the type of streaming media presented in the streaming media application, wherein the generation of the prediction model occurs in response to a bandwidth rate exceeding a minimum bandwidth threshold, the minimum bandwidth threshold being based on the type of streaming media.
14. The apparatus of claim 13, wherein the type of the streaming media is at least one of video and audio.
15. The apparatus of claim 13, further comprising:
A unit for determining the attenuation factor for the prediction model based on the type of the streaming media.
16. The apparatus of claim 12, wherein the bandwidth rate further includes a timestamp associated with the bandwidth rate.
17. The apparatus according to any one of claims 12 to 16, wherein the unit for generating the prediction model further comprises:
The unit used to calculate the parameters of the prediction model as follows:
Determine the average value of the bandwidth rate;
Determine the magnitude of the bandwidth rate; and
Determine the standard deviation of the bandwidth rate.
18. The apparatus according to any one of claims 12 to 16, wherein the bandwidth rate is not received from the media device presenting the streaming media or from the streaming media distributor sending the streaming media to the media device.
19. The apparatus according to any one of claims 12 to 16, wherein the agent is between the streaming application that presents the streaming media and the streaming media distributor that sends the streaming media to the streaming application.
20. The apparatus of claim 19, wherein the agent:
The streaming media is routed from the streaming media distribution direction to the streaming media application;
Determine the bandwidth rate; and
The bandwidth rate is sent to the audience measurement entity.
21. The apparatus according to any one of claims 12 to 16, further comprising:
A unit for sending the target media to the streaming application at the end time of the presentation of the streaming media.
22. The apparatus according to any one of claims 12 to 16, further comprising:
A unit for sending a survey to the streaming application at the end time of the presentation of the streaming media.
23. A device for predicting the end of a streaming media using a predictive model, the device comprising:
A bandwidth recorder that determines the bandwidth rate associated with the streaming media presented on the presentation device in a streaming application based on information received from the agent.
A modeler that generates a predictive model based on the characteristics of the bandwidth rate; and
A predictor that determines the time when the output of the prediction model falls below a minimum bandwidth threshold as the presentation end time of the streaming media, the presentation end time corresponding to the time when the streaming media application stops presenting the streaming media on the presentation device, wherein at least one of the bandwidth recorder, the modeler, and the predictor is implemented by a processor coupled to memory.
24. The apparatus of claim 23, further comprising:
A recognizer that determines the type of streaming media presented in the streaming media application; and
A threshold generator that sets the minimum bandwidth threshold based on the type of the streaming media, wherein the modeler generates the prediction model in response to a bandwidth rate exceeding the minimum bandwidth threshold.
25. The device of claim 24, wherein the type of the streaming media is at least one of video and audio.
26. The apparatus of claim 24, further comprising:
A parameter generator that determines a decay factor for the prediction model based on the type of the streaming media.
27. The device according to claim 26, wherein the parameter generator further comprises:
The prediction model parameters are calculated as follows:
Determine the average value of the bandwidth rate;
Determine the magnitude of the bandwidth rate; and
Determine the standard deviation of the bandwidth rate.
28. The device according to any one of claims 23 to 27, wherein the bandwidth rate is not received from the media device presenting the streaming media or from the streaming media distributor sending the streaming media to the media device.
29. The device according to any one of claims 23 to 27, wherein the agent is between the streaming application that presents the streaming media and the streaming media distributor that sends the streaming media to the streaming application.
30. The device according to any one of claims 23 to 27, wherein the agent further:
The streaming media is routed from the streaming media distribution direction to the streaming media application;
Determine the bandwidth rate; and
The bandwidth rate is sent to the audience measurement entity.
31. The device according to any one of claims 23 to 27, the device further comprising:
A stream termination processor that sends the target media to the streaming application at the end of the streaming media's presentation time.
32. The device according to claim 31, wherein the stream termination processor further comprises:
The target media is sent to the streaming application at the end of the streaming media presentation time.
33. A tangible computer-readable medium comprising instructions that, when executed, cause a machine to perform the method according to any one of claims 1 to 11.
HK17110902.7A 2014-08-29 2014-12-02 Method and apparatus for predicting end of streaming media using prediction model HK1237151B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/473,602 2014-08-29

Publications (2)

Publication Number Publication Date
HK1237151A1 HK1237151A1 (en) 2018-04-06
HK1237151B true HK1237151B (en) 2021-04-30

Family

ID=

Similar Documents

Publication Publication Date Title
US11765061B2 (en) Methods and apparatus to predict end of streaming media using a prediction model
US11831950B2 (en) Methods and apparatus to measure exposure to streaming media
US11558676B2 (en) Methods and apparatus to synthesize reference media signatures
US10153960B2 (en) Determining an end time of streaming media
US9769523B2 (en) Video efficacy measurement
HK40040556A (en) Method and apparatus for identifying an end of a streaming media session, readable medium
HK40040556B (en) Method and apparatus for identifying an end of a streaming media session, readable medium
HK1237151A1 (en) Method and apparatus for predicting end of streaming media using prediction model