This description relates to downloading videos with commercials to mobile devices.
In general, in an aspect, a video is downloaded to a mobile device. The video includes a TV show and commercials embedded within the TV show. The video is stored persistently on the mobile device. At least part of the video is played on the mobile device while the device is offline. Metadata is stored on the mobile device that indicates an expiry of the downloaded video. The mobile device performs an action at a time related to the expiry.
Implementations may include one or any two or more of the following features. The action includes refraining from playing out the downloaded video. The action includes deleting the downloaded video. The action is performed at a time when the mobile device is offline. The video includes one or more playlist files and one or more segments, and the playlist files and the segments are stored persistently on the mobile device. The expiry of the video is expressed as a date. The expiry of the video is expressed as an amount of time following an earlier fixed date and time. The mobile device downloads fewer than all of the segments. The mobile device can play the downloaded segments while the device is offline. The mobile device downloads multiple segments concurrently. At least part of the downloading occurs only when the mobile device is connected to a WiFi network and when the mobile device is being powered by an external source or has at least a certain battery charge or both. Another version of the video is downloaded to the mobile device. The other version contains the same TV show and at least one embedded commercial that is different from the commercials embedded in the original version of the video. The other version of the video has an expiry later than the expiry of the original version of the video. The other version of the video is downloaded, concurrently with the first version. The other version is downloaded after the downloading of the first version. The mobile device indicates to a remote server that the second video should contain longer-lived commercials.
In general, in an aspect, a first version of a video is downloaded to a mobile device. The first version of the video includes a TV show and commercials embedded within the TV show. The first version of the video is stored persistently on the mobile device. At least part of the video is played on the mobile device while the mobile device is offline. Metadata that indicates an expiry for the first version of the video is stored on the mobile device. Before, during, or after downloading the first version of the video, the mobile device downloads a second version of the video. The second version of the video contains the same TV show and at least one embedded commercial that is different from any of the commercials embedded in the first version of the video. The second version of the video has an expiry that is later than the expiry of the first version of the video. An app on the mobile device performs an action at a time related to the expiry of the first version of the video.
Implementations may include one or any two or more of the following features. The action includes playing the second version of the video. At least some of the commercials of the first version of the video have higher value than at least some of the commercials of the second version of the video.
In general, in an aspect, one or more commercials are downloaded to a mobile device. The commercials are stored persistently on the mobile device. One or more of the downloaded commercials are stitched into a previously-downloaded video that includes embedded commercials at least one of which has expired. The stitching is done at places in the downloaded video that are identified based on metadata downloaded separately from the downloading of the video. The video and the stitched in commercials are played while the device is offline.
Implementations may include one or any two or more of the following features. At the mobile device, for at least one of the commercials, a number of times the commercial is played is recorded. The recorded number is reported to a server when the device is not offline. The mobile device limits a number of times a stored commercial is stitched into the previously-downloaded video. The previously-downloaded video is segmented. The stitching includes replacing entries in the manifest for the video, the entries corresponding to the original commercials. The replacement commercials are segmented. The replacement commercials are not segmented.
Other aspects, features, and implementations and combinations of them can be expressed as methods, apparatus, systems, components, methods of doing business, program programs, means and steps for performing functions, and in other ways.
Other aspects, features, and implementations will become apparent from the following description and from the claims.
The system and techniques that we describe here support downloading to mobile devices of TV shows (and other forms of video) that include commercials.
In some implementations, a video is downloaded from a server to a mobile device where it is stored in persistent memory. The downloaded video includes a TV show and one or more commercials embedded before, within, or after the TV show, or any combination of those places.
The mobile device plays the downloaded video at a time after the video has been downloaded and stored. In some cases, the mobile device plays the downloaded video while the device is offline or has limited connectivity. In some examples, the mobile device plays the downloaded video when only part of the video has been downloaded.
In the following description, we use the term “app” or “application” or “mobile app” broadly to include, for example, any program that runs on a mobile device. An app may be, for instance, an executable binary that is installed on the device. An “app” may also refer to multiple executable binaries that work in conjunction with one another on a mobile device to perform one or more functions, for example, an Android service and an Android application that communicate with one another can be thought of as an “app.” An app may also refer to a script that is executed by another program, e.g. a javascript or Adobe Flash script that runs within a web browser. To simplify our presentation, we sometimes say the mobile device performs an action, although in fact the action is performed by an app running on the mobile device.
We use the term “offline” to mean that the mobile device has no network connection to the Internet through any communication channel, including cellular, WiFi, and Bluetooth. By “limited connectivity” we mean that the device has a network connection to the Internet, but using that network connection may be undesirable or inconvenient because the network connection has poor throughput or high latency or is expensive to use; for instance, a connection provided through a cellular network for which the user may have a limited monthly quota of data or have to pay per megabyte consumed. By “online” we mean the opposite of “offline”; that is, the device has a network connection to the Internet through some communication channel. A device with limited connectivity is by definition online; but a device that is online may have better connectivity than “limited”.
We use the term “system” broadly to include, for example, any set of components or facilities—mobile app, streaming video server, video download server, ad server, content delivery network, and possibly other elements, for example—that together comprise or provide or support a service that delivers video to devices and plays them for users of the devices.
We use the term “streaming” broadly to include, for example, a service that allows a user to view a video on a device as the video is being transmitted, in pieces, to the device over the Internet. During streaming, the recipient device typically does not store the entire video; instead, the device deletes each downloaded piece of the video at some time shortly after the device has played that piece of the video.
We use the term “mobile device” broadly to include, for example, any portable device, such as a cellular-enabled phone, a tablet, an in-car entertainment system, or a laptop, that is capable of receiving a video stream over a wireless network and playing the video stream as it is received, or storing a downloaded video item in a persistent memory of the mobile device and playing out the downloaded video item from the persistent memory, for example, at a later time.
We use the term “playing” broadly to include, for example, presenting a video, including, for example, an advertisement, on a mobile device for viewing by the user. We sometimes use the terms “playback” or “playout” interchangeably with “playing.”
We use the term “wireless networks” broadly to include, for example, 3G, 4G, LTE, 802.11 (also known as “WiFi”), Bluetooth, and other similar protocols for wireless data delivery, and combinations of them.
We use the term “streaming video server” broadly to include, for example, any server accessible to the mobile device over a network connection and capable of delivering video, for example, in conformity with Microsoft Smooth, Apple HLS, or other standard IP-based video-streaming protocols.
We use the term “recommendation engine” broadly to include, for example, a system that uses historical data to identify items of potential interest to a user.
We use the term “analytics server” broadly to include, for example, any server accessible to the mobile device over a network connection and capable of one or more of the following functions: receiving one or more files from a mobile device containing or reporting on past activity on the device, persisting this information, aggregating this information with similar information received from other devices, and generating a graphical or tabular representation of this collected information, or combinations of any two or more of them.
We use the term “TV show” broadly to include, for example, a video on a television broadcast network, a cable network, a web site, or an online video service like YouTube or Netflix. A TV show may be, for example, a drama, reality show, cartoon, sitcom, episode of a web series, feature-length movie, or user-generated video taken from the camera on a smartphone or tablet.
We use the term “commercial” broadly to include, for example, a video or audio element whose purpose is to advertise a product or service, and which appears in association with content, for example, before, during, or after a TV show. A commercial may be paid for and produced by an entity separate from the entity that produced the TV show. We use the terms ad, advertisement, and commercial interchangeably.
Streaming video to a mobile device has become a mature and popular technology. Pay-TV distributors, TV networks, and various Internet-based services each offer services that stream video over IP networks to mobile devices.
Video streaming over IP can be performed in unicast mode (i.e., one source delivering video over the Internet to one recipient device), commonly using the HTTP protocol (http://www.w3.org/Protocols/rfc2616/rfc2616.html). In some cases, video streaming over IP can be performed in broadcast or multicast mode (i.e., one source transmitting video over the Internet to multiple recipient devices), commonly using the UDP protocol (http://www.ietf.org/rfc/rfc768.txt).
There exist several popular video-encoding and delivery protocols (e.g., HLS, HSS, HDS, CFF) specifically designed for streaming video (see, for example, http://www.iis.net/downloads/microsoft/smooth-streaming and https://developer.apple.com/librarv/ios/documentation/networkinqinternet/conceptual/streaming mediaguide/Introduction/Introduction.html).
A video encoded in a streaming format video typically consists of many short video files, each containing a small piece of the full video. For example, a 30-minute video may consist of 1800 files, each representing two seconds of the original video. We refer to these individual pieces as “segments.” A segment may be, for instance, an MPEG-2 Transport Stream carrying H.264 video and AAC, MP3, or AC-3 audio.
Typically, for each available video, a streaming video server makes available for download a lookup table, often called a playlist, containing a list of pointers to a sequence of segments comprising the video.
Typically, a streaming video server makes each video available in multiple quality levels, of varying bitrates. For example, a video may be available at 775 kb/s (low quality), 1.55 Mb/s (medium quality), and 2.2 Mb/s (high quality). The quality of the appearance of a video to a user when the video is presented depends, for example, on how high the bitrate of the video is. We sometimes refer to a quality level as a “profile.”
Counting all the segments comprising a single profile, and all the multiple profiles, a single one-hour segmented video may contain many segments. For instance, an 1800-segment video in three different profiles contains 54000 total segments: 1,800 segments in the low profile, 1,800 segments in the medium profile, and 1,800 segments in the high profile.
Along with the three playlists corresponding to these profiles, a streaming server also publishes a lookup table, often called a manifest, containing a URL for each of these playlists, that is, an Internet address for the location where the playlist appears.
When a mobile device plays out a video by streaming, the device can elect to access any of the available profiles. Which profile the device selects will depend on various conditions, including, for instance, an assessment of the network throughput and the resolution of the device's display. To play a streaming video, a mobile device follows a sequence such as that in
Since a receiving device may automatically and repeatedly switch among available profiles based on current network conditions, video streaming in this way is often called “adaptive streaming” or “adaptive bitrate streaming.”
Many variations of this flow are possible. For example, the device may assess network conditions 0023 less often than after each segment. The device may skip the downloading of one or more of the playlists 0022 until later, when the device decides to start playing segments from a particular profile that is not been previously downloaded. The user may request to start from somewhere other than the beginning of the video, in which case the initial segment value 0023 will be greater than zero. The user may skip forward or back in the video during playout, which will cause the segment number to change in a way other than incrementing by one 0029.
For simplicity, in the rest of this presentation, where the meaning is clear, we will typically use the term “manifest” to denote both the manifest and the individual playlist files corresponding to a single video.
Compared to delivering (e.g., downloading) a single, monolithic video file over the Internet, there are several advantages to using a segmented video format for streaming video. For one, the mobile device can automatically adjust the video quality during playout, based on current effective bandwidth. If the network conditions improve, the device can switch to the segments belonging to a higher bitrate profile (i.e. higher quality), and vice versa. A user will automatically experience a higher-quality video when her network conditions improve, without having to perform an explicit action to select a higher video quality. An example scenario is when there are two people both streaming high-quality video over a shared Internet connection, and then one person stops streaming video; the quality of the other person's received video may automatically improve because of the suddenly-improved network conditions.
Another advantage of a segmented video format is that it can simplify the insertion of commercials into a video. Inserting a commercial into a TV show that is a single file (e.g. mp4 format) can be technically difficult, involving splicing the commercials into the original video file. In contrast, inserting a commercial into a segmented video may be as simple as inserting new entries (corresponding to the segments that represent the commercials) into a manifest file.
For example,
From a mobile device, a user may play streaming video that has been encoded in one of the streaming protocols, using a web browser like Safari or Chrome running on the device. A user may also access streaming video using an application installed and running on the mobile device, such as Hulu Plus, Netflix, HBOGO, or SkyGo.
In many cases, the video segments are available through a content delivery network (CDN). A CDN is a large group of servers typically geographically widely dispersed, which deliver files through the Internet on behalf of customers who own that content and who pay a fee to the CDN to store and deliver the content to users quickly and reliably.
In some cases, the streamed videos may be “premium” content (e.g., HBO), access to which requires, for example, a monthly subscription fee. Such premium content typically includes few or no commercials. In other cases, the streamed videos may originate from ad-supported networks (e.g., ABC, AMC, Fox), in which case the videos may include, e.g., more than a few commercials.
A streaming video service may offer VOD (video-on-demand) or live TV, or both. By VOD, we mean, for example, a video service that offers a catalog of videos from which the user may select and view a video. Each of the videos in a VOD catalog was created at some time in the past; therefore, at the time when a video is being played, the entire video is already in existence. In contrast, a live TV service offers one or more video streams each of which is being created in real time during streaming. Therefore, at the time when a current portion of a live video stream is being played, later portions of the same video stream are being created. In that sense, a live TV video is incomplete during the time when it is being played.
An example of a VOD service is a movie-on-demand application, where a user can purchase the right to stream a video to her mobile device. An example of a live TV service is an application where one can watch a baseball game as it is being played.
The task of managing the selection and insertion of commercials into streaming video is well known. Companies including Brightcove, Adobe, Freewheel, and BlackArrow offer products and services that manage the selection and insertion (also known as “stitching”) of commercials into streaming video, and for measuring the viewing of each commercial.
We use the term “ad server” broadly to include, for example, any system that selects and delivers advertisements for placement into any kind of Internet-delivered content, such as TV shows, radio programs, web pages, or combinations of them; typically an ad server also then measures how these advertisements are viewed.
We use the term “measuring” broadly to include, for example, any tracking, observing, quantifying, recording, or generation of metrics that relates to display, performance, or presentation to a user and activities of the user associated with a commercial, for instance, recording whether a user triggers an interactive prompt displayed during the commercial (such as a pop-up that when clicked brings the user to a web page for more information), or whether a user exits the video application instead of watching the commercial.
The Internet Advertising Bureau (IAB), an industry consortium, has published a specification for the delivery and playout of ads within streaming video, called the Digital Video Ad Serving Template (VAST) (http://www.iab.net/vast).
A related specification, SCTE-130 (http://cablecongress.com/wp-content/uploads/cablecongress/2012/03/Daniel-Howard-SCTE-Day-3-Silver.pdf), defines various aspects of requesting, delivering, and selecting commercials for insertion into video content.
The ad server may produce (for delivery to a mobile device) a VAST file 0067 that specifies various information about commercials, including (1) the location of commercials in the video, and (2) actions that a receiving device should perform when playing the commercials. The VAST file may specify these commercial locations as millisecond time offsets from the beginning of the video, or as segments in the manifest that belong to commercials. The VAST file may also specify, for each embedded commercial, a set of zero, one, or more actions that the mobile device should perform when playout reaches a certain point in the commercial. An example of an action is a URL that the mobile device should “call”; these URLs are sometimes known as “tracking beacons” or “ad beacons” (http://www.iab.net/wiki/index.php/Web_beacon).
The purpose of a tracking beacon is to provide a record at a location other than the mobile device, that the mobile device has reached a point in the video where the commercial begins, ends, or is at some intermediate point. The data recorded by the tracking server may be provided to advertisers as verification that their commercials (or particular parts of them) have been played on a mobile device.
In many cases, an ad server includes several different functional components, including, for example, an ad-decision engine, and ad management service, and a content information system. These components work in concert to perform the functions of an ad server. For simplicity, we will refer to the aggregate system as an ad server.
Ad servers can insert a commercial before a TV show (typically called a “pre-roll”), in the middle of a TV show (an “interstitial”), and after the show (a “post-roll”), or any combination of two or more of these.
Ad servers typically support both linear and non-linear commercials. A linear commercial is a commercial that runs before, between, or after another video. In contrast, a non-linear ad runs next to some other video, e.g. presented to the viewer superimposed or next to the other video at the same time as the presentation of the video. To simplify the discussion, we will focus on linear ads, but the techniques and systems that we describe here apply to non-linear commercials as well.
We distinguish between two main approaches to inserting commercials into online video: server-side and client-side.
Referring to
In selecting commercials, the ad server may use information 0063 received from the device requesting the video. This information is often embedded in an HTTP request 0063 transmitted from the device to the ad server. This information may include, for example, the version and type of device and browser running on the device and the public-facing IP address of the device. The information may also include a unique identifier for the device, which allows an ad server to identify multiple requests from the same device occurring at different times. Different mobile operating systems implement unique device identifiers differently; one example is Apple's IDFA (https://developerapple.com/librarv/ios/documentation/AdSupport/Reference/ASIdentifierManager_Ref/ASIdentifierManager.html), which is available on iPhones and iPads with iOS6 and later versions. The ad server may use some or all of the information supplied by the mobile device 0069 to inform its selection of commercials.
In stitching the selected commercials into the video, the ad server relies on a table 0062 of insertion points associated with the TV show, indicating where commercials may be stitched into the TV show. We call this information “ad insertion points” or “avails.” The insertion points are typically identified by the party that provides the TV show originally.
We use the term “ad insertion points” broadly to include, for example, any indication of where (within a video) a commercial may be or must be inserted. An ad insertion point may be specified, for example, as a millisecond offset from the beginning of the TV show, e.g. 300,000 ms after the start of the video (i.e., exactly five minutes into the video). Alternatively, for streaming video, which is divided into many segments, an insertion point may be expressed as an index of a video segment after which a commercial may be inserted; e.g., “after the 192nd segment of the video.”
An ad server may insert zero, one, two, or more commercials at a single ad insertion point. In
The ad server stitches the selected commercials into the TV show and delivers the resulting manifest 0068 over the Internet to a remote client device (e.g., a mobile device) for playout. A mobile device can download the manifest 0068 and play the associated video using the sequence depicted in
An ad server may perform this stitching operation in response to and at the time when a mobile device requests the video, which means that each mobile device requesting the TV show from the server may receive the TV show with a different set of stitched-in commercials. One advantage of this “real-time stitching” is that the ad server can select commercials that are personalized to each user.
In some cases, the ad server may perform this ad-stitching operation just once for a TV show, and then deliver this expanded manifest to every mobile device that requests the TV show, so that every mobile device requesting the TV show from the server will receive the same set of stitched-in commercials. One advantage of this approach is a reduced computational load on the ad server, as compared with performing the stitching for every request.
Besides these two approaches, there are many in-between approaches, such as performing the ad-stitching operation once per day per TV show, and delivering that same result for all subsequent requests for that TV show until the next day.
The actions illustrated in
Client-Side Stitching:
In examples of client-side stitching, the ad server still selects the commercials, but it's the responsibility of the mobile device (not the ad server) to stitch the commercials into the TV show.
Referring to
The ad server replies by downloading a VAST file 0097 to the device. The downloaded VAST file 0097 contains, for example:
The mobile device then begins playing the TV show, starting from the first segment in the manifest file 0095. When the mobile device reaches the first insertion point according to the VAST file 0097, the mobile device 0099 fetches the first commercial (the URL for which is specified in the VAST file). The commercials may reside on the CDN 0090 that stores the segments for the TV shows, or the commercials may reside on a different server.
After playing the commercial, the mobile device 0099 resumes playing segments from the manifest 0095.
The reader will notice differences in the workflow for server-side and client-side ad stitching. In typical examples of server-side ad stitching, the video manifest contains segments belonging to both the TV show and to the embedded commercials. The mobile device plays segments from the video manifest, and doesn't need to perform any additional separate or explicit action to play out commercials, because the commercials are already “baked in” to the manifest received from the ad server.
In contrast, in typical client-side ad stitching, the manifest for the video doesn't contain commercials; it only contains segments belonging to the TV show. The mobile device consult the VAST file to determine when to interrupt playout of the TV show and play a commercial, and the mobile device also consults the VAST file to determine where (at what URL) to fetch the commercials.
Client-side and server-side stitching each have advantages and disadvantages. One liability of client-side stitching is that it requires additional software complexity on the mobile device to handle the fetching of commercials and stitching of the commercials into the TV show. On the other hand, this liability is also a benefit; performing this work on the mobile device reduces the burden of ad-stitching on the server.
Ad Selection:
In either client-side or server-side ad-stitching, the ad-selection process can be based on one or combinations of any two or more of the following factors, among others:
In the context of video, we use the term “expire” to mean that the TV show is no longer allowed to be stored on the mobile device's persistent memory, or the TV show is no longer allowed to be played on the mobile device, or both.
For instance, many distributors of commercial video (e.g. Apple, Netflix, Dish, Hulu) provide to their customers the right to consume a video only for a limited period of time (often referred to as a “window”—see http://tidbits.com/article/9462). In some cases, a distributor may be contractually required to ensure that the video expires at the end of the negotiated window.
The video may expire for a number of reasons, including:
A commercial may expire for a number of reasons. For example, AcmeCorp may purchase from a TV distributor 100,000 impressions of a commercial for an upcoming Memorial Day anvil sale). AcmeCorp realizes no value if the commercial is played after Memorial Day, and may contractually agree with the TV distributor to pay for “views” only until midnight of Memorial Day. After this time, it is in the TV distributor's economic interest not to play this commercial, but instead, to play other (non-expired) commercials. For another example, an advertiser may license a song from a musician for two weeks, after which time the advertiser no longer has the right to present the licensed song with the commercial. The ad server will only select commercials for insertion whose start time has passed but whose expiry has not yet occurred. In both scenarios, the commercial has a definite expiry date. We use the term expiry to refer to the time when a video or a commercial expires.
Recently, some companies have introduced video download as a new feature in their streaming products. Video download allows a user to download a video from a server to a mobile device for later viewing on the mobile device. Examples of download-enabled services are Comcast's Xfinity Go, Amazon Prime, and BSkyB's SkyGo Extra app. In some cases, a company may offer a download-only service, in which consumers may not stream, but only download TV shows, and then play these shows later.
We use the term “download” broadly to include, for example, any delivery of a video in its entirety from one or more servers to a mobile device, and the storing of that video on the persistent memory of the mobile device. In download, the recipient device stores the video persistently and can, for example, play out the video long after (e.g., minutes, days, weeks or longer) the video was delivered. The video may consist of one file, e.g., an mp4 file. In some cases, the video may consist of many individual files expressed in, e.g., a segmented video format such as HLS or HSS.
As shown in
The video item that is downloaded may be a VOD (video-on-demand) item, meaning that the video item is complete before it is made available for download. In some cases, the video item may be a live stream, meaning that the video item is being generated at the same time it is being downloaded. In some cases, the same video may be available first as a live stream and later as a VOD item. For instance, a university may make available over the Internet a lecture as the lecture is being presented, live; this video is a “live stream.” Later, the university may upload the complete video recording of the lecture to a web site for students to download; in this scenario, the video is a VOD item.
In some cases, the mobile device may initiate the download process by, for example, transmitting an HTTP ‘GET’ request (defined in http://www.w3.org/Protocols/rfc2616/rfc2616.html) to a remote web server that stores the object to be downloaded; the web server will in response deliver the video to the device using the HTTP protocol. In some cases, the mobile device may use a protocol, such as FTP (specified in http://www.w3.org/Protocols/rfc959), to fetch the video item from the remote source. In some cases, the server may signal the mobile device to initiate the download, for instance by sending to the mobile device a push notification message (https://developer.apple.com/notifications/ and http://developer.android.com/google/gcm/index.html), which causes the mobile device to launch an application or process to perform the download. In some cases, the mobile device may permit playout of a partially-downloaded video item.
We use the term “persistent memory” or “non-volatile memory” broadly to include, for example, any technology such as magnetic disk drive or solid-state memory that retains stored data, for example, even while a device is powered off. Storing a video in the device's persistent storage means that the stored video will remain on the device until the user or another application or the operating system itself deletes the video.
Among the advantages of a video-download feature are that a user can download a video from, for example, a VOD catalog when the device is online and the user is able to play the video later, when the device is offline. For example, a user can download a TV show or movie to her mobile device while she is at home, before leaving for the airport. Later, while she is in an airplane, she can play out the downloaded video, even though she has limited or no network connectivity in the airplane.
An advantage of a video-download feature is that users can consume high-quality videos from a VOD catalog even if the user only has access to a low-bandwidth network connection. For example, imagine the user wants to view on her mobile device a 10-minute video, which has been encoded in three formats: low quality (0.9 Mb/s), medium quality (1.7 Mb/s) and high-quality (3.8 Mb/s). Say the user has a 1.4 Mb/s network connection. Over this network connection, she can only stream the low-quality (0.9 Mb/s) version of the video. Attempting to stream the medium- or high-quality version of the video would fail, since the network connection cannot support the required data throughput; in other words, the network cannot “keep up” with the video. However, the user can download the high-quality version of the video, even over the 1.4 Mb/s network connection. Over this network connection, the download would require about 27 minutes. Once downloaded, the high-quality video is available at the mobile device for the user to play out. Thus, using download, a user can play out a high-quality video, even though the user does not have a network connection of high enough throughput to stream the video in high quality.
An advantage of a video-download feature is time-shifting from a time when a live TV show is being shown, for example, a rugby game scheduled for noon GMT, which is 4 AM Pacific Time, to a later time that is convenient for a rugby fan living in California. To do this, the fan can set his mobile device to record the show at 4 AM, and then the fan can watch the saved show at, e.g., 10 AM local time.
An advantage of a video-download feature is in reducing the use of expensive network connections. Typically, wireless operators like Verizon Wireless impose a monthly limit on cellular data usage, e.g., 2 GB per billing cycle, and impose an “overage” charge for data usage exceeding that limit in a given billing cycle. For instance, in early 2014, the network operator Verizon Wireless assesses a $15 overage fee per GB used above the subscriber's limit in any one billing cycle. A Verizon Wireless subscriber with a 2 GB quota can stream about 5.5 hours of 800 Kb/s video in a given billing cycle over the Verizon network, before overage charges apply. In other words, this Verizon Wireless subscriber is limited to about 5.5 hours of streaming video over the Verizon Wireless network until overage charges apply. A benefit of download is that Verizon Wireless subscribers who can plan ahead (and who have access to a download product) can download one or more videos in advance using a WiFi connection (e.g., at home or in their office), and subsequently watch these videos at a time and place where WiFi connectivity isn't available, thus avoid the risk of an expensive overage charge.
In other words, download enables wireless-mode shifting that reduces one's cellular data consumption without reducing one's overall video consumption.
A system that supports the downloading of videos to a mobile device may have some or all of the following features:
Selecting an item may bring up an additional screen,
As shown in
Downloading a Video in Streaming Format
There are other differences between
For simplicity, we are not depicting in
Notice in
Optimizing Download Speed
We now describe an optimization that can result in much faster overall downloading of a segmented video.
The optimization is for the mobile device to download multiple segments concurrently, rather than one at a time. Downloading multiple segments in parallel can dramatically reduce the time required to download a video containing many segments.
The mobile device may implement this parallel downloading using multiple downloading threads at a given time, each thread downloading a single segment.
There is no “one size fits all” value for K. Higher-performance mobile devices (e.g. those with multiple CPUs and more RAM) can support more concurrent download threads than relatively weaker-performance mobile devices. Thus it makes sense to use a large value of K for high-powered devices. But on a lower-performance mobile device, an app that attempts to initiate too many concurrent threads for downloading may experience undesirable effects, such as an application crash and/or poor overall responsiveness (http://stackoverflow.com/guestions/1285774/multi-threading-at-what-point-have-you-created-too-many-threads). Thus it makes sense to use a lower value of K for a lower-performance device.
Thus an app may select a value of K depending on the mobile device's capabilities.
Foreground and Background Downloading
Some mobile operating systems, such as Apple's iOS, prevent apps from performing certain operations (e.g. downloading) when the app is not active.
By “active” we mean, for example, that what is displayed on the device's screen is generated by the app and not a different app or service on the device. Typically, a mobile device only has one active app at a time. A user can perform an action to select and switch among active apps (for example, as described in http://support.apple.com/kb/ht4211).
An app responsible for downloading a large video may find that the video is only partially downloaded when the app becomes not active.
It is desirable for the app to continue the download of the large video even when the app is not active, so that the next time the user engages with the app, the video that she previously requested to download is available in its entirety.
Some mobile operating systems offer a mechanism by which an app can request that the operating system download a file or set of files on behalf of the app, even if the app is not running. For example, the NSURLSession in iOS7 does this (https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/Introduction/Introduction.html#//apple_ref/occ/cl/NSURLSession). For shorthand, we'll refer to this as a “background download” mechanism, since it allows an app to cause a download of one or more files from a remote server to the mobile device, even when the app is in the background (not actively running).
It would be desirable to combine the fast, multi-threaded downloading available when the app is running with the reliable, albeit slower, downloading that is available using the operating system's background downloading mechanism.
The app initiates 0251 download of the video. As long as the app is actively running, the app controls the download itself, and performs a multi-threaded (fast) download. If the app stops actively running before the video is completely download, the app will (before it is suspended) hand off the in-progress download 0253 to the operating system's background-download process 0252. The hand-off ensures that the background download doesn't need to re-download any part of the video already downloaded.
If at any time during the background download process 0252, the app becomes active again 0254 (e.g., because the user launched the app again), then the parallel download process again takes over.
Not all operating systems require the two-stage process depicted in
Downloading Videos with Commercials
Earlier, we described two processes:
There exist today many products that address each of these items separately.
Here we describe an intersection of these two processes. In some implementations of what we describe, a mobile device downloads a TV show with embedded commercials to a mobile device, stores the video on the persistent memory of the device, and plays the video later, for example, when the device is offline.
At some later time, perhaps when the device is offline, the user may request to play the previously-downloaded TV show.
The “Stale Commercials” Problem
Here we discuss how to deal with the ‘stale commercials’ when: a downloaded video contains commercials that have expired.
As described here, stale commercials in a downloaded video can be avoided by downloading to the mobile device a second version of the TV show, with a different set of embedded commercials that expire later in time than the commercials in the first version.
Referring again to
At some time before, during, or after (or some combination of them) it has downloaded the first video, the mobile device 0069 downloads a second version of the video by contacting the ad server 0061. This request for a second version can include a directive to the ad server expressing a preference for long-lived commercials or at least an expired commercials. Once again, the ad server 0061 will generate an expanded manifest 0068 for the video. This time, the ad server 0061 will generate an expanded manifest 0068 that embeds “long-lived” commercials; i.e., commercials that do not expire soon (say within the next day or week or month), or otherwise unexpired commercials. For example, the ad server may select promotional commercials, public-service announcements, or ‘evergreen’ commercials that never expire.
For example, the primary or first version of the video may contain commercials that have an expiry of three days, and the secondary or second version may contain a different set of commercials that have a later expiry.
At least one and as many as all of the stitched-in commercials of the second version of the video are different from the stitched-in commercials of the first version of the video. The second version of the TV show may have commercials embedded at the same or different places from the first version of the TV show. In some cases, the two versions may have a different number of commercials inserted at the same position in the TV show.
The second version of the video has an expiry that is later that the expiry of the first version.
The mobile device may download this second version at different times relative to the downloading of the first version of the video, e.g.:
The mobile device may regularly monitor its downloaded versions of videos to see which have expired. Monitoring may occur automatically at regular intervals (e.g. every hour, every day, every week). Or, monitoring may occur only when the user performs a specific action, such as launching or using a particular app.
Variations of this sequencing are possible, for example, the mobile device may download the second version of the video simultaneously with the first version, or may download the second version once the first version is less than a certain period of time (e.g. 24 hours) of expiring.
The first and second video may be in segmented format, or in a single-file format.
After the mobile device has downloaded the two versions of the video,
We now describe a variant of the “two versions” approach just described.
Rather than downloading a complete second version of the video, the mobile device may download from the ad server just a set of replacement commercials, to be “spliced” into the original video in place of the original commercials.
The techniques described herein can be implemented in digital electronic circuitry, or in hardware, firmware, software, or in combinations of them. The techniques can be implemented as a program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of a processor, a computer, or multiple computers. A program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing or mobile environment. A program can be deployed to be executed on one computer or mobile device or on multiple computers or mobile devices at one site or distributed across multiple sites and interconnected by a communication network.
Activities that we describe can be performed by one or more programmable processors executing a program to perform functions by operating on input data and generating output. Method steps can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). Modules can refer to portions of the program and/or the processor/special circuitry that implements that functionality.
Processors suitable for the execution of a program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer or mobile device. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Generally, a computer or mobile device will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry.
To provide for interaction with a user, the techniques that we describe can be implemented on a computer or mobile device having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, or a touch surface, by which the user can provide input to the computer or mobile device (e.g., interact with a user interface element, for example, by clicking a button on such a pointing device or touching the touch surface). Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
The techniques that we describe can be implemented in a distributed system that includes a back-end component, e.g., as a data server, and/or a middleware component, e.g., an application server, and/or a front-end component, e.g., a client computer or mobile device having a graphical user interface and/or a Web browser through which a user can interact with an implementation of the invention, or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet, cellular telephone networks, and Wi-Fi, and include both wired and wireless networks.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact over a communication network. The relationship of client and server arises by virtue of programs running on the respective computers or mobile devices and having a client-server relationship to each other.
Other implementations are within the scope of the following claims.
This application is a continuation application and claims priority under 35 U.S.C. § 120 to U.S. application Ser. No. 14/524,673, filed Oct. 27, 2014 which is continuation of U.S. application Ser. No. 14/275,710, filed May 12, 2014, the entire contents of which are incorporated here by reference. This application also cross-references the following patent applications and patent, each of which is incorporated by reference here in its entirety: Ser. No. 13/923,103, filed on Jun. 20, 2013; Ser. No. 14/016,963, filed on Sep. 3, 2013; U.S. Pat. No. 8,701,145, issued Apr. 15, 2014; Ser. No. 14/504,360 filed on Oct. 1, 2014; and Ser. No. 14/042,952, filed Oct. 1, 2013.
Number | Date | Country | |
---|---|---|---|
Parent | 14524673 | Oct 2014 | US |
Child | 16724780 | US | |
Parent | 14275710 | May 2014 | US |
Child | 14524673 | US |