US10623795B2 - Systems and methods for advertising continuity - Google Patents

Systems and methods for advertising continuity Download PDF

Info

Publication number
US10623795B2
US10623795B2 US15/991,904 US201815991904A US10623795B2 US 10623795 B2 US10623795 B2 US 10623795B2 US 201815991904 A US201815991904 A US 201815991904A US 10623795 B2 US10623795 B2 US 10623795B2
Authority
US
United States
Prior art keywords
content
bitrate
user device
advertisements
manifest file
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
US15/991,904
Other versions
US20190132628A1 (en
Inventor
Alan Ramaley
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Comcast Cable Communications Management LLC
Original Assignee
Comcast Cable Communications Management LLC
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 Comcast Cable Communications Management LLC filed Critical Comcast Cable Communications Management LLC
Priority to US15/991,904 priority Critical patent/US10623795B2/en
Publication of US20190132628A1 publication Critical patent/US20190132628A1/en
Assigned to COMCAST CABLE COMMUNICATIONS MANAGEMENT, LLC reassignment COMCAST CABLE COMMUNICATIONS MANAGEMENT, LLC MERGER (SEE DOCUMENT FOR DETAILS). Assignors: THEPLATFORM, LLC
Assigned to THEPLATFORM, LLC reassignment THEPLATFORM, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: RAMALEY, ALAN
Priority to US16/808,132 priority patent/US20210029396A1/en
Application granted granted Critical
Publication of US10623795B2 publication Critical patent/US10623795B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • H04L65/4084
    • H04L65/601
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/756Media network packet handling adapting media to device capabilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/258Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
    • H04N21/25808Management of client data
    • H04N21/25825Management of client data involving client display capabilities, e.g. screen resolution of a mobile phone
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/637Control signals issued by the client directed to the server or network components
    • H04N21/6373Control signals issued by the client directed to the server or network components for rate control, e.g. request to the server to modify its transmission rate
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/60Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client 
    • H04N21/63Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
    • H04N21/643Communication protocols
    • H04N21/64322IP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/812Monomedia components thereof involving advertisement data

Definitions

  • IP video can be delivered at different bitrates.
  • a device receiving an IP video stream can request a change in the bitrate of the video stream. If the IP video stream is currently displaying an advertisement, a different advertisement, corresponding to the newly requested bitrate will interrupt the currently displaying advertisement at the old bitrate, causing a negative impact on the user experience. What is needed is a way to transition between bitrates mid-advertisement while maintaining continuity.
  • a user device can request content at a first bitrate.
  • the content request can comprise an identifier associated with the user device.
  • an advertisement server can generate an advertisement list and deliver the advertisement list to a manifest server.
  • the advertisement list can comprise one or more advertisements that can be displayed during consumption of the requested content.
  • the manifest server can transmit the advertisement list and the identifier associated with the user device to a central computing device.
  • the manifest server can create a first manifest file comprising instructions for acquiring the requested content at the first bitrate and the advertisements in the advertisement list at the first bitrate.
  • the first manifest file can be transmitted to the user device and the user device can use the first manifest file to acquire and playback sequential video fragments of the requested content and advertisements at the first bitrate.
  • the user of the user device can request the content at a second bitrate that is different from the first bitrate.
  • the manifest server can access the advertisement list either local or from the central computing device and can use the advertisement list to create a second manifest file.
  • the second manifest file can comprise instructions for acquiring the requested content at the second bitrate and the advertisements in the advertisement list at the second bitrate.
  • FIG. 1 is a block diagram of an exemplary system and network
  • FIGS. 2A and 2B are block representations of exemplary sequential data fragments
  • FIG. 3 is an exemplary display
  • FIGS. 4A and 4B are block diagrams of an exemplary system
  • FIG. 5 is a flow chart of an exemplary method
  • FIG. 6 is a flow chart of an exemplary method
  • FIG. 7 is a flow chart of an exemplary method
  • FIG. 8 is a block diagram of an exemplary computing device.
  • the word “comprise” and variations of the word, such as “comprising” and “comprises,” means “including but not limited to,” and is not intended to exclude, for example, other components, integers or steps.
  • “Exemplary” means “an example of” and is not intended to convey an indication of a preferred or ideal embodiment. “Such as” is not used in a restrictive sense, but for explanatory purposes.
  • the methods and systems may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects.
  • the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium.
  • the present methods and systems may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.
  • These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
  • blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
  • a system can be configured to ensure advertising continuity to a user device.
  • the present methods may be used in various types of networks and systems that employ both digital and analog equipment.
  • One skilled in the art will appreciate that provided herein is a functional description and that the respective functions can be performed by software, hardware, or a combination of software and hardware.
  • the present disclosure is directed to systems and methods for providing content comprising advertising to a user device such as a computer, a tablet, a mobile device, a communications terminal, or the like.
  • the user device can comprise an identifier which can be globally unique, such as a media access control (MAC) address.
  • the identifier can comprise a token.
  • the user device can request content.
  • the content request can comprise a request for a manifest file.
  • a manifest file can be a sequential list of video fragments to play to render content and/or advertisements.
  • the manifest file can comprise references to content video fragments and/or references to advertising video fragments.
  • the content request can be for a manifest file for content and/or advertisements at a first bitrate.
  • the content request can comprise the identifier. The identifier can be used to identify the origin of the content request, as the content request is forwarded amongst the devices in the network.
  • a computing device such as a content server, can receive the content request.
  • the computing device can forward the content request to an advertisement server.
  • the advertisement server can return an advertisement list to the computing device.
  • the advertisement list can comprise a list of specific advertisements in a specific order.
  • the computing device can forward the content request and the advertisement list to a manifest server.
  • the manifest server can be configured to create a manifest file in response to the content request.
  • the manifest server can be configured to create a content state that can be used to track details/parameters of the content associated with the manifest file such as title, bitrate, etc.
  • the content state can track that a program is being streamed to a device at 480p24.
  • the content state can be any data structure suitable for organizing data, such as a list, database table, etc.
  • the content state represents the state of the content at the user device for which the manifest file was created.
  • the content state can be registered with a central computing device.
  • the content state can be transmitted to a plurality of manifest servers.
  • the content state can be maintained at the central computing device.
  • the plurality of manifest servers can check the content state at the central computing device in response to receiving a request for a manifest file.
  • the central computing device can be configured to link the identifier of the user device with the advertisement list and the content state.
  • the user device can receive the manifest file.
  • the user device can use the manifest file to retrieve and render the content and advertisements.
  • the user device can request video (content and/or advertisement) fragments from the corresponding locations in the manifest file.
  • the requested content and advertisements can be streamed to the user device.
  • the user device can render the content with advertisements interspersed therein.
  • the systems and methods described herein can ensure that a stream change during playing of an advertisement, such as that caused by an adaptive bitrate quality change, results in continued playing of the same advertisement that the customer was viewing.
  • An adaptive bitrate quality change can comprise, for example, a request for a lower quality bitrate in response to a determination that available bandwidth is decreasing.
  • an adaptive bitrate quality change can comprise a request for a higher quality bitrate in response to a determination that available bandwidth is increasing.
  • the user device can be playing the content at the first bitrate and be in the middle of one of the advertisements when the user device needs to change bitrates.
  • the user device might need to change bitrates because of a change in quality, for example.
  • the user device might require a better quality or a worse quality.
  • network latency can cause a user device to need a lower quality video (e.g., video at a lower bitrate).
  • the user device can make another content request for another manifest file for the content at a second bitrate.
  • the advertising video segments can be the same content as the advertising video segments in the previous manifest file at the first bitrate.
  • the advertising video segments can be at the first bitrate, the second bitrate, or another bitrate.
  • FIG. 1 illustrates various aspects of an exemplary environment in which the present methods and systems can operate.
  • the disclosed systems can comprise a user device 102 in communication with a computing device 104 such as a content server, for example.
  • the user device 102 and the computing device 104 can be in communication via a private and/or public network 105 such as a proprietary line from a service provider and/or the Internet.
  • Other forms of communications can be used such as wired and wireless telecommunication channels, for example.
  • the user device 102 can be an electronic device such as a computer, a smartphone, a laptop, a tablet, a set top box, a display device, or other device capable of communicating with the computing device 104 .
  • the user device 102 can be associated with a user identifier or device identifier 108 .
  • the device identifier 108 can be any identifier, token, character, string, or the like, for differentiating one user or user device (e.g., user device 102 ) from another user or user device.
  • the device identifier 108 can identify a user or user device as belonging to a particular class of users or user devices.
  • the device identifier 108 can comprise information relating to the user device such as a manufacturer, a model or type of device, a service provider associated with the user device 102 , a state of the user device 102 , a locator, and/or a label or classifier. Other information can be represented by the device identifier 108 .
  • the device identifier 108 can comprise an address element 110 and a service element 112 .
  • the address element 110 can comprise or provide an internet protocol address, a network address, a media access control (MAC) address, an Internet address, or the like.
  • MAC media access control
  • the address element 110 can be relied upon to establish a communication session between the user device 102 and the computing device 104 or other devices and/or networks.
  • the address element 110 can be used as an identifier or locator of the user device 102 .
  • the address element 110 can be persistent for a particular network.
  • the service element 112 can comprise an identification of a service provider associated with the user device 102 and/or with the class of user device 102 .
  • the class of the user device 102 can be related to a type of device, capability of device, type of service being provided, and/or a level of service (e.g., business class, service tier, service package, etc.).
  • the service element 112 can comprise information relating to or provided by a communication service provider (e.g., Internet service provider) that is providing or enabling data flow such as communication services to the user device 102 .
  • the service element 112 can comprise information relating to a preferred service provider for one or more particular services relating to the user device 102 .
  • the address element 110 can be used to identify or retrieve data from the service element 112 , or vice versa.
  • one or more of the address element 110 and the service element 112 can be stored remotely from the user device 102 and retrieved by one or more devices such as the user device 102 and the computing device 104 .
  • Other information can be represented by the service element 112 .
  • the user device 102 can transmit a request for content.
  • the request for content can be transmitted to a computing device 104 , such as a content server.
  • the request for content can be forwarded from the computing device 104 to a manifest server 116 .
  • the request for content can be transmitted directly to a manifest server 116 from the user device 102 .
  • the manifest server 116 can create a manifest file in response to the request for content from the user device 102 .
  • the manifest file can comprise references to video fragments.
  • video fragments can share a characteristic, such as a bitrate, a resolution, etc.
  • the video fragments can be homogeneous or heterogeneous in size, relative to each other.
  • the video fragments can relate to the requested content.
  • the video fragments can relate to advertisements.
  • the references can be uniform resource locators (URLs).
  • an advertisement server 106 can be queried.
  • the computing device 104 can query the advertisement server 106 .
  • the manifest server 116 can query the advertisement server 106 .
  • the advertisement server 106 can create an advertisement list 118 in response to the query.
  • the advertisement list 118 can be transmitted to the manifest server 116 .
  • the advertisement list 118 can be transmitted to the computing device 104 .
  • a manifest server 116 can use the advertisement list 118 to include references to video fragments of the advertisements in the advertisement list 118 in a manifest file.
  • the manifest server 116 can create a content state 120 associated with the user device 102 .
  • the computing device 104 can create the content state 120 associated with the user device 102 .
  • the content state 120 can comprise identification of the content represented in the manifest file.
  • the content state 120 can comprise various parameters (e.g., attributes, properties, preferences, options, etc.) of the content represented in the manifest file.
  • the parameters included in the content state 120 can comprise a bitrate of the content.
  • the computing device 104 in response to the inclusion of the advertisement list 118 in the manifest file, can relate the device identifier 108 , the advertisement list 118 , and the state 120 in a database 114 .
  • the computing device 104 can be a server for communicating with the user device 102 .
  • the computing device 104 can be configured as (or disposed at) a central location (e.g., a headend, or processing facility), which can receive content (e.g., data, input programming) from multiple sources.
  • the computing device 104 can combine the content from the multiple sources and can distribute the content to user (e.g., subscriber) locations (e.g., the user device 102 ) via a distribution system.
  • the manifest server 116 can transmit and/or cause the manifest file to be transmitted (e.g., delivered, provided, etc.) to the user device 102 .
  • the manifest server 116 can transmit the manifest file to the computing device 104 and the computing device 104 can transmit the manifest file to the user device 102 .
  • the user device 102 can request the video fragments at the locations included in the manifest file to create (e.g., assemble, build, retrieve, etc.) video.
  • the computing device 104 can manage advertising to be included with in content transmitted to the user device 102 .
  • the computing device 104 can comprise a database 114 for linking the device identifier 108 with the advertisement list 118 used to create the manifest file used by the user device 102 and/or the content state 120 .
  • the manifest server 116 when the manifest server 116 creates a manifest file for the user device 102 , the manifest server 116 can transmit a signal to the computing device 104 , wherein the signal comprises the device identifier 108 of the user device 102 .
  • the computing device 104 can query the database 114 for device identifier 108 .
  • the content state 120 can be checked to see if the advertisement list 118 should be used for the manifest file being created by the manifest server 116 . For example, if the content state 120 indicates that the content currently being requested by the user device 102 is not the same as the content currently being presented by the user device 102 , then there is no need to use the same advertisement list 118 . In an aspect, if the content represented in the content state 120 is the same as the content in the currently created manifest file, and the parameters are the same, then the same manifest file can be returned to the user device 102 .
  • the advertisement list 118 can be used in creating a new manifest file if the content represented in the content state 120 is the same as the content in the currently created manifest file, but the parameters are different. For example, if the user device 102 requested the same content, but at a different bitrate, then the same advertisement list 118 should be used to create the manifest file. If it is determined that the same advertisement list 118 should be used, then the manifest server 116 can use the same advertisement list 118 to create the manifest file. If it is determined that the same advertisement list 118 should not be used, then the manifest server 116 can receive a new advertisement list 118 from the advertisement server 106 .
  • a state can comprise the advertisement list 116 and content state 120 and be associated with a device identifier 106 .
  • the manifest server 116 can transmit and/or cause the newly created manifest file to be transmitted (e.g., delivered, provided, etc.) to the user device 102 .
  • the manifest server 116 can transmit the new manifest file to the computing device 104 and the computing device 104 can transmit the new manifest file to the user device 102 .
  • the user device 102 can request the video fragments at the locations included in the new manifest file to create (e.g., assemble, build, retrieve, etc.) video.
  • video fragments referred to in the new manifest file can be for the same advertisements as in the previous manifest file, only with a different parameters or attributes (e.g., a different bitrate, a different codec, a different size, combinations thereof, and the like).
  • video fragments referred to in the new manifest file can be for the same advertisements as in the previous manifest file, only at the second bitrate.
  • FIG. 2A illustrates a block representation of an exemplary set of sequential data fragments 200 A.
  • the set of sequential data fragments 200 A can be assembled using a manifest file comprising references to the set of sequential data fragments 200 A, which can be generated by the manifest server 116 , for example.
  • the references can be uniform resource locators (URLs).
  • the set of sequential data fragments 200 A can comprise data fragments 202 A, 206 A, and 208 A.
  • the data fragments 202 A can represent requested content (e.g., video content).
  • the data fragments 206 A can represent a first advertisement (e.g., a video advertisement) and the data fragments 208 A can represent a second advertisement (e.g., a video advertisement).
  • each data fragment can comprise video and first parameters (e.g., details) related to the video.
  • the first parameters can be content-related parameters.
  • the first parameters can comprise a first bitrate of the video.
  • the first parameters can comprise a first codec used for encoding and/or used for decoding the video.
  • the first parameters can comprise a first format, such as a first size of a display for which the video is formatted.
  • the user device or client may request another version of the content, and also another manifest file. This can occur, for example, if the network connection used by the user device changes, and the user device may seek the content in a lower or higher bitrate to accommodate changing network conditions.
  • the user device 102 requests the same content with second parameters (for example, the same content, but at a second bitrate)
  • a new set of sequential data fragments 200 B can be received from the source comprising data fragments 202 B which comprise the content with the second parameters.
  • the second parameters can be content-related parameters.
  • the new set of sequential data fragments 200 B can be assembled using a manifest file from the manifest server 116 .
  • the new set of sequential data fragments 200 B can comprise data fragments 206 B representing the first advertisement and/or data fragments 208 B representing the second advertisement.
  • the systems and methods described herein can ensure that an advertisement, such as the first advertisement, that is displayed during the request for another version of the content, is displayed after the request for another version of the content is fulfilled.
  • it can be determined that a version of the first advertisement having the second parameters is available and can be included in the data fragments 206 B in order to match the second parameters of the requested content.
  • the first advertisement is also available at a second bitrate.
  • the first advertisement included in the data fragments 206 B can be a version of the first advertisement at the same (e.g., original, first) parameters as in the set of sequential data fragments 200 A.
  • the data fragments 206 B representing the first advertisement can be at the first bitrate.
  • a version of the first advertisement included in the data fragments 206 B can comprise third parameters (e.g., not the same parameters as originally delivered version of content nor the same parameters as the newly requested version of content).
  • the first advertisement can be at a third bitrate.
  • the third parameters can be content-related parameters.
  • the third parameters can be a closest available version of the first advertisement to the second parameters.
  • the third bitrate can be a bitrate closest to the second bitrate at which the first advertisement is available.
  • the third parameter can be closer to the second parameter than the first parameters.
  • the third bitrate can be closer to the second bitrate than the first bitrate.
  • FIG. 3 illustrates an exemplary display in accordance with the systems and methods described herein.
  • display 302 shows content 304 at a first bitrate.
  • the display 302 can represent the content 304 encoded by a first codec.
  • the display 302 can comprise a first size and can represent the content 304 formatted for the first size.
  • display 306 can represent the same content 304 but with a second parameter.
  • the display 306 can show content 304 at a second bitrate.
  • the content 304 at the first bitrate can be at a lower bitrate than the content 304 at the second bitrate.
  • the content 304 at the first bitrate can be at a higher bitrate than the content 304 at the second bitrate.
  • the display 302 can represent the content 304 encoded by a second codec.
  • the display 302 can comprise a second size and can represent the content 304 formatted for the second size.
  • the first size can be greater than the second size.
  • the first size can be less than the second size.
  • the display 302 can represent the content 304 displayed when a buffer comprises less than and/or equal to a predetermined threshold number of video frames or other units of the content 304 .
  • the display 306 can represent the content 304 displayed when a buffer comprises more than and/or equal to a predetermined threshold number of video frames or other units of the content 304 .
  • FIGS. 4A and 4B illustrate block diagrams representing an exemplary system and architecture. The methods and systems described herein can be used in conjunction with content comprising any number of attribute or parameter options.
  • FIGS. 4A and 4B illustrate content comprising multiple bitrate options.
  • a user device 102 e.g., a video player or client
  • the content can also be available from the content provider 410 at a second bitrate 406 and a third bitrate 408 .
  • the content provider 410 can query an advertisement server 106 .
  • the advertisement server 106 can determine that Advertisements A1, A2, and A3 should be inserted into the requested content and returned to the user device 102 .
  • a first manifest server (M1) 116 of a plurality of manifest servers (M1 . . . Mn) 116 associated with the content provider or deliver network 410 can create and deliver a first manifest file to the user device 102 .
  • the first manifest file may comprise references to the requested content at the requested bitrate 404 and references to Advertisements A1, A2, and A3 at the requested bitrate 404 .
  • the first manifest server 116 can create state information 402 associated with the first manifest file, where the state information 402 can comprise all of the parameters and attributes of the content for which the manifest file was created.
  • the manifest server 116 may transmit the state information 402 to one or more of the rest of the plurality of manifest servers 116 .
  • the first manifest server 116 can create the state information 402 and transmit the state information 402 to a central location accessible to the plurality of manifest servers 116 .
  • the state information 402 can comprise the advertisement list and content state 120 and be associated with a device identifier 106 .
  • the state information 402 can be associated with a particular manifest file that was generated and/or sent to a user device.
  • the state information 402 can be stored as a separate file from the particular manifest file, linked by an identifier(s) or the state information 402 can be stored as part of the particular manifest file.
  • the particular manifest file can be used to readily provide a location for a version (e.g., content/advertisement at a specific (or proximate) requested parameters) of requested content/advertisements that best fits a request by referencing the state information 402 .
  • a version e.g., content/advertisement at a specific (or proximate) requested parameters
  • the user device 102 can request the content at the second bitrate 406 from the content provider 410 .
  • the request can be sent or received after a portion of the content has already been transmitted to the user device 102 , or consumed by a user of the device 102 .
  • any of the plurality of manifest servers 116 associated with the content provider or delivery service 410 can receive the request and check the state information 402 .
  • the manifest server 116 in receipt of the request or a centrally located computing device 104 can recognize that the requested content at the second bitrate 406 is the same content currently being consumed by, or delivered to the user device 102 at the first bitrate 404 (e.g., via a content identifier).
  • the manifest server 116 in receipt of the request can recognize that the content currently being consumed by, or delivered to, the user device 102 comprises the same content identifier as the content currently being requested and that the content is currently being consumed or delivered with parameters different from the parameters currently being requested.
  • the manifest server 116 in receipt of the request or a centrally located computing device 104 can access state information 402 to match the content identifier of the content currently being consumed by, or delivered to the user device 102 with the content identifier of the content currently being requested and access the state information 402 to determine that the content is currently being consumer or delivered with parameters different from the parameters currently being requested.
  • the manifest server 116 can create a second manifest file that comprises references to the content at the second bitrate 406 .
  • the advertisement list can be accessed using the state information 402 , Advertisements A1, A2, and A3 can be determined to be in the first manifest file.
  • the second manifest file can also comprise references to the Advertisements A1, A2, and A3 at the second bitrate 406 , since such advertisements were identified to be inserted into the content by accessing the state information 402 .
  • the second manifest file can comprise references to one or more of the Advertisements A1, A2, and A3 at the first bitrate 404 , if the one or more Advertisements are unavailable at the second bitrate 406 .
  • the second manifest file can comprise references to one or more of the Advertisements A1, A2, and A3 at the third bitrate 408 , if the one or more Advertisements is unavailable at the second bitrate 406 .
  • the second manifest file can be delivered to the user device 102 .
  • the state information 402 can be updated to reflect the second manifest file delivered to the user device 102 .
  • the updated state information 402 can comprise the second parameters.
  • the updated state information 402 can be transmitted to one or more of the plurality of manifest servers 116 .
  • the updated state information 402 can be transmitted to a central location accessible to the plurality of manifest servers 116 .
  • FIG. 5 illustrates an exemplary method 500 , which, in one example, may be implemented by on one or more manifest servers 116 .
  • a request of selection for content can be received from a user device.
  • the requested content can be video content.
  • the user device can be a set top box, a computing device, a mobile device, a gateway and the like.
  • the request or selection can comprise one or more first requested parameters or attributes, for example, a first bitrate, a first codec, a first file size or frame rate, combinations thereof, and the like.
  • the selection for content can comprise a device identifier associated with the user device.
  • the device identifier can be a media access control (MAC) address.
  • the identifier can comprise a token.
  • the token can be globally unique.
  • a first manifest file comprising for example a reference to content fragments and a first plurality of advertising fragments at the first parameters.
  • a first manifest file comprising a reference to fragments of the content at the first bitrate and a reference to a first plurality of advertising fragments at the first bitrate, encoded with the first codec, and/or formatted for the first size, can be generated.
  • the references can be to an order of fragments or locations where the fragments can be retrieved.
  • the references can be uniform resource identifiers (URIs).
  • the references can be uniform resource locators (URLs).
  • state information associated with the first manifest file and other information can be created and/or stored.
  • the state information can comprise an advertisement list related to the first plurality of advertising fragments (e.g., the video fragments that make up each of the advertisements in the advertisement list).
  • the state information can represent a content state.
  • the content state can comprise identification of the selected content.
  • the content state can comprise the first parameters, for example, the first bitrate, the first codec, the first size, combinations thereof, and the like.
  • a request or selection comprising second parameters can be received from the user device.
  • the second parameters can be, for example, a second bitrate, a second codec, a second size or rate, combinations thereof, and the like.
  • the request or selection is for the same content, but with one or more different, or second parameters.
  • the selection for the second parameters can be received while the user device is rendering or displaying an advertisement or other portion of content associated with the first manifest file.
  • the selection can comprise the device identifier from the user device.
  • the state information associated with the first manifest file and/or device identifier can be accessed.
  • the device identifier in the selection can be used to access the state information.
  • the state information can be accessed from a local or remote memory.
  • the state information can be retrieved from a remote computing device.
  • a second manifest file can be generated.
  • the second manifest file can comprise a reference to fragments of the content with the second parameters.
  • the second manifest file can comprise a reference to fragments of the content at the second bitrate, encoded with the second codec, formatted for the second size, combinations thereof, and the like.
  • the second manifest file can comprise a reference to a second plurality of advertising fragments.
  • the second plurality of advertising fragments can be related to the first plurality of advertising fragments in the state information.
  • the second plurality of advertising fragments can refer or point to the same advertisements as the first plurality of advertising fragments.
  • the systems and methods described herein can ensure that an advertisement, such as the first plurality of advertising fragments, that is displayed during the request or selection for second parameters, is displayed after the request or selection is fulfilled. Therefore, the second plurality of advertising fragments can comprise the same advertisement as the first plurality of advertising fragments, even if the advertisement is not available with the second parameters.
  • the second plurality of advertising fragments can comprise third parameters.
  • the second plurality of advertising fragments can comprise a third bitrate, can be encoded with a third codec, can be formatted for a third size, combinations thereof, and the like.
  • the third parameters can be the same as the first parameters.
  • the third bitrate can be the same as the first bitrate.
  • the third codec can be the same as the first codec. In an aspect, the third size can be the same as the first size. In an aspect, the third parameters can be the same as the second parameters. In an aspect, the third bitrate can be the same as the second bitrate. In an aspect, the third codec can be the same as the second codec. In an aspect, the third size can be the same as the second size. In an aspect, the third parameters can be different from the first parameters and the second parameters. In an aspect, the third bitrate can be different from the first bitrate and the second bitrate. In an aspect, the third codec can be different from the first codec and the second codec. In an aspect, the third size can be different from the first size and the second size.
  • the second plurality of advertising fragments can be related to the first plurality of advertising fragments.
  • the second plurality of advertising fragments can comprise a reference to advertising fragments that represent different advertisements from advertisements represented by the first plurality of advertising fragments. For example, this could be due to a different advertisement being chosen for the user when the second request is received (e.g., the different advertisement may be more relevant at a second, later point in time).
  • one or more different advertisements can be added to the advertisement list in the state information.
  • the one or more different advertisements can replace one or more advertisements previously in the advertisement list.
  • the one or more different advertisements can be related to the respective one or more advertisements being replaced.
  • one of the one or more different advertisements can be for the same product as the advertisement being replaced. In another further aspect, one of the one or more different advertisements can be for the same company as the advertisement being replaced. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in parameters. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in bitrate. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in codec. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in size.
  • FIG. 6 illustrates an exemplary method 600 , executing on a user device 102 .
  • a selection for content can be transmitted.
  • the selection for content can comprise a selection for a first parameter.
  • the first parameter can be, for example, a first bitrate, a first codec, a first size, combinations thereof, and the like.
  • the selection for content can comprise an identifier.
  • the identifier can be associated with the user device.
  • the identifier can be a media access control (MAC) address.
  • the identifier can comprise a token.
  • the token can be globally unique.
  • the user device can be a set top box, a computing device, a mobile device, and the like.
  • the content can comprise video.
  • a first data stream can be received.
  • the first data stream can comprise the selected content comprising first parameter.
  • the first parameter can comprise a first bitrate, a first codec, a first size, combinations thereof, and the like.
  • the first data stream can comprise a plurality of advertisements.
  • the plurality of advertisements can comprise the first parameter.
  • the plurality of advertisements can be at the first bitrate, encoded with the first codec, formatted for the first size, combinations thereof, and the like.
  • the first data stream can comprise an Internet Protocol (IP) stream.
  • IP Internet Protocol
  • the first data stream can be presented on a display device.
  • the display device can be a television, a monitor, a mobile device, and the like.
  • a selection for a second parameter can be transmitted while one of the first plurality of advertisements is displayed on the display device.
  • the second parameter can be, for example, a second bitrate, a second codec, a second size, combinations thereof, and the like.
  • a second data stream comprising the selected content with the second parameter can be received.
  • the second data stream can comprise the selected content at the second bitrate, the selected content encoded with the second codec, the selected content formatted for the second size, combinations thereof, and the like.
  • the second data stream can comprise a second plurality of advertisements.
  • the second data stream can comprise an Internet Protocol (IP) stream.
  • IP Internet Protocol
  • a transition from displaying the first data stream to displaying the second data stream can be made.
  • the transition can happen while the one of the first plurality of advertisements is displayed on the display device.
  • the second data stream can be presented on the display device.
  • the transition from displaying the first data stream to displaying the second data stream can maintain continuity.
  • maintaining continuity can comprise a seamless transition that is not perceptible to a viewer.
  • maintaining continuity can comprise beginning display of the second data stream at or just after a time point where display of the first data stream ended, despite a possible perceivable difference in display quality before and after the transition.
  • maintaining continuity can comprise displaying the same advertisement before and after the transition.
  • maintaining continuity can comprise displaying an advertisement for the same company and/or product after the transition as was being displayed before the transition.
  • the advertisement can be displayed on the display device.
  • the advertisement can be displayed on the display device with the second parameter.
  • the advertisement can be displayed on the display device at the second bitrate, using the second codec, at the second size, combinations thereof, and the like.
  • the advertisement can be displayed on the display device with the first parameter.
  • the advertisement can be displayed on the display device at the first bitrate, using the first codec, at the first size, combinations thereof, and the like.
  • the advertisement can be displayed on the display device with the third parameter.
  • the advertisement can be displayed on the display device at the third bitrate, using the third codec, at the third size, combinations thereof, and the like.
  • FIG. 7 illustrates an exemplary method 700 , executing on one or more manifest servers 116 .
  • an identifier of a user device, an identifier of content with a first parameter, and an identifier of a plurality of advertisements with the first parameter can be received at a first manifest server.
  • the first parameter can be, for example, a first bitrate, a first codec, a first size, combinations thereof, and the like.
  • the received identifiers can be received in response to a request.
  • a request for a first video stream can be received at a first manifest server of a plurality of manifest servers from a user device.
  • the request for the first video stream can comprise a request for content with the first parameter.
  • the first video stream can comprise Internet Protocol (IP) delivery.
  • IP Internet Protocol
  • the user device can be a set top box, a computing device, a mobile device, and the like.
  • a first manifest file can be generated.
  • the first manifest file can be generated in response to the request.
  • the first manifest file can comprise an identifier.
  • the identifier can comprise a device identifier associated with the user device.
  • the identifier can comprise a device identifier associated with the user device originating the request for the first video stream.
  • the identifier can comprise a media access control (MAC) address associated with the device originating the request for the first video stream.
  • the identifier can comprise a token.
  • the token can be globally unique.
  • the first manifest file can comprise a reference to the content with the first parameter.
  • the first manifest file can comprise a reference to the content at the first bitrate, the content encoded with the first codec, the content formatted for the first size, combinations thereof, and the like.
  • the first manifest file can comprise a first plurality of references to the plurality of advertisements at the first parameter.
  • the first manifest file can comprise a first plurality of references to the plurality of advertisements at the first bitrate, a first plurality of references to the plurality of advertisements encoded at the first codec, a first plurality of references to the plurality of advertisements formatted for the first size, combinations thereof, and the like.
  • the first manifest file can be transmitted to the user device.
  • the user device can use the reference to the content in the first manifest file to request content.
  • the reference to the content can comprise a uniform resource identifier (URI).
  • the reference to the content can comprise a uniform resource locator (URL).
  • the user device can use the first plurality of references to the plurality of advertisements in the first manifest file to request one of the plurality of advertisements.
  • the first plurality of references to the plurality of advertisements can comprise uniform resource identifiers (URIs).
  • the first plurality of references to the plurality of advertisements can comprise uniform resource locators (URLs).
  • the first manifest file or a reference to the first manifest file that can be used to identify information in the first manifest file, can be stored such that it is easily identifiable and accessible by a plurality of manifest file generating devices.
  • An identifier of the user device can be associated with the first manifest file.
  • the first manifest file and/or the user device identifier can transmitted to a second manifest server, of a plurality of manifest servers, that may be centrally located or easily accessible by other manifest file servers.
  • the identifier of the user device and an identifier of the content with a second parameter can be received at any of the manifest file servers or computing devices.
  • the second parameter can be, for example, a second bitrate, a second codec, a second size, combinations thereof, and the like.
  • a subsequent request for a second video stream of the content with the second parameter can be received from the user device at any of the plurality of manifest servers.
  • the content and the plurality of advertisements can be identified based on the first manifest file and/or the identifier of the user device.
  • a determination can be made that the user device is requesting content already playing at the user device. For example, a content identifier of the content already playing at the user device can be matched with a content identifier of the requested content using the first manifest file and/or the identifier of the user device.
  • the first parameter can be identified using the first manifest file and/or the identifier of the user device and can be determined to be different from the second parameter. Therefore, the plurality of advertisements in the first manifest file can be identified. In an aspect, the plurality of advertisements can be identified in response to receiving the identifier of the user device.
  • the identifier of the user device can be received in a request to generate a manifest file.
  • the plurality of advertisements can be identified locally.
  • the plurality of advertisements can be identified by transmitting the identifier of the user device to a central computing device. Identifying the plurality of advertisements can allow the plurality of advertisements to be used in a newly generated manifest file. Therefore, the need to generate a new plurality of advertisement can be alleviated. Additionally, if a new plurality of advertisements is needed, the plurality of advertisements in the first manifest file (e.g., what advertisements has the viewer seen; what advertisements the viewer was scheduled to view, but has not seen yet; what advertisement the viewer was currently watching; etc.) can be considered in creating the new plurality of advertisements. The knowledge of the plurality of advertisements in the first manifest file can help prevent the viewer from being exposed to the same advertisements repeatedly.
  • a second manifest file can be generated.
  • the second manifest file can comprise the identifier of the user device.
  • the second manifest file can comprise a reference to the content at the second parameter.
  • the second manifest file can comprise a second plurality of references to the plurality of advertisements.
  • the subsequent request for the second video stream can cause the second manifest file to be created.
  • the second manifest file can synchronize advertising content with the first manifest file.
  • the second video stream can comprise Internet Protocol (IP) delivery.
  • IP Internet Protocol
  • the second manifest file can comprise references to the same advertising content as the first manifest file.
  • the same advertising content can be at the second parameter.
  • the same advertising content can be at the first parameter.
  • the same advertising content can be at a third parameter.
  • the second manifest file can be transmitted to the user device.
  • the user device can use the reference to the content in the second manifest file to request content.
  • the reference to the content can comprise a uniform resource identifier (URI).
  • the reference to the content can comprise a uniform resource locator (URL).
  • the user device can use the first plurality of references to the plurality of advertisements in the second manifest file to request one of the plurality of advertisements.
  • the first plurality of references to the plurality of advertisements can comprise uniform resource identifiers (URIs).
  • the first plurality of references to the plurality of advertisements can comprise uniform resource locators (URLs).
  • FIG. 8 is a block diagram illustrating an exemplary operating environment for performing the disclosed methods.
  • This exemplary operating environment is only an example of an operating environment and is not intended to suggest any limitation as to the scope of use or functionality of operating environment architecture. Neither should the operating environment be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment.
  • the present methods and systems can be operational with numerous other general purpose or special purpose computing system environments or configurations.
  • Examples of well known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like.
  • the processing of the disclosed methods and systems can be performed by software components.
  • the disclosed systems and methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices.
  • program modules comprise computer code, routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • the disclosed methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules can be located in both local and remote computer storage media including memory storage devices.
  • the components of the computer 801 can comprise, but are not limited to, one or more processors 803 , a system memory 812 , and a system bus 813 that couples various system components including the one or more processors 803 to the system memory 812 .
  • the system can utilize parallel computing.
  • the system bus 813 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, or local bus using any of a variety of bus architectures.
  • bus architectures can comprise an industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, an Accelerated Graphics Port (AGP) bus, and a Peripheral Component Interconnects (PCI), a PCI-Express bus, a Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB) and the like.
  • ISA industry Standard Architecture
  • MCA Micro Channel Architecture
  • EISA Enhanced ISA
  • VESA Video Electronics Standards Association
  • AGP Accelerated Graphics Port
  • PCI Peripheral Component Interconnects
  • PCI-Express PCI-Express
  • PCMCIA Personal Computer Memory Card Industry Association
  • USB Universal Serial Bus
  • the bus 813 and all buses specified in this description can also be implemented over a wired or wireless network connection and each of the subsystems, including the one or more processors 803 , a mass storage device 804 , an operating system 805 , advertising continuity software 806 , advertising continuity data 807 , a network adapter 808 , the system memory 812 , an Input/Output Interface 810 , a display adapter 809 , a display device 811 , and a human machine interface 802 , can be contained within one or more remote computing devices 814 a,b,c at physically separate locations, connected through buses of this form, in effect implementing a fully distributed system.
  • the computer 801 typically comprises a variety of computer readable media. Exemplary readable media can be any available media that is accessible by the computer 801 and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media.
  • the system memory 812 comprises computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM).
  • RAM random access memory
  • ROM read only memory
  • the system memory 812 typically contains data such as the advertising continuity data 807 and/or program modules such as the operating system 805 and the advertising continuity software 806 that are immediately accessible to and/or are presently operated on by the one or more processors 803 .
  • the computer 801 can also comprise other removable/non-removable, volatile/non-volatile computer storage media.
  • FIG. 8 illustrates the mass storage device 804 which can provide non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computer 801 .
  • the mass storage device 804 can be a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (RUM), electrically erasable programmable read-only memory (EEPROM), and the like.
  • any number of program modules can be stored on the mass storage device 804 , including by way of example, the operating system 805 and the advertising continuity software 806 .
  • Each of the operating system 805 and the advertising continuity software 806 (or some combination thereof) can comprise elements of the programming and the advertising continuity software 806 .
  • the advertising continuity data 807 can also be stored on the mass storage device 804 .
  • the advertising continuity data 807 can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, my SQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple systems.
  • the user can enter commands and information into the computer 801 via an input device (not shown).
  • input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a “mouse”), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, and the like
  • pointing device e.g., a “mouse”
  • tactile input devices such as gloves, and other body coverings, and the like
  • These and other input devices can be connected to the one or more processors 803 via the human machine interface 802 that is coupled to the system bus 813 , but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, or a universal serial bus (USB).
  • a parallel port e.g., game port
  • IEEE 1394 Port also known as a Firewire port
  • serial port e.g., a serial port
  • USB universal serial bus
  • the display device 811 can also be connected to the system bus 813 via an interface, such as the display adapter 809 .
  • the computer 801 can have more than one display adapter 809 and the computer 801 can have more than one display device 811 .
  • a display device can be a monitor, an LCD (Liquid Crystal Display), or a projector.
  • other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computer 801 via the Input/Output Interface 810 . Any step and/or result of the methods can be output in any form to an output device.
  • Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like.
  • the display 811 and computer 801 can be part of one device, or separate devices.
  • the computer 801 can operate in a networked environment using logical connections to one or more remote computing devices 814 a,b,c .
  • a remote computing device can be a personal computer, portable computer, smartphone, a server, a router, a network computer, a peer device or other common network node, and so on.
  • Logical connections between the computer 801 and a remote computing device 814 a,b,c can be made via a network 815 , such as a local area network (LAN) and/or a general wide area network (WAN).
  • LAN local area network
  • WAN wide area network
  • Such network connections can be through the network adapter 808 .
  • the network adapter 808 can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet.
  • application programs and other executable program components such as the operating system 805 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 801 , and are executed by the one or more processors 803 of the computer.
  • An implementation of the advertising continuity software 806 can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer.
  • Computer readable media can comprise “computer storage media” and “communications media.”
  • “Computer storage media” comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data.
  • Exemplary computer storage media comprises, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
  • the methods and systems can employ Artificial intelligence techniques such as machine learning and iterative learning.
  • Artificial intelligence techniques such as machine learning and iterative learning.
  • Such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. Expert inference rules generated through a neural network or production rules from statistical learning).

Abstract

Methods and systems are described for generating content identification files, such as manifest files, for ensuring content and advertising continuity when changes occur during playback. A user device can request content at a particular bitrate, and a first manifest file comprising references to the content and selected associated content such as advertisements can be created in response to the request. While one of the advertisements is being displayed, the user device can request a change, such as for a different bitrate. A computing device, such as a manifest server can access the first manifest file to determine the content and the associated content, such the advertisements, that were intended for the user. The manifest server can then create a second manifest file in response to the request, where second manifest file can be created with the associated content, for example, the advertisements in the first manifest file.

Description

CROSS REFERENCE TO RELATED APPLICATION
This application is a continuation of U.S. application Ser. No. 15/079,831 filed Mar. 24, 2016, herein incorporated by reference in its entirety.
BACKGROUND
Internet Protocol (IP) video can be delivered at different bitrates. A device receiving an IP video stream can request a change in the bitrate of the video stream. If the IP video stream is currently displaying an advertisement, a different advertisement, corresponding to the newly requested bitrate will interrupt the currently displaying advertisement at the old bitrate, causing a negative impact on the user experience. What is needed is a way to transition between bitrates mid-advertisement while maintaining continuity. These and other shortcomings are addressed by the present disclosure.
SUMMARY
It is to be understood that both the following general description and the following detailed description are exemplary and explanatory only and are not restrictive. Methods and systems are described for ensuring continuity with segments of content. For example, the methods and systems described herein can be used to ensure advertising continuity. In an aspect, a user device can request content at a first bitrate. The content request can comprise an identifier associated with the user device. In response to the content request, an advertisement server can generate an advertisement list and deliver the advertisement list to a manifest server. The advertisement list can comprise one or more advertisements that can be displayed during consumption of the requested content. The manifest server can transmit the advertisement list and the identifier associated with the user device to a central computing device. The manifest server can create a first manifest file comprising instructions for acquiring the requested content at the first bitrate and the advertisements in the advertisement list at the first bitrate. The first manifest file can be transmitted to the user device and the user device can use the first manifest file to acquire and playback sequential video fragments of the requested content and advertisements at the first bitrate. In an aspect, the user of the user device can request the content at a second bitrate that is different from the first bitrate. The manifest server can access the advertisement list either local or from the central computing device and can use the advertisement list to create a second manifest file. The second manifest file can comprise instructions for acquiring the requested content at the second bitrate and the advertisements in the advertisement list at the second bitrate.
Additional advantages will be set forth in part in the description which follows or may be learned by practice. The advantages will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
BRIEF DESCRIPTION OF THE DRAWINGS
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments and together with the description, serve to explain the principles of the methods and systems:
FIG. 1 is a block diagram of an exemplary system and network;
FIGS. 2A and 2B are block representations of exemplary sequential data fragments;
FIG. 3 is an exemplary display;
FIGS. 4A and 4B are block diagrams of an exemplary system;
FIG. 5 is a flow chart of an exemplary method;
FIG. 6 is a flow chart of an exemplary method;
FIG. 7 is a flow chart of an exemplary method; and
FIG. 8 is a block diagram of an exemplary computing device.
DETAILED DESCRIPTION
Before the present methods and systems are disclosed and described, it is to be understood that the methods and systems are not limited to specific methods, specific components, or to particular implementations. It is also to be understood that the terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting.
As used in the specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. Ranges may be expressed herein as from “about” one particular value, and/or to “about” another particular value. When such a range is expressed, another embodiment includes from the one particular value and/or to the other particular value. Similarly, when values are expressed as approximations, by use of the antecedent “about,” it will be understood that the particular value forms another embodiment. It will be further understood that the endpoints of each of the ranges are significant both in relation to the other endpoint, and independently of the other endpoint.
“Optional” or “optionally” means that the subsequently described event or circumstance may or may not occur, and that the description includes instances where said event or circumstance occurs and instances where it does not.
Throughout the description and claims of this specification, the word “comprise” and variations of the word, such as “comprising” and “comprises,” means “including but not limited to,” and is not intended to exclude, for example, other components, integers or steps. “Exemplary” means “an example of” and is not intended to convey an indication of a preferred or ideal embodiment. “Such as” is not used in a restrictive sense, but for explanatory purposes.
Disclosed are components that can be used to perform the disclosed methods and systems. These and other components are disclosed herein, and it is understood that when combinations, subsets, interactions, groups, etc. of these components are disclosed that while specific reference of each various individual and collective combinations and permutation of these may not be explicitly disclosed, each is specifically contemplated and described herein, for all methods and systems. This applies to all aspects of this application including, but not limited to, steps in disclosed methods. Thus, if there are a variety of additional steps that can be performed it is understood that each of these additional steps can be performed with any specific embodiment or combination of embodiments of the disclosed methods.
The present methods and systems may be understood more readily by reference to the following detailed description of preferred embodiments and the examples included therein and to the Figures and their previous and following description.
As will be appreciated by one skilled in the art, the methods and systems may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the methods and systems may take the form of a computer program product on a computer-readable storage medium having computer-readable program instructions (e.g., computer software) embodied in the storage medium. More particularly, the present methods and systems may take the form of web-implemented computer software. Any suitable computer-readable storage medium may be utilized including hard disks, CD-ROMs, optical storage devices, or magnetic storage devices.
Embodiments of the methods and systems are described below with reference to block diagrams and flowchart illustrations of methods, systems, apparatuses and computer program products. It will be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, respectively, can be implemented by computer program instructions. These computer program instructions may be loaded onto a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create a means for implementing the functions specified in the flowchart block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including computer-readable instructions for implementing the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer-implemented process such that the instructions that execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
Accordingly, blocks of the block diagrams and flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the block diagrams and flowchart illustrations, and combinations of blocks in the block diagrams and flowchart illustrations, can be implemented by special purpose hardware-based computer systems that perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
In one aspect of the disclosure, a system can be configured to ensure advertising continuity to a user device. Those skilled in the art will appreciate that the present methods may be used in various types of networks and systems that employ both digital and analog equipment. One skilled in the art will appreciate that provided herein is a functional description and that the respective functions can be performed by software, hardware, or a combination of software and hardware. The present disclosure is directed to systems and methods for providing content comprising advertising to a user device such as a computer, a tablet, a mobile device, a communications terminal, or the like. In an aspect, the user device can comprise an identifier which can be globally unique, such as a media access control (MAC) address. In another aspect, the identifier can comprise a token. The user device can request content. For example, the content request can comprise a request for a manifest file. A manifest file can be a sequential list of video fragments to play to render content and/or advertisements. The manifest file can comprise references to content video fragments and/or references to advertising video fragments. The content request can be for a manifest file for content and/or advertisements at a first bitrate. In an aspect, the content request can comprise the identifier. The identifier can be used to identify the origin of the content request, as the content request is forwarded amongst the devices in the network. In an aspect, a computing device, such as a content server, can receive the content request.
The computing device can forward the content request to an advertisement server. The advertisement server can return an advertisement list to the computing device. The advertisement list can comprise a list of specific advertisements in a specific order. In an aspect, the computing device can forward the content request and the advertisement list to a manifest server. In an aspect, the manifest server can be configured to create a manifest file in response to the content request. In an aspect, the manifest server can be configured to create a content state that can be used to track details/parameters of the content associated with the manifest file such as title, bitrate, etc. For example, the content state can track that a program is being streamed to a device at 480p24. The content state can be any data structure suitable for organizing data, such as a list, database table, etc. The content state represents the state of the content at the user device for which the manifest file was created. In an aspect, the content state can be registered with a central computing device. In an aspect, the content state can be transmitted to a plurality of manifest servers. In an aspect, the content state can be maintained at the central computing device. In a further aspect, the plurality of manifest servers can check the content state at the central computing device in response to receiving a request for a manifest file. In an aspect, the central computing device can be configured to link the identifier of the user device with the advertisement list and the content state. In an aspect, the user device can receive the manifest file. In an aspect, the user device can use the manifest file to retrieve and render the content and advertisements. In an aspect, the user device can request video (content and/or advertisement) fragments from the corresponding locations in the manifest file. In an aspect, the requested content and advertisements can be streamed to the user device. In an aspect, the user device can render the content with advertisements interspersed therein. In an aspect, the systems and methods described herein can ensure that a stream change during playing of an advertisement, such as that caused by an adaptive bitrate quality change, results in continued playing of the same advertisement that the customer was viewing. An adaptive bitrate quality change can comprise, for example, a request for a lower quality bitrate in response to a determination that available bandwidth is decreasing. In another example, an adaptive bitrate quality change can comprise a request for a higher quality bitrate in response to a determination that available bandwidth is increasing. In an aspect, the user device can be playing the content at the first bitrate and be in the middle of one of the advertisements when the user device needs to change bitrates. The user device might need to change bitrates because of a change in quality, for example. The user device might require a better quality or a worse quality. For example, network latency can cause a user device to need a lower quality video (e.g., video at a lower bitrate).
The user device can make another content request for another manifest file for the content at a second bitrate. In an aspect, even though the video fragments referred to in the new manifest file are at the second bitrate, the advertising video segments can be the same content as the advertising video segments in the previous manifest file at the first bitrate. In a further aspect, the advertising video segments can be at the first bitrate, the second bitrate, or another bitrate.
FIG. 1 illustrates various aspects of an exemplary environment in which the present methods and systems can operate. In an aspect, the disclosed systems can comprise a user device 102 in communication with a computing device 104 such as a content server, for example. The user device 102 and the computing device 104 can be in communication via a private and/or public network 105 such as a proprietary line from a service provider and/or the Internet. Other forms of communications can be used such as wired and wireless telecommunication channels, for example.
In an aspect, the user device 102 can be an electronic device such as a computer, a smartphone, a laptop, a tablet, a set top box, a display device, or other device capable of communicating with the computing device 104. In an aspect, the user device 102 can be associated with a user identifier or device identifier 108. As an example, the device identifier 108 can be any identifier, token, character, string, or the like, for differentiating one user or user device (e.g., user device 102) from another user or user device. In a further aspect, the device identifier 108 can identify a user or user device as belonging to a particular class of users or user devices. As a further example, the device identifier 108 can comprise information relating to the user device such as a manufacturer, a model or type of device, a service provider associated with the user device 102, a state of the user device 102, a locator, and/or a label or classifier. Other information can be represented by the device identifier 108.
In an aspect, the device identifier 108 can comprise an address element 110 and a service element 112. In an aspect, the address element 110 can comprise or provide an internet protocol address, a network address, a media access control (MAC) address, an Internet address, or the like. As an example, the address element 110 can be relied upon to establish a communication session between the user device 102 and the computing device 104 or other devices and/or networks. As a further example, the address element 110 can be used as an identifier or locator of the user device 102. In an aspect, the address element 110 can be persistent for a particular network.
In an aspect, the service element 112 can comprise an identification of a service provider associated with the user device 102 and/or with the class of user device 102. The class of the user device 102 can be related to a type of device, capability of device, type of service being provided, and/or a level of service (e.g., business class, service tier, service package, etc.). As an example, the service element 112 can comprise information relating to or provided by a communication service provider (e.g., Internet service provider) that is providing or enabling data flow such as communication services to the user device 102. As a further example, the service element 112 can comprise information relating to a preferred service provider for one or more particular services relating to the user device 102. In an aspect, the address element 110 can be used to identify or retrieve data from the service element 112, or vice versa. As a further example, one or more of the address element 110 and the service element 112 can be stored remotely from the user device 102 and retrieved by one or more devices such as the user device 102 and the computing device 104. Other information can be represented by the service element 112.
In an aspect, the user device 102 can transmit a request for content. In an aspect, the request for content can be transmitted to a computing device 104, such as a content server. In a further aspect, the request for content can be forwarded from the computing device 104 to a manifest server 116. In an aspect, the request for content can be transmitted directly to a manifest server 116 from the user device 102.
In an aspect, the manifest server 116 can create a manifest file in response to the request for content from the user device 102. The manifest file can comprise references to video fragments. In an aspect, video fragments can share a characteristic, such as a bitrate, a resolution, etc. In an aspect, the video fragments can be homogeneous or heterogeneous in size, relative to each other. In an aspect, the video fragments can relate to the requested content. In an aspect, the video fragments can relate to advertisements. In an aspect, the references can be uniform resource locators (URLs).
In an aspect, an advertisement server 106 can be queried. In an aspect, the computing device 104 can query the advertisement server 106. In an aspect, the manifest server 116 can query the advertisement server 106.
In an aspect, the advertisement server 106 can create an advertisement list 118 in response to the query. The advertisement list 118 can be transmitted to the manifest server 116. The advertisement list 118 can be transmitted to the computing device 104. In an aspect, a manifest server 116 can use the advertisement list 118 to include references to video fragments of the advertisements in the advertisement list 118 in a manifest file. The manifest server 116 can create a content state 120 associated with the user device 102. In an aspect, the computing device 104 can create the content state 120 associated with the user device 102. The content state 120 can comprise identification of the content represented in the manifest file. In an aspect, the content state 120 can comprise various parameters (e.g., attributes, properties, preferences, options, etc.) of the content represented in the manifest file. The parameters included in the content state 120 can comprise a bitrate of the content. In an aspect, in response to the inclusion of the advertisement list 118 in the manifest file, the computing device 104 can relate the device identifier 108, the advertisement list 118, and the state 120 in a database 114.
In an aspect, the computing device 104 can be a server for communicating with the user device 102. As an example, the computing device 104 can be configured as (or disposed at) a central location (e.g., a headend, or processing facility), which can receive content (e.g., data, input programming) from multiple sources. The computing device 104 can combine the content from the multiple sources and can distribute the content to user (e.g., subscriber) locations (e.g., the user device 102) via a distribution system.
The manifest server 116 can transmit and/or cause the manifest file to be transmitted (e.g., delivered, provided, etc.) to the user device 102. In another aspect, the manifest server 116 can transmit the manifest file to the computing device 104 and the computing device 104 can transmit the manifest file to the user device 102. The user device 102 can request the video fragments at the locations included in the manifest file to create (e.g., assemble, build, retrieve, etc.) video.
In an aspect, the computing device 104 can manage advertising to be included with in content transmitted to the user device 102. In an aspect, the computing device 104 can comprise a database 114 for linking the device identifier 108 with the advertisement list 118 used to create the manifest file used by the user device 102 and/or the content state 120. As an example, when the manifest server 116 creates a manifest file for the user device 102, the manifest server 116 can transmit a signal to the computing device 104, wherein the signal comprises the device identifier 108 of the user device 102. In response to the signal, the computing device 104 can query the database 114 for device identifier 108. If a content state 120 and advertisement list 118 exists for the device identifier 108, then the content state 120 can be checked to see if the advertisement list 118 should be used for the manifest file being created by the manifest server 116. For example, if the content state 120 indicates that the content currently being requested by the user device 102 is not the same as the content currently being presented by the user device 102, then there is no need to use the same advertisement list 118. In an aspect, if the content represented in the content state 120 is the same as the content in the currently created manifest file, and the parameters are the same, then the same manifest file can be returned to the user device 102. The advertisement list 118 can be used in creating a new manifest file if the content represented in the content state 120 is the same as the content in the currently created manifest file, but the parameters are different. For example, if the user device 102 requested the same content, but at a different bitrate, then the same advertisement list 118 should be used to create the manifest file. If it is determined that the same advertisement list 118 should be used, then the manifest server 116 can use the same advertisement list 118 to create the manifest file. If it is determined that the same advertisement list 118 should not be used, then the manifest server 116 can receive a new advertisement list 118 from the advertisement server 106. In an aspect, a state can comprise the advertisement list 116 and content state 120 and be associated with a device identifier 106.
Upon completion of creation of the new manifest file, the manifest server 116 can transmit and/or cause the newly created manifest file to be transmitted (e.g., delivered, provided, etc.) to the user device 102. In another aspect, the manifest server 116 can transmit the new manifest file to the computing device 104 and the computing device 104 can transmit the new manifest file to the user device 102. The user device 102 can request the video fragments at the locations included in the new manifest file to create (e.g., assemble, build, retrieve, etc.) video. In an aspect, video fragments referred to in the new manifest file can be for the same advertisements as in the previous manifest file, only with a different parameters or attributes (e.g., a different bitrate, a different codec, a different size, combinations thereof, and the like). For example, video fragments referred to in the new manifest file can be for the same advertisements as in the previous manifest file, only at the second bitrate.
FIG. 2A illustrates a block representation of an exemplary set of sequential data fragments 200A. In an aspect, the set of sequential data fragments 200A can be assembled using a manifest file comprising references to the set of sequential data fragments 200A, which can be generated by the manifest server 116, for example. In an aspect, the references can be uniform resource locators (URLs). The set of sequential data fragments 200A can comprise data fragments 202A, 206A, and 208A. In an aspect, the data fragments 202A can represent requested content (e.g., video content). The data fragments 206A can represent a first advertisement (e.g., a video advertisement) and the data fragments 208A can represent a second advertisement (e.g., a video advertisement). In an aspect, each data fragment can comprise video and first parameters (e.g., details) related to the video. The first parameters can be content-related parameters. In a further aspect, the first parameters can comprise a first bitrate of the video. In another aspect, the first parameters can comprise a first codec used for encoding and/or used for decoding the video. In yet another aspect, the first parameters can comprise a first format, such as a first size of a display for which the video is formatted.
Turning now to FIG. 2B, the user device or client may request another version of the content, and also another manifest file. This can occur, for example, if the network connection used by the user device changes, and the user device may seek the content in a lower or higher bitrate to accommodate changing network conditions. If the user device 102 requests the same content with second parameters (for example, the same content, but at a second bitrate), then a new set of sequential data fragments 200B can be received from the source comprising data fragments 202B which comprise the content with the second parameters. The second parameters can be content-related parameters. In an aspect, the new set of sequential data fragments 200B can be assembled using a manifest file from the manifest server 116. The new set of sequential data fragments 200B can comprise data fragments 206B representing the first advertisement and/or data fragments 208B representing the second advertisement. To minimize disruption to a viewing experience, the systems and methods described herein can ensure that an advertisement, such as the first advertisement, that is displayed during the request for another version of the content, is displayed after the request for another version of the content is fulfilled. In an aspect, it can be determined that a version of the first advertisement having the second parameters is available and can be included in the data fragments 206B in order to match the second parameters of the requested content. For example, the first advertisement is also available at a second bitrate. However, in some instances, it might be determined that there is no version of the first advertisement available having the second parameters (e.g., the first advertisement may not be available at the second bitrate). In such a scenario, the first advertisement included in the data fragments 206B can be a version of the first advertisement at the same (e.g., original, first) parameters as in the set of sequential data fragments 200A. For example, the data fragments 206B representing the first advertisement can be at the first bitrate. Alternatively, if it is determined that there is no version of the first advertisement available with the second parameters, then a version of the first advertisement included in the data fragments 206B can comprise third parameters (e.g., not the same parameters as originally delivered version of content nor the same parameters as the newly requested version of content). For example, the first advertisement can be at a third bitrate. The third parameters can be content-related parameters. The third parameters can be a closest available version of the first advertisement to the second parameters. For example, the third bitrate can be a bitrate closest to the second bitrate at which the first advertisement is available. The third parameter can be closer to the second parameter than the first parameters. For example, the third bitrate can be closer to the second bitrate than the first bitrate. Although the examples focused on bitrates, other parameters (e.g., codec used for encoding, format, size, etc.) can be used.
FIG. 3 illustrates an exemplary display in accordance with the systems and methods described herein. In an aspect, display 302 shows content 304 at a first bitrate. In another aspect, the display 302 can represent the content 304 encoded by a first codec. In yet another aspect, the display 302 can comprise a first size and can represent the content 304 formatted for the first size. In an aspect, display 306 can represent the same content 304 but with a second parameter. In a further aspect, the display 306 can show content 304 at a second bitrate. In an aspect, the content 304 at the first bitrate can be at a lower bitrate than the content 304 at the second bitrate. In an aspect, the content 304 at the first bitrate can be at a higher bitrate than the content 304 at the second bitrate. In another aspect, the display 302 can represent the content 304 encoded by a second codec. In yet another aspect, the display 302 can comprise a second size and can represent the content 304 formatted for the second size. In an aspect, the first size can be greater than the second size. In an aspect, the first size can be less than the second size. In an aspect, the display 302 can represent the content 304 displayed when a buffer comprises less than and/or equal to a predetermined threshold number of video frames or other units of the content 304. In an aspect, the display 306 can represent the content 304 displayed when a buffer comprises more than and/or equal to a predetermined threshold number of video frames or other units of the content 304.
FIGS. 4A and 4B illustrate block diagrams representing an exemplary system and architecture. The methods and systems described herein can be used in conjunction with content comprising any number of attribute or parameter options. For example, FIGS. 4A and 4B illustrate content comprising multiple bitrate options. Turning first to FIG. 4A, a user device 102 (e.g., a video player or client) can request content at a first bitrate 404 from a content provider or content delivery network 410. In an aspect, the content can also be available from the content provider 410 at a second bitrate 406 and a third bitrate 408. In response to the request, the content provider 410 can query an advertisement server 106. The advertisement server 106 can determine that Advertisements A1, A2, and A3 should be inserted into the requested content and returned to the user device 102. A first manifest server (M1) 116 of a plurality of manifest servers (M1 . . . Mn) 116 associated with the content provider or deliver network 410 can create and deliver a first manifest file to the user device 102. The first manifest file may comprise references to the requested content at the requested bitrate 404 and references to Advertisements A1, A2, and A3 at the requested bitrate 404. In an aspect, the first manifest server 116 can create state information 402 associated with the first manifest file, where the state information 402 can comprise all of the parameters and attributes of the content for which the manifest file was created. The manifest server 116 may transmit the state information 402 to one or more of the rest of the plurality of manifest servers 116. In another aspect, the first manifest server 116 can create the state information 402 and transmit the state information 402 to a central location accessible to the plurality of manifest servers 116. In an aspect, the state information 402 can comprise the advertisement list and content state 120 and be associated with a device identifier 106. The state information 402 can be associated with a particular manifest file that was generated and/or sent to a user device. The state information 402 can be stored as a separate file from the particular manifest file, linked by an identifier(s) or the state information 402 can be stored as part of the particular manifest file. The result is that the particular manifest file can be used to readily provide a location for a version (e.g., content/advertisement at a specific (or proximate) requested parameters) of requested content/advertisements that best fits a request by referencing the state information 402.
Turning now to FIG. 4B, the user device 102 can request the content at the second bitrate 406 from the content provider 410. The request can be sent or received after a portion of the content has already been transmitted to the user device 102, or consumed by a user of the device 102. In an aspect, any of the plurality of manifest servers 116 associated with the content provider or delivery service 410 can receive the request and check the state information 402. In an aspect, the manifest server 116 in receipt of the request or a centrally located computing device 104 can recognize that the requested content at the second bitrate 406 is the same content currently being consumed by, or delivered to the user device 102 at the first bitrate 404 (e.g., via a content identifier). For example, the manifest server 116 in receipt of the request (or a centrally located computing device 104) can recognize that the content currently being consumed by, or delivered to, the user device 102 comprises the same content identifier as the content currently being requested and that the content is currently being consumed or delivered with parameters different from the parameters currently being requested. In another example, the manifest server 116 in receipt of the request or a centrally located computing device 104 can access state information 402 to match the content identifier of the content currently being consumed by, or delivered to the user device 102 with the content identifier of the content currently being requested and access the state information 402 to determine that the content is currently being consumer or delivered with parameters different from the parameters currently being requested. The manifest server 116 can create a second manifest file that comprises references to the content at the second bitrate 406. The advertisement list can be accessed using the state information 402, Advertisements A1, A2, and A3 can be determined to be in the first manifest file. The second manifest file can also comprise references to the Advertisements A1, A2, and A3 at the second bitrate 406, since such advertisements were identified to be inserted into the content by accessing the state information 402. In an aspect, if one or more of the Advertisements A1, A2, or A3 are not available at the second bitrate 406, then a suitable replacement for the unavailable advertisement, such as the advertisement at the closest bitrate to the second bitrate 406, an advertisement for a same company and/or product as the unavailable advertisement, and the like, can be included. In an aspect, the second manifest file can comprise references to one or more of the Advertisements A1, A2, and A3 at the first bitrate 404, if the one or more Advertisements are unavailable at the second bitrate 406. In an aspect, the second manifest file can comprise references to one or more of the Advertisements A1, A2, and A3 at the third bitrate 408, if the one or more Advertisements is unavailable at the second bitrate 406. The second manifest file can be delivered to the user device 102. The state information 402 can be updated to reflect the second manifest file delivered to the user device 102. For example, the updated state information 402 can comprise the second parameters. The updated state information 402 can be transmitted to one or more of the plurality of manifest servers 116. In another aspect, the updated state information 402 can be transmitted to a central location accessible to the plurality of manifest servers 116.
FIG. 5 illustrates an exemplary method 500, which, in one example, may be implemented by on one or more manifest servers 116. At step 502, a request of selection for content can be received from a user device. In an aspect, the requested content can be video content. In an aspect, the user device can be a set top box, a computing device, a mobile device, a gateway and the like. The request or selection can comprise one or more first requested parameters or attributes, for example, a first bitrate, a first codec, a first file size or frame rate, combinations thereof, and the like. Optionally, the selection for content can comprise a device identifier associated with the user device. In an aspect, the device identifier can be a media access control (MAC) address. In another further aspect, the identifier can comprise a token. In an aspect, the token can be globally unique.
At step 504, a first manifest file, comprising for example a reference to content fragments and a first plurality of advertising fragments at the first parameters, can be generated. A first manifest file comprising a reference to fragments of the content at the first bitrate and a reference to a first plurality of advertising fragments at the first bitrate, encoded with the first codec, and/or formatted for the first size, can be generated. In an aspect, the references can be to an order of fragments or locations where the fragments can be retrieved. In a further aspect, the references can be uniform resource identifiers (URIs). In a further aspect, the references can be uniform resource locators (URLs).
At step 506, state information associated with the first manifest file and other information, such as the device identifier and parameters, can be created and/or stored. Optionally, the state information can comprise an advertisement list related to the first plurality of advertising fragments (e.g., the video fragments that make up each of the advertisements in the advertisement list). Optionally, the state information can represent a content state. In an aspect, the content state can comprise identification of the selected content. In an aspect, the content state can comprise the first parameters, for example, the first bitrate, the first codec, the first size, combinations thereof, and the like.
At step 508, a request or selection comprising second parameters can be received from the user device. The second parameters can be, for example, a second bitrate, a second codec, a second size or rate, combinations thereof, and the like. In an aspect, the request or selection is for the same content, but with one or more different, or second parameters. In an aspect, the selection for the second parameters can be received while the user device is rendering or displaying an advertisement or other portion of content associated with the first manifest file. In an aspect, the selection can comprise the device identifier from the user device.
At step 510, the state information associated with the first manifest file and/or device identifier can be accessed. In an aspect, the device identifier in the selection can be used to access the state information. In an aspect, the state information can be accessed from a local or remote memory. In an aspect, the state information can be retrieved from a remote computing device.
At step 512, a second manifest file can be generated. In an aspect, the second manifest file can comprise a reference to fragments of the content with the second parameters. In an aspect, the second manifest file can comprise a reference to fragments of the content at the second bitrate, encoded with the second codec, formatted for the second size, combinations thereof, and the like. In an aspect, the second manifest file can comprise a reference to a second plurality of advertising fragments. In an aspect, the second plurality of advertising fragments can be related to the first plurality of advertising fragments in the state information. In an aspect, the second plurality of advertising fragments can refer or point to the same advertisements as the first plurality of advertising fragments. To minimize disruption to a viewing experience, the systems and methods described herein can ensure that an advertisement, such as the first plurality of advertising fragments, that is displayed during the request or selection for second parameters, is displayed after the request or selection is fulfilled. Therefore, the second plurality of advertising fragments can comprise the same advertisement as the first plurality of advertising fragments, even if the advertisement is not available with the second parameters. In an aspect, the second plurality of advertising fragments can comprise third parameters. In an aspect, the second plurality of advertising fragments can comprise a third bitrate, can be encoded with a third codec, can be formatted for a third size, combinations thereof, and the like. In an aspect, the third parameters can be the same as the first parameters. In an aspect, the third bitrate can be the same as the first bitrate. In an aspect, the third codec can be the same as the first codec. In an aspect, the third size can be the same as the first size. In an aspect, the third parameters can be the same as the second parameters. In an aspect, the third bitrate can be the same as the second bitrate. In an aspect, the third codec can be the same as the second codec. In an aspect, the third size can be the same as the second size. In an aspect, the third parameters can be different from the first parameters and the second parameters. In an aspect, the third bitrate can be different from the first bitrate and the second bitrate. In an aspect, the third codec can be different from the first codec and the second codec. In an aspect, the third size can be different from the first size and the second size.
In an aspect, the second plurality of advertising fragments can be related to the first plurality of advertising fragments. Optionally, the second plurality of advertising fragments can comprise a reference to advertising fragments that represent different advertisements from advertisements represented by the first plurality of advertising fragments. For example, this could be due to a different advertisement being chosen for the user when the second request is received (e.g., the different advertisement may be more relevant at a second, later point in time). Optionally, one or more different advertisements can be added to the advertisement list in the state information. In an aspect, the one or more different advertisements can replace one or more advertisements previously in the advertisement list. In a further aspect, the one or more different advertisements can be related to the respective one or more advertisements being replaced. In an even further aspect, one of the one or more different advertisements can be for the same product as the advertisement being replaced. In another further aspect, one of the one or more different advertisements can be for the same company as the advertisement being replaced. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in parameters. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in bitrate. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in codec. In an aspect, an advertisement currently displayed is the same advertisement displayed after the change in size.
FIG. 6 illustrates an exemplary method 600, executing on a user device 102. At step 602, a selection for content can be transmitted. The selection for content can comprise a selection for a first parameter. The first parameter can be, for example, a first bitrate, a first codec, a first size, combinations thereof, and the like. The selection for content can comprise an identifier. In an aspect, the identifier can be associated with the user device. In an aspect, the identifier can be a media access control (MAC) address. In a further aspect, the identifier can comprise a token. In an aspect, the token can be globally unique. In an aspect, the user device can be a set top box, a computing device, a mobile device, and the like. In an aspect, the content can comprise video.
At step 604, a first data stream can be received. The first data stream can comprise the selected content comprising first parameter. For example, the first parameter can comprise a first bitrate, a first codec, a first size, combinations thereof, and the like. The first data stream can comprise a plurality of advertisements. The plurality of advertisements can comprise the first parameter. For example, the plurality of advertisements can be at the first bitrate, encoded with the first codec, formatted for the first size, combinations thereof, and the like. In an aspect, the first data stream can comprise an Internet Protocol (IP) stream.
At step 606, the first data stream can be presented on a display device. In an aspect, the display device can be a television, a monitor, a mobile device, and the like.
At step 608, a selection for a second parameter can be transmitted while one of the first plurality of advertisements is displayed on the display device. The second parameter can be, for example, a second bitrate, a second codec, a second size, combinations thereof, and the like. At step 610, a second data stream comprising the selected content with the second parameter can be received. For example, the second data stream can comprise the selected content at the second bitrate, the selected content encoded with the second codec, the selected content formatted for the second size, combinations thereof, and the like. In an aspect, the second data stream can comprise a second plurality of advertisements. The second data stream can comprise an Internet Protocol (IP) stream.
At step 612, a transition from displaying the first data stream to displaying the second data stream can be made. Optionally, the transition can happen while the one of the first plurality of advertisements is displayed on the display device. In an aspect, the second data stream can be presented on the display device. The transition from displaying the first data stream to displaying the second data stream can maintain continuity. In an aspect, maintaining continuity can comprise a seamless transition that is not perceptible to a viewer. In an aspect, maintaining continuity can comprise beginning display of the second data stream at or just after a time point where display of the first data stream ended, despite a possible perceivable difference in display quality before and after the transition. In an aspect, maintaining continuity can comprise displaying the same advertisement before and after the transition. In an aspect, maintaining continuity can comprise displaying an advertisement for the same company and/or product after the transition as was being displayed before the transition. The advertisement can be displayed on the display device. In an aspect, the advertisement can be displayed on the display device with the second parameter. For example, the advertisement can be displayed on the display device at the second bitrate, using the second codec, at the second size, combinations thereof, and the like. In an aspect, the advertisement can be displayed on the display device with the first parameter. For example, the advertisement can be displayed on the display device at the first bitrate, using the first codec, at the first size, combinations thereof, and the like. In an aspect, the advertisement can be displayed on the display device with the third parameter. For example, the advertisement can be displayed on the display device at the third bitrate, using the third codec, at the third size, combinations thereof, and the like.
FIG. 7 illustrates an exemplary method 700, executing on one or more manifest servers 116. At step 702, an identifier of a user device, an identifier of content with a first parameter, and an identifier of a plurality of advertisements with the first parameter can be received at a first manifest server. The first parameter can be, for example, a first bitrate, a first codec, a first size, combinations thereof, and the like. In an aspect, the received identifiers can be received in response to a request. In an aspect, a request for a first video stream can be received at a first manifest server of a plurality of manifest servers from a user device. In an aspect, the request for the first video stream can comprise a request for content with the first parameter. In an aspect, the first video stream can comprise Internet Protocol (IP) delivery. In an aspect, the user device can be a set top box, a computing device, a mobile device, and the like.
At step 704, a first manifest file can be generated. In an aspect, the first manifest file can be generated in response to the request. In an aspect, the first manifest file can comprise an identifier. In an aspect, the identifier can comprise a device identifier associated with the user device. In an aspect, the identifier can comprise a device identifier associated with the user device originating the request for the first video stream. In a further aspect, the identifier can comprise a media access control (MAC) address associated with the device originating the request for the first video stream. In another further aspect, the identifier can comprise a token. In an aspect, the token can be globally unique. In an aspect, the first manifest file can comprise a reference to the content with the first parameter. For example, the first manifest file can comprise a reference to the content at the first bitrate, the content encoded with the first codec, the content formatted for the first size, combinations thereof, and the like. In an aspect, the first manifest file can comprise a first plurality of references to the plurality of advertisements at the first parameter. For example, the first manifest file can comprise a first plurality of references to the plurality of advertisements at the first bitrate, a first plurality of references to the plurality of advertisements encoded at the first codec, a first plurality of references to the plurality of advertisements formatted for the first size, combinations thereof, and the like.
At step 706, the first manifest file can be transmitted to the user device. In an aspect, the user device can use the reference to the content in the first manifest file to request content. In an aspect, the reference to the content can comprise a uniform resource identifier (URI). In a further aspect, the reference to the content can comprise a uniform resource locator (URL). In an aspect, the user device can use the first plurality of references to the plurality of advertisements in the first manifest file to request one of the plurality of advertisements. In an aspect, the first plurality of references to the plurality of advertisements can comprise uniform resource identifiers (URIs). In a further aspect, the first plurality of references to the plurality of advertisements can comprise uniform resource locators (URLs).
At step 708, the first manifest file, or a reference to the first manifest file that can be used to identify information in the first manifest file, can be stored such that it is easily identifiable and accessible by a plurality of manifest file generating devices. An identifier of the user device can be associated with the first manifest file. In an aspect, the first manifest file and/or the user device identifier can transmitted to a second manifest server, of a plurality of manifest servers, that may be centrally located or easily accessible by other manifest file servers. At step 710, the identifier of the user device and an identifier of the content with a second parameter can be received at any of the manifest file servers or computing devices. The second parameter can be, for example, a second bitrate, a second codec, a second size, combinations thereof, and the like. A subsequent request for a second video stream of the content with the second parameter can be received from the user device at any of the plurality of manifest servers.
At step 712, the content and the plurality of advertisements can be identified based on the first manifest file and/or the identifier of the user device. A determination can be made that the user device is requesting content already playing at the user device. For example, a content identifier of the content already playing at the user device can be matched with a content identifier of the requested content using the first manifest file and/or the identifier of the user device. The first parameter can be identified using the first manifest file and/or the identifier of the user device and can be determined to be different from the second parameter. Therefore, the plurality of advertisements in the first manifest file can be identified. In an aspect, the plurality of advertisements can be identified in response to receiving the identifier of the user device. For example, the identifier of the user device can be received in a request to generate a manifest file. In an aspect, the plurality of advertisements can be identified locally. In an aspect, the plurality of advertisements can be identified by transmitting the identifier of the user device to a central computing device. Identifying the plurality of advertisements can allow the plurality of advertisements to be used in a newly generated manifest file. Therefore, the need to generate a new plurality of advertisement can be alleviated. Additionally, if a new plurality of advertisements is needed, the plurality of advertisements in the first manifest file (e.g., what advertisements has the viewer seen; what advertisements the viewer was scheduled to view, but has not seen yet; what advertisement the viewer was currently watching; etc.) can be considered in creating the new plurality of advertisements. The knowledge of the plurality of advertisements in the first manifest file can help prevent the viewer from being exposed to the same advertisements repeatedly.
At step 714, a second manifest file can be generated. In an aspect, the second manifest file can comprise the identifier of the user device. In an aspect, the second manifest file can comprise a reference to the content at the second parameter. In an aspect, the second manifest file can comprise a second plurality of references to the plurality of advertisements. In an aspect, the subsequent request for the second video stream can cause the second manifest file to be created. In an aspect, the second manifest file can synchronize advertising content with the first manifest file. In an aspect, the second video stream can comprise Internet Protocol (IP) delivery. In an aspect, the second manifest file can comprise references to the same advertising content as the first manifest file. In an aspect, the same advertising content can be at the second parameter. In an aspect, the same advertising content can be at the first parameter. In an aspect, the same advertising content can be at a third parameter.
At step 716, the second manifest file can be transmitted to the user device. In an aspect, the user device can use the reference to the content in the second manifest file to request content. In an aspect, the reference to the content can comprise a uniform resource identifier (URI). In a further aspect, the reference to the content can comprise a uniform resource locator (URL). In an aspect, the user device can use the first plurality of references to the plurality of advertisements in the second manifest file to request one of the plurality of advertisements. In an aspect, the first plurality of references to the plurality of advertisements can comprise uniform resource identifiers (URIs). In a further aspect, the first plurality of references to the plurality of advertisements can comprise uniform resource locators (URLs).
In an exemplary aspect, the methods and systems can be implemented on a computer 801 as illustrated in FIG. 8 and described below. By way of example, server 104 of FIG. 1 can be a computer as illustrated in FIG. 8. Similarly, the methods and systems disclosed can utilize one or more computers to perform one or more functions in one or more locations. FIG. 8 is a block diagram illustrating an exemplary operating environment for performing the disclosed methods. This exemplary operating environment is only an example of an operating environment and is not intended to suggest any limitation as to the scope of use or functionality of operating environment architecture. Neither should the operating environment be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment.
The present methods and systems can be operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that can be suitable for use with the systems and methods comprise, but are not limited to, personal computers, server computers, laptop devices, and multiprocessor systems. Additional examples comprise set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that comprise any of the above systems or devices, and the like.
The processing of the disclosed methods and systems can be performed by software components. The disclosed systems and methods can be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers or other devices. Generally, program modules comprise computer code, routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The disclosed methods can also be practiced in grid-based and distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote computer storage media including memory storage devices.
Further, one skilled in the art will appreciate that the systems and methods disclosed herein can be implemented via a general-purpose computing device in the form of a computer 801. The components of the computer 801 can comprise, but are not limited to, one or more processors 803, a system memory 812, and a system bus 813 that couples various system components including the one or more processors 803 to the system memory 812. The system can utilize parallel computing.
The system bus 813 represents one or more of several possible types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, or local bus using any of a variety of bus architectures. By way of example, such architectures can comprise an industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, an Accelerated Graphics Port (AGP) bus, and a Peripheral Component Interconnects (PCI), a PCI-Express bus, a Personal Computer Memory Card Industry Association (PCMCIA), Universal Serial Bus (USB) and the like. The bus 813, and all buses specified in this description can also be implemented over a wired or wireless network connection and each of the subsystems, including the one or more processors 803, a mass storage device 804, an operating system 805, advertising continuity software 806, advertising continuity data 807, a network adapter 808, the system memory 812, an Input/Output Interface 810, a display adapter 809, a display device 811, and a human machine interface 802, can be contained within one or more remote computing devices 814 a,b,c at physically separate locations, connected through buses of this form, in effect implementing a fully distributed system.
The computer 801 typically comprises a variety of computer readable media. Exemplary readable media can be any available media that is accessible by the computer 801 and comprises, for example and not meant to be limiting, both volatile and non-volatile media, removable and non-removable media. The system memory 812 comprises computer readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). The system memory 812 typically contains data such as the advertising continuity data 807 and/or program modules such as the operating system 805 and the advertising continuity software 806 that are immediately accessible to and/or are presently operated on by the one or more processors 803.
In another aspect, the computer 801 can also comprise other removable/non-removable, volatile/non-volatile computer storage media. By way of example, FIG. 8 illustrates the mass storage device 804 which can provide non-volatile storage of computer code, computer readable instructions, data structures, program modules, and other data for the computer 801. For example and not meant to be limiting, the mass storage device 804 can be a hard disk, a removable magnetic disk, a removable optical disk, magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (RUM), electrically erasable programmable read-only memory (EEPROM), and the like.
Optionally, any number of program modules can be stored on the mass storage device 804, including by way of example, the operating system 805 and the advertising continuity software 806. Each of the operating system 805 and the advertising continuity software 806 (or some combination thereof) can comprise elements of the programming and the advertising continuity software 806. The advertising continuity data 807 can also be stored on the mass storage device 804. The advertising continuity data 807 can be stored in any of one or more databases known in the art. Examples of such databases comprise, DB2®, Microsoft® Access, Microsoft® SQL Server, Oracle®, my SQL, PostgreSQL, and the like. The databases can be centralized or distributed across multiple systems.
In another aspect, the user can enter commands and information into the computer 801 via an input device (not shown). Examples of such input devices comprise, but are not limited to, a keyboard, pointing device (e.g., a “mouse”), a microphone, a joystick, a scanner, tactile input devices such as gloves, and other body coverings, and the like These and other input devices can be connected to the one or more processors 803 via the human machine interface 802 that is coupled to the system bus 813, but can be connected by other interface and bus structures, such as a parallel port, game port, an IEEE 1394 Port (also known as a Firewire port), a serial port, or a universal serial bus (USB).
In yet another aspect, the display device 811 can also be connected to the system bus 813 via an interface, such as the display adapter 809. It is contemplated that the computer 801 can have more than one display adapter 809 and the computer 801 can have more than one display device 811. For example, a display device can be a monitor, an LCD (Liquid Crystal Display), or a projector. In addition to the display device 811, other output peripheral devices can comprise components such as speakers (not shown) and a printer (not shown) which can be connected to the computer 801 via the Input/Output Interface 810. Any step and/or result of the methods can be output in any form to an output device. Such output can be any form of visual representation, including, but not limited to, textual, graphical, animation, audio, tactile, and the like. The display 811 and computer 801 can be part of one device, or separate devices.
The computer 801 can operate in a networked environment using logical connections to one or more remote computing devices 814 a,b,c. By way of example, a remote computing device can be a personal computer, portable computer, smartphone, a server, a router, a network computer, a peer device or other common network node, and so on. Logical connections between the computer 801 and a remote computing device 814 a,b,c can be made via a network 815, such as a local area network (LAN) and/or a general wide area network (WAN). Such network connections can be through the network adapter 808. The network adapter 808 can be implemented in both wired and wireless environments. Such networking environments are conventional and commonplace in dwellings, offices, enterprise-wide computer networks, intranets, and the Internet.
For purposes of illustration, application programs and other executable program components such as the operating system 805 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 801, and are executed by the one or more processors 803 of the computer. An implementation of the advertising continuity software 806 can be stored on or transmitted across some form of computer readable media. Any of the disclosed methods can be performed by computer readable instructions embodied on computer readable media. Computer readable media can be any available media that can be accessed by a computer. By way of example and not meant to be limiting, computer readable media can comprise “computer storage media” and “communications media.” “Computer storage media” comprise volatile and non-volatile, removable and non-removable media implemented in any methods or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Exemplary computer storage media comprises, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
The methods and systems can employ Artificial intelligence techniques such as machine learning and iterative learning. Examples of such techniques include, but are not limited to, expert systems, case based reasoning, Bayesian networks, behavior based AI, neural networks, fuzzy systems, evolutionary computation (e.g. genetic algorithms), swarm intelligence (e.g. ant algorithms), and hybrid intelligent systems (e.g. Expert inference rules generated through a neural network or production rules from statistical learning).
While the methods and systems have been described in connection with preferred embodiments and specific examples, it is not intended that the scope be limited to the particular embodiments set forth, as the embodiments herein are intended in all respects to be illustrative rather than restrictive.
Unless otherwise expressly stated, it is in no way intended that any method set forth herein be construed as requiring that its steps be performed in a specific order. Accordingly, where a method claim does not actually recite an order to be followed by its steps or it is not otherwise specifically stated in the claims or descriptions that the steps are to be limited to a specific order, it is no way intended that an order be inferred, in any respect. This holds for any possible non-express basis for interpretation, including: matters of logic with respect to arrangement of steps or operational flow; plain meaning derived from grammatical organization or punctuation; the number or type of embodiments described in the specification.
Throughout this application, various publications are referenced. The disclosures of these publications in their entireties are hereby incorporated by reference into this application in order to more fully describe the state of the art to which the methods and systems pertain.
It will be apparent to those skilled in the art that various modifications and variations can be made without departing from the scope or spirit. Other embodiments will be apparent to those skilled in the art from consideration of the specification and practice disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit being indicated by the following claims.

Claims (20)

What is claimed is:
1. A method comprising:
determining, by a first manifest server, based on a request from a user device for content at a first bitrate, a first manifest file and state information, wherein the first manifest file comprises a reference to the content at the first bitrate and one or more references to fragments of one or more advertisements at the first bitrate;
sending, to the user device, the first manifest file;
sending, to a second manifest server, the state information;
determining, by the second manifest server, based on the state information, a second manifest file comprising a reference to the content at a second bitrate and one or more references to fragments of one or more advertisements at the second bitrate; and
sending, to the user device, based on a request from the user device for the content at the second bitrate, the second manifest file.
2. The method of claim 1, wherein the fragments of the one or more advertisements at the first bitrate correspond to the fragments of the one or more advertisements at the second bitrate.
3. The method of claim 1, further comprising:
receiving the request from the user device for the content at the second bitrate, wherein the request comprises a device identifier of the user device; and
wherein, determining, by the second manifest server, the second manifest file is further based on the device identifier of the user device.
4. The method of claim 1, wherein the one or more advertisements at the second bitrate comprise the same content as the one or more advertisements at the first bitrate.
5. The method of claim 1, wherein the request from the user device for the content at the first bitrate comprises a device identifier of the user device; and wherein sending, to the second manifest server, the state information further comprises sending, to the second manifest server, the device identifier of the user device.
6. The method of claim 1, wherein the state information comprises a device identifier of the user device.
7. The method of claim 1, wherein the second manifest file comprises a reference to one or more fragments of additional advertisements.
8. A method comprising:
sending, by a first manifest server to an advertisement server, based on a request from a user device for content at a first bitrate, a request for one or more advertisements at the first bitrate;
receiving, based on the request, first information associated with the one or more advertisements at the first bitrate;
determining, based on the first information, a first manifest file and state information, wherein the first manifest file comprises a reference to the content at the first bitrate and one or more references to fragments of the one or more advertisements at the first bitrate;
determining, based on a request from the user device for the content at a second bitrate and the state information, one or more identifiers of the one or more advertisements;
sending, to the advertisement server, a request for the one or more advertisements at the second bitrate, wherein the request comprises the one or more identifiers;
receiving, based on the request for the one or more advertisements at the second bitrate, second information associated with the one or more advertisements at the second bitrate; and
determining, based on the second information, a second manifest file comprising a reference to the content at the second bitrate and one or more references to fragments of the one or more advertisements at the second bitrate.
9. The method of claim 8, wherein the fragments of the one or more advertisements at the first bitrate correspond to the fragments of the one or more advertisements at the second bitrate.
10. The method of claim 8, further comprising:
sending, to the user device, the first manifest file; and
sending, to the user device, the second manifest file.
11. The method of claim 8, wherein the request from the user device for the content at the first bitrate comprises a device identifier of the user device; and wherein the state information comprises the device identifier of the user device.
12. The method of claim 8, wherein the request from the user device for the content at the second bitrate comprises a device identifier of the user device; and wherein the state information comprises the device identifier of the user device.
13. The method of claim 8, wherein the first information comprises at least one of a codec or a format of the one or more advertisements at the first bitrate.
14. The method of claim 8, wherein the second information comprises at least one of a codec or a format associated with the one or more advertisements at the second bitrate.
15. A method comprising:
sending a request for content at a first bitrate;
receiving, from a first manifest server based on the request for the content at the first bitrate, a first manifest file, wherein the first manifest file comprises a reference to the content at the first bitrate and one or more references to fragments of one or more advertisements at the first bitrate;
receiving, based on the first manifest file, the content at the first bitrate;
sending a request for the content at a second bitrate;
receiving, from a second manifest server based on the request for the content at the second bitrate, a second manifest file, wherein the second manifest file comprises a reference to the content at the second bitrate and one or more references to fragments of the one or more advertisements at the second bitrate; and
receiving, based on the second manifest file, the content at the second bitrate.
16. The method of claim 15, wherein the fragments of the one or more advertisements at the first bitrate correspond to the fragments of the one or more advertisements at the second bitrate.
17. The method of claim 15, wherein the request for the content at the first bitrate comprises a device identifier of a user device; and wherein the request for the content at the second bitrate comprises the device identifier of the user device.
18. The method of claim 15, wherein the first manifest file further comprises one or more of an identifier associated with a user device, an identifier associated with the content at the first bitrate, or an attribute of the content.
19. The method of claim 15, wherein the second manifest file further comprises one or more of an identifier associated with the user device, an identifier associated with the content at the second bitrate, or an attribute of the content.
20. The method of claim 15, further comprising causing display of the content at the second bitrate.
US15/991,904 2016-03-24 2018-05-29 Systems and methods for advertising continuity Active US10623795B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/991,904 US10623795B2 (en) 2016-03-24 2018-05-29 Systems and methods for advertising continuity
US16/808,132 US20210029396A1 (en) 2016-03-24 2020-03-03 Systems and Methods for Advertising Continuity

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/079,831 US10009642B2 (en) 2016-03-24 2016-03-24 Systems and methods for advertising continuity
US15/991,904 US10623795B2 (en) 2016-03-24 2018-05-29 Systems and methods for advertising continuity

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US15/079,831 Continuation US10009642B2 (en) 2016-03-24 2016-03-24 Systems and methods for advertising continuity

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US16/808,132 Continuation US20210029396A1 (en) 2016-03-24 2020-03-03 Systems and Methods for Advertising Continuity

Publications (2)

Publication Number Publication Date
US20190132628A1 US20190132628A1 (en) 2019-05-02
US10623795B2 true US10623795B2 (en) 2020-04-14

Family

ID=58428127

Family Applications (3)

Application Number Title Priority Date Filing Date
US15/079,831 Active US10009642B2 (en) 2016-03-24 2016-03-24 Systems and methods for advertising continuity
US15/991,904 Active US10623795B2 (en) 2016-03-24 2018-05-29 Systems and methods for advertising continuity
US16/808,132 Pending US20210029396A1 (en) 2016-03-24 2020-03-03 Systems and Methods for Advertising Continuity

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US15/079,831 Active US10009642B2 (en) 2016-03-24 2016-03-24 Systems and methods for advertising continuity

Family Applications After (1)

Application Number Title Priority Date Filing Date
US16/808,132 Pending US20210029396A1 (en) 2016-03-24 2020-03-03 Systems and Methods for Advertising Continuity

Country Status (3)

Country Link
US (3) US10009642B2 (en)
EP (1) EP3223225A1 (en)
CA (1) CA2962029A1 (en)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10009642B2 (en) 2016-03-24 2018-06-26 Comcast Cable Communications Management, Llc Systems and methods for advertising continuity
US11856271B2 (en) * 2016-04-12 2023-12-26 JBF Interlude 2009 LTD Symbiotic interactive video
US10474745B1 (en) 2016-04-27 2019-11-12 Google Llc Systems and methods for a knowledge-based form creation platform
US11039181B1 (en) * 2016-05-09 2021-06-15 Google Llc Method and apparatus for secure video manifest/playlist generation and playback
US10750248B1 (en) * 2016-05-10 2020-08-18 Google Llc Method and apparatus for server-side content delivery network switching
US10595054B2 (en) * 2016-05-10 2020-03-17 Google Llc Method and apparatus for a virtual online video channel
US10771824B1 (en) * 2016-05-10 2020-09-08 Google Llc System for managing video playback using a server generated manifest/playlist
US10750216B1 (en) 2016-05-10 2020-08-18 Google Llc Method and apparatus for providing peer-to-peer content delivery
US10785508B2 (en) * 2016-05-10 2020-09-22 Google Llc System for measuring video playback events using a server generated manifest/playlist
US11069378B1 (en) 2016-05-10 2021-07-20 Google Llc Method and apparatus for frame accurate high resolution video editing in cloud using live video streams
US11032588B2 (en) 2016-05-16 2021-06-08 Google Llc Method and apparatus for spatial enhanced adaptive bitrate live streaming for 360 degree video playback
US10263881B2 (en) * 2016-05-26 2019-04-16 Cisco Technology, Inc. Enforcing strict shortest path forwarding using strict segment identifiers
US10349136B2 (en) * 2017-03-22 2019-07-09 Opentv, Inc. User-initiated transitioning between media content versions
US10771831B2 (en) * 2017-12-14 2020-09-08 At&T Intellectual Property I, L.P. System and method for preemptive advertisement caching to optimize network traffic
JP6500132B1 (en) * 2018-01-15 2019-04-10 ヤフー株式会社 Information processing apparatus, information processing method, and information processing program
US11653040B2 (en) * 2018-07-05 2023-05-16 Mux, Inc. Method for audio and video just-in-time transcoding
EP3528196A1 (en) * 2018-02-16 2019-08-21 Accenture Global Solutions Limited Dynamic content generation
US11695978B2 (en) 2018-07-05 2023-07-04 Mux, Inc. Methods for generating video-and audience-specific encoding ladders with audio and video just-in-time transcoding
US10965966B1 (en) * 2018-07-17 2021-03-30 Amazon Technologies, Inc. Dynamic content insertion
US10951960B1 (en) * 2018-07-17 2021-03-16 Amazon Technologies, Inc. Dynamic content insertion
US11109088B2 (en) 2019-06-07 2021-08-31 Roku, Inc. Content-modification system with unscheduling feature
US11418826B2 (en) * 2019-06-07 2022-08-16 Roku, Inc. Content-modification system with supplemental content stitching feature
US11930254B2 (en) * 2020-04-07 2024-03-12 Tencent America LLC Patchable remote element for data manipulation
US20220210518A1 (en) * 2020-12-30 2022-06-30 Comcast Cable Communications, Llc Methods and systems for content output adjustment
US20220394073A1 (en) * 2021-06-08 2022-12-08 Comcast Cable Communications, Llc Method and apparatus for determining bitrate switch points

Citations (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060075449A1 (en) * 2004-09-24 2006-04-06 Cisco Technology, Inc. Distributed architecture for digital program insertion in video streams delivered over packet networks
US20090313652A1 (en) * 2008-06-12 2009-12-17 Glenn Connery Ad splicing using re-quantization variants
US20100014594A1 (en) * 2008-07-17 2010-01-21 Cisco Technology, Inc. Splicing of Encrypted Video/Audio Content
US20100223392A1 (en) * 2009-02-27 2010-09-02 Verivue, Inc. Input Queued Content Switching Using A Playlist
US20100235468A1 (en) * 2005-04-20 2010-09-16 Limelight Networks, Inc. Ad Server Integration
US20110246666A1 (en) 2006-05-01 2011-10-06 Eliezer Aloni Method and System for Transparent TCP Offload (TTO) with a User Space Library
US20110320287A1 (en) 2010-06-28 2011-12-29 Hulu Llc Method and apparatus for providing streaming media programs and targeted advertisements compatibly with http live streaming
US20120072286A1 (en) * 2008-03-10 2012-03-22 Hulu Llc Method and apparatus for providing a user-editable playlist of advertisements
US20130064283A1 (en) * 2011-08-19 2013-03-14 General Instrument Corporation Encoder-aided segmentation for adaptive streaming
US20130091521A1 (en) * 2011-10-07 2013-04-11 Chris Phillips Adaptive ads with advertising markers
US20130151994A1 (en) 2011-12-08 2013-06-13 Comcast Cable Communications, Llc System and Method for Identifying a User
US20130159388A1 (en) 2011-12-19 2013-06-20 Bob Forsman Virtualization in adaptive stream creation and delivery
US20130290556A1 (en) * 2012-04-25 2013-10-31 Futurewei Technologies, Inc. Systems and Methods for Controlling Client Behavior in Adaptive Streaming
US20130332971A1 (en) * 2012-06-11 2013-12-12 Rgb Networks, Inc. Targeted high-value content in http streaming video on demand
US20140025836A1 (en) * 2012-07-23 2014-01-23 Adobe Systems Inc. Method and apparatus for performing server-side splicing for live streaming media
US20140230003A1 (en) 2013-02-12 2014-08-14 Azuki Systems, Inc. Content processing for personal over-the-top network video recorder
US20140236739A1 (en) 2001-05-11 2014-08-21 Clear Channel Management Services, Inc. Media delivery to limited capability platforms
US20140280688A1 (en) 2013-03-14 2014-09-18 Comcast Cable Communications, Llc Methods And Systems For Dynamic Data Management
US8856825B1 (en) * 2013-05-02 2014-10-07 This Technology, Inc. Server side adaptive bit rate reporting
US20150067722A1 (en) * 2013-09-04 2015-03-05 Arris Enterprises, Inc. Averting Ad Skipping in Adaptive Bit Rate Systems
US9066115B1 (en) * 2011-07-29 2015-06-23 Arris Enterprises, Inc. Structuring dynamic advertisement breaks in video manifest files
US9066138B1 (en) 2011-05-10 2015-06-23 Arris Solutions, Inc. Replacing ads in HTTP-based manifest driven video transport
US20150278884A1 (en) * 2010-04-02 2015-10-01 Disney Enterprises, Inc. Streaming Playback and Dynamic Ad Insertion
US20150295648A1 (en) 2014-04-15 2015-10-15 Arris Enterprises, Inc. Smart receivers and transmitters for catv networks
US20160065995A1 (en) 2014-09-02 2016-03-03 Ericsson Television Inc. Optimizing abr segment sizes for mobile video outage coverage in an abr streaming network
US20160182923A1 (en) * 2014-12-19 2016-06-23 Telefonaktiebolaget L M Ericsson (Publ) End user-based personalized ad insertion in broadcast-broadband hybrid terminals
US9578395B1 (en) 2014-09-30 2017-02-21 Amazon Technologies, Inc. Embedded manifests for content streaming
CA2962029A1 (en) 2016-03-24 2017-09-24 Theplatform, Llc Systems and methods for advertising continuity

Patent Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140236739A1 (en) 2001-05-11 2014-08-21 Clear Channel Management Services, Inc. Media delivery to limited capability platforms
US20060075449A1 (en) * 2004-09-24 2006-04-06 Cisco Technology, Inc. Distributed architecture for digital program insertion in video streams delivered over packet networks
US20100235468A1 (en) * 2005-04-20 2010-09-16 Limelight Networks, Inc. Ad Server Integration
US20110246666A1 (en) 2006-05-01 2011-10-06 Eliezer Aloni Method and System for Transparent TCP Offload (TTO) with a User Space Library
US20120072286A1 (en) * 2008-03-10 2012-03-22 Hulu Llc Method and apparatus for providing a user-editable playlist of advertisements
US20090313652A1 (en) * 2008-06-12 2009-12-17 Glenn Connery Ad splicing using re-quantization variants
US20100014594A1 (en) * 2008-07-17 2010-01-21 Cisco Technology, Inc. Splicing of Encrypted Video/Audio Content
US20100223392A1 (en) * 2009-02-27 2010-09-02 Verivue, Inc. Input Queued Content Switching Using A Playlist
US20150278884A1 (en) * 2010-04-02 2015-10-01 Disney Enterprises, Inc. Streaming Playback and Dynamic Ad Insertion
US20110320287A1 (en) 2010-06-28 2011-12-29 Hulu Llc Method and apparatus for providing streaming media programs and targeted advertisements compatibly with http live streaming
US9066138B1 (en) 2011-05-10 2015-06-23 Arris Solutions, Inc. Replacing ads in HTTP-based manifest driven video transport
US9066115B1 (en) * 2011-07-29 2015-06-23 Arris Enterprises, Inc. Structuring dynamic advertisement breaks in video manifest files
US20130064283A1 (en) * 2011-08-19 2013-03-14 General Instrument Corporation Encoder-aided segmentation for adaptive streaming
US20130091521A1 (en) * 2011-10-07 2013-04-11 Chris Phillips Adaptive ads with advertising markers
US20130151994A1 (en) 2011-12-08 2013-06-13 Comcast Cable Communications, Llc System and Method for Identifying a User
US20130159388A1 (en) 2011-12-19 2013-06-20 Bob Forsman Virtualization in adaptive stream creation and delivery
US20130290556A1 (en) * 2012-04-25 2013-10-31 Futurewei Technologies, Inc. Systems and Methods for Controlling Client Behavior in Adaptive Streaming
US20130332971A1 (en) * 2012-06-11 2013-12-12 Rgb Networks, Inc. Targeted high-value content in http streaming video on demand
US20140025836A1 (en) * 2012-07-23 2014-01-23 Adobe Systems Inc. Method and apparatus for performing server-side splicing for live streaming media
US20140230003A1 (en) 2013-02-12 2014-08-14 Azuki Systems, Inc. Content processing for personal over-the-top network video recorder
US20140280688A1 (en) 2013-03-14 2014-09-18 Comcast Cable Communications, Llc Methods And Systems For Dynamic Data Management
US8856825B1 (en) * 2013-05-02 2014-10-07 This Technology, Inc. Server side adaptive bit rate reporting
US20150067722A1 (en) * 2013-09-04 2015-03-05 Arris Enterprises, Inc. Averting Ad Skipping in Adaptive Bit Rate Systems
US20150295648A1 (en) 2014-04-15 2015-10-15 Arris Enterprises, Inc. Smart receivers and transmitters for catv networks
US20160065995A1 (en) 2014-09-02 2016-03-03 Ericsson Television Inc. Optimizing abr segment sizes for mobile video outage coverage in an abr streaming network
US9578395B1 (en) 2014-09-30 2017-02-21 Amazon Technologies, Inc. Embedded manifests for content streaming
US20160182923A1 (en) * 2014-12-19 2016-06-23 Telefonaktiebolaget L M Ericsson (Publ) End user-based personalized ad insertion in broadcast-broadband hybrid terminals
CA2962029A1 (en) 2016-03-24 2017-09-24 Theplatform, Llc Systems and methods for advertising continuity
EP3223225A1 (en) 2016-03-24 2017-09-27 thePlatform, LLC Systems and methods for advertising continuity
US20170280181A1 (en) 2016-03-24 2017-09-28 Theplatform, Llc Systems And Methods For Advertising Continuity
US10009642B2 (en) 2016-03-24 2018-06-26 Comcast Cable Communications Management, Llc Systems and methods for advertising continuity

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Extended European Search Report dated Jul. 5, 2017 by the European Patent Office for EP Application No. 17162798.7, which was filed on Mar. 24, 2017 and published as EP 3223225 on Sep. 27, 2017 (Applicant-thePlatform, LLC) (7 pages).
Extended European Search Report dated Jul. 5, 2017 by the European Patent Office for EP Application No. 17162798.7, which was filed on Mar. 24, 2017 and published as EP 3223225 on Sep. 27, 2017 (Applicant—thePlatform, LLC) (7 pages).

Also Published As

Publication number Publication date
CA2962029A1 (en) 2017-09-24
US10009642B2 (en) 2018-06-26
US20190132628A1 (en) 2019-05-02
US20210029396A1 (en) 2021-01-28
US20170280181A1 (en) 2017-09-28
EP3223225A1 (en) 2017-09-27

Similar Documents

Publication Publication Date Title
US10623795B2 (en) Systems and methods for advertising continuity
US11375017B2 (en) Methods and systems for processing data requests
US11490145B2 (en) Content insertion in streaming media content
US11853342B2 (en) Efficient data distribution to multiple devices
CN114666308B (en) Request-based encoding system and method for streaming content portions
US11252479B2 (en) Methods, systems, and media for recommending media content based on attribute grouped viewing sessions
US11812075B2 (en) Enhanced service compatibility with clients
US11736782B2 (en) Adaptive publishing for content distribution
US11943289B2 (en) Manipulation of content transmissions
US20220179831A1 (en) Management of content
US20160105506A1 (en) Manipulation and recording of content transmissions
CN108989905B (en) Media stream control method and device, computing equipment and storage medium
US11962649B2 (en) Methods and systems for processing data requests

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

AS Assignment

Owner name: COMCAST CABLE COMMUNICATIONS MANAGEMENT, LLC, PENN

Free format text: MERGER;ASSIGNOR:THEPLATFORM, LLC;REEL/FRAME:049477/0139

Effective date: 20170601

Owner name: THEPLATFORM, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:RAMALEY, ALAN;REEL/FRAME:049478/0077

Effective date: 20160324

Owner name: COMCAST CABLE COMMUNICATIONS MANAGEMENT, LLC, PENNSYLVANIA

Free format text: MERGER;ASSIGNOR:THEPLATFORM, LLC;REEL/FRAME:049477/0139

Effective date: 20170601

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4