WO2025024099A2 - Media streaming systems and methods - Google Patents
Media streaming systems and methods Download PDFInfo
- Publication number
- WO2025024099A2 WO2025024099A2 PCT/US2024/036532 US2024036532W WO2025024099A2 WO 2025024099 A2 WO2025024099 A2 WO 2025024099A2 US 2024036532 W US2024036532 W US 2024036532W WO 2025024099 A2 WO2025024099 A2 WO 2025024099A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- segment
- request
- manifest
- media content
- player
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 113
- 230000004044 response Effects 0.000 claims description 75
- 230000005540 biological transmission Effects 0.000 claims description 14
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 description 21
- 238000003780 insertion Methods 0.000 description 11
- 230000037431 insertion Effects 0.000 description 11
- 230000006978 adaptation Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 239000000796 flavoring agent Substances 0.000 description 3
- 235000019634 flavors Nutrition 0.000 description 3
- 241000282326 Felis catus Species 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000010454 slate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
- H04N21/23424—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving splicing one content stream with another content stream, e.g. for inserting or substituting an advertisement
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management 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/262—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists
- H04N21/26258—Content or additional data distribution scheduling, e.g. sending additional data at off-peak times, updating software modules, calculating the carousel transmission frequency, delaying a video stream transmission, generating play-lists for generating a list of items to be played back in a given order, e.g. playlist, or scheduling item distribution according to such list
Definitions
- [001] Disclosed are embodiments related to media (e.g., video and/or audio) streaming systems and methods.
- media e.g., video and/or audio
- HTTP Hypertext Transfer Protocol
- HLS Live Streaming
- DASH MPEG- Dynamic Adaptive Streaming over HTTP
- a media item e.g., a 30 minute episode of a TV show
- segments e.g., 300 six-second segments
- MPD MPEG-DASH Media Presentation Description
- the user’s media player may make a request to a server for a particular segment manifest (or manifest for short) for the media item (e.g., an HLS manifest or MPD), and, then, after obtaining the requested manifest, serially request the segments identified in the manifest (e.g., for each segment of the media item, the manifest may contain a Uniform Resource Locator (URL) that identifies the filename of the file that stores the segment and the location of the file on the Internet and/or segment template information that enables the player to determine the filenames and file locations).
- a server for a particular segment manifest (or manifest for short) for the media item (e.g., an HLS manifest or MPD), and, then, after obtaining the requested manifest, serially request the segments identified in the manifest (e.g., for each segment of the media item, the manifest may contain a Uniform Resource Locator (URL) that identifies the filename of the file that stores the segment and the location of the file on the Internet and/or segment template information that enables the player
- a process may select media to be inserted (e.g., a set of one or more ads) for an identified break (e.g., using an HLS playlist, the location of the break and its duration can be specified using the #EXT-X-CUE-OUT and #EXT-X-CUE-IN tags) and then insert into the manifest at the break position information for identifying segments of the selected media to be inserted (e.g., a set of ad segment URLs). In this way, selected media can be inserted into a media item at a predefined break.
- media to be inserted e.g., a set of one or more ads
- an identified break e.g., using an HLS playlist, the location of the break and its duration can be specified using the #EXT-X-CUE-OUT and #EXT-X-CUE-IN tags
- the manifest e.g., a set of ad segment URLs
- Table 1 A illustrates an example HLS playlist as it exists on the playlist server and Table IB below illustrates a modified version of the HLS playlist shown in Table 1A which is provided to the player.
- Table 1A illustrates an example HLS playlist as it exists on the playlist server and Table IB below illustrates a modified version of the HLS playlist shown in Table 1A which is provided to the player.
- a comparison of the two tables shows that five segment URLs have been inserted into the playlist.
- Table 2A below illustrates an example MPEG-DASH MPD as it exists on the manifest server and Table 2B below illustrates a modified version of the manifest shown in Table 2A, which is provided to the player.
- a comparison of tables 2A and 2B shows that a period element corresponding to a break and containing five ad segment URLs has been inserted into the manifest between a first period element containing a first subset of the segment URLs from the period element in the original manifest and a third period containing a second subset of the segment URLs from the period element in the original manifest.
- a timecode issue can arise if a media set (e.g., an ad set) contains two or more media items (e.g., two or more ads or two or more emergency announcements or two or more news bulletins etc.). For example, if the media set identifies a first media item and a second media item, the timecodes (a.k.a., timestamps) for the segments of the second media item may conflict (e.g., overlap) with the timecodes for the segments of the first media item and, for some systems, this can cause a problem.
- Another challenge is determining the point in time at which the request for media set should be made.
- the method includes transmitting to a media player a modified manifest containing a period element corresponding to a content break (e.g., an ad break, a news break, an emergency break).
- the method also includes, after transmitting the modified manifest, transmitting a request for a manifest for the content break and receiving the manifest for the content break, wherein the manifest for the content break comprises i) a first period element containing first segment locator information and ii) a second period element containing second segment locator information.
- the method also includes using the received first and second segment locator information to retrieve a first set of media content segments and a second set of media content segments, respectively.
- the method also includes creating an output file containing encoded media data from the first set of media content segments and the second set of media content segments.
- the method also includes segmenting the output file to produce a third set of media content segments.
- the method also includes receiving a segment request transmitted by a player and, after receiving the segment request, transmitting to the player a media content segment from the third set of media content segments.
- the method includes receiving, from a player, a first request for a manifest for retrieving first media content.
- the method also includes, after receiving the first request for the manifest, transmitting a second request for the manifest.
- the method also includes, after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier.
- the method also includes generating a modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M ⁇ N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier (e.g., the first server identifier identifies a first set of one or more servers and the second server identifier identifies a second set of one or more servers) and ii) a unique string.
- the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M ⁇ N
- the method also includes transmitting the modified manifest to the player and receiving, from the player, a request comprising one of the unique strings.
- the method also includes, in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
- a computer program comprising instructions which when executed by processing circuitry of an apparatus causes the apparatus to perform any of the methods disclosed herein.
- a carrier containing the computer program wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium.
- an apparatus that is configured to perform the methods disclosed herein.
- the apparatus may include memory and processing circuitry coupled to the memory.
- An advantage of the embodiments disclosed herein is that they enable the selection of an ad set after a manifest has already been provided to the media player.
- FIG. 1 illustrates a system according to an embodiment.
- FIG. 2 is a message flow diagram according to an embodiment.
- FIG. 3 is a flowchart illustrating a process according to an embodiment.
- FIG. 4 is a message flow diagram according to an embodiment.
- FIG. 5 is a flowchart illustrating a process according to an embodiment.
- FIG. 6 is a flowchart illustrating a process according to an embodiment.
- FIG. 7 is a block diagram an apparatus according to an embodiment.
- FIG. 1 illustrates a system 100 according to an embodiment.
- System 100 includes a player 102, a proxy 104 (a.k.a., helper 104), a stitcher 106 (e.g., an ad stitcher or news bulletin stitcher etc.), a media server 108, and a content serving system (CSS) 112 (e.g., a Content Data Network (CDN).
- the player 104 is a computer program that runs on a device 120 (e.g., mobile phone, smart TV, computer, etc.) having a display screen 122 for displaying decoded video frames and a speaker 123 for playing decoded audio frames.
- helper 104 is illustrated as being remote from device 102, in some embodiments, helper is a computer program that also runs on device 120.
- helper 104 runs on a computer that is a component of CSS 112.
- FIG. 2 is a message flow diagram illustrating a process according to an embodiment.
- the process may begin with player 102 sending a request message m202 (e.g. HTTP GET message) identifying a manifest (e.g., playlist.m3u8).
- Request message m202 is received at helper 104.
- helper 104 In response to receiving request message m202, helper 104 sends to CSS 112 a request message m204 identifying the manifest. In response to receiving message m204, CSS 112 sends to helper 104 a response message m206 comprising the requested manifest.
- helper 104 after receiving the requested manifest, helper 104 sends to stitcher 106 a request message m208 identifying a content break duration (e.g., 30 seconds) and requesting a media set for the content break (for ease of explanation, assume that the media set is an ad set and the break is an ad break).
- Stitcher 106 responds to the request message by transmitting to helper a response message m210 that comprises ad information or an indication that no ads are available.
- the ad information may identify one or more ads and, for each identified ad, may include a set of ad segment URLs for the ad.
- the ad information 8 may indicate that a single 15 second ad was selected and may contain 3 ad segment URLs for this 15 second ad (c.g., adscrvcr.com/ad-scgl.ts, adscrvcr.com/ad-scg2.ts, adscrvcr.com/ad- seg3.ts).
- helper 104 For each ad break identified in the manifest, helper 104 performs an ad break placeholder insertion process that, in at least one embodiment, comprises: i) determining the duration of the ad break; ii) determining ad set information based on (e.g., based solely on) the duration of the ad break; and iii) inserting into the manifest at the location of the ad break the determined ad set information (or information derived therefrom), which information includes segment locator information (e.g.. a set of URLs). After inserting the information including the segment locator information into the manifest, thereby producing a modified manifest, helper 104 provides to player 102 response message m212, which contains the modified manifest.
- ad break placeholder insertion process that, in at least one embodiment, comprises: i) determining the duration of the ad break; ii) determining ad set information based on (e.g., based solely on) the duration of the a
- helper 104 has a lookup table that maps (directly or indirectly) each possible ad break duration to corresponding ad set information. Accordingly, in one embodiment the step of determining the ad set information to insert into the manifest based on (e.g., based solely on) the duration of the ad break comprises using the lookup table to determine the ad set information that is associated with the ad break duration. It is this determined ad set information (or information derived therefrom) that can be inserted into the manifest.
- each URL included in Table 3 is a unique URL (i.e. is different in some way for each other URL), this is not a requirement.
- each URL included in table 3 could simply be: “helper.com/DummyAd-seg” or even “Dummy Ad- seg.”
- the same information shown above can also be stored more efficiently as shown in Table 4 below:
- the ad set information associated with an ad break duration not only includes a value that specifies the maximum number of possible ad segments required for the ad set, but also an array that specifies all potential encoding breaks (PEBs) for the ad break.
- PEBs potential encoding breaks
- the value Si is equal to sum (su, Si2, S;M), wherein M is the number of ads within the ith possible ad set and sy is number of segments required by the jth ad within the ith ad set.
- the second ad set requires 3 segments for the first 15 second ad and 3 segments for the second 15 second ad; hence for the second ad set there is an encoding break located at segment 3. Accordingly, the PEB locations for the 30 second ad break are: 3 and 5 (or 1 and 3).
- the segments are arranged as: Al 1-A12-A13-A21-A22-A23-A31-A32-A33-A34-A35- P, so that there are encoding breaks at location 3, 6, and 11.
- the segments are arranged as:
- PEB (3, 5, 6, 9, 11).
- helper 104 simply assumes there is an encoding break after each segment, leading to the following structure:
- PEB (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).
- helper 104 inserts into the manifest at the location of the ad break the determined ad set information (or, for example, segment locator information derived therefrom).
- the playlist shown in Table 1A is the playlist helper 104 received in response to its manifest request.
- helper will insert at the ad break (i.e., between vid-scg2 and vid-scg3) six placeholder (or ‘dummy’) URLs into the playlist. Also, because this is an HLS example, for each dummy URL there must be a preceding #EXTINF tag.
- helper in addition to inserting an #EXT-X-DISCONTINUITY tag between vid-seg2 and Dummy Ad-segl and inserting an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg5 and vid-seg3 (due to the known encoding breaks there), helper also inserts an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg3 and Dummy Ad-seg4 and insert an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg5 and Dummy Ad-seg6 because these are locations of the potential encoding breaks.
- helper 104 may replace every string “cdn.com” with “helper.com” so that all of the content segment requests in addition to the ad segment requests will be sent by player 102 to helper 104.
- helper selectively replaces the string “cdn.com” with “helper.com” so that not all occurrences are changed.
- helper may modify the manifest so that at least some (i.e., all or less than all) segment requests are sent to the helper.
- helper 104 will also append the following text to the playlist:
- helper appends to the manifest a number of additional dummy URLs equal in number to the number dummy URLs added to the manifest. Additionally, as shown in Table 6 above, helper 104 may specify that the duration of each additional dummy segment is 1 second.
- helper 104 may send request m208 to stitcher 106 prior to performing the ad break placeholder insertion process. In this embodiment, helper 104 may be configured to modify the ad break placeholder insertion process so that instead of inserting all of the dummy URLs into the manifest it inserts less than all, depending on the response m210 from stitcher 106. For example, if the ad information included in response m210 indicates that a single 15 second ad was selected and contains 3 ad segment URLs for this
- the modified manifest produced by helper 104 may appear as shown in Table 7 below.
- all of the dummy URLs are inserted into the manifest as shown in Table 5 and helper maps the first three dummy URLs to the ad segment URLs received in response m210 (an example of such a mapping is shown in Tables 9 and 10, below).
- the ad information included in response m210 indicates that a single 30 second ad was selected and contains 5 ad segment URLs for this 30 second ad (e.g., adserver.com/ad-seg l.ts, adserver.com/ad-seg2.ts, adserver.com/ad-seg3.ts, adserver.com/ad-seg4.ts, adserver.com/ad-seg5.ts), then the modified manifest produced by helper 104 may appear as shown in Table 8 below.
- all of the dummy URLs are inserted into the manifest as shown in Table 5 and helper maps five consecutive dummy URLs to the ad segment URLs received in response m210 (an example of such a mapping is shown in Tables 11 and 12, below).
- player 102 After player 102 receives the modified manifest (e.g., the playlist shown in Table 5, Table 7 or Table 8), player 102 begins sending segment requests according to the manifest (e.g., requests for segments of the presentation, which is a video in this example). For example, as shown in FIG. 2, player 102 sends to CSS 112 a request message m213 for vid-segl.ts and sends to helper 104 a request message m214 for vid-seg2.ts.
- the manifest e.g., requests for segments of the presentation, which is a video in this example.
- the manifest e.g., requests for segments of the presentation, which is a video in this example.
- player 102 sends to CSS 112 a request message m213 for vid-segl.ts and sends to helper 104 a request message m214 for vid-seg2.ts.
- CSS responds to request m213 in a conventional manner and helper 104 responds to request m214 by, at a minimum, providing to player 102 a response message m216, which either contains the requested segment (vid-seg2.ts) or a redirect message that causes player 102 to send a request message to a server (e.g. a server within CSS) for the segment.
- a server e.g. a server within CSS
- helper 104 transmits to stitcher 106 a request message m218 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill a 30 second ad break.
- the helper in response to receiving request m214, may: 1) send to the player response message m216 and 2) initiate the transmission of a request to the stitcher (e.g., determine whether a request to the stitcher is needed, and, if so, send to stitcher a request message m218 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill an ad break). For instance, in one embodiment, the helper determines whether a request to the stitcher is needed by checking whether a flag is set to TRUE (e.g., equal to 1) and if the flag is set to TRUE, then it is determined that a request to the stitcher is needed.
- TRUE e.g., equal to 1
- Stitcher 106 responds to the request message m218 by transmitting to helper 104 a response message m220 that contains either segment location information for use in retrieving X ad segments (e.g,. X ad segment URLs or template information specifying the X ad segment URLs) or X ad segments, where X is greater than or equal to zero. More specifically, assuming only two flavors of ads (15 second ads or 30 second ads) and a segment duration of 6 seconds, then X is one of: 0, 3, 5, or 6. If X is 3, this means stitcher has selected a single 15 second ad; if X is 5, this means stitcher has selected a single 30 second ad; if X is 6, this means stitcher selected two fifteen second ads.
- segment location information for use in retrieving X ad segments e.g,. X ad segment URLs or template information specifying the X ad segment URLs
- X ad segments where X is greater than or equal to zero
- helper will map three consecutive dummy URLs to these ad segment URLs as shown in the table 9 or table 10 below as examples, whereas the other three dummy URLs that make up the ad break are either mapped to a short (e.g. 500 millisecond) placeholder segment (e.g., a segment that contains nothing but blank video frames or a segment that contains for example still video of a logo or a segment containing a house ad or branded slate any other video content to fill the time) or mapped to i) ad segment URLs received in response message m210 and/or ii) ad segment URLs corresponding to ad segments received in response message m210.
- a short e.g. 500 millisecond
- placeholder segment e.g., a segment that contains nothing but blank video frames or a segment that contains for example still video of a logo or a segment containing a house ad or branded slate any other video content to fill the time
- helper will map five consecutive dummy URLs to these ad segment URLs as shown in Table 11 or Table 12 below.
- helper 104 will respond to request messages corresponding to the dummy URLs, and helper may respond according to the mappings. For example, assuming the mapping shown in Table 9, when helper 104 processes a request message m222 for Dummy Ad- segl.ts (e.g., an HTTP Get message wherein the request target of the GET message contains or consists of the string “Dummy Ad-segl.ts”), helper 104 responds to such request by providing to player 102 a response message m224 that contains adl-segl.ts or an HTTP redirect containing the corresponding ad segment URL.
- Dummy Ad- segl.ts e.g., an HTTP Get message wherein the request target of the GET message contains or consists of the string “Dummy Ad-segl.ts
- response message m224 includes the redirect, this causes player 102 to transmit to media server 108 a request message m226 identifying the requested ad segment and then media server 108 responds by transmitting a response message m228 that contains the requested ad segment (or it could possibly contain another redirect).
- helper 104 when helper 104 receives request messages for Dummy Ad-seg2.ts and Dummy Ad-seg3.ts, helper will respond to each such request, respectively, by either providing to the player adl-seg2.ts and adl-seg3.ts, respectively, or providing to the player an HTTP redirect containing the corresponding ad segment URL.
- placeholder_seg.ts c.g., a 500 ms or 1 second segment
- helper 104 may insert into the manifest the ad segment URLs corresponding to the ad segments selected by stitcher 106.
- helper 104 decides to cause the player to request ad segments identified in message m220 rather than the ad segments identified in message m210.
- mapping process may produce the following mapping:
- helper 104 inserts additional dummy URLs to the manifest (see Table 6).
- a URL for a dummy ad segment is not mapped to an ad segment URL or actual ad segment, but rather is mapped to the short placeholder segment (sec, c.g., Dummy Ad-scg6.ts in Table 9)
- helper will map the corresponding additional dummy URL (e.g., the URL for AdditionalDummyAd-seg6.ts) to a long placeholder segment (e.g., a 3 second or 6 second placeholder segment) such that when helper receives a request for this corresponding additional dummy segment helper returns the long placeholder segment rather than the short placeholder segment it would have otherwise returned.
- helper 104 when player 102 requests, for example, Dummy Ad-seg4.ts, which we will assume is mapped to a short placeholder segment, instead of returning a 6 second segment as specified in the playlist by the #EXTINF tag for that segment, the helper instead returns a short (e.g. 500 ms) placeholder segment. Accordingly, when player requests AdditionalDummyAd-seg4.ts, which corresponds to Dummy Ad-seg4.ts, instead of returning a 1 second segment as specified by the #EXTINF tag for that segment, helper 104 returns a 6 second black segment.
- helper 104 is simply rearranging (conceptually) where the “black video” is being played within the timeline. In an extreme example, helper 104 could do this for the entire ad break, reducing what would be a 60 second break to 6 seconds of black (or a chosen placeholder video).
- the dummy URLs are mapped to information (e.g., a pre-defined “not available” status code, such as an HTTP 404 status code or other status code, or other information) that indicates to the player that the requested segment is being skipped.
- information e.g., a pre-defined “not available” status code, such as an HTTP 404 status code or other status code, or other information
- helper when helper receives a request for, for example, Dummy Ad-segl .ts and this dummy URL has not been mapped to any ad segment, helper responds to the request by sending to the player a response message with information (e.g., a pre-defined status code, such as an HTTP 404 or other information) that indicates to the player that the requested segment is being skipped.
- a response message may contain a status code with no response body where the status code indicates that no segment is being returned in response to the request (i.e., the segment is being skipped).
- the response message includes a status code (e.g., 200 OK) and a content-length parameter set to 0 to indicate that no segment is being returned in response to the request.
- the response message comprises a header and the information that indicates to the player that the requested segment is being skipped is contained in the header.
- the response message comprises a non-zero length body and the information that indicates to the player that the requested segment is being skipped is contained in the body of the message.
- FIG. 4 is a message flow diagram illustrating a process according to another use case.
- the process may begin with player 102 sending a request message m402 (e.g. HTTP GET message) identifying a manifest (e.g., manifest.mpd).
- request message m402 e.g. HTTP GET message
- manifest e.g., manifest.mpd
- Request message m402 is received at helper 104.
- helper 104 sends to CSS 112 a request message m404 identifying the manifest.
- CSS 112 sends to helper 104 a response message m406 comprising the requested manifest.
- Helper 104 may obtain information about ad breaks to be inserted into the manifest. For instance, the information about the ad breaks may come from an EventStream element included in the received manifest or helper 104 may make a Video Multiple Ad Playlist (VMAP) request to get the information as is known in the art (this is also true for the HLS).
- VMAP Video Multiple Ad Playlist
- helper 104 For each ad break to be inserted into the manifest, helper 104 performs an ad break placeholder insertion process that, in at least one embodiment, as explained above, comprises: i) determining the duration of the ad break; ii) determining ad set information based on (e.g., based solely on) the duration of the ad break; and iii) inserting into the manifest at the “location” of the ad break the determined ad set information (or information derived therefrom), which information includes segment locator information (e.g.. a set of URLs or a template for generating URLs).
- segment locator information e.g. a set of URLs or a template for generating URLs.
- helper 104 After inserting the information including the segment locator information into the manifest, thereby producing a modified manifest, helper 104 provides to player 102 a response message m412, which contains the modified manifest (e.g., Mod-manifest. mpd).
- modified manifest e.g., Mod-manifest. mpd.
- helper 104 inserts into the manifest at the location of the ad break the determined ad set information (or, for example, segment locator information derived therefrom).
- a specific example using an MPEG-DASH manifest is illustrated below in Table 14.
- the manifest shown in Table 2A is the manifest helper 104 received in response to its manifest request m404.
- the ad set information is the same ad set information corresponding to the 30 second ad break shown in Table 4. Given this ad set information, helper may produce a modified manifest as shown in Table 14.
- each dummy URL may be of the form: http://FQDN/string so that each dummy URL is the same as each other dummy URL.
- helper 104 may modify one or more of the segment URLs included in the original manifest to cause the player to transmit to the helper one or more of the presentation segments requests (i.e., requests of obtaining segments of the presentation).
- the helper replaced the 5th, 6th, and 7th segment URL in the first period element with the following replacement URLs “http : / /helper . com/ abcdl , " "http : / /helper . com/ abcd2 , " and “http : / /helper . com/ bcd3 , ” respectively.
- each replacement URL within the same segment list element includes a unique string (e.g., “abcdl”) within the segment list and each points to helper 104 (e.g., each replacement URL includes the helper’s fully qualified domain name (FQDN)).
- helper may modify the manifest so that at least some (i.e., all or less than all) presentation segments requests are sent to the helper.
- some of the replacement URLs may include a “trigger” indicator. For instance (using an MPD as an example), the helper may replace the following URLs in the original manifest:
- helper replaces a URL (http://cdn.com/vid-repl-seg4.mp4) in the original manifest with a replacement URL that points to the helper (e.g., http://helper.com/abcdl), then the helper will associate the replacement URL with the segment identified by the replaced segment URL.
- the helper may create a data structure to map each replacement URL with the URL that the replacement URL replaced (or other information that identifies the segment that was identified by the URL that was replaced by the replacement URL). Accordingly, the information to which the replacement URL is mapped may comprise all or a portion of the replaced URL.
- the manifest shown in Table 15 is a single period manifest for a presentation that has a presentation time of 3740.08 seconds.
- the manifest includes information that indicates that an ad break should be inserted after 400 seconds of presentation time (in this example, the information is in the form of an Event element within an EventStream element.
- the manifest also includes a SegmentTemplate element for generating a list of segmenet URLs, as opposed to including the segment URLs in the manifest itself as illustrated in Table 14 (this feature can be advantageous because it makes the manifest smaller).
- helper may produce a modified manifest as shown in Table 16.
- helper converted the single-period manifest into a multiperiod manifest. More specifically, the helper “split” the single Period of the original manifest into two periods and inserted a period between the two. That is, the modified manifest includes a first Period element for the first 400 seconds of the presentation, a second Period immediately following the first period for the ad break (in this example, a 30 second ad break was chosen), and a third period immediately following the second period for the remaining 3340.08 seconds of the presentation. Because a 30 second ad break was inserted the mediaPresentationDuration increased from 3740.08 to 3770.08 seconds as illustrated in the table above.
- the third Period element includes presentationTimeOffset attribute set to a value of 400 seconds to indicate to the player the timecodes in the returned segments need to be shifted back by 400 seconds to match the period’s zero presentation timestamp.
- the helper may split the single period into N+l periods and insert an ad break period between each period.
- helper may split the single period into N periods and insert an ad break period either after or before each one of the N periods.
- helper may produce a modified manifest as shown in Table 17.
- the modified manifest shown in Table 17 is nearly identical to the one shown in Table 16 with the most significant difference being that the manifest shown in Table 17 is configured to cause the player transmit to the helper eight (8) requests for presentation segments prior to transmitting a request for an inserted segment (i.e., an ad segment in this example). More specifically, the first Period element shown in Table 16, which has a duration of 400 seconds, is split into two Period elements; a first Period element with a duration 368 seconds and a second Period element with a duration of 32 seconds.
- the 92 URLs that are generated based on the segment template included in the first period shown in Table 17 are identical to the first 92 URLs that are generated based on the segment template included in the first period shown in Table 16.
- player 102 after player 102 receives the modified manifest (e.g., the manifest shown in Tabic 14), player 102 begins sending segment requests according to the manifest (e.g., requests for segments of the presentation, which is a video in this example). For example, as shown in FIG. 4, player 102 may initially send to CSS 112 one or more segment requests m414 (and CSS 112 responds by sending the requested segments to player 102) followed by player 102 sending to helper 104 one or more segment requests (e.g., request m416).
- the manifest e.g., requests for segments of the presentation, which is a video in this example.
- the manifest e.g., requests for segments of the presentation, which is a video in this example.
- player 102 may initially send to CSS 112 one or more segment requests m414 (and CSS 112 responds by sending the requested segments to player 102) followed by player 102 sending to helper 104 one or more segment requests (e.g., request m416).
- player 102 will i) send to CSS 112 (i.e., “cnd.com” in this example) four segment requests (i.e., a request for vid-repl- segl.mp4, a request for vid-repl-seg2.mp4, a request for vid-rep l-seg3. mp4, and a request for vid-rep l-seg4.mp4) and ii) after sending the segment requests to CSS 112, send a request m416 to helper 104 (i.e., a request containing the string “abcdl”).
- helper 104 i.e., a request containing the string “abcdl”.
- player 102 will send multiple segment requests to CSS 112 before sending to helper request m416.
- the helper in response to request m416, will: 1) send to the player a response responsive to the request and 2) initiate the transmission of a request to the stitcher (e.g., determine whether a request to the stitcher is needed, and, if so, send to stitcher a request message m418 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill an ad break). For instance, in one embodiment, the helper determines whether a request to the stitcher is needed by checking whether a flag is set to TRUE (e.g., equal to 1) and if the flag is set to TRUE, then it is determined that a request to the stitcher is needed.
- TRUE e.g., equal to 1
- stitcher 106 responds to request m418 by selecting one or more ads (or other pieces of media content) and transmitting to helper 104 a response message m420 that contains a manifest containing segment locator information (e.g., segment URLs and/or template information enabling helper to produce segment URLs) for retrieving the segments of the one or more ads selected by stitcher 106.
- the manifest returned by stitcher 106 may include a first period element containing segment URLs (or corresponding template information) for the first ad and a second period element containing segment URLs (or corresponding template information) for the second ad.
- helper 104 After receiving response message m420, helper 104 uses the segment locator information in the response message to retrieve all of the identified segments (e.g., by sending segment requests m421). Next, the helper creates an output file (step s490) comprising encoded media data from the retrieved segments. Next, the helper segments the output file to produce a set of media content segments (step s491 ), wherein each media content segment contains a portion of the encoded media data contained in the output file (an initialization segment may also be produced in addition to the media content segments).
- step s490 (creating the output file) comprises the helper: i) creating a first temporary file containing a first set of segments (e.g., all of the segments of adl), ii) creating a second temporary file containing a second set of segments (e.g., all of the segments for ad2), and iii) concatenating the first and second temporary files, thereby producing the output file.
- each media content segment in the second temporary file contains one or more timestamps, and the step of concatenating the first and second temporary files comprises modifying the timestamp(s).
- the segments for the first ad consist of the following segments: si 1, sl2, ..., slN and the segments for the second ad consist of the following segments: s21, s22, ..., s2M (sl l and s21 may be initialization segments)
- the first temporary file is created running the cat commands shown in Table 18 and the second temporary file is created by running the cat commands shown in Table 19.
- helper 104 uses the FFmpeg tool to create the output file using the temporary files as input.
- helper may run the following command: ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4, where list.txt is a two line text file wherein the first line is “tempFilel.mp4” and the second line is “tempFile2.mp4.” Executing this ffmpeg command demuxes the files identified in list.txt one after the other, as if all their packets had been muxed together.
- the timestamps in the files are adjusted so that the first file starts at 0 and each next file starts where the previous one finishes.
- the duration of each file is used to adjust the timestamps of the next file (i.e., the duration of tempFilel is used to adjust the timestamps of tempFile2).
- the helper may run the following ffmpeg command to create the segments (i.e., step s491): ffmpeg -i out.mp4 -codec copy -usc_timclinc 0 -usc_tcmplatc 0 -scg_duration 6 -f dash out.mpd
- This command generates a single-period MPD that contains a period element matching the period element corresponding to the ad break (see e.g., the period element with id-”ad_brcal ⁇ _ I ” in Table 14) as well as the individual segments to be returned for the ads.
- Each one of the media content segments generated by helper 104 in step s491 is mapped to one of the dummy URLs (step s492).
- Tables 20 and 21 illustrate possible mappings of dummy URLs to the media content segments (e.g., Table 20 illustrate possible mappings when the number of media content segments is three and Table 21 illustrate possible mappings when the number of media content segments is five).
- helper 104 will respond to request messages corresponding to the dummy URLs, and helper may respond according to the mappings.
- helper may respond according to the mappings.
- helper 104 responds to such request by providing to player 102 a response message m424 that contains segl.mp4 or an HTTP redirect containing a URL pointing to segl.mp4.
- helper 104 provides to the player a short placeholder segment (e.g., a 500 ms or 1 second segment) or a “not available” (e.g., a “Not Found”) response status code or some other default response.
- a short placeholder segment e.g., a 500 ms or 1 second segment
- a “not available” e.g., a “Not Found”
- the embodiments may function with content that includes only video, only audio, or both audio and video.
- the manifest for the ad break may include: i) a first period element comprising first media segment locator information for retrieving media content segments for the period and first audio segment locator information for retrieving corresponding audio content segments for the period and ii) a second period element comprising second media segment locator information for retrieving media content segments for the period and second audio segment locator information for retrieving corresponding audio content segments for the period.
- the helper performs a process that includes: 1) using the received first and second audio segment locator information to retrieve a first set of audio content segments and a second set of audio content segments, respectively; 2) creating an audio output file containing encoded audio data from the first set of audio content segments and encoded audio data from the second set of audio content segments; 3) segmenting the audio output file to produce a third set of audio content segments, wherein each audio content segment in the third set of segments contains a portion of the encoded audio data contained in the output file; and 4) for each audio content segment included in the third set of audio content segments, associating one of the dummy URLs in the audio adaptation set element with the audio content segment.
- the helper may respond by transmitting to the player the audio content segment associated with the dummy URL.
- FIG. 7 is a block diagram of apparatus 700, according to some embodiments, that may implement helper 104.
- apparatus 700 (or a component thereof) may be a component of device 120.
- apparatus 700 may comprise: processing circuitry (PC) 702, which may include one or more processors (P) 755 (e.g., one or more general purpose microprocessors and/or one or more other processors, such as an application specific integrated circuit (ASIC), field-programmable gate arrays (FPGAs), and the like), which processors may be co-located in a single housing or in a single data center or may be geographically distributed (e.g., apparatus 700 may be a distributed computing apparatus comprising two or more computers or a single computer); at least one network interface 748 (e.g., a physical interface or air interface) comprising a transmitter (Tx) 745 and a receiver (Rx)
- Tx transmitter
- Rx receiver
- IP Internet Protocol
- a network interface 748 is connected (physically or wirelessly) (e.g., network interface 748 may be coupled to an antenna arrangement comprising one or more antennas for enabling apparatus 700 to wirelessly transmit/receive data); and a storage unit (a.k.a., “data storage system”) 708, which may include one or more non-volatile storage devices and/or one or more volatile storage devices.
- a storage unit a.k.a., “data storage system”
- PC 702 includes a programmable processor
- CRSM 742 may be provided.
- CRSM 742 may store a computer program (CP) 743 comprising computer readable instructions (CRI) 744.
- CRSM 742 may be a non-transitory computer readable medium, such as, magnetic media (e.g., a hard disk), optical media, memory devices (e.g., random access memory, flash memory), and the like.
- the CRI 744 of computer program 743 is configured such that when executed by PC 702, the CRI causes apparatus 700 to perform steps described herein (e.g., steps described herein with reference to the flow charts).
- apparatus 700 may be configured to perform steps described herein without the need for code. That is, for example, PC 702 may consist merely of one or more ASICs.
- the features of the embodiments described herein may be implemented in hardware and/or software.
- a method 500 (see the flow chart shown in FIG. 5), comprising: transmitting a modified manifest to a player (step s502), the modified manifest containing a period element corresponding to a content break (e.g., an ad break); after transmitting the modified manifest, transmitting a request for a manifest for the content break (step s504); receiving the manifest for the content break (step s506), wherein the manifest for the content break comprises i) a first period element containing first segment locator information for use in retrieving a first set of media content segments and ii) a second period element containing second segment locator information for use in retrieving a second set of media content segments; using the received first and second segment locator information to retrieve the first set of media content segments and the second set of media content segments, respectively (step s5O8); creating an output file containing encoded media data from the first set of media content segments and encoded media data from the second
- creating the output file comprises: creating a first temporary file containing the first set of segments; creating a second temporary file containing the second set of segments; and concatenating the first and second temporary files, thereby producing the output file.
- each segment in the second temporary file contains one or more timestamps
- concatenating the first and second temporary files comprises modifying the timestamp(s) of each segment in the second temporary file.
- the method of embodiment Al further comprising: receiving, from the player, a first request for a manifest (e.g., Dash MPD, HLS playlist) for retrieving first media content (e.g., segments of a movie, an episode, etc.); after receiving the first request for the manifest, transmitting a second request for the manifest; after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier that identifies a first server; generating the modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first server identifier, where M > 1 and M ⁇ N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that
- A5. The method of embodiment A4, further comprising: receiving, from the player, a request comprising one of the unique strings; and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request comprising one of the unique strings and ii) transmitting a request for second media content to be served to the player during a break in the first media content (e.g., an ad break or some other break).
- a break in the first media content e.g., an ad break or some other break.
- A6 The method of embodiment A5, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
- initiating the transmission of the request for the second media content comprises determining whether a request for the second media content is needed.
- A9 The method of embodiment A8, wherein the first period element further contains first audio segment locator information for use in retrieving a first set of audio content segments, the second period element further contains second audio segment locator information for use in retrieving a second set of audio content segments, and the method further comprises: using the first and second audio segment locator information to retrieve the first set of audio content segments and the second set of audio content segments, respectively; creating an audio output file containing encoded audio data from the first set of audio content segments and encoded audio data from the second set of audio content segments; segmenting the audio output file to produce a third set of audio content segments, wherein each audio content segment in the third set of audio content segments contains a portion of the encoded audio data contained in the audio output file; receiving an audio segment request transmitted by the player; and after receiving the audio segment request, transmitting to the player an audio content segment from the third set of audio content segments.
- a 10 The method of embodiment Al , wherein the first set of media content segments consists of a first set of audio content segments, wherein each audio content segment in the first set of audio content segments does not contain any encoded video data, and the second set of media content segments consists of a second set of audio content segments, wherein each audio content segment in the second set of audio content segments does not contain any encoded video data.
- a method 600 (see the flow chart shown in FIG. 6), comprising: receiving, from a player, a first request for a manifest (e.g., Dash MPD, HLS playlist) for retrieving first media content (e.g., a movie, an episode, etc.) (step s602); after receiving the first request for the manifest, transmitting a second request for the manifest (step s604); after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier that identifies a first server (step s606); generating a modified manifest based on the received manifest (step s608), wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M ⁇ N, each one of the N-
- a manifest
- a method 300 (see flowchart shown in FIG. 3), comprising: receiving (step s302), from a media player, a first request for a manifest for playing a media; transmitting (step s304) to a manifest server a second request for the manifest; receiving (step s306) the manifest from the manifest server, wherein the manifest indicates an insertion point for a first ad break and the manifest comprises first ad break duration information indicating a duration of the first ad break; generating (step s308) a modified manifest, wherein generating the modified manifest comprises inserting into the manifest at the insertion point first segment locator information for causing the player to request a number of segments, wherein the first segment locator information comprises a first uniform resource locator (URL) (absolute or relative) or URL template information for generating the first URL, and wherein the first URL includes a segment identifier (e.g., the first URL may consist of or comprise the segment identifier), and further wherein the modified manifest comprises
- the first segment locator information comprises a list of N1 URLs comprising the first URL (but there is no requirement that the first URL be positioned first in the list; the first URL may be positioned anywhere in the list), where N1 > 1 , or the first segment locator information comprises URL template information that can he used by the player to generate the list of N1 URLs.
- C5. The method of embodiment C2, 3, or C4, wherein generating the modified manifest comprises inserting into the manifest first segment grouping information for forming two or more groups of the N1 number of URLs.
- C6 The method of embodiment C5, wherein the N1 URLs further comprises a second URL, and inserting into the manifest the first segment grouping information comprises inserting into the manifest a discontinuity tag (e.g., an HLS EXT-X-D1SCONT1NU1TY tag) such that in the modified manifest the discontinuity tag comes after the first URL but comes before the second URL.
- a discontinuity tag e.g., an HLS EXT-X-D1SCONT1NU1TY tag
- the first segment grouping information comprises: a first period element comprising: i) a first subset of the N1 URLs or ii) URL template information for use in generating the first subset of URLs; and a second period element comprising: i) a second subset of the N1 URLs or ii) URL template information for use in generating the second subset of URLs.
- C8 The method of any one of embodiments C1-C7, further comprising: after providing the modified manifest to the player, submitting to an stitcher an ad request for triggering the stitcher to select a set of ads to fill the first ad break; receiving from the stitcher a response responsive to the ad request the response comprising a set of M segment URLs or a set of M ad segments, where M ⁇ Nl, wherein the set of M segment URLs comprises a first ad segment URL or the set of M ad segments comprises a first ad segment; and mapping the first URL included in the list of Nl URLs with the first ad segment URL or the first ad segment. [00117] C9.
- the first URL is a dummy URL (c.g. Dummy Ad-segl.ts) that is associated with no segment or a placeholder segment (e.g., a segment which consists essentially of black frames).
- a dummy URL c.g. Dummy Ad-segl.ts
- a placeholder segment e.g., a segment which consists essentially of black frames
- CIO The method of any one of embodiments C1-C9, further comprising; prior to generating the modified manifest, using information indicating the duration of the first ad break to obtain first ad set information, wherein the first ad set information comprises the first segment locator information or the first segment locator information is derived using the first ad set information.
- Cll The method of any one of embodiments Cl -CIO, wherein the duration of the segment is less than D - 1, wherein D is the specified segment duration in units of seconds.
- C14 The method of any one of embodiments C1-C13, wherein the manifest indicates an insertion point for a second ad break and the manifest comprises second ad break duration information indicating a duration of the second ad break, and generating the modified manifest further comprises inserting into the manifest at the insertion point for the second ad break second segment locator information for causing the player to request a number of segments, wherein the second segment locator information comprises a list of N2 URLs, where N2 > 1 , or the second segment locator information comprises second URL template information that can be used by the player to generate the list of N2 URLs.
- a method 300 comprising: receiving (step s302), from a media player, a first request for a manifest for playing a media; transmitting (step s304) to a manifest server a second request for the manifest; receiving (step s306) the manifest from the manifest server, wherein the manifest indicates an insertion point for a first ad break and the manifest comprises first ad break duration information indicating a duration of the first ad break; generating (step s308) a modified manifest, wherein generating the modified manifest comprises inserting into the manifest at the insertion point first segment locator information for causing the player to request a number of segments, wherein the first segment locator information comprises a first uniform resource locator (URL) (absolute or relative) or URL template information for generating the first URL, and wherein the first URL includes a segment identifier (e.g., the first URL may consist of or comprise the segment identifier), and further wherein the modified manifest comprises
- a method that includes receiving, from a player, a first request for a manifest for retrieving first media content. The method also includes, after receiving the first request for the manifest, transmitting a second request for the manifest (steps s804). The method also includes, after transmitting the second request for the manifest, receiving the requested manifest.
- the requested manifest comprises a period element comprising first template information for use in generating a first set of segment locators, and each one of the segment locators included in the first set of segment locators comprises a first server identifier and a unique segment identifier such that i) a first segment locator included in the first set of segment locators comprises the first server identifier and a first unique segment identifier and ii) a second segment locator included in the first set of segment locators comprises the first server identifier and a second unique segment identifier.
- the method also includes generating a modified manifest based on the received manifest (steps s808).
- the modified manifest comprises a first period element comprising second template information for use in generating a second set of segment locators, wherein the second set of segment locators is a subset of the first set of segment locators such that i) a first segment locator included in the second set of segment locators comprises the first server identifier and the first unique segment identifier and ii) a second segment locator included in the second set of segment locators comprises the first server identifier and the second unique segment identifier.
- the modified manifest further comprises a second period element comprising third template information for use in generating a third set of segment locators, wherein each segment locator included in the third set of segment locators comprises a unique string that is mapped to a segment locator included in a second subset of the first set of segment locators and further comprises a second server identifier that is different than the first server identifier, wherein the first subset and second subset are disjoint.
- the method also includes transmitting the modified manifest to the player.
- the method further includes receiving, from the player, a request comprising one of the unique strings.
- the method also includes, in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
- transmitting a message “to” or “toward” an intended recipient encompasses transmitting the message directly to the intended recipient or transmitting the message indirectly to the intended recipient (i.e., one or more other nodes are used to relay the message from the source node to the intended recipient).
- receiving a message “from” a sender encompasses receiving the message directly from the sender or indirectly from the sender (i.e., one or more nodes are used to relay the message from the sender to the receiving node).
- a means “at least one” or “one or more.”
- each segment for a given representation can be stored in the same file and the player requests a particular segment by transmitting to the server not only the identifier for the file but also the identifier (e.g., byte offset) for the segment within the file.
- the server not only the identifier for the file but also the identifier (e.g., byte offset) for the segment within the file.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Business, Economics & Management (AREA)
- Marketing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A method that includes transmitting to a player a modified manifest containing a period element corresponding to a content break. The method also includes, after transmitting the modified manifest, transmitting a request for a manifest for the content break and receiving the manifest for the content break, wherein the manifest for the content break comprises i) a first period element containing first segment locator information and ii) a second period element containing second segment locator information. The method also includes using the received first and second segment locator information to retrieve a first set of media content segments and a second set of media content segments, respectively. The method also includes creating an output file containing encoded media data from the first set of media content segments and the second set of media content segments. The method also includes segmenting the output file to produce a third set of media content segments. The method also includes receiving a segment request transmitted by a player and, after receiving the segment request, transmitting to the player a media content segment from the third set of media content segments.
Description
MEDIA STREAMING SYSTEMS AND METHODS
TECHNICAL FIELD
[001] Disclosed are embodiments related to media (e.g., video and/or audio) streaming systems and methods.
BACKGROUND
[002] Technology for streaming media content (e.g., video content and/or audio content) to a user is well established. Most streaming technologies, including Hypertext Transfer Protocol (HTTP) Live Streaming (HLS), a technology developed by Apple, Inc., and MPEG- Dynamic Adaptive Streaming over HTTP (DASH), work by dividing a media item (e.g., a 30 minute episode of a TV show) into many segments (e.g., 300 six-second segments) and providing to the player a segment manifest (e.g., an HLS playlist or an MPEG-DASH Media Presentation Description (MPD) or other information element that contains segment locator information) that enables the player to send to a server a request for each segment. Thus, for example, when a user wants to consume (e.g., watch and/or listen to) a particular media item, the user’s media player may make a request to a server for a particular segment manifest (or manifest for short) for the media item (e.g., an HLS manifest or MPD), and, then, after obtaining the requested manifest, serially request the segments identified in the manifest (e.g., for each segment of the media item, the manifest may contain a Uniform Resource Locator (URL) that identifies the filename of the file that stores the segment and the location of the file on the Internet and/or segment template information that enables the player to determine the filenames and file locations).
[003] After a player requests a manifest and before the manifest is provided to player, a process may select media to be inserted (e.g., a set of one or more ads) for an identified break (e.g., using an HLS playlist, the location of the break and its duration can be specified using the #EXT-X-CUE-OUT and #EXT-X-CUE-IN tags) and then insert into the manifest at the break position information for identifying segments of the selected media to be inserted (e.g., a set of ad segment URLs). In this way, selected media can be inserted into a media item at a predefined break.
[004] For example, Table 1 A below illustrates an example HLS playlist as it exists on the playlist server and Table IB below illustrates a modified version of the HLS playlist shown in Table 1A which is provided to the player. A comparison of the two tables shows that five segment URLs have been inserted into the playlist. TABLE 1A
[005] As another example, Table 2A below illustrates an example MPEG-DASH MPD as it exists on the manifest server and Table 2B below illustrates a modified version of the manifest shown in Table 2A, which is provided to the player. A comparison of tables 2A and 2B shows that a period element corresponding to a break and containing five ad segment URLs has been inserted into the manifest between a first period element containing a first subset of the segment URLs from the period element in the original manifest and a third period containing a second subset of the segment URLs from the period element in the original manifest.
SUMMARY
[006] Certain challenges presently exist. For instance, a timecode issue can arise if a media set (e.g., an ad set) contains two or more media items (e.g., two or more ads or two or more emergency announcements or two or more news bulletins etc.). For example, if the media set identifies a first media item and a second media item, the timecodes (a.k.a., timestamps) for the segments of the second media item may conflict (e.g., overlap) with the timecodes for the segments of the first media item and, for some systems, this can cause a problem. Another challenge is determining the point in time at which the request for media set should be made.
[007] Accordingly, in one aspect there is provided a method for overcoming this timecode issue. In one embodiment, the method includes transmitting to a media player a modified manifest containing a period element corresponding to a content break (e.g., an ad break, a news break, an emergency break). The method also includes, after transmitting the modified manifest, transmitting a request for a manifest for the content break and receiving the manifest for the content break, wherein the manifest for the content break comprises i) a first period element containing first segment locator information and ii) a second period element containing second segment locator information. The method also includes using the received first and second segment locator information to retrieve a first set of media content segments and a second set of media content segments, respectively. The method also includes creating an output file containing encoded media data from the first set of media content segments and the second set of media content segments. The method also includes segmenting the output file to produce a third set of media content segments. The method also includes receiving a segment request transmitted by a player and, after receiving the segment request, transmitting to the player a media content segment from the third set of media content segments.
[008] In another aspect there is provided a method for overcoming the media set request timing issue. In one embodiment, the method includes receiving, from a player, a first request for a manifest for retrieving first media content. The method also includes, after receiving the first request for the manifest, transmitting a second request for the manifest. The method also includes, after transmitting the second request for the manifest, receiving the requested manifest,
wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier. The method also includes generating a modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier (e.g., the first server identifier identifies a first set of one or more servers and the second server identifier identifies a second set of one or more servers) and ii) a unique string. The method also includes transmitting the modified manifest to the player and receiving, from the player, a request comprising one of the unique strings. The method also includes, in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
[009] In another aspect there is provided a computer program comprising instructions which when executed by processing circuitry of an apparatus causes the apparatus to perform any of the methods disclosed herein. In one embodiment, there is provided a carrier containing the computer program wherein the carrier is one of an electronic signal, an optical signal, a radio signal, and a computer readable storage medium. In another aspect there is provided an apparatus that is configured to perform the methods disclosed herein. The apparatus may include memory and processing circuitry coupled to the memory.
[0010] An advantage of the embodiments disclosed herein is that they enable the selection of an ad set after a manifest has already been provided to the media player.
BRIEF DESCRIPTION OF THE DRAWINGS
[0011] The accompanying drawings, which are incorporated herein and form part of the specification, illustrate various embodiments.
[0012] FIG. 1 illustrates a system according to an embodiment.
[0013] FIG. 2 is a message flow diagram according to an embodiment.
[0014] FIG. 3 is a flowchart illustrating a process according to an embodiment.
[0015] FIG. 4 is a message flow diagram according to an embodiment.
[0016] FIG. 5 is a flowchart illustrating a process according to an embodiment.
[0017] FIG. 6 is a flowchart illustrating a process according to an embodiment.
[0018] FIG. 7 is a block diagram an apparatus according to an embodiment.
DETAILED DESCRIPTION
[0019] FIG. 1 illustrates a system 100 according to an embodiment. System 100 includes a player 102, a proxy 104 (a.k.a., helper 104), a stitcher 106 (e.g., an ad stitcher or news bulletin stitcher etc.), a media server 108, and a content serving system (CSS) 112 (e.g., a Content Data Network (CDN). Typically, the player 104 is a computer program that runs on a device 120 (e.g., mobile phone, smart TV, computer, etc.) having a display screen 122 for displaying decoded video frames and a speaker 123 for playing decoded audio frames. While helper 104 is illustrated as being remote from device 102, in some embodiments, helper is a computer program that also runs on device 120. Likewise, in some embodiments, helper 104 runs on a computer that is a component of CSS 112.
[0020] FIG. 2 is a message flow diagram illustrating a process according to an embodiment. The process may begin with player 102 sending a request message m202 (e.g. HTTP GET message) identifying a manifest (e.g., playlist.m3u8). Request message m202 is received at helper 104.
[0021] In response to receiving request message m202, helper 104 sends to CSS 112 a request message m204 identifying the manifest. In response to receiving message m204, CSS 112 sends to helper 104 a response message m206 comprising the requested manifest.
[0022] In some embodiments, after receiving the requested manifest, helper 104 sends to stitcher 106 a request message m208 identifying a content break duration (e.g., 30 seconds) and requesting a media set for the content break (for ease of explanation, assume that the media set is an ad set and the break is an ad break). Stitcher 106 responds to the request message by transmitting to helper a response message m210 that comprises ad information or an indication that no ads are available. The ad information may identify one or more ads and, for each identified ad, may include a set of ad segment URLs for the ad. For example, the ad information
8 may indicate that a single 15 second ad was selected and may contain 3 ad segment URLs for this 15 second ad (c.g., adscrvcr.com/ad-scgl.ts, adscrvcr.com/ad-scg2.ts, adscrvcr.com/ad- seg3.ts).
[0023] For each ad break identified in the manifest, helper 104 performs an ad break placeholder insertion process that, in at least one embodiment, comprises: i) determining the duration of the ad break; ii) determining ad set information based on (e.g., based solely on) the duration of the ad break; and iii) inserting into the manifest at the location of the ad break the determined ad set information (or information derived therefrom), which information includes segment locator information (e.g.. a set of URLs). After inserting the information including the segment locator information into the manifest, thereby producing a modified manifest, helper 104 provides to player 102 response message m212, which contains the modified manifest.
[0024] In one embodiment, helper 104 has a lookup table that maps (directly or indirectly) each possible ad break duration to corresponding ad set information. Accordingly, in one embodiment the step of determining the ad set information to insert into the manifest based on (e.g., based solely on) the duration of the ad break comprises using the lookup table to determine the ad set information that is associated with the ad break duration. It is this determined ad set information (or information derived therefrom) that can be inserted into the manifest.
[0025] An example lookup table is shown below Table 3.
[0026] While each URL included in Table 3 is a unique URL (i.e. is different in some way for each other URL), this is not a requirement. For example, each URL included in table 3 could simply be: “helper.com/DummyAd-seg” or even “Dummy Ad- seg.” The same information shown above can also be stored more efficiently as shown in Table 4 below:
[0027] As illustrated above, in one embodiment the ad set information associated with an ad break duration not only includes a value that specifies the maximum number of possible ad segments required for the ad set, but also an array that specifies all potential encoding breaks (PEBs) for the ad break.
[0028] Determining the Maximum Number of Possible Ad Segments:
[0029] In one embodiment, to create Table 3 or Table 4, for each possible ad break duration, the maximum number of possible ad segments (Max_num) must be determined. To determine Max_num for a particular ad break duration, one must determine: 1) the set of possible ad sets for that ad break duration and 2) for each such possible ad set, the number of segments required by that ad set. Max_num is then defined as: Max_num = max(Si, S2, ..., SN), where N is the number of possible ad sets for the given ad break duration and Si for i = 1 to N is the number of segments required by the ith possible ad set for the given ad break duration.
[0030] As a specific example, given a 30 second ad break duration and given that ads come in only two flavors (15 second ad or 30 second ad), one can deduce the set of possible ad sets for the 30 second ad break. Specifically, for this example, there are two possible ad sets that can fit within the 30 second ad break (i.e., N=2): i) a 30 second ad and ii) a two consecutive 15 second ads.
[0031] As another specific example, given a 60 second ad break duration and given that ads come in only two flavors (15 second ad or 30 second ad), one can deduce the set of possible ad sets for the 60 second ad break. Specifically, for this example, there are six possible ad sets that can fit within the 60 second ad break (i.e., N=6): i) a 60 second ad, ii) two consecutive 30 second ads, iii) a 30 second ad followed by two 15 second ads, iv) two 15 seconds followed by a 30 second ad, and v) a 15 second ad followed by a 30 second ad followed by a 15 second ad, and vi) four consecutive 15 second ads.
[0032] The value Si is equal to sum (su, Si2, S;M), wherein M is the number of ads within the ith possible ad set and sy is number of segments required by the jth ad within the ith ad set. The value sy is dependent on two values: 1) the duration of the ad and 2) a segment duration. More specifically, sy = Ceiling ((Dur of ady) I (Seg_Dur)). In one embodiment, Seg_Dur is equal to 6 seconds. According, if an ad is 15 seconds, the number of segments required for that ad is: Ceiling (15/6) = Ceiling (2.5) = 3. Hence, given Seg_Dur = 6, an ad set that consists of two 15 second ads requires 3+3=6 segments; likewise, an ad set that consists of four 15 second ads requires 3 x 4 = 12 segments.
[0033] Determining the Locations of Potential Encoding Breaks (PEBs)
[0034] Every possible ad set associated with a given ad break is associated with a set of encoding breaks. Accordingly, to determine all of the potential encoding breaks (PEBs) for the given ad break, one forms the union of these sets. For example, two ad sets are associated with the 30 second ad break: a first ad set consisting of a 30 second ad and a second ad set consisting of two consecutive 15 second ads. Given Seg_Dur = 6, the first ad set requires only 5 segments, but Max_num for this ad break is 6 segments; hence, for the first ad set there is an encoding break located at segment 5 (or alternatively an encoding break located at segment 1). The second ad set requires 3 segments for the first 15 second ad and 3 segments for the second 15 second ad; hence for the second ad set there is an encoding break located at segment 3. Accordingly, the PEB locations for the 30 second ad break are: 3 and 5 (or 1 and 3).
[0035] As another example, given an ad break of 60 seconds and Seg_Dur = 6 seconds, then there is the potential to have 10-12 ad segments in that break. In the case of HLS, that means that discontinuity tags need to be placed just before the first ad segment, just after the last ad segment, and anywhere within the 10-12 ad segments that an ad switches to a different ad or to a black segment. For example, give two 30 second ads, in one embodiment, the segments are arranged as follows: (Aij = Ad segment i for Adj, P = Placeholder Segment):
A 11 -A 12- A 13- A 14-A 15 -B- A21 - A22- A23-A24- A25-B, so that there are encoding breaks at location 5, 6, and 1 1 .
[0036] As another example, given two 15 second ads and a 30 second ad, in one embodiment the segments are arranged as:
Al 1-A12-A13-A21-A22-A23-A31-A32-A33-A34-A35- P, so that there are encoding breaks at location 3, 6, and 11.
[0037] As another example, given four 15 second ads, in one embodiment the segments are arranged as:
A11-A12-A13-A21-A22-A23-A31-A32-A33-A41-A42-A43, so that there are encoding breaks at location 3, 6, and 9.
[0038] Thus, a final structure that would support all 3 of these segment breakouts would be (where S = generic segment placeholder, and PEB indicates an potential encoding break):
S-S-S-PEB-S-S-PEB-S-PEB-S-S-S-PEB-S-S-PEB-S.
[0039] Hence, for this example the PEB array corresponding to the 60 second ad break could be: PEB = (3, 5, 6, 9, 11). As is known in the art, there is an encoding break just prior to the beginning of the ad break and another encoding break at the end of the ad break.
[0040] In some embodiments, rather than determining all of the potential encoding breaks, helper 104 simply assumes there is an encoding break after each segment, leading to the following structure:
S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S-PEB-S.
[0041] Hence, for this example the PEB array corresponding to the 60 second ad break could be: PEB = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).
[0042] Inserting Ad Set Information into the Manifest
[0043] As noted above, in one embodiment helper 104 inserts into the manifest at the location of the ad break the determined ad set information (or, for example, segment locator information derived therefrom). Here will provide a specific example using an HLS playlist, but this disclosure also applies to other protocols, such as, for example, MPEG-DASH. For this example, the playlist shown in Table 1A is the playlist helper 104 received in response to its manifest request. For this example, we will also assume that the ad set information corresponding to the 30 second ad break identified in the playlist shown in Table 1A is the same ad set information corresponding to the 30 second ad break shown in Table 4. That is, in this
example, the ad set information has Max_num =6 and PEB locations = (3, 5). Given this ad set information, helper may produce a modified playlist as shown in Tabic 5.
TABLE 5
[0044] More specifically, because Max_num = 6, helper will insert at the ad break (i.e., between vid-scg2 and vid-scg3) six placeholder (or ‘dummy’) URLs into the playlist. Also, because this is an HLS example, for each dummy URL there must be a preceding #EXTINF tag. Additionally, because PED = (3, 5), in addition to inserting an #EXT-X-DISCONTINUITY tag between vid-seg2 and Dummy Ad-segl and inserting an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg5 and vid-seg3 (due to the known encoding breaks there), helper also inserts an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg3 and Dummy Ad-seg4 and insert an #EXT-X-DISCONTINUITY tag between Dummy Ad-seg5 and Dummy Ad-seg6 because these are locations of the potential encoding breaks. [0045] Additionally, as shown in the table above, in some embodiments, helper 104 may replace every string “cdn.com” with “helper.com” so that all of the content segment requests in addition to the ad segment requests will be sent by player 102 to helper 104. In other embodiments (see e.g., Table 7), helper selectively replaces the string “cdn.com” with “helper.com” so that not all occurrences are changed. More generically, helper may modify the manifest so that at least some (i.e., all or less than all) segment requests are sent to the helper.
[0046] Additionally, in some embodiments, helper 104 will also append the following text to the playlist:
[0047] That is, in one embodiment, helper appends to the manifest a number of additional dummy URLs equal in number to the number dummy URLs added to the manifest. Additionally, as shown in Table 6 above, helper 104 may specify that the duration of each additional dummy segment is 1 second. [0048] As noted above, in some embodiments helper 104 may send request m208 to stitcher 106 prior to performing the ad break placeholder insertion process. In this embodiment, helper 104 may be configured to modify the ad break placeholder insertion process so that instead of inserting all of the dummy URLs into the manifest it inserts less than all, depending on the response m210 from stitcher 106. For example, if the ad information included in response m210 indicates that a single 15 second ad was selected and contains 3 ad segment URLs for this
15 second ad (e.g., adserver.com/ad-seg l.ts, adserver.com/ad-seg2.ts, adserver.com/ad-seg3.ts), then the modified manifest produced by helper 104 may appear as shown in Table 7 below. Alternatively, all of the dummy URLs are inserted into the manifest as shown in Table 5 and helper maps the first three dummy URLs to the ad segment URLs received in response m210 (an example of such a mapping is shown in Tables 9 and 10, below).
[0049] As yet another example, if the ad information included in response m210 indicates that a single 30 second ad was selected and contains 5 ad segment URLs for this 30 second ad (e.g., adserver.com/ad-seg l.ts, adserver.com/ad-seg2.ts, adserver.com/ad-seg3.ts, adserver.com/ad-seg4.ts, adserver.com/ad-seg5.ts), then the modified manifest produced by helper 104 may appear as shown in Table 8 below. Alternatively, all of the dummy URLs are inserted into the manifest as shown in Table 5 and helper maps five consecutive dummy URLs to the ad segment URLs received in response m210 (an example of such a mapping is shown in Tables 11 and 12, below).
[0050] Referring back to FIG. 2, after player 102 receives the modified manifest (e.g., the playlist shown in Table 5, Table 7 or Table 8), player 102 begins sending segment requests according to the manifest (e.g., requests for segments of the presentation, which is a video in this example). For example, as shown in FIG. 2, player 102 sends to CSS 112 a request message m213 for vid-segl.ts and sends to helper 104 a request message m214 for vid-seg2.ts. CSS responds to request m213 in a conventional manner and helper 104 responds to request m214 by, at a minimum, providing to player 102 a response message m216, which either contains the requested segment (vid-seg2.ts) or a redirect message that causes player 102 to send a request message to a server (e.g. a server within CSS) for the segment. [0051] At some point before player 102 requests the segment Dummy Ad-segl.ts, or in response to receiving the request for segment Dummy Ad-segl.ts (e.g., an HTTP GET request that includes a request target containing or consisting of the string “/Dummy Ad-setl.ts”), helper 104 transmits to stitcher 106 a request message m218 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill a 30 second ad break.
[0052] For example, in one embodiment, in response to receiving request m214, the helper may: 1) send to the player response message m216 and 2) initiate the transmission of a request to the stitcher (e.g., determine whether a request to the stitcher is needed, and, if so, send to stitcher a request message m218 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill an ad break). For instance, in one embodiment, the helper determines whether a request to the stitcher is needed by checking whether a flag is set to TRUE (e.g., equal to 1) and if the flag is set to TRUE, then it is determined that a request to the stitcher is needed. In another embodiment, the helper determines whether a request to the stitcher is needed by checking both whether the flag is set to TRUE and whether the request includes a trigger string (e.g., “trigger=l”), and if the flag is set to TRUE and request includes the trigger string, then it is determined that a request to the stitcher is needed. After sending the request, the flag is set to FALSE. The flag may be set back to TRUE after the ad break has finished.
[0053] Stitcher 106 responds to the request message m218 by transmitting to helper 104 a response message m220 that contains either segment location information for use in retrieving X ad segments (e.g,. X ad segment URLs or template information specifying the X ad segment URLs) or X ad segments, where X is greater than or equal to zero. More specifically, assuming only two flavors of ads (15 second ads or 30 second ads) and a segment duration of 6 seconds, then X is one of: 0, 3, 5, or 6. If X is 3, this means stitcher has selected a single 15 second ad; if X is 5, this means stitcher has selected a single 30 second ad; if X is 6, this means stitcher selected two fifteen second ads.
[0054] If X is greater than zero, then helper 104 will perform a mapping process that results in mapping X of the dummy URLs to a corresponding one of the X ad segment URLs. For example, assume that the stitcher returned X=3 ad segment URLs as follows: adserver.com/ad 1-segl.ts; adserver.com/adl-seg2.ts; and adscrvcr.com/adl-scg3.ts. In this case, helper will map three consecutive dummy URLs to these ad segment URLs as shown in the table 9 or table 10 below as examples, whereas the other three dummy URLs that make up the ad break are either mapped to a short (e.g. 500 millisecond) placeholder segment (e.g., a segment that contains nothing but blank video frames or a segment that contains for example still video of a logo or a segment containing a house ad or branded slate any other video content to fill the time) or mapped to i) ad segment URLs received in response message m210 and/or ii) ad segment URLs corresponding to ad segments received in response message m210.
TABLE 9
[0055] As another example, assume that the stitcher returned X=5 ad segment URLs as follows: adserver.com/adl-segl. ts; adserver.com/adl-seg2.ts; adserver.com/adl-seg3.ts; adserver.com/adl-seg4.ts; and ; adserver.com/adl-seg5.ts. In this case, helper will map five consecutive dummy URLs to these ad segment URLs as shown in Table 11 or Table 12 below.
[0056] At some point after receiving the response from the stitcher and mapping dummy URLs to ad segment URLs, helper 104 will respond to request messages corresponding to the dummy URLs, and helper may respond according to the mappings. For example, assuming the mapping shown in Table 9, when helper 104 processes a request message m222 for Dummy Ad- segl.ts (e.g., an HTTP Get message wherein the request target of the GET message contains or consists of the string “Dummy Ad-segl.ts”), helper 104 responds to such request by providing to player 102 a response message m224 that contains adl-segl.ts or an HTTP redirect containing the corresponding ad segment URL. If response message m224 includes the redirect, this causes player 102 to transmit to media server 108 a request message m226 identifying the requested ad segment and then media server 108 responds by transmitting a response message m228 that contains the requested ad segment (or it could possibly contain another redirect).
[0057] Likewise, assuming the mapping shown in Table 9, when helper 104 receives request messages for Dummy Ad-seg2.ts and Dummy Ad-seg3.ts, helper will respond to each such request, respectively, by either providing to the player adl-seg2.ts and adl-seg3.ts, respectively, or providing to the player an HTTP redirect containing the corresponding ad segment URL. That is, when helper receives a request for Dummy Ad-segY.ts, helper either returns adl-segY.ts or an HTTP redirect message containing the ad segment URL for adl- segY.ts (i.e., adserver.com/adl-segY. ts), where Y = 1, 2, 3. In contrast, (still assuming the mapping shown in Table 9) when helper 104 receives a request for Dummy Ad-segX.ts (X=4, 5,
or 6), then helper 104 provides to the player a short placeholder segment (placeholder_seg.ts) (c.g., a 500 ms or 1 second segment) (this can happen even if Dummy Ad- scgX.ts is not mapped to a placeholder segment because, in such a case, helper may have logic that instructs it to respond to a request for a segment with a placeholder (or other selected segment) when the requested segment is not mapped to an ad segment or placeholder segment).
[0058] As noted above, in embodiments in which helper 104 receives from stitcher 106 ad segment URLs identifying ad segments selected by stitcher 106 (or the ad segments themselves) before helper 104 performs the ad break placeholder insertion process (see above description of message m210), helper 104 may insert into the manifest the ad segment URLs corresponding to the ad segments selected by stitcher 106. In such an embodiment, there is a possibility that, in performing the mapping process described above, helper 104 decides to cause the player to request ad segments identified in message m220 rather than the ad segments identified in message m210. For example, assume that message m210 identified the following three add segments (adl-segl.ts, adl-seg2.ts, and adl-seg3.ts) and assume that message m220 identified at the following five add segments (ad2-segl.ts, ad2-seg2.ts, ad2-seg3.ts, ad2-seg4.ts, ad2-seg5.ts) and that helper 104 has decided to replace adl with ad2 (e.g., ad2 may be more valuable than adl), then in this scenario the mapping process may produce the following mapping:
[0059] As noted above, there are embodiments in which helper 104 inserts additional dummy URLs to the manifest (see Table 6). In these embodiments, when a URL for a dummy ad
segment is not mapped to an ad segment URL or actual ad segment, but rather is mapped to the short placeholder segment (sec, c.g., Dummy Ad-scg6.ts in Table 9), then helper will map the corresponding additional dummy URL (e.g., the URL for AdditionalDummyAd-seg6.ts) to a long placeholder segment (e.g., a 3 second or 6 second placeholder segment) such that when helper receives a request for this corresponding additional dummy segment helper returns the long placeholder segment rather than the short placeholder segment it would have otherwise returned. For specific examples with reference to Table 9, when helper 104 receives a request for AdditionalDummyAd-segY.ts (Y=l, 2, 3), helper return the short (e.g., 500 ms) placeholder segment because Dummy Ad-segY.ts is mapped to adl-segY.ts, whereas when helper receives a request for AdditionalDummyAd-segX.ts (X=4,5), helper return a first long (e.g., a 6 second) placeholder segment because Dummy Ad-segX.ts is mapped to a placeholder segment and the #EXTINF value for these dummy segments is set to 6 seconds, and when helper receives a request for AdditionalDummyAd-seg6.ts, helper return a second long (e.g., a 3 second) placeholder segment because Dummy Ad-seg6.ts is mapped to a placeholder segment and the #EXTINF value for this dummy segments is set to 3 seconds. In this manner, the total duration of the media, as defined in the manifest to the player, is maintained.
[0060] In other words, when player 102 requests, for example, Dummy Ad-seg4.ts, which we will assume is mapped to a short placeholder segment, instead of returning a 6 second segment as specified in the playlist by the #EXTINF tag for that segment, the helper instead returns a short (e.g. 500 ms) placeholder segment. Accordingly, when player requests AdditionalDummyAd-seg4.ts, which corresponds to Dummy Ad-seg4.ts, instead of returning a 1 second segment as specified by the #EXTINF tag for that segment, helper 104 returns a 6 second black segment. In this manner, the duration of the media remains constant and helper 104 is simply rearranging (conceptually) where the “black video” is being played within the timeline. In an extreme example, helper 104 could do this for the entire ad break, reducing what would be a 60 second break to 6 seconds of black (or a chosen placeholder video).
[0061] In another embodiment, rather than mapping dummy URLs that were inserted into the manifest to a placeholder segment when there is no available ad segment, the dummy URLs are mapped to information (e.g., a pre-defined “not available” status code, such as an HTTP 404 status code or other status code, or other information) that indicates to the player that the requested segment is being skipped. That is, in this embodiment, when helper receives a request
for, for example, Dummy Ad-segl .ts and this dummy URL has not been mapped to any ad segment, helper responds to the request by sending to the player a response message with information (e.g., a pre-defined status code, such as an HTTP 404 or other information) that indicates to the player that the requested segment is being skipped. Such a response message may contain a status code with no response body where the status code indicates that no segment is being returned in response to the request (i.e., the segment is being skipped). As another example, the response message includes a status code (e.g., 200 OK) and a content-length parameter set to 0 to indicate that no segment is being returned in response to the request. As yet another example, the response message comprises a header and the information that indicates to the player that the requested segment is being skipped is contained in the header. As yet another example, the response message comprises a non-zero length body and the information that indicates to the player that the requested segment is being skipped is contained in the body of the message.
[0062] Additional Ad Break Use Case
[0063] FIG. 4 is a message flow diagram illustrating a process according to another use case. The process may begin with player 102 sending a request message m402 (e.g. HTTP GET message) identifying a manifest (e.g., manifest.mpd). Request message m402 is received at helper 104.
[0064] In response to receiving request message m402, helper 104 sends to CSS 112 a request message m404 identifying the manifest. In response to receiving message m404, CSS 112 sends to helper 104 a response message m406 comprising the requested manifest. Helper 104 may obtain information about ad breaks to be inserted into the manifest. For instance, the information about the ad breaks may come from an EventStream element included in the received manifest or helper 104 may make a Video Multiple Ad Playlist (VMAP) request to get the information as is known in the art (this is also true for the HLS).
[0065] For each ad break to be inserted into the manifest, helper 104 performs an ad break placeholder insertion process that, in at least one embodiment, as explained above, comprises: i) determining the duration of the ad break; ii) determining ad set information based on (e.g., based solely on) the duration of the ad break; and iii) inserting into the manifest at the “location” of the ad break the determined ad set information (or information derived therefrom),
which information includes segment locator information (e.g.. a set of URLs or a template for generating URLs). After inserting the information including the segment locator information into the manifest, thereby producing a modified manifest, helper 104 provides to player 102 a response message m412, which contains the modified manifest (e.g., Mod-manifest. mpd). [0066] Inserting Ad Set Information into the Manifest
[0067] As noted above, in one embodiment helper 104 inserts into the manifest at the location of the ad break the determined ad set information (or, for example, segment locator information derived therefrom). A specific example using an MPEG-DASH manifest is illustrated below in Table 14. For this example, the manifest shown in Table 2A is the manifest helper 104 received in response to its manifest request m404. For this example, we will also assume that the ad set information is the same ad set information corresponding to the 30 second ad break shown in Table 4. Given this ad set information, helper may produce a modified manifest as shown in Table 14.
[0068] In the example shown, the dummy URLs are of the form: http://FQDN/stringN, where “FQDN” is the helper’s fully qualified domain name (e.g., helper.com), “string” is a constant (e.g., “Dummy Ad-repl-seg”) and “N” is a variable where N=l, 2 , or 6, so that each dummy URL is unique. However, in another embodiment, each dummy URL may be of the form: http://FQDN/string so that each dummy URL is the same as each other dummy URL.
[0069] Additionally, as shown in the table above, in some embodiments, helper 104 may modify one or more of the segment URLs included in the original manifest to cause the player to transmit to the helper one or more of the presentation segments requests (i.e., requests of obtaining segments of the presentation). For instance, in the example shown, the helper replaced the 5th, 6th, and 7th segment URL in the first period element with the following replacement URLs “http : / /helper . com/ abcdl , " "http : / /helper . com/ abcd2 , " and “http : / /helper . com/ bcd3 , ” respectively. As should be noted, each replacement URL within the same segment list element includes a unique string (e.g., “abcdl”) within the segment list and each points to helper 104 (e.g., each replacement URL includes the helper’s fully qualified domain name (FQDN)). In this way, the Sth, 6th, and 7th presentation segment requests in addition to the ad segment requests will be sent by player 102 to helper 104. More generically, helper may modify the manifest so that at least some (i.e., all or less than all) presentation segments requests are sent to the helper.
[0070] If any presentation segment requests are sent to the helper, some of the replacement URLs may include a “trigger” indicator. For instance (using an MPD as an example), the helper may replace the following URLs in the original manifest:
<SegmentURL media="http : / / cdn . com/vid-repl-segl , mp4" /> < Segment URL media= "http : / / cdn . com/vid-repl-seg2 . mp4 " /> <SegmentURL media="http : / / cdn . com/vid-repl-seg3 . mp4 " /> <SegmentURL media="http : / / cdn . com/vid-repl-seg4 . mp4 " /> <SegmentURL media="http : / / cdn . com/vid-repl-seg5 . mp4 " /> < Segment URL media= "http : / / cdn . com/ vid- repl- seg 6 . mp4 " /> < Segment URL medi = "http : / / cdn . com/vid-repl-seg7 . mp4 " /> with the following replacement URLs:
< Segment URL medi = "http : / /helper . com/abcdl " /> <SegmentURL media="http : / /helper . com/abcd2 " /> <SegmentURL media="http : / /helper . com/abcd3 " /> < Segment URL media= "http : / /helper . com/abcd4 " /> < Segment URL medi = "http : / /helper . com/abcd5 ?trigger=l " / > < Segment URL media= "http : / /helper . com/abcd6 ?trigger=l " / > <SegmentURL media="http : / /helper . com/abcd7 ?trigger=l" / >
[00711 If the helper replaces a URL (http://cdn.com/vid-repl-seg4.mp4) in the original manifest with a replacement URL that points to the helper (e.g., http://helper.com/abcdl), then the helper will associate the replacement URL with the segment identified by the replaced segment URL. For example, the helper may create a data structure to map each replacement URL with the URL that the replacement URL replaced (or other information that identifies the segment that was identified by the URL that was replaced by the replacement URL). Accordingly, the information to which the replacement URL is mapped may comprise all or a portion of the replaced URL.
[0072] Another example of a manifest that may be received in message m406 is illustrated below in Table 15.
TABLE 15
[0073] The manifest shown in Table 15 is a single period manifest for a presentation that has a presentation time of 3740.08 seconds. The manifest includes information that indicates that an ad break should be inserted after 400 seconds of presentation time (in this example, the information is in the form of an Event element within an EventStream element. The manifest also includes a SegmentTemplate element for generating a list of segmenet URLs, as opposed to including the segment URLs in the manifest itself as illustrated in Table 14 (this feature can be advantageous because it makes the manifest smaller).
[0074] Given the manifest shown in Table 15, helper may produce a modified manifest as shown in Table 16.
[0075] As shown in Table 16, helper converted the single-period manifest into a multiperiod manifest. More specifically, the helper “split” the single Period of the original manifest into two periods and inserted a period between the two. That is, the modified manifest includes a first Period element for the first 400 seconds of the presentation, a second Period immediately following the first period for the ad break (in this example, a 30 second ad break was chosen), and a third period immediately following the second period for the remaining 3340.08 seconds of the presentation. Because a 30 second ad break was inserted the mediaPresentationDuration increased from 3740.08 to 3770.08 seconds as illustrated in the table above. As noted in Table
16, the third Period element includes presentationTimeOffset attribute set to a value of 400 seconds to indicate to the player the timecodes in the returned segments need to be shifted back by 400 seconds to match the period’s zero presentation timestamp. More generically, for example, if the original manifest indicated that N ad breaks should be inserted, then the helper may split the single period into N+l periods and insert an ad break period between each period. As another example, helper may split the single period into N periods and insert an ad break period either after or before each one of the N periods.
[0076] As another example, given the manifest shown in Table 15, helper may produce a modified manifest as shown in Table 17. TABLE 17
[0077] The modified manifest shown in Table 17 is nearly identical to the one shown in Table 16 with the most significant difference being that the manifest shown in Table 17 is configured to cause the player transmit to the helper eight (8) requests for presentation segments prior to transmitting a request for an inserted segment (i.e., an ad segment in this example). More specifically, the first Period element shown in Table 16, which has a duration of 400 seconds, is split into two Period elements; a first Period element with a duration 368 seconds and a second Period element with a duration of 32 seconds. The 92 URLs that are generated based on the segment template included in the first period shown in Table 17 are identical to the first 92 URLs that are generated based on the segment template included in the first period shown in Table 16. But the 8 URLs that are generated based on the segment template included in the second period shown in Table 17 are different than the remaining 8 URLs that are generated based on the segment template included in the first period shown in Table 16. More specifically, each these 8 URLs generated based on the segment template included in the second period shown in Table 17 cause the player to transmit to the helper a request (e.g., an HTTP Get message wherein the request target of the GET message contains or consists of the string “abcdN”, where N=l, 2, ..., or 8)
[0078] Referring back to FIG. 4, after player 102 receives the modified manifest (e.g., the manifest shown in Tabic 14), player 102 begins sending segment requests according to the manifest (e.g., requests for segments of the presentation, which is a video in this example). For example, as shown in FIG. 4, player 102 may initially send to CSS 112 one or more segment requests m414 (and CSS 112 responds by sending the requested segments to player 102) followed by player 102 sending to helper 104 one or more segment requests (e.g., request m416). For instance, using the manifest shown in Table 14 as an example, player 102 will i) send to CSS 112 (i.e., “cnd.com” in this example) four segment requests (i.e., a request for vid-repl- segl.mp4, a request for vid-repl-seg2.mp4, a request for vid-rep l-seg3. mp4, and a request for vid-rep l-seg4.mp4) and ii) after sending the segment requests to CSS 112, send a request m416 to helper 104 (i.e., a request containing the string “abcdl”). Likewise, using the manifest shown in Table 17 as an example, player 102 will send multiple segment requests to CSS 112 before sending to helper request m416.
[0079] In one embodiment, in response to request m416, the helper will: 1) send to the player a response responsive to the request and 2) initiate the transmission of a request to the stitcher (e.g., determine whether a request to the stitcher is needed, and, if so, send to stitcher a request message m418 indicating that helper is requesting one or more ads (i.e. a set of ads) to fill an ad break). For instance, in one embodiment, the helper determines whether a request to the stitcher is needed by checking whether a flag is set to TRUE (e.g., equal to 1) and if the flag is set to TRUE, then it is determined that a request to the stitcher is needed. In another embodiment, the helper determines whether a request to the stitcher is needed by checking both whether the flag is set to TRUE and whether the request includes a trigger string (e.g., “trigger=l”), and if the flag is set to TRUE and request includes the trigger string, then it is determined that a request to the stitcher is needed. After sending the request, the flag is set to FALSE. The flag may be set back to TRUE after the ad break has finished.
[0080] In this example, stitcher 106 responds to request m418 by selecting one or more ads (or other pieces of media content) and transmitting to helper 104 a response message m420 that contains a manifest containing segment locator information (e.g., segment URLs and/or template information enabling helper to produce segment URLs) for retrieving the segments of the one or more ads selected by stitcher 106. For instance, the manifest returned by stitcher 106 may include a first period element containing segment URLs (or corresponding template
information) for the first ad and a second period element containing segment URLs (or corresponding template information) for the second ad.
[0081] After receiving response message m420, helper 104 uses the segment locator information in the response message to retrieve all of the identified segments (e.g., by sending segment requests m421). Next, the helper creates an output file (step s490) comprising encoded media data from the retrieved segments. Next, the helper segments the output file to produce a set of media content segments (step s491 ), wherein each media content segment contains a portion of the encoded media data contained in the output file (an initialization segment may also be produced in addition to the media content segments).
[0082] In one embodiment, step s490 (creating the output file) comprises the helper: i) creating a first temporary file containing a first set of segments (e.g., all of the segments of adl), ii) creating a second temporary file containing a second set of segments (e.g., all of the segments for ad2), and iii) concatenating the first and second temporary files, thereby producing the output file. In one embodiment, each media content segment in the second temporary file contains one or more timestamps, and the step of concatenating the first and second temporary files comprises modifying the timestamp(s).
[0083] Assuming the segments for the first ad consist of the following segments: si 1, sl2, ..., slN and the segments for the second ad consist of the following segments: s21, s22, ..., s2M (sl l and s21 may be initialization segments), then, in one embodiment, the first temporary file is created running the cat commands shown in Table 18 and the second temporary file is created by running the cat commands shown in Table 19.
[0084] In one embodiment, helper 104 uses the FFmpeg tool to create the output file using the temporary files as input. For example, to concatenate tempFilel.mp4 with tempFile2.mp4 to produce the output file (e.g., out.mp4), helper may run the following command: ffmpeg -f concat -safe 0 -i list.txt -c copy out.mp4, where list.txt is a two line text file wherein the first line is “tempFilel.mp4” and the second line is “tempFile2.mp4.” Executing this ffmpeg command demuxes the files identified in list.txt one after the other, as if all their packets had been muxed together. The timestamps in the files are adjusted so that the first file starts at 0 and each next file starts where the previous one finishes. The duration of each file is used to adjust the timestamps of the next file (i.e., the duration of tempFilel is used to adjust the timestamps of tempFile2).
[0085] After creating the output file, the helper may run the following ffmpeg command to create the segments (i.e., step s491): ffmpeg -i out.mp4 -codec copy -usc_timclinc 0 -usc_tcmplatc 0 -scg_duration 6 -f dash out.mpd
[0086] This command generates a single-period MPD that contains a period element matching the period element corresponding to the ad break (see e.g., the period element with id-”ad_brcal<_ I ” in Table 14) as well as the individual segments to be returned for the ads.
[0087] Each one of the media content segments generated by helper 104 in step s491 is mapped to one of the dummy URLs (step s492). Tables 20 and 21 illustrate possible mappings of dummy URLs to the media content segments (e.g., Table 20 illustrate possible mappings when the number of media content segments is three and Table 21 illustrate possible mappings when the number of media content segments is five).
[0088] At some point after receiving the response from the stitcher and the media contents segments to dummy URLs, helper 104 will respond to request messages corresponding to the dummy URLs, and helper may respond according to the mappings. [0089] For example, assuming the mapping shown in Table 20, when helper 104 processes a request message m422 for Dummy Ad- segl. mp4 (e.g., an HTTP Get message wherein the request target of the GET message contains or consists of the string “Dummy Ad- segl.mp4”), helper 104 responds to such request by providing to player 102 a response message m424 that contains segl.mp4 or an HTTP redirect containing a URL pointing to segl.mp4. [0090] Likewise, assuming the mapping shown in Table 20, when helper 104 receives request messages for Dummy Ad-seg2.mp4 and Dummy Ad-seg3. mp4, helper will respond to each such request, respectively, by either providing to the player seg2.mp4 and seg3.mp4, respectively, or providing to the player an HTTP redirect containing the corresponding URL.
That is, when helper receives a request for Dummy Ad-segY. mp4, helper either returns segY.mp4 (or an HTTP redirect), where Y = 1, 2, 3. In contrast, (still assuming the mapping shown in Table 20) when helper 104 receives a request for Dummy Ad- segX. mp4 (X=4, 5, or 6), then helper 104 provides to the player a short placeholder segment (e.g., a 500 ms or 1 second segment) or a “not available” (e.g., a “Not Found”) response status code or some other default response.
[0091] While the embodiments have been explained for media segments, the embodiments apply equally to audio segments. As is known in the art, each period element of an MPD may include a video adaptation set (e.g., adaptation set with mimeType="video/mp4") and an audio adaptation set (e.g., adaptation set with mimeType="audio/mp4"). Hence, the embodiments may function with content that includes only video, only audio, or both audio and video.
[0092] In an embodiment, the manifest for the ad break may include: i) a first period element comprising first media segment locator information for retrieving media content segments for the period and first audio segment locator information for retrieving corresponding audio content segments for the period and ii) a second period element comprising second media segment locator information for retrieving media content segments for the period and second audio segment locator information for retrieving corresponding audio content segments for the period.
[0093] Accordingly, in such an embodiment, the helper performs a process that includes: 1) using the received first and second audio segment locator information to retrieve a first set of audio content segments and a second set of audio content segments, respectively; 2) creating an audio output file containing encoded audio data from the first set of audio content segments and encoded audio data from the second set of audio content segments; 3) segmenting the audio output file to produce a third set of audio content segments, wherein each audio content segment in the third set of segments contains a portion of the encoded audio data contained in the output file; and 4) for each audio content segment included in the third set of audio content segments, associating one of the dummy URLs in the audio adaptation set element with the audio content segment. Thus, when the helper receives a request corresponding to one of the dummy URLs in
the audio adaptation set element, the helper may respond by transmitting to the player the audio content segment associated with the dummy URL.
[0094] FIG. 7 is a block diagram of apparatus 700, according to some embodiments, that may implement helper 104. In some embodiments, apparatus 700 (or a component thereof) may be a component of device 120. As shown in FIG. 7, apparatus 700 may comprise: processing circuitry (PC) 702, which may include one or more processors (P) 755 (e.g., one or more general purpose microprocessors and/or one or more other processors, such as an application specific integrated circuit (ASIC), field-programmable gate arrays (FPGAs), and the like), which processors may be co-located in a single housing or in a single data center or may be geographically distributed (e.g., apparatus 700 may be a distributed computing apparatus comprising two or more computers or a single computer); at least one network interface 748 (e.g., a physical interface or air interface) comprising a transmitter (Tx) 745 and a receiver (Rx)
747 for enabling apparatus 700 to transmit data to and receive data from other network nodes connected to network 110 (e.g., an Internet Protocol (IP) network) to which network interface
748 is connected (physically or wirelessly) (e.g., network interface 748 may be coupled to an antenna arrangement comprising one or more antennas for enabling apparatus 700 to wirelessly transmit/receive data); and a storage unit (a.k.a., “data storage system”) 708, which may include one or more non-volatile storage devices and/or one or more volatile storage devices. In embodiments where PC 702 includes a programmable processor, a computer readable storage medium (CRSM) 742 may be provided. CRSM 742 may store a computer program (CP) 743 comprising computer readable instructions (CRI) 744. CRSM 742 may be a non-transitory computer readable medium, such as, magnetic media (e.g., a hard disk), optical media, memory devices (e.g., random access memory, flash memory), and the like. In some embodiments, the CRI 744 of computer program 743 is configured such that when executed by PC 702, the CRI causes apparatus 700 to perform steps described herein (e.g., steps described herein with reference to the flow charts). In other embodiments, apparatus 700 may be configured to perform steps described herein without the need for code. That is, for example, PC 702 may consist merely of one or more ASICs. Hence, the features of the embodiments described herein may be implemented in hardware and/or software.
[0095] Summary of Various Embodiments:
[0096] A 1 . A method 500 (see the flow chart shown in FIG. 5), comprising: transmitting a modified manifest to a player (step s502), the modified manifest containing a period element corresponding to a content break (e.g., an ad break); after transmitting the modified manifest, transmitting a request for a manifest for the content break (step s504); receiving the manifest for the content break (step s506), wherein the manifest for the content break comprises i) a first period element containing first segment locator information for use in retrieving a first set of media content segments and ii) a second period element containing second segment locator information for use in retrieving a second set of media content segments; using the received first and second segment locator information to retrieve the first set of media content segments and the second set of media content segments, respectively (step s5O8); creating an output file containing encoded media data from the first set of media content segments and encoded media data from the second set of media content segments (step s510); segmenting the output file to produce a third set of media content segments (step s512), wherein each media content segment in the third set of segments contains a portion of the encoded media data contained in the output file; receiving a segment request transmitted by a player (step s514); and after receiving the segment request, transmitting to the player a media content segment from the third set of media content segments (step s516).
[0097] A2. The method of embodiment Al, wherein creating the output file comprises: creating a first temporary file containing the first set of segments; creating a second temporary file containing the second set of segments; and concatenating the first and second temporary files, thereby producing the output file.
[0098] A3. The method of embodiment A2, wherein each segment in the second temporary file contains one or more timestamps, and concatenating the first and second temporary files comprises modifying the timestamp(s) of each segment in the second temporary file.
[0099] A4. The method of embodiment Al, further comprising: receiving, from the player, a first request for a manifest (e.g., Dash MPD, HLS playlist) for retrieving first media content (e.g., segments of a movie, an episode, etc.); after receiving the first request for the manifest, transmitting a second request for the manifest; after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a
first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier that identifies a first server; generating the modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first server identifier, where M > 1 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that identifies a second server different than the first server and ii) a unique string.
[00100] A5. The method of embodiment A4, further comprising: receiving, from the player, a request comprising one of the unique strings; and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request comprising one of the unique strings and ii) transmitting a request for second media content to be served to the player during a break in the first media content (e.g., an ad break or some other break).
[00101] A6. The method of embodiment A5, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
[00102] A7. The method of claim A5, wherein initiating the transmission of the request for the second media content comprises determining whether a request for the second media content is needed.
[00103] A8. The method of embodiment Al, wherein the first set of media content segments consists of a first set of video content segments, wherein each video content segment in the first set of video content segments does not contain any encoded audio data, and the second set of media content segments consists of a second set of video content segments, wherein each video content segment in the second set of video content segments does not contain any encoded audio data.
[00104] A9. The method of embodiment A8, wherein the first period element further contains first audio segment locator information for use in retrieving a first set of audio content segments, the second period element further contains second audio segment locator information for use in retrieving a second set of audio content segments, and the method further comprises:
using the first and second audio segment locator information to retrieve the first set of audio content segments and the second set of audio content segments, respectively; creating an audio output file containing encoded audio data from the first set of audio content segments and encoded audio data from the second set of audio content segments; segmenting the audio output file to produce a third set of audio content segments, wherein each audio content segment in the third set of audio content segments contains a portion of the encoded audio data contained in the audio output file; receiving an audio segment request transmitted by the player; and after receiving the audio segment request, transmitting to the player an audio content segment from the third set of audio content segments.
[00105] A 10. The method of embodiment Al , wherein the first set of media content segments consists of a first set of audio content segments, wherein each audio content segment in the first set of audio content segments does not contain any encoded video data, and the second set of media content segments consists of a second set of audio content segments, wherein each audio content segment in the second set of audio content segments does not contain any encoded video data.
[00106] Bl. A method 600 (see the flow chart shown in FIG. 6), comprising: receiving, from a player, a first request for a manifest (e.g., Dash MPD, HLS playlist) for retrieving first media content (e.g., a movie, an episode, etc.) (step s602); after receiving the first request for the manifest, transmitting a second request for the manifest (step s604); after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier that identifies a first server (step s606); generating a modified manifest based on the received manifest (step s608), wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that identifies a second server different than the first server and ii) a unique string; transmitting the modified manifest to the player (step s610); receiving, from the player, a request comprising one of the unique strings (step s612); and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii)
initiating the transmission of a request for second media content to be served to the player during a break in the first media content (step s614).
[00107] B2. The method of embodiment Bl, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
[00108] B3. The method of embodiment Bl, wherein initiating the transmission of the request for the second media content comprises determining whether a request for the second media content is needed.
[00109] Cl . A method 300 (see flowchart shown in FIG. 3), comprising: receiving (step s302), from a media player, a first request for a manifest for playing a media; transmitting (step s304) to a manifest server a second request for the manifest; receiving (step s306) the manifest from the manifest server, wherein the manifest indicates an insertion point for a first ad break and the manifest comprises first ad break duration information indicating a duration of the first ad break; generating (step s308) a modified manifest, wherein generating the modified manifest comprises inserting into the manifest at the insertion point first segment locator information for causing the player to request a number of segments, wherein the first segment locator information comprises a first uniform resource locator (URL) (absolute or relative) or URL template information for generating the first URL, and wherein the first URL includes a segment identifier (e.g., the first URL may consist of or comprise the segment identifier), and further wherein the modified manifest comprises segment duration information specifying a segment duration associated with the segment identifier; providing (step s310) the modified manifest to the player; receiving (step s312) from the player a segment request comprising the segment identifier; and in response to receiving the segment request comprising the segment identifier, providing (step s314) to the player a segment or a redirect message for causing the player to request the segment, wherein the segment is either a segment identified by the segment identifier or another segment (e.g., a segment to which the segment identifier is mapped), and the duration of the segment is less than the segment duration associated with the segment identifier.
[00110] C2. The method of embodiment Cl, wherein the first segment locator information comprises a list of N1 URLs comprising the first URL (but there is no requirement that the first URL be positioned first in the list; the first URL may be positioned anywhere in the list), where
N1 > 1 , or the first segment locator information comprises URL template information that can he used by the player to generate the list of N1 URLs.
[00111] C3. The method of embodiment C2, wherein the duration of the first ad break is associated with a set of two or more potential ad sets, wherein each potential ad set requires a specific number of segments, and N1 = max (si, s2, ..., sM), where si for i=l to M is the specific number of segments required by the ith potential ad set.
[00112] C4. The method of embodiment C2 or C3, wherein the first segment locator information futher comprises, for each URL in the list of N1 URLs, metadata for the URL (e.g., #EXT-X-INF tag, byte range information).
[00113] C5. The method of embodiment C2, 3, or C4, wherein generating the modified manifest comprises inserting into the manifest first segment grouping information for forming two or more groups of the N1 number of URLs.
[00114] C6. The method of embodiment C5, wherein the N1 URLs further comprises a second URL, and inserting into the manifest the first segment grouping information comprises inserting into the manifest a discontinuity tag (e.g., an HLS EXT-X-D1SCONT1NU1TY tag) such that in the modified manifest the discontinuity tag comes after the first URL but comes before the second URL.
[00115] C7. The method of embodiment C5, wherein the first segment grouping information comprises: a first period element comprising: i) a first subset of the N1 URLs or ii) URL template information for use in generating the first subset of URLs; and a second period element comprising: i) a second subset of the N1 URLs or ii) URL template information for use in generating the second subset of URLs.
[00116] C8. The method of any one of embodiments C1-C7, further comprising: after providing the modified manifest to the player, submitting to an stitcher an ad request for triggering the stitcher to select a set of ads to fill the first ad break; receiving from the stitcher a response responsive to the ad request the response comprising a set of M segment URLs or a set of M ad segments, where M < Nl, wherein the set of M segment URLs comprises a first ad segment URL or the set of M ad segments comprises a first ad segment; and mapping the first URL included in the list of Nl URLs with the first ad segment URL or the first ad segment.
[00117] C9. The method of any one of embodiments C1-C8, wherein at the time the first segment locator information is inserted into the manifest, the first URL is a dummy URL (c.g. Dummy Ad-segl.ts) that is associated with no segment or a placeholder segment (e.g., a segment which consists essentially of black frames).
[00118] CIO. The method of any one of embodiments C1-C9, further comprising; prior to generating the modified manifest, using information indicating the duration of the first ad break to obtain first ad set information, wherein the first ad set information comprises the first segment locator information or the first segment locator information is derived using the first ad set information.
[00119] Cll. The method of any one of embodiments Cl -CIO, wherein the duration of the segment is less than D - 1, wherein D is the specified segment duration in units of seconds.
[00120] C12. The method of any one of embodiments Cl -CIO, wherein the duration of the segment is less than 1 second.
[00121] Cl 3. The method of embodiment Cl l or Cl 2, wherein the segment is a placeholder segment.
[00122] C14. The method of any one of embodiments C1-C13, wherein the manifest indicates an insertion point for a second ad break and the manifest comprises second ad break duration information indicating a duration of the second ad break, and generating the modified manifest further comprises inserting into the manifest at the insertion point for the second ad break second segment locator information for causing the player to request a number of segments, wherein the second segment locator information comprises a list of N2 URLs, where N2 > 1 , or the second segment locator information comprises second URL template information that can be used by the player to generate the list of N2 URLs.
[00123] C15. A method 300 (see flowchart shown in FIG. 3), comprising: receiving (step s302), from a media player, a first request for a manifest for playing a media; transmitting (step s304) to a manifest server a second request for the manifest; receiving (step s306) the manifest from the manifest server, wherein the manifest indicates an insertion point for a first ad break and the manifest comprises first ad break duration information indicating a duration of the first ad break; generating (step s308) a modified manifest, wherein generating the modified manifest
comprises inserting into the manifest at the insertion point first segment locator information for causing the player to request a number of segments, wherein the first segment locator information comprises a first uniform resource locator (URL) (absolute or relative) or URL template information for generating the first URL, and wherein the first URL includes a segment identifier (e.g., the first URL may consist of or comprise the segment identifier), and further wherein the modified manifest comprises segment duration information specifying a segment duration associated with the segment identifier; providing (step s310) the modified manifest to the player; receiving (step s312) from the player a segment request comprising the segment identifier; and in response to receiving the segment request comprising the segment identifier, providing (step s316) to the player a response message comprising information indicating that no segment is being returned.
[00124] DL A method that includes receiving, from a player, a first request for a manifest for retrieving first media content. The method also includes, after receiving the first request for the manifest, transmitting a second request for the manifest (steps s804). The method also includes, after transmitting the second request for the manifest, receiving the requested manifest. The requested manifest comprises a period element comprising first template information for use in generating a first set of segment locators, and each one of the segment locators included in the first set of segment locators comprises a first server identifier and a unique segment identifier such that i) a first segment locator included in the first set of segment locators comprises the first server identifier and a first unique segment identifier and ii) a second segment locator included in the first set of segment locators comprises the first server identifier and a second unique segment identifier. The method also includes generating a modified manifest based on the received manifest (steps s808). The modified manifest comprises a first period element comprising second template information for use in generating a second set of segment locators, wherein the second set of segment locators is a subset of the first set of segment locators such that i) a first segment locator included in the second set of segment locators comprises the first server identifier and the first unique segment identifier and ii) a second segment locator included in the second set of segment locators comprises the first server identifier and the second unique segment identifier. The modified manifest further comprises a second period element comprising third template information for use in generating a third set of segment locators, wherein each segment locator included in the third set of segment locators comprises a unique string that is mapped to a
segment locator included in a second subset of the first set of segment locators and further comprises a second server identifier that is different than the first server identifier, wherein the first subset and second subset are disjoint. The method also includes transmitting the modified manifest to the player. The method further includes receiving, from the player, a request comprising one of the unique strings. The method also includes, in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
[00125] While various embodiments are described herein, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of this disclosure should not be limited by any of the above-described exemplary embodiments. Moreover, any combination of the above-described elements in all possible variations thereof is encompassed by the disclosure unless otherwise indicated herein or otherwise clearly contradicted by context.
[00126] As used herein transmitting a message “to” or “toward” an intended recipient encompasses transmitting the message directly to the intended recipient or transmitting the message indirectly to the intended recipient (i.e., one or more other nodes are used to relay the message from the source node to the intended recipient). Likewise, as used herein receiving a message “from” a sender encompasses receiving the message directly from the sender or indirectly from the sender (i.e., one or more nodes are used to relay the message from the sender to the receiving node). Further, as used herein “a” means “at least one” or “one or more.”
[00127] Additionally, while the processes described above and illustrated in the drawings are shown as a sequence of steps, this was done solely for the sake of illustration. Accordingly, it is contemplated that some steps may be added, some steps may be omitted, the order of the steps may be re-arranged, and some steps may be performed in parallel.
[00128] Further, while all of the examples used herein show each segment being contained in its own file, this was done solely for the sake of illustration. For example, it is known in the art that each segment for a given representation can be stored in the same file and the player requests a particular segment by transmitting to the server not only the identifier for the file but also the identifier (e.g., byte offset) for the segment within the file.
Claims
1. A method comprising: providing a manifest to a player, wherein the manifest comprises a presentation segment identifier for identifying a segment of first media content or template information for generating the presentation segment identifier; receiving, from the player, a presentation segment request comprising the presentation segment identifier; and in response to receiving the presentation segment request, i) providing to the player a response message responsive to the presentation segment request and ii) performing a process for enabling the player to obtain second media content to be played by the player during a break in the first media content.
2. The method of claim 1, wherein the process for enabling the player to obtain the second media content comprises sending a request for metadata for the second media content.
3. The method of claim 2, wherein the metadata for the second media content comprises segment locator information for retrieving segments of the second media content.
4. The method of claim 3, wherein the segment locator information for retrieving segments of the second media content comprises a segment identifier identifying a segment of the second media content, and the method further comprises: after providing to the player the response message responsive to the presentation segment request, receiving from the player a second presentation segment request; and in response to receiving the second presentation segment request, providing to the player i) the segment identifier identifying the segment of the second media content or ii) the segment of the second media content.
5. A method, comprising:
transmitting a modified manifest to a player, the modified manifest containing a period element corresponding to a content break; after transmitting the modified manifest, transmitting a request for a manifest for the content break; receiving the manifest for the content break, wherein the manifest for the content break comprises i) a first period element containing first segment locator information for use in retrieving a first set of media content segments and ii) a second period element containing second segment locator information for use in retrieving a second set of media content segments; using the received first and second segment locator information to retrieve the first set of media content segments and the second set of media content segments, respectively; creating an output file containing encoded media data from the first set of media content segments and encoded media data from the second set of media content segments; segmenting the output file to produce a third set of media content segments, wherein each media content segment in the third set of segments contains a portion of the encoded media data contained in the output file; receiving a segment request transmitted by a player; and after receiving the segment request, transmitting to the player a media content segment from the third set of media content segments.
6. The method of claim 5, wherein creating the output file comprises: creating a first temporary file containing the first set of segments; creating a second temporary file containing the second set of segments; and concatenating the first and second temporary files, thereby producing the output file.
7. The method of claim 6, wherein each segment in the second temporary file contains one or more timestamps, and concatenating the first and second temporary files comprises modifying the timestamp(s) of each segment in the second temporary file.
8. The method of claim 5, further comprising: receiving, from the player, a first request for a manifest for retrieving first media content;
after receiving the first request for the manifest, transmitting a second request for the manifest; after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier; and generating the modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first server identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier and ii) a unique string.
9. The method of claim 8, further comprising: receiving, from the player, a request comprising one of the unique strings; and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request comprising one of the unique strings and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
10. The method of claim 9, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
11. The method of claim 9, wherein initiating the transmission of the request for the second media content comprises determining whether a request for the second media content is needed.
12. The method of claim 5, wherein
the first set of media content segments consists of a first set of video content segments, wherein each video content segment in the first set of video content segments docs not contain any encoded audio data, and the second set of media content segments consists of a second set of video content segments, wherein each video content segment in the second set of video content segments does not contain any encoded audio data.
13. The method of claim 12, wherein the first period element further contains first audio segment locator information for use in retrieving a first set of audio content segments, the second period element further contains second audio segment locator information for use in retrieving a second set of audio content segments, and the method further comprises: using the first and second audio segment locator information to retrieve the first set of audio content segments and the second set of audio content segments, respectively; creating an audio output file containing encoded audio data from the first set of audio content segments and encoded audio data from the second set of audio content segments; segmenting the audio output file to produce a third set of audio content segments, wherein each audio content segment in the third set of audio content segments contains a portion of the encoded audio data contained in the audio output file; receiving an audio segment request transmitted by the player; and after receiving the audio segment request, transmitting to the player an audio content segment from the third set of audio content segments.
14. The method of claim 5, wherein the first set of media content segments consists of a first set of audio content segments, wherein each audio content segment in the first set of audio content segments does not contain any encoded video data, and the second set of media content segments consists of a second set of audio content segments, wherein each audio content segment in the second set of audio content segments does not contain any encoded video data.
15. The method of claim 5, wherein the content break is an ad break.
16. A method, comprising: receiving, from a player, a first request for a manifest for retrieving first media content; after receiving the first request for the manifest, transmitting a second request for the manifest; after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier; generating a modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier and ii) a unique string; transmitting the modified manifest to the player; receiving, from the player, a request comprising one of the unique strings; and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
17. The method of claim 16, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
18. The method of claim 16, wherein initiating the transmission of the request for the second media content comprises determining whether a request for the second media content is needed.
19. A non-transitory computer readable storage medium storing a computer program for causing an apparatus to perform the method of claim 1.
20. A non-transitory computer readable storage medium storing a computer program for causing an apparatus to perform the method of claim 5.
21. A non-transitory computer readable storage medium storing a computer program for causing an apparatus to perform the method of claim 16.
22. An apparatus, comprising: processing circuitry; a transmitter; and a receiver, wherein the apparatus is configured to perform a method comprising: transmitting a modified manifest to a player, the modified manifest containing a period element corresponding to a content break; after transmitting the modified manifest, transmitting a request for a manifest for the content break, wherein the manifest for the content break comprises i) a first period element containing first segment locator information for use in retrieving a first set of media content segments and ii) a second period element containing second segment locator information for use in retrieving a second set of media content segments; using the first and second segment locator information to retrieve the first set of media content segments and the second set of media content segments, respectively; creating an output file containing encoded media data from the first set of media content segments and encoded media data from the second set of media content segments; segmenting the output file to produce a third set of media content segments, wherein each media content segment in the third set of segments contains a portion of the encoded media data contained in the output file; and
after receiving a segment request transmitted by a player, transmitting to the player a media content segment from the third set of media content segments.
23. The apparatus of claim 22, wherein creating the output file comprises: creating a first temporary file containing the first set of segments; creating a second temporary file containing the second set of segments; and concatenating the first and second temporary files, thereby producing the output file.
24. The apparatus of claim 23, wherein each segment in the second temporary file contains one or more timestamps, and concatenating the first and second temporary files comprises modifying the timestamp(s) of each segment in the second temporary file.
25. The apparatus of claim 22, wherein the method further comprises: after receiving a first request for a manifest for retrieving first media content, transmitting a second request for the manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier; and generating the modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first server identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier and ii) a unique string.
26. The apparatus of claim 25, wherein the method further comprises: in response to receiving, from the player, a request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request comprising one of the unique strings and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
27. The apparatus of claim 26, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
28. An apparatus, the apparatus being configured to: provide a manifest to a player, wherein the manifest comprises a presentation segment identifier for identifying a segment of first media content or template information for generating the presentation segment identifier; receive, from the player, a presentation segment request comprising the presentation segment identifier; and in response to receiving the presentation segment request, i) provide to the player a response message responsive to the presentation segment request and ii) perform a process for enabling the player to obtain second media content to be played by the player during a break in the first media content.
29. The apparatus of claim 28, wherein the process for enabling the player to obtain the second media content comprises sending a request for metadata for the second media content.
30. The apparatus of claim 29, wherein the metadata for the second media content comprises segment locator information for retrieving segments of the second media content.
31. The apparatus of claim 30, wherein the segment locator information for retrieving segments of the second media content comprises a segment identifier identifying a segment of the second media content, and the apparatus is further configured to: after providing to the player the response message responsive to the presentation segment request, receive from the player a second presentation segment request; and
in response to receiving the second presentation segment request, provide to the player i) the segment identifier identifying the segment of the second media content or ii) the segment of the second media content.
32. An apparatus, comprising: processing circuitry; a transmitter; and a receiver, wherein the apparatus is configured to perform a method comprising: after receiving, from a player, a first request for a manifest for retrieving first media content, transmitting a second request for the manifest, wherein the requested manifest includes at least a first ordered list of N segment locators, and each segment locator in the first ordered list includes a first server identifier; generating a modified manifest based on the received manifest, wherein the modified manifest includes at least a second ordered list of N segment locators, each one of the first M segment locators included in the second ordered list includes the first sever identifier, where M > 0 and M < N, each one of the N-M segment locators in the second ordered list that follow the first M segment locators in the second ordered list includes: i) a second server identifier that is different than the first server identifier and ii) a unique string; and transmitting the modified manifest to the player; and in response to receiving, from the player, a request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a request for second media content to be served to the player during a break in the first media content.
33. The apparatus of claim 32, wherein the request for the second media content is a request for a manifest for the second media content, wherein the manifest comprises segment locator information for retrieving segments of the second media content.
34. A method, comprising: receiving, from a player, a first request for a manifest for retrieving first media content;
after receiving the first request for the manifest, transmitting a second request for the manifest; after transmitting the second request for the manifest, receiving the requested manifest, wherein the requested manifest comprises a period element comprising first template information for use in generating a first set of segment locators, and each one of the segment locators included in the first set of segment locators comprises a first server identifier and a unique segment identifier such that i) a first segment locator included in the first set of segment locators comprises the first server identifier and a first unique segment identifier and ii) a second segment locator included in the first set of segment locators comprises the first server identifier and a second unique segment identifier; generating a modified manifest based on the received manifest, wherein the modified manifest comprises a first period element comprising second template information for use in generating a second set of segment locators, wherein the second set of segment locators is a subset of the first set of segment locators such that i) a first segment locator included in the second set of segment locators comprises the first server identifier and the first unique segment identifier and ii) a second segment locator included in the second set of segment locators comprises the first server identifier and the second unique segment identifier, and the modified manifest further comprises a second period element comprising third template information for use in generating a third set of segment locators, wherein each segment locator included in the third set of segment locators comprises a unique string that is mapped to a segment locator included in a second subset of the first set of segment locators and further comprises a second server identifier that is different than the first server identifier, wherein the first subset and second subset are disjoint; transmitting the modified manifest to the player; receiving, from the player, a request comprising one of the unique strings; and in response to receiving the request comprising one of the unique strings, i) transmitting to the player a response message responsive to the request and ii) initiating the transmission of a
request for second media content to be served to the player during a break in the first media content.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/226,581 US20230370699A1 (en) | 2022-05-12 | 2023-07-26 | Media streaming systems and methods |
US18/226,581 | 2023-07-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2025024099A2 true WO2025024099A2 (en) | 2025-01-30 |
WO2025024099A3 WO2025024099A3 (en) | 2025-04-03 |
Family
ID=94375667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2024/036532 WO2025024099A2 (en) | 2023-07-26 | 2024-07-02 | Media streaming systems and methods |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2025024099A2 (en) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104756505B (en) * | 2012-06-28 | 2020-04-07 | 爱立信股份有限公司 | Method and system for ad insertion in over-the-top live media delivery |
US11297357B2 (en) * | 2016-12-30 | 2022-04-05 | Google Llc | Systems and methods for interrupting streaming content provided via an inviolate manifest protocol |
US20190342356A1 (en) * | 2017-01-02 | 2019-11-07 | Koninklijke Kpn N.V. | Selectively updating a dynamic manifest file |
US11438675B1 (en) * | 2021-05-06 | 2022-09-06 | Penthera Partners, Inc. | Subsequent look media presentation on a playing device |
-
2024
- 2024-07-02 WO PCT/US2024/036532 patent/WO2025024099A2/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2025024099A3 (en) | 2025-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10785508B2 (en) | System for measuring video playback events using a server generated manifest/playlist | |
JP5974392B2 (en) | System and method for secure asynchronous event notification for adaptive streaming based on ISO base media file format | |
CN102137137B (en) | Method, device and system for dynamic inter-cut of media contents based on HTTP (Hyper Text Transport Protocol) stream | |
JP5296859B2 (en) | Real-time or near real-time streaming | |
KR100993955B1 (en) | Multimedia Presentation | |
US11778012B2 (en) | Adaptive bitrate streaming of live content | |
CN113767608B (en) | Method, apparatus and non-volatile computer readable medium for receiving media data of a session | |
CN113748659B (en) | Method, apparatus, and non-volatile computer-readable medium for receiving media data for a session | |
US12096096B2 (en) | Video streaming systems and methods | |
CN116346794A (en) | Method, device and non-volatile computer-readable storage medium for receiving media data | |
JP2007173987A (en) | Multimedia data transmission/reception system and device, or program | |
CN103747365B (en) | Method, device and system for dynamic inter-cut of media contents based on HTTP (Hyper Text Transport Protocol) stream | |
US20190045238A1 (en) | Method and system of push-template and url list for dash on full-duplex protocols | |
CN113661680B (en) | Processing method and device for receiving media data of media content | |
WO2025024099A2 (en) | Media streaming systems and methods | |
US20230370699A1 (en) | Media streaming systems and methods | |
US20230276105A1 (en) | Information processing apparatus, information processing apparatus, and program | |
US7886068B1 (en) | Management of streaming media playlists | |
CN112188256B (en) | Information processing method, information providing device, electronic device, and storage medium | |
CN107851072A (en) | Receiving device, send equipment and data processing method | |
CN115362665B (en) | Method, apparatus and storage medium for receiving media data | |
CN113364728B (en) | Media content receiving method, device, storage medium and computer equipment | |
JP2007527067A (en) | Hierarchical distribution of UI assets | |
JP2024537153A (en) | DASH client processing model to assist in handling DASH event updates | |
CN115462063A (en) | Method and apparatus for dynamic adaptive streaming over HTTP |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 24846195 Country of ref document: EP Kind code of ref document: A2 |