Adaptive bitrate streaming with gaps and / or subsegments

By dividing the live media content stream into segments and sub-segments, and encoding it into different bitrate streams using the primary and secondary encoder, the problem of delay lag in switching of live media content streams is solved, and faster channel changes and real-time display are achieved.

CN116437160BActive Publication Date: 2025-09-02AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LTD
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202211608837.5
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2022-01-07
Filing Date
2022-12-14
Publication Date
2025-09-02
Estimated Expiration
2042-12-14

AI Technical Summary

Technical Problem

The prior art has problems of delay and lag when switching live media content streams, especially when switching live media contents or channels, media content players can only decode at segment boundaries, resulting in delays and untimely display.

Method used

The live media content stream is divided into segments and further divided into sub-segments, encoded as the primary adaptive bitrate stream and the secondary adaptive bitrate stream respectively, allowing decoding and display at non-segment boundaries.

Benefits of technology

Reduces delay and lag during live media content stream switching, and achieves faster channel changes and timely display of live media content, avoiding end-to-end delay.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116437160B_ABST
    Figure CN116437160B_ABST
Patent Text Reader

Abstract

The present disclosure relates to adaptive bitrate streams with gaps and / or sub-segments. Novel tools and techniques are provided for implementing encoding or decoding of adaptive bitrate streams. In various embodiments, one or more first computing systems may divide a live media content stream into one or more segments, each of which may include a start segment boundary and an end segment boundary. The one or more first computing systems may encode the one or more segments into one or more primary adaptive bitrate streams. The one or more first computing systems may also divide the one or more segments of the live media content stream into one or more sub-segments. Each sub-segment may be smaller than the length of a corresponding segment in the one or more segments. The one or more first computing systems may encode the one or more sub-segments into one or more secondary adaptive bitrate streams and / or a second computing system may decode the one or more sub-segments from the one or more secondary adaptive bitrate streams.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Copyright Notice

[0002] A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. Technical Field

[0003] The present disclosure relates generally to methods, systems, and apparatus for implementing encoding and decoding of media content streams, and in particular to methods, systems, and apparatus for implementing encoding and decoding of live adaptive bitrate media content streams. Background Art

[0004] Traditionally, streaming and media content services use adaptive bit rate ("ABR") streams to distribute media content stored in a network or cloud. ABR allows different media content players to pull media content streams from a storage device in different formats, resolutions, and / or bit rates depending on network capabilities, player capabilities, and / or the like. ABR media content streams can include formats or resolutions of 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of an ABR media content stream can also be distributed at a different bit rate. As network speed and / or network traffic fluctuate, a media content player can switch between the resolution and / or bit rate of an ABR media content stream at the segment boundaries of the ABR media content stream.

[0005] However, for live media content streams, users can request live media content streams and / or request to switch between live media content channels at any time. After requesting a live media content stream or a channel change between live media content channels, the media content player can only start decoding at the segment boundaries of the live ABR media content stream. When requesting a live media content stream or a channel change between live media content channels at a start time different from a segment boundary, the media content player has only two options: (1) wait for the current live segment of the live ABR media content stream to complete and start decoding the next segment at the starting boundary of the next segment of the live ABR media content stream; or (2) request the current segment of the live ABR media content stream from the beginning and start decoding at the starting segment boundary to immediately display the live ABR media content stream. Option 1 causes hysteresis and / or delay because the media content player must wait to switch channels until the next segment of the live ABR media content stream starts. Option 2 introduces lag and / or delay into the live ABR media content stream because the media content player will display the media content stream behind the live media content stream being broadcast.

[0006] Therefore, there is a need for more robust and scalable solutions for encoding and decoding of media content streams, and more particularly, there is a need for more robust and scalable solutions for implementing encoding and decoding of live adaptive bitrate media content streams. Summary of the Invention

[0007] In one aspect, the present disclosure relates to a method comprising: using a computing system to divide a live media content stream into one or more segments, each segment comprising a start segment boundary and an end segment boundary; using one or more primary encoders of the computing system to encode the one or more segments of the live media content stream into one or more primary adaptive bitrate streams; using the computing system to divide the one or more segments of the live media content stream into one or more sub-segments, wherein each sub-segment is smaller than a length of a corresponding segment of the one or more segments; and using one or more secondary encoders of the computing system to encode the one or more sub-segments into one or more secondary adaptive bitrate streams.

[0008] In another aspect, the present disclosure relates to an apparatus comprising: at least one processor; and a non-transitory computer-readable medium communicatively coupled to the at least one processor, the non-transitory computer-readable medium having computer software stored thereon, the computer software comprising a set of instructions that, when executed by the at least one processor, cause the apparatus to: receive a request for live media content; determine that one or more primary adaptive bitrate streams are not at a starting segment boundary, wherein the one or more primary adaptive bitrate streams include one or more segments, each segment including the starting segment boundary and an ending segment boundary; based on determining that the one or more primary adaptive bitrate streams are not at a starting segment boundary, request one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders, wherein the one or more secondary adaptive bitrate streams include one or more subsegments, and wherein each subsegment is smaller than a length of a corresponding segment of the one or more segments; and receive the one or more secondary adaptive bitrate streams including the one or more subsegments; and decode the live media content associated with the one or more secondary adaptive bitrate streams.

[0009] In yet another aspect, the present disclosure relates to a system comprising: a first computing system comprising: one or more primary encoders; one or more secondary encoders; at least one first processor; and a first non-transitory computer-readable medium communicatively coupled to the at least one first processor, the first non-transitory computer-readable medium having computer software stored thereon, the computer software comprising a first set of instructions that, when executed by the at least one first processor, cause the first computing system to: divide a live media content stream into one or more segments, each segment comprising a start segment boundary and an end segment boundary; encode the one or more segments of the live media content stream into one or more primary adaptive bitrate streams using the one or more primary encoders; divide the one or more segments of the live media content stream into one or more sub-segments, wherein each sub-segment is smaller than a length of a corresponding segment of the one or more segments; and encode the one or more sub-segments into one or more secondary adaptive bitrate streams using the one or more secondary encoders. and a second computing system comprising: at least one second processor; and a second non-transitory computer-readable medium communicatively coupled to the at least one second processor, the second non-transitory computer-readable medium having computer software stored thereon, the computer software comprising a second set of instructions that, when executed by the at least one second processor, cause the second computing system to: receive a request for live media content on a live channel; request one or more primary adaptive bitrate streams associated with the live media content from the one or more primary encoders; determine that the one or more primary adaptive bitrate streams are not at the starting segment boundary; based on determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary, request one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders; receive the one or more secondary adaptive bitrate streams including the one or more subsegments; and decode the live media content associated with the one or more secondary adaptive bitrate streams. BRIEF DESCRIPTION OF THE DRAWINGS

[0010] A further understanding of the nature and advantages of certain embodiments may be achieved by reference to the remainder of the specification and drawings, in which like reference numerals are used to denote like components. In some instances, a sub-label is associated with a reference numeral to denote one of multiple similar components. When a reference numeral is referenced without specifying the presence of a sub-label, it is intended to refer to all such multiple similar components.

[0011] Figure 1 is a schematic diagram illustrating a system for implementing encoding and decoding of live adaptive bitrate media content streams according to various embodiments.

[0012] Figure 2 is a diagram illustrating embodiments for implementing one or more adaptive bitrate streams according to various embodiments.

[0013] Figure 3 FIG. 4 is a diagram illustrating an embodiment for implementing one or more primary adaptive bitrate streams including one or more segments and one or more secondary adaptive bitrate streams including one or more sub-segments according to various embodiments.

[0014] Figure 4 FIG. 5 is a diagram illustrating another embodiment for implementing one or more primary adaptive bitrate streams including one or more segments and one or more secondary adaptive bitrate streams including one or more sub-segments according to various embodiments.

[0015] Figure 5 is a diagram illustrating yet another embodiment for implementing one or more primary adaptive bitrate streams including one or more advertisement segments and one or more secondary adaptive bitrate streams including one or more advertisement sub-segments according to various embodiments.

[0016] Figure 6 is a flow chart illustrating a method for implementing encoding of a live adaptive bitrate media content stream according to various embodiments.

[0017] Figures 7A to 7D is a flow chart illustrating a method for implementing decoding of a live adaptive bitrate media content stream, according to various embodiments.

[0018] Figure 8 is a block diagram illustrating an example computer or system hardware architecture according to various embodiments.

[0019] Figure 9 is a block diagram of a networked system illustrating a computer, computing system, or system hardware architecture that can be used in accordance with various embodiments. DETAILED DESCRIPTION

[0020] Overview

[0021] Various embodiments provide tools and techniques for implementing encoding and decoding of media content streams, and more particularly, relate to methods, systems, and apparatus for implementing encoding and decoding of live adaptive bitrate media content streams.

[0022] In various embodiments, one or more first computing systems may divide a live media content stream into one or more segments, each of which may include a start segment boundary and an end segment boundary. The one or more first computing systems may encode the one or more segments of the live media content stream into one or more primary adaptive bitrate streams. The one or more first computing systems may also divide the one or more segments of the live media content stream into one or more sub-segments. Each sub-segment may be shorter than the length of a corresponding segment in the one or more segments. The one or more first computing systems may encode the one or more sub-segments into one or more secondary adaptive bitrate streams.

[0023] According to some embodiments, one or more second computing systems may receive a request for live media content on a live channel. The one or more second computing systems may first request the one or more primary adaptive bitrate streams associated with the live media content. The one or more second computing systems may then determine that the one or more primary adaptive bitrate streams are not at a starting segment boundary. Based on determining that the one or more primary adaptive bitrate streams are not at a starting segment boundary, the one or more second computing systems may request one or more secondary adaptive bitrate streams associated with the live media content. The one or more second computing systems may receive the one or more secondary adaptive bitrate streams including the one or more subsegments and decode the live media content associated with the one or more secondary adaptive bitrate streams.

[0024] In some cases, the one or more sub-segments may have a starting boundary that is different from a corresponding starting segment boundary of a corresponding segment in the one or more segments and an ending boundary that is the same as a corresponding ending segment boundary of the corresponding segment in the one or more segments. In some cases, the one or more sub-segments may be continuous sub-segments, discontinuous sub-segments, overlapping sub-segments, and / or the like.

[0025] Several advantages can be achieved by implementing the embodiments described herein. For example, when requesting a live media content stream or a channel change between live media content channels, the lag or delay time between requesting media content and displaying the media content can be reduced. In addition, when requesting a live media content stream or a channel change between live media content channels, the lag or delay time between live media content and decoded media content can be reduced. In short, all embodiments described in this disclosure make the channel change of a live channel faster without increasing end-to-end delay for the audience of the live media content stream. In addition, in some embodiments, one or more sub-segments can be transmitted unencrypted at a lower resolution than one or more segments, at a lower bit rate, or with a lower efficiency or older codec. These and other aspects of the tools and techniques for implementing the encoding and decoding of media content streams and more specifically the methods, systems, and equipment for implementing the encoding and decoding of live adaptive bitrate media content streams are described in more detail with respect to the accompanying drawings.

[0026] The following detailed description further describes several exemplary embodiments in detail to enable those skilled in the art to practice such embodiments. The described examples are provided for illustrative purposes and are not intended to limit the scope of the present invention.

[0027] In the following description, for the purpose of explanation, numerous specific details are set forth in order to provide a thorough understanding of the described embodiments. However, it will be apparent to those skilled in the art that other embodiments of the present invention may be practiced without some of these specific details. In other examples, certain structures and devices are shown in block diagram form. Several embodiments are described herein, and although various features are attributed to different embodiments, it should be understood that features described with respect to one embodiment may also be combined with other embodiments. However, for the same reason, any single feature or multiple features of any described embodiment should not be considered essential to every embodiment of the present invention, as other embodiments of the present invention may omit such features.

[0028] Unless otherwise indicated, all numbers used herein to express quantities, dimensions, and the like should be understood as being modified in all instances by the term "about." In this application, the use of the singular includes the plural unless specifically stated otherwise, and the use of the terms "and" and "or" means "and / or" unless otherwise indicated. Furthermore, the use of the term "comprising" as well as other forms such as "includes" and "included" should be considered non-exclusive. Furthermore, terms such as "element" or "component" encompass both elements and components comprising one unit and elements and components comprising more than one unit, unless specifically stated otherwise.

[0029] The various embodiments described herein, while embodying (in some cases) software products, computer-implemented methods, and / or computer systems, represent tangible, concrete improvements over existing art areas, including but not limited to encoding and decoding techniques, live media content distribution techniques, network provisioning techniques, network configuration techniques, and / or the like. In other respects, certain embodiments may improve the operation of a user device or system itself (e.g., encoding and decoding techniques, live media content distribution techniques, network provisioning techniques, network configuration techniques, etc.), for example, by the following steps: dividing a live media content stream into one or more segments, each segment including a start segment boundary and an end segment boundary; encoding the one or more segments of the live media content stream into one or more primary adaptive bitrate streams using one or more primary encoders; dividing the one or more segments of the live media content stream into one or more sub-segments, each sub-segment being smaller than the length of a corresponding segment in the one or more segments; encoding the one or more segments of the live media content stream into one or more primary adaptive bitrate streams using one or more secondary encoders; encoding ...; encoding the one or more segments of the live media content stream into one or more sub-segments, each sub-segment being smaller than the length of a corresponding segment in the one or more segments; encoding the one or more segments of the live media content stream into one or more primary adaptive bitrate streams; encoding the one or more segments of the live media content stream into one or more sub-segments, each sub-segment being smaller than the length of a corresponding segment in the one or more segments; The method may further comprise: encoding the one or more sub-segments into one or more secondary adaptive bitrate streams; requesting one or more primary adaptive bitrate streams associated with the live media content from the one or more primary encoders; determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary; requesting one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders based on determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary; receiving the one or more secondary adaptive bitrate streams including the one or more sub-segments; decoding the live media content associated with the one or more secondary adaptive bitrate streams; and / or similar steps.

[0030] In particular, to the extent any abstract concepts are present in the various embodiments, those concepts may be implemented as described herein by devices, software, systems, and methods involving specific novel functionality (e.g., steps or operations), such as: dividing the one or more segments of the live media content stream into one or more sub-segments, each sub-segment being smaller than the length of a corresponding segment of the one or more segments; requesting one or more primary adaptive bitrate streams associated with the live media content from the one or more primary encoders; determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary; requesting one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders based on determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary; receiving the one or more secondary adaptive bitrate streams including the one or more sub-segments; decoding the live media content associated with the one or more secondary adaptive bitrate streams; and / or the like, to name a few examples, extending beyond mere conventional computer processing operations. These functionalities can produce tangible results beyond the implementation of the computer system, including, by way of example only, performing improved live media content delivery in an efficient real-time manner to reduce lag and latency in requesting live media content, to improve the display of live media content, to improve requests for live media content channel changes, and / or the like, at least some of which can be observed or measured by customers and / or service providers.

[0031] In one aspect, a method may include using a computing system to divide a live media content stream into one or more segments. In some cases, each segment may include a start segment boundary and an end segment boundary. The method may continue by encoding the one or more segments of the live media content stream into one or more primary adaptive bitrate streams using one or more primary encoders of the computing system; and dividing the one or more segments of the live media content stream into one or more sub-segments using the computing system. Each sub-segment may be shorter than a length of a corresponding segment in the one or more segments. The method may further include encoding the one or more sub-segments into one or more secondary adaptive bitrate streams using one or more secondary encoders of the computing system.

[0032] In some embodiments, the one or more primary adaptive bitrate streams may be one or more continuous segments of the live media content stream. In various examples, the one or more secondary adaptive bitrate streams may include at least one of one or more continuous subsegments of the live media content stream or one or more discontinuous subsegments of the live media content stream.

[0033] By way of example only, in some cases, the one or more subsegments may have a starting boundary that is different from a corresponding starting segment boundary of a corresponding segment in the one or more segments and an ending boundary that is the same as a corresponding ending segment boundary of the corresponding segment in the one or more segments. In some instances, the one or more subsegments may be two or more subsegments. Each of the two or more subsegments may have a subsegment starting boundary that is different from a next subsegment starting boundary of a next subsegment. In various embodiments, the next subsegment starting boundary of the next subsegment may occur a predetermined amount of time after a previous subsegment starting boundary of a previous subsegment. Alternatively or in addition, each of the two or more subsegments may be encoded by a single encoder or a separate encoder in the one or more sub-encoders.

[0034] In some instances, the method may further include releasing, using the computing system, the one or more sub-encoders when the one or more sub-segments reach the same end boundary as the corresponding segment of the one or more segments.

[0035] According to some embodiments, the one or more sub-segments may overlap with the ending segment boundary of the one or more segments, and / or the one or more sub-segments may overlap with the next starting segment boundary of the next segment in the one or more segments. In some cases, the one or more sub-segments may be transmitted unencrypted. Alternatively or additionally, the one or more sub-segments may be transmitted at a lower bit rate than the one or more segments.

[0036] In another aspect, an apparatus may include at least one processor and a non-transitory computer-readable medium communicatively coupled to the at least one processor. The non-transitory computer-readable medium may have computer software stored thereon, the computer software comprising a set of instructions that, when executed by the at least one processor, cause the apparatus to: receive a request for live media content on a live channel; request one or more primary adaptive bitrate streams associated with the live media content from one or more primary encoders, the one or more primary adaptive bitrate streams comprising one or more segments, each segment comprising a start segment boundary and an end segment boundary; determine that the one or more primary adaptive bitrate streams are not at a start segment boundary; based on determining that the one or more primary adaptive bitrate streams are not at a start segment boundary, request one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders, the one or more secondary adaptive bitrate streams comprising one or more subsegments, each subsegment being smaller than a length of a corresponding segment of the one or more segments; receive the one or more secondary adaptive bitrate streams comprising the one or more subsegments; and decode the live media content associated with the one or more secondary adaptive bitrate streams.

[0037] In some embodiments, the request to the one or more secondary encoders for the one or more secondary adaptive bitrate streams associated with the live channel further comprises requesting a secondary adaptive bitrate stream of the one or more secondary adaptive bitrate streams, the secondary adaptive bitrate stream comprising a subsegment of the one or more subsegments, the subsegment having a starting subsegment boundary closest to a real-time display time of the live media content.

[0038] In various examples, the one or more subsegments include a start boundary that is different from a corresponding start boundary of a corresponding segment of the one or more segments and an end boundary that is the same as a corresponding end boundary of the corresponding segment of the one or more segments. In some cases, the set of instructions, when executed by the at least one processor, further cause the apparatus to: determine that the one or more subsegments of the one or more secondary adaptive bitrate streams have reached the same end boundary as the corresponding end boundary of the corresponding segment; switch from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams based on determining that the one or more subsegments of the one or more secondary adaptive bitrate streams have reached the same end boundary; receive the at least one primary adaptive bitrate stream including the one or more segments; and decode the live media content associated with the at least one primary adaptive bitrate stream.

[0039] In some examples, the one or more secondary adaptive bitrate streams comprising the one or more subsegments may be received using a first video codec, and the one or more primary adaptive bitrate streams may be received using a second video codec different from the first video codec. In some cases, the one or more primary adaptive bitrate streams may be generated using a more efficient / newer codec, while the one or more secondary adaptive bitrate streams may be generated using a less efficient codec. The device is capable of switching between codecs at any segment or subsegment boundary.

[0040] In some cases, the one or more subsegments may overlap with the ending segment boundary of the one or more segments and / or the one or more subsegments may overlap with a next starting segment boundary of a next segment of the one or more segments. When the one or more subsegments overlap with the ending segment boundary of the one or more segments and / or the next starting segment boundary of the next segment of the one or more segments, the set of instructions, when executed by the at least one processor, may further cause the apparatus to: discard one or more overlapping subframes of the one or more subsegments, wherein the one or more overlapping subframes overlap between the one or more subsegments and the one or more segments. The one or more overlapping subframes may be discarded before the one or more overlapping subframes are decoded.

[0041] Alternatively or additionally, when the one or more subsegments overlap the ending segment boundary of the one or more segments and / or the next starting segment boundary of the next segment in the one or more segments, the set of instructions, when executed by the at least one processor, may further cause the apparatus to: receive at least one primary adaptive bitrate stream comprising the one or more segments; receive at least one secondary adaptive bitrate stream comprising the one or more subsegments; determine whether one or more overlapping subframes of the one or more subsegments follow one or more real-time frames of the one or more segments; decode and display the one or more overlapping subframes faster to catch up with the one or more real-time frames of the one or more segments based on determining that the one or more overlapping subframes of the one or more subsegments follow the one or more real-time frames of the one or more segments; and switch from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams based on determining that the one or more overlapping subframes of the one or more subsegments have caught up with the one or more real-time frames of the one or more segments.

[0042] By way of example only, in some cases, the set of instructions, when executed by the at least one processor, may further cause the apparatus to: determine whether one or more real-time frames of the one or more segments are unavailable; based on determining that the one or more real-time frames of the one or more segments are unavailable, more slowly decode and display at least one of the one or more sub-frames of the one or more sub-segments until the one or more real-time frames are available, or repeat one or more previous sub-frames of the one or more sub-segments until the one or more real-time frames are available; and based on determining that the one or more real-time frames are available, switch from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams.

[0043] In various embodiments, the one or more segments may include a header at the starting segment boundary. Each header may indicate one or more additional decodable segment boundaries, the additional decodable segment boundaries indicating one or more additional locations within the corresponding segment where the device may begin decoding the live media content.

[0044] In another aspect, a system may include a first computing system that may include: one or more primary encoders; one or more secondary encoders; at least one first processor; and a first non-transitory computer-readable medium communicatively coupled to the at least one first processor. The first non-transitory computer-readable medium may have computer software stored thereon, the computer software including a first set of instructions that, when executed by the at least one first processor, cause the first computing system to: divide a live media content stream into one or more segments, each segment including a start segment boundary and an end segment boundary; encode the one or more segments of the live media content stream into one or more primary adaptive bitrate streams using the one or more primary encoders; divide the one or more segments of the live media content stream into one or more sub-segments, each sub-segment being smaller than a length of a corresponding segment in the one or more segments; and encode the one or more sub-segments into one or more secondary adaptive bitrate streams using the one or more secondary encoders.

[0045] In some cases, the system may further include a second computing system, the second computing system including at least one second processor and a second non-transitory computer-readable medium communicatively coupled to the at least one second processor. The second non-transitory computer-readable medium may have computer software stored thereon, the computer software including a second set of instructions that, when executed by the at least one second processor, cause the second computing system to: receive a request for live media content on a live channel; request one or more primary adaptive bitrate streams associated with the live media content from one or more primary encoders; determine that the one or more primary adaptive bitrate streams are not at the starting segment boundary; based on determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary, request one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders; receive the one or more secondary adaptive bitrate streams including the one or more subsegments; and decode the live media content associated with the one or more secondary adaptive bitrate streams.

[0046] Various modifications and additions may be made to the discussed embodiments without departing from the scope of the invention. For example, while the embodiments described above refer to particular features, the scope of the invention also includes embodiments having different combinations of features and embodiments that do not include all of the above features.

[0047] Specific example embodiments

[0048] We now turn to the embodiments as illustrated by the accompanying drawings. Figures 1 to 9Some features of methods, systems and apparatus for implementing encoding and decoding of media content streams, and more particularly for implementing encoding and decoding of live adaptive bitrate media content streams, as mentioned above, are described. Figures 1 to 9 The described methods, systems, and apparatus are examples of different embodiments including various components and steps, which may be considered alternatives or may be used in combination with each other in various embodiments. Figures 1 to 9 The descriptions of the illustrated methods, systems, and apparatus shown in the accompanying drawings are provided for illustration purposes and should not be considered as limiting the scope of the different embodiments.

[0049] With reference to the accompanying drawings, Figure 1 is a schematic diagram illustrating a system 100 for implementing encoding and decoding of live adaptive bitrate ("ABR") media content streams according to various embodiments. Although lines and lightning bolts are used to represent communicative couplings and / or connections (e.g., wireless and / or wired connections) between devices, one or more intermediate devices (not shown) and / or networks (not shown) may be located in the system. Figure 1 between one or more devices.

[0050] exist Figure 1 In a non-limiting embodiment, system 100 may include (several) first computing systems 105 and (several) corresponding databases 110 to which the (several) first computing systems 105 may be communicatively coupled. In some embodiments, system 100 may further include one or more primary encoders 115 and one or more secondary encoders 120 and / or the like. Although database(s) 110, one or more primary encoders 115, and one or more secondary encoders 120 are shown as being external to first computing system 105, various embodiments are not limited thereto, and database(s) 110, one or more primary encoders 115, and / or one or more secondary encoders 120 may be disposed within first computing system 105. Additionally, although one or more primary encoders 115 are designated as primary and one or more secondary encoders 120 are designated as secondary, one or more primary encoders 115 may also function as one or more secondary encoders 120, and one or more secondary encoders 120 may function as one or more primary encoders 115. In addition, although one or more primary encoders 115 are designated as primary and one or more secondary encoders 120 are designated as secondary, the terms "primary" and "secondary" are merely used to distinguish between encoders and are not intended to indicate a preference for a particular encoder, the amount a particular encoder is used or requested, and / or the like. In some cases, one or more primary encoders 115 and / or one or more secondary encoders 120 may be part of an encoder pool and can be activated when live media content is requested by one or more users or when live media content is currently being broadcast by (several) media content sources 125.

[0051] In each example, each in one or more main encoders 115 and / or each in one or more sub-encoders 120 can be arranged to different live media content is carried out identical coding task.In non-limiting example, each in one or more main encoders 115 and / or each in one or more sub-encoders 120 can be arranged to use at least one in specific resolution, specific bit rate, specific codec and / or the like to encode different live media content streams.Alternatively, each in one or more main encoders 115 and / or each in one or more sub-encoders 120 can be separated and identical live media content is carried out one or more different coding tasks or a series of different coding tasks.In some examples, live media content stream can be divided into one or more different partitions or one or more different frames for one or more main encoders 115 and / or one or more sub-encoders 120 to carry out parallel encoding.

[0052] In some embodiments, the first computing system 105 may include, but is not limited to, a first processor (not shown) and a first memory (not shown). In some embodiments, the first computing system 105 may include, but is not limited to, one or more of a user device, a server computer, a server computer on a network, a cloud-based computing system, a cloud-based computing system on a network, a distributed computing system, and / or the like.

[0053] The system 100 may further include one or more media content sources 125a-125n (collectively, media content sources 125), each of which may be communicatively coupled to corresponding database(s) 130a-130n (collectively, database(s) 130). The one or more media content sources 125 may be communicatively coupled to the first computing system 105 (or at least the primary encoder(s) 115 and / or secondary encoder(s) 120 of the first computing system 105), the primary encoder(s) 115, and / or the secondary encoder(s) 120 via the network(s) 135, 140, and / or 145 (through wireless and / or wired communication). The media content sources 125 may include, but are not limited to, one or more of a user device, a server computer, a server computer on a network, a content provider computer, a content provider computer on a network, a cloud-based computing system, a cloud-based computing system on a network, a distributed computing system, and / or the like. In some cases, the first computing system 105 , the one or more primary encoders 115 , and / or the one or more secondary encoders 120 may be embodied or contained within one or more content sources 125 .

[0054] According to some embodiments, system 100 may further include second computing system(s), user interface device(s), or user device(s) 150 (collectively, second computing system(s) 150). Second computing system(s) may include, but are not limited to, one or more components 155. One or more components 155 may include, but are not limited to, at least one of one or more processors 160, memory (not shown), one or more decoders 165, one or more displays 170, one or more speakers 175, and / or the like. In alternative embodiments, one or more of components 155 of second computing system(s) 150 may be embodied as separate components that can each communicate with one or more other components. For example, system 100 may include, but are not limited to, one or more decoders 165, one or more displays 170, and / or one or more speakers 175, and / or the like, and second computing system 150 (optional) and / or the like, each of which may be a separate or independent component. In some cases, second computing system(s) 150 may be, but is not limited to, at least one of a set-top box, a television, a server computer, a desktop computer, a laptop computer, a tablet computer, a smartphone, a cell phone, a mobile phone, a personal digital assistant, a remote control device, a game console, or a portable gaming device, or any suitable device or the like capable of communicating with first computing system(s) 105, primary encoder 115, secondary encoder 120, and / or content source 125 via a web-based portal, an application programming interface (“API”), a server, a software application (“app”), or any other suitable communication interface.

[0055] System 100 may further include network(s) 135 and 140 that can communicatively couple at least one of first computing system(s) 105, database(s) 110, primary encoder(s) 115, secondary encoder(s) 120, content source(s) 125, database(s) 130, second computing system(s) 150, and / or components of second computing system(s) 150, and / or the like. In various examples, first computing system(s) 105, database(s) 110, primary encoder(s) 115, secondary encoder(s) 120, content source(s) 125, second computing system(s) 150, and / or the like can be communicatively coupled together within one or more service provider networks or one or more content provider networks. Alternatively or additionally, second computing system 150 can be located in a local area network.

[0056] The network(s) 135 and / or 140 may be a service provider network, a content provider network, a local area network, and / or the like. Each of the networks 135 and 140 may include, but is not limited to, a fiber optic network, Ethernet, Token-Ring, or the like. TMnetwork, wide area network ("WAN"), wireless wide area network ("WWAN"), virtual private network ("VPN"), Internet, intranet, extranet, public switched telephone network ("PSTN"), infrared network, in the IEEE 802.11 protocol suite, Bluetooth as known in the art TM The present invention also provides a wireless network that operates under any of the IEEE 802.15.4 protocol suite, the Z-Wave protocol known in the art, the ZigBee protocol, or other IEEE 802.15.4 protocol suite and / or any other wireless protocol known in the art, and / or any combination of these and / or other networks. In a particular embodiment, network 135 or network 140 may include an access network of a service provider, such as an Internet service provider ("ISP"), or the like.

[0057] In some embodiments, the system 100 may also include one or more telecommunication relay systems 145, which may include, but are not limited to, one or more wireless network interfaces (e.g., wireless modems, wireless access points, and the like), one or more towers, one or more cellular towers, one or more satellites, and / or the like. The one or more telecommunication relay systems 145 may provide wired or wireless communication between a service provider (e.g., first computing system(s) 105, primary encoder(s) 115, secondary encoder(s) 120, content source(s) 125, etc.) and second computing system(s) 150.

[0058] In operation, (several) first computing systems 105, one or more primary encoders 115 and / or one or more secondary encoders 120 may receive a live and / or real-time media content stream from at least one of one or more media content sources 125 (and / or (several) corresponding databases 130) via (several) networks 135, 140 and / or 145. A live and / or real-time media content stream represents a display of live content occurring in real time or near real time and distinct from previously recorded "on-demand" content. In various examples, a live and / or real-time media content stream may have a slight time delay (e.g., 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds and / or similar time delay) between when the live content occurs and when the live content is displayed in the live media stream. The live and / or real-time media content stream may include live video content from at least one of one or more live sporting events, live news broadcasts, live video streams, live television programs and / or the like. In some cases, a live media content stream may include one or more adaptive bitrate ("ABR") streams. The ABR streams may include, but are not limited to, resolutions of 8K, 4K, high-definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of the ABR stream may also be delivered at a different bitrate. In non-limiting examples, an ABR stream may be transmitted at 5 megabits per second ("Mbps"), 3 Mbps, 1 Mbps, 500 kilobits per second ("Kbps"), and / or the like.

[0059] The first computing system(s) 105, the one or more primary encoders 115, and / or the one or more secondary encoders 120 may receive the live media content stream in response to a request for the live media content stream from the second computing system(s) 150. Alternatively, the first computing system 105, the one or more primary encoders 115, and / or the one or more secondary encoders 120 may receive the live media content stream from at least one of the one or more media content sources 125 (and / or corresponding database(s) 130) while the live media stream is occurring or being broadcast, regardless of whether the second computing system(s) 150 sends a request for the live media content stream.

[0060] In some examples, first computing system(s) 105 and one or more primary encoders 115 may receive a primary live media content stream and / or a primary live ABR media content stream from at least one of one or more media content sources 125 (and / or corresponding database(s) 130), and first computing system(s) 105 and one or more secondary encoders 120 may receive a secondary live media content stream and / or a secondary live ABR media content stream from at least one of one or more media content sources 125. Although one or more primary ABR streams are designated as primary and one or more secondary ABR streams are designated as secondary, the terms "primary" and "secondary" are merely used to distinguish the media content streams and are not intended to indicate a preference for a particular ABR stream, the amount a particular ABR stream is used or requested, and / or the like. Alternatively, in some embodiments, the first computing system 105 and / or the one or more primary encoders 115 may convert a live media content stream from at least one of the one or more media content sources 125 (and / or (several) corresponding databases 130) into one or more primary live ABR media content streams, and the first computing system 105 and / or the one or more secondary encoders 120 may convert a live media content stream from at least one of the one or more media content sources 125 (and / or (several) corresponding databases 130) and / or the one or more primary live ABR media content streams into one or more secondary live ABR media content streams.

[0061] In various embodiments, the first computing system(s) 105, the one or more primary encoders 115, and / or the one or more media content sources 125 may divide the live media content stream and / or the one or more primary live ABR media content streams into one or more segments. Each segment may be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment may include a start segment boundary and an end segment boundary. The start segment boundary of each segment may indicate the start time at which the live media content stream(s) and / or the one or more primary live ABR media content streams may be decoded by the decoder(s) 165 of the second computing system 150. The end segment boundary may indicate the end of the segment before the next decodable start segment boundary of the one or more primary live ABR media content streams. The first computing system(s) 105, the one or more primary encoders 115, and / or the one or more media content sources 125 may then encode the one or more segments of the live media content stream into the one or more primary live ABR media content streams.

[0062] In some examples, the first computing system(s) 105, one or more secondary encoders 120, and / or one or more media content sources 125 may divide one or more segments of a live media content stream and / or one or more primary live ABR media content streams into one or more subsegments. Each subsegment may be divided into various sizes based on a predetermined amount of time (e.g., 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds, 15 seconds, and / or the like). Each subsegment may be smaller than the length of a corresponding segment in the one or more segments. In a non-limiting example, if a subsegment is 10 seconds in length, then the subsegment may be 0.5 seconds, 1 second, 2 seconds, 5 seconds, 9 seconds, and so on. Each subsegment may include a starting subsegment boundary and an ending subsegment boundary. The starting subsegment boundary of each subsegment may indicate the start time at which the live media content stream(s) and / or one or more secondary live ABR media content streams may be decoded by the decoder 165 of the second computing system(s) 150. The ending subsegment boundary may indicate the end of the subsegment. The first computing system(s) 105, the one or more secondary encoders 120, and / or the one or more media content sources 125 may then encode the live media content stream(s) and / or the one or more subsegments of the one or more primary live ABR media content streams into the one or more secondary live ABR media content streams.

[0063] In various cases, the one or more subsegments may have a subsegment start boundary that is different from a corresponding start segment boundary of a corresponding segment of the one or more segments. Alternatively or additionally, the one or more subsegments may have an end subsegment boundary that is the same as a corresponding end segment boundary of the corresponding segment of the one or more segments. Alternatively, in some embodiments, the one or more subsegments may overlap with the end segment boundary of the one or more segments, and / or the one or more subsegments may overlap with the next start segment boundary of the next segment of the one or more segments.

[0064] Each secondary live ABR media content stream and / or each subsegment of each secondary live ABR media content stream can be encoded by a single encoder or separate encoders from the one or more secondary encoders 120. In other words, for each secondary live ABR media content stream, a corresponding separate or single encoder can be used to encode each secondary live ABR media content stream. In some cases, when one or more subsegments reach an end subsegment boundary, the one or more secondary encoders encoding the one or more secondary live ABR media content streams can be released back to the encoder pool.

[0065] In some embodiments, one or more sub-segments may be at least one of transmitted unencrypted, transmitted at a lower resolution, transmitted at a lower bit rate, or transmitted with a less efficient or older codec than one or more segments.

[0066] Additionally, in operation, the second computing system(s) 150 may receive a request to receive and display a live media content stream. The request may be, but is not limited to, an initial request to receive a live media content stream (e.g., to turn on a display device, open an application, select a particular television show or program, and / or the like) or a channel change request to change the channel to a live media content stream, and / or the like. The second computing system(s) 150 may send the request for the live media content stream to the first computing system 105, the one or more primary encoders 115, the one or more secondary encoders 120, and / or the one or more media content sources 125.

[0067] The second computing system(s) 150 may then determine that the live media content and / or one or more primary live ABR media content streams of the live media content are not at a starting segment boundary. Based on determining that the media content and / or the one or more primary live ABR streams are not at a starting segment boundary, the second computing system(s) 150 may request one or more secondary live ABR streams containing one or more subsegments associated with the live media content from the one or more secondary encoders 120. Requesting the one or more secondary live ABR streams from the one or more secondary encoders 120 may include requesting, using the second computing system(s) 150, a secondary live ABR stream of the one or more secondary live ABR streams, the secondary live ABR stream containing a subsegment of the one or more subsegments having a starting subsegment boundary closest to the real-time display time of the live media content.

[0068] By requesting one or more secondary live ABR streams from the one or more secondary encoders 120, the lag or delay time between when the media content is requested and when the media content is displayed can be reduced because the (several) second computing systems 150 do not need to wait until the next starting segment boundary of the next decodable segment of the primary live ABR stream becomes available. In addition, by requesting one or more secondary live ABR streams from the one or more secondary encoders 120, the lag or delay time between the live media content and the decoded media content can be reduced because the (several) second computing systems 150 can request one or more subsegments having starting subsegment boundaries closest to the real-time display time of the live media content without having to decode the one or more segments of the primary live ABR stream from the starting boundaries of the segments.

[0069] The second computing system(s) 150 may then receive the one or more secondary live ABR streams including the one or more sub-segments from the one or more secondary encoders 120 via the network(s) 135, 140, and / or 145. In some cases, to receive the one or more secondary live ABR streams, the one or more secondary encoders 120 may push the one or more secondary live ABR streams to the second computing system(s) 150. Alternatively, to receive the one or more secondary live ABR streams, the second computing system(s) 150 may pull the one or more secondary live ABR streams from the one or more secondary encoders 120.

[0070] The second computing system(s) may then decode the one or more secondary live ABR streams comprising the one or more sub-segments using decoder(s) 165 and display live media content associated with the one or more sub-segments of the one or more secondary live ABR streams using display(s) 170.

[0071] In some examples, the second computing system(s) 150 may determine that one or more subsegments of the one or more secondary live ABR streams have reached the same end boundary as the corresponding end segment boundary of the corresponding segment. Based on the determination that the one or more subsegments of the one or more secondary live ABR streams have reached the same end boundary, the second computing system(s) 150 may switch from receiving at least one of the one or more secondary live ABR streams from the one or more secondary encoders 120 to receiving at least one of the one or more primary live ABR streams from the one or more primary encoders 115. The second computing system(s) 150 may then receive at least one primary live ABR stream comprising one or more segments from the one or more primary encoders 115, decode the live media content associated with the at least one primary live ABR stream, and display the live media content associated with the at least one primary live ABR stream. In some cases, to receive the one or more primary live ABR streams, the one or more primary encoders 115 may push the one or more primary live ABR streams to the second computing system(s) 150. Alternatively, to receive the one or more primary live ABR streams, the second computing system(s) 150 may pull the one or more primary live ABR streams from the one or more primary encoders 115 .

[0072] In some cases, the one or more secondary live ABR streams may be one or more dedicated side channels separate from the one or more primary live ABR streams. In some cases, the one or more secondary ABR streams may be one or more unicast channels and / or multicast channels, while the one or more primary live ABR streams may be one or more multicast channels. In a non-limiting example, if the primary live ABR stream is not at a segment boundary, the second computing system(s) 150 may pull the one or more secondary ABR streams, which may be one or more dedicated multicast or unicast side channels, and switch to the primary live multicast ABR stream at the starting segment boundary of the primary live multicast ABR stream.

[0073] In some cases, the second computing system(s) 150 may pull one or more secondary live ABR streams using a different codec than the one or more primary live ABR streams. In some cases, one or more primary adaptive bitrate streams may be generated using a more efficient / newer codec, while one or more secondary adaptive bitrate streams may be generated using a less efficient / older codec. The second computing system(s) 150 may be configured to switch between codecs at any segment or subsegment boundary.

[0074] The following will be about Figure 2 7 describe these and other functions of system 100 (and its components) in greater detail.

[0075] Figure 2 is a diagram illustrating an embodiment for implementing one or more adaptive bitrate streams 205 according to various embodiments. Figure 2 It is intended to provide an illustrative perspective on implementation of one or more adaptive bitrate streams 205 with one or more segments 210 and is not limited to such functionality, but is applicable to the above description of Figure 1 etc. and below about Figure 3 Some (if not all) of the functionality described in 7 etc.

[0076] Figure 2 Depicts one or more live adaptive bitrate ("ABR") streams 205a, 205b, and 205c (collectively, ABR streams 205), which may be streamed on a first computing system(s) (e.g., Figure 1 (several) first computing systems 105), (several) encoders (eg, Figure 1 (several) main encoders 115 and / or (several) sub-encoders 120) and / or content sources (e.g., Figure 1 content source 125) and second computing system(s) (e.g., Figure 1 (several) second computer systems, (several) user interface devices or (several) user devices 150) and / or (several) decoders (e.g., Figure 1 As live media content is broadcast, the first computing system, the encoder(s), and / or the content source may convert the live media content stream into one or more live ABR streams 205.

[0077] In some embodiments, the one or more live ABR streams 205 may include, but are not limited to, formats or resolutions of 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. In a non-limiting example, live ABR stream 205a may be a 4K ABR stream, live ABR stream 205b may be an HD ABR stream, and live ABR stream 205c may be an SD ABR stream. Each resolution of the one or more live ABR streams 205 may also be delivered at a different bitrate. In a non-limiting example, the live ABR streams 205 may be transmitted at 5 megabits per second ("Mbps"), 3 Mbps, 1 Mbps, 500 kilobits per second ("Kbps"), and / or the like. Each live ABR stream 205 may also be associated with a different codec. The codec may include, but is not limited to, H.263, H.264, H.265, H.266, MPEG-1, MPEG-2, VP8, VP9, ​​AAC, AV1, MP3, MP4, Theora, and / or the like.

[0078] In various cases, each live ABR stream 205 may be divided into one or more segments 210a, 210b, 210c, and 210n (collectively, segments 210). Each segment 210 may be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment may include a starting segment boundary 215 and an ending segment boundary 220. In a non-limiting example, segment 210a may have a starting segment boundary 215a and an ending segment boundary 220a. The starting segment boundary 215 of each segment 210 may indicate the start time when the live media content stream(s) and / or one or more live ABR streams 205 may be decoded by the decoder(s) of the second computing system(s). The ending segment boundary may indicate the end time of the segment before the start boundary of the next decodable segment. In a non-limiting example, segment 210a may have a start time T1 and an end time T2.

[0079] In some examples, each segment 210 may begin with an initial I-frame and / or header 225 that indicates the start of a time when each segment 210 may be decoded by the decoder(s) of the second computing system(s) and / or a starting boundary 215 at which each segment 210 may be decoded by the decoder(s) of the second computing system(s). The initial I-frame and / or header 225 may also indicate one or more additional times and / or additional boundaries 230a-230c within each segment 210 that indicate locations at which each segment 210 may be decoded and / or locations at which the second computing system(s) may begin decoding each segment 210. In a non-limiting example, segment 210c may additionally be decoded at 230a, 230b, and / or 230c.

[0080] In various embodiments, the second computing system(s) may transition or switch between the one or more ABR streams 205 at any segment start boundary 215. For example, the second computing system(s) may switch between the one or more live ABR streams 205 to change the resolution (e.g., 8K, 4K, HD, SD, etc.), bit rate (e.g., 100 Kbps, 500 Kbps, 1 Mbps, 5 Mbps, 10 Mbps, etc.), or codec (e.g., H.263, H.264, H.265, H.266, MPEG-1, MPEG-2, VP8, VP9, ​​AAC, AV1, MP3, MP4, Theora, etc.) of the one or more live ABR streams 205.

[0081] In operation, a first computing system, one or more master encoders, and / or one or more media content sources may convert a live media content stream into one or more live ABR streams 205. The one or more live ABR streams 205 may then be divided into one or more segments 210. Next, the one or more master encoders may encode the one or more live ABR streams 205 for transmission to a second computing system(s).

[0082] The second computing system(s) may request and receive the one or more live ABR streams 205 from the first computing system(s), the one or more master encoders, and / or the one or more media content sources. Upon receiving the one or more live ABR streams 205 from the one or more master encoders, the one or more decoders of the second computing system(s) may decode and display the live media content associated with the one or more live ABR streams 205 at the decodable start boundaries 215 of the one or more segments 210.

[0083] In some cases, the decoder of the second computing system(s) may switch between the one or more ABR streams 205 at any segment start boundary 215. In various embodiments, the second computing system(s) may switch between the one or more live ABR streams 205 at one or more starting segment boundaries 215 when the second computing system(s) determine that an improved resolution, bit rate, or codec is available.

[0084] In a non-limiting example, Figure 2 As shown at line “A” of , if the second computing system(s) determine that 4K is available for a particular live media content stream, then the second computing system(s) may switch between segment 210a of ABR stream 205c (which may be an SD ABR stream) to segment 210b of ABR stream 205a (which may be a 4K ABR stream) at end segment boundary 220a, start boundary 215b, and time T3.

[0085] In various embodiments, the user of the second computing system(s) may be not at a segment boundary (eg, the start segment boundary 215 and / or the end segment boundary 220) at a time T n1 and / or time T n2 Request live media content streaming. This request is made by Figure 2 The request may be, but is not limited to, an initial request to receive a live media content stream (e.g., to turn on a display device, open an application, and / or the like) or a channel change request to change the channel to a live media content stream and / or the like.

[0086] To service the request when the live media content stream is not at a segment boundary, the second computing system(s) may determine that the live media content and / or one or more ABR streams 205 are not at a starting segment boundary 215. Based on determining that the live media content and / or one or more ABR streams 205 are not at a starting segment boundary 215, the second computing system(s) may request a segment 210 toward the starting segment boundary 215, decode the segment 210 from the starting segment boundary 215, and fast forward and / or speed up the display of the decoded segment until the decoded ABR stream 205 catches up with the real-time or live media content stream.

[0087] In a non-limiting example, when the user(s) of the second computing system are not at a segment boundary (represented by line "B") at time T n1 When requesting a live media content stream, the second computing system(s) may request segment 210b toward starting segment boundary 215b, decode segment 210b from starting segment boundary 215b, and fast-forward and / or speed up the display of decoded segment 210b until decoded ABR stream 205b catches up with the real-time or live media content stream. In some cases, the fast-forward and / or speed-up of the display of decoded segment 210b may be imperceptible to a user of the second computing system. The fast-forward and / or speed-up of ABR stream 205b may be 1.25 times, 2 times, and / or the like, of the live media content stream. By fast-forwarding and / or speeding up the display of decoded segment 210b, channel changes or requests for live channels can be faster without increasing end-to-end latency for viewers of the live media content.

[0088] Alternatively, to service the request when the live media content stream is not at a segment boundary, the second computing system(s) may determine that the live media content stream and / or the one or more ABR streams 205 are not at a starting segment boundary 215. Based on determining that the media content and / or the one or more ABR streams 205 are not at a starting segment boundary 215, the second computing system(s) may request a segment 210 toward the starting segment boundary 215 and process the initial I-frame and / or header 225 of the segment 210 to determine whether one or more additional decodable boundaries 230 exist within the one or more segments 210. Based on determining that the one or more additional decodable boundaries 230 exist within the one or more segments 210, the second computing system(s) may determine the closest additional decodable boundary of the live media content stream and begin decoding and displaying the segment at the closest additional decodable boundary. In some cases, if the additional decodable boundary is still behind the real-time media content stream, the second computing system(s) may fast forward and / or speed up the display of the decoded segments until the decoded ABR stream catches up to the real-time media content stream.

[0089] In a non-limiting example, when a user of the second computing system(s), user interface device(s), or user device(s), and / or the like is not at a segment boundary (represented by line “C”) at time T n2 When requesting live media content stream, (several) second computing systems can process the initial I frame and / or header 225 of segment 210c to determine whether there are one or more extra decodable boundaries 230a to 230c in segment 210c. Next, (several) second computing systems can determine the extra decodable boundary closest to the real-time media content stream. In this non-limiting example, the nearest decodable boundary is 230b. Based on determining the nearest decodable boundary 230b, (several) second computing systems can start to decode segment 210c and start to display the segment 210c at the nearest extra decodable boundary 230b. In some cases, if extra decodable boundary 230b is still after the real-time media content stream, (several) second computing systems can make the display of decoded segment 210c fast forward and / or accelerate until the decoded ABR stream 205c catches up with the real-time or live media content stream. By requesting additional decodable boundaries 230b, channel changes or requests for live channels can be faster without increasing end-to-end delay for viewers of the live media content.

[0090] Alternatively or additionally, the following Figures 3 to 5 One or more other methods for servicing requests when a live media content stream is not at a segment boundary are described in more detail.

[0091] Steering Figure 3 , Figure 3 FIG. 2 is a diagram illustrating an embodiment for implementing one or more primary adaptive bitrate streams 305 including one or more segments 310 and one or more secondary adaptive bitrate streams 325 including one or more sub-segments 330 according to various embodiments. Figure 3 This is intended to provide an illustrative perspective on the implementation of one or more primary adaptive bitrate streams 305 and one or more secondary adaptive bitrate streams 325 and is not limited to such functionality, but is applicable to the above description of Figure 1 and 2 etc. or below about Figure 1 Some (if not all) of the functionality described in 7 etc.

[0092] Figure 3 Depicts one or more live primary adaptive bitrate ("ABR") streams 305 that may be streamed on a first computing system(s) (e.g., Figure 1 (several) first computing systems 105), (several) encoders (eg, Figure 1 (several) main encoders 115 and / or (several) sub-encoders 120) and / or content sources (e.g., Figure 1content source 125) and second computing system(s) (e.g., Figure 1 (several) second computing systems, (several) user interface devices or (several) user devices 150) and / or (several) decoders (e.g., Figure 1 305 ). As live media content is broadcast, the first computing system, the encoder(s), and / or the content source may convert the live media content stream into one or more primary live ABR streams 305. In some embodiments, the one or more primary live ABR streams 305 may include, but are not limited to, resolutions of 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of the one or more primary live ABR streams 305 may also be distributed at a different bitrate. In some embodiments, the one or more primary live ABR streams 305 may be transmitted at 5 megabits per second ("Mbps"), 3Mbps, 1Mbps, 500 kilobits per second ("Kbps"), and / or the like. Each primary live ABR stream 305 may also be associated with a codec. Codecs may include, but are not limited to, H.263, H.264, H.265, H.266, MPEG-1, MPEG-2, VP8, VP9, ​​AAC, AV1, MP3, MP4, Theora, and / or the like.

[0093] In various cases, each live primary ABR stream can be divided into one or more segments 310a, 310b, and 310c (collectively, segments 310). Each segment 310 can be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment 310 can include a start segment boundary 315 and an end segment boundary 320. The start segment boundary 315 of each segment 310 can indicate the start time when the live media content stream(s) and / or one or more primary live ABR media content streams 305 can be decoded by the decoder(s) of the second computing system(s). The end segment boundary 320 can indicate the end time of the segment.

[0094] Figure 3Further depicted are one or more live secondary adaptive bitrate ("ABR") streams 325a-325i (collectively, live secondary adaptive bitrate ("ABR") streams 325), which may be transmitted between the first computing system(s), encoder(s), and / or content source(s) and the second computing system(s) and / or decoder(s). As live media content is broadcast, the first computing system(s), encoder(s), and / or content source(s) may convert the live media content stream(s) and / or the one or more primary ABR streams 305 into one or more secondary live ABR streams 325. Although the one or more primary ABR streams 305 are designated as primary and the one or more secondary ABR streams 325 are designated as secondary, the terms "primary" and "secondary" are merely used to distinguish between the media content streams and are not intended to indicate a preference for a particular ABR stream, the amount a particular ABR stream is used or requested, and / or the like. In some embodiments, the one or more secondary live ABR streams 325 may include, but are not limited to, formats or resolutions such as 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of the one or more secondary ABR streams 325 may also be delivered at a different bitrate. In some embodiments, the one or more secondary ABR streams 325 may be transmitted at 5 megabits per second ("Mbps"), 3 Mbps, 1 Mbps, 500 kilobits per second ("Kbps"), and / or the like. Each secondary live ABR stream 325 may also be associated with a codec. The codecs may include, but are not limited to, H.263, H.264, H.265, H.266, MPEG-1, MPEG-2, VP8, VP9, ​​AAC, AV1, MP3, MP4, Theora, and / or the like.

[0095] In various cases, each live secondary ABR stream 325 may be divided into one or more sub-segments 330a through 330i (collectively referred to as sub-segments 330). Each secondary ABR stream 325 may contain only one sub-segment 330. Alternatively, each secondary ABR stream 325 may contain two or more sub-segments 330. The one or more sub-segments 330a through 330i represent different ways of implementing the one or more sub-segments 330 and are not limited to Figure 3 The implementation scheme shown in .

[0096] Each subsegment 330 may be smaller than the length of a corresponding segment in the one or more segments 310. Each subsegment 330 may be divided into various sizes based on a predetermined amount of time, such as 1 second, 2 seconds, 5 seconds, 9 seconds, and / or the like. In a non-limiting example, if segment 210a is 10 seconds, subsegment 330a may be 8 seconds, subsegment 330b may be 5 seconds, and subsegment 330c may be 2 seconds, and / or the like.

[0097] In some instances, each subsegment 330 may include a starting subsegment boundary 335 and an ending subsegment boundary 340. In a non-limiting example, subsegment 330a may have a starting subsegment boundary 335a and an ending subsegment boundary 340a. The starting subsegment boundary 335 of each subsegment 330 may indicate a starting time when the live media content stream(s) and / or one or more secondary live ABR media content streams 325 may be decoded by the decoder(s) of the second computing system(s). The ending subsegment boundary 340 may indicate an ending time for the subsegment. In a non-limiting example, subsegment 330d may have a starting time T n1 and end time T3.

[0098] In various cases, one or more sub-segments 330 may have a starting sub-segment boundary 335 that is different from the corresponding starting segment boundary 315 of the corresponding segment 310, thereby forming one or more gaps 345 between the starting sub-segment boundary 335 and the corresponding starting segment boundary 315 of the corresponding segment. Alternatively or in addition, one or more sub-segments 330 may have an ending boundary 340 that is the same as the corresponding ending segment boundary 320 of the corresponding segment 310. Because there are one or more gaps 345 between the starting sub-segment boundary 335 and the corresponding starting segment boundary 315 of the corresponding segment 310, the one or more secondary live ABR streams 325 and / or the one or more sub-segments 330 may not be a continuous stream of live media content and the one or more secondary live ABR streams 325 and / or the one or more sub-segments 330 are transmitted unencrypted by the one or more secondary encoders. Alternatively or additionally, the one or more secondary live ABR streams 325 and / or the one or more sub-segments 330 may be transmitted at a lower resolution, lower bit rate, and / or lower efficiency or older codec than the one or more primary live ABR streams 305 and / or the one or more segments 310.

[0099] In a non-limiting example, the sub-segment 330a may have a starting sub-segment boundary 335a that is different from the corresponding starting segment boundary 315a of the corresponding segment 310a, thereby forming a gap 345 between the starting sub-segment boundary 335a and the corresponding starting segment boundary 315a of the corresponding segment 310a. Alternatively or in addition, the sub-segment 330a may have an ending boundary 340a that is the same as the corresponding ending segment boundary 320a of the corresponding segment 310a.

[0100] In some cases, the next subsegment start boundary of the next subsegment may occur a predetermined amount of time after the previous subsegment start boundary of the previous subsegment. In a non-limiting example, the next subsegment start boundary 335b of the next subsegment 330b may occur a predetermined amount of time after the previous subsegment start boundary 335a of the previous subsegment 330a. In this way, one or more subsegments 330 of one or more secondary ABR streams 325 can be interleaved and allow for faster retrieval of the live media content stream.

[0101] In some examples, each sub-segment 330 may begin with an initial I-frame and / or header 350 that indicates a time start when each sub-segment 330 may begin to be decoded by the decoder(s) of the second computing system(s) and / or a starting boundary 335 at which each sub-segment 330 may begin to be decoded by the decoder(s) of the second computing system(s). The initial I-frame and / or header 350 may also indicate one or more additional times and / or additional boundaries 355 within each sub-segment 330 at which each sub-segment 310 may begin to be decoded. In a non-limiting example, segment 330i may additionally begin to be decoded at an additional boundary 355.

[0102] In some examples, each of the one or more live secondary ABR streams 325 may be encoded by a single or separate secondary encoder. Additionally, in various cases, when one or more live secondary ABR streams 325 reach a corresponding end segment boundary 320, the single or separate secondary encoder may be released back to the encoder pool until one or more new segments and / or sub-segments need to be encoded.

[0103] In operation, the first computing system(s), one or more primary encoders, and / or one or more media content sources may convert a live media content stream into one or more primary live ABR streams 305. The one or more primary live ABR streams 305 may then be divided into one or more segments 310. Next, the one or more primary encoders may encode the one or more live primary ABR streams 305 for transmission to the second computing system(s).

[0104] The second computing system(s) may request the one or more primary live ABR streams 305 from the first computing system(s), the one or more primary encoders, and / or the one or more media content sources. In various embodiments, a user of the second computing system(s) may request the one or more primary live ABR streams 305 from the first computing system(s), the one or more primary encoders, and / or the one or more media content sources. n1 Request live media content streaming. This request is made by Figure 3 It is represented by the line "A" in the figure.

[0105] To service a request when the live media content stream and / or primary live ABR stream 305 is not at a segment boundary 315 and / or 320, the second computing system(s) may determine that the media content and / or one or more primary live ABR streams 305 are not at a starting segment boundary 315. Based on the determination that the media content and / or one or more primary live ABR streams 305 are not at a starting segment boundary, the second computing system(s) may determine whether one or more secondary ABR streams 325 are available to one or more secondary encoders, the first computing system(s), and / or the media content source. Based on the determination that one or more secondary ABR streams 325 are available, the second computing system(s) may determine one or more decodable sub-segment starting boundaries 335 and / or additional boundaries 355 that are closest to the live media content stream. Subsequently, the second computing system(s) may decode and display the sub-segment 330 having the starting sub-segment boundary 335 and / or additional boundaries 355 that are closest to the live media content stream. In some cases, if the secondary live ABR stream 325 is still behind the real-time media content stream, the second computing system(s) may fast forward and / or speed up the display of the decoded sub-segments until the decoded secondary ABR stream catches up with the real-time media content stream. By requesting one or more secondary live ABR streams 325, channel changes or requests for live channels may be faster without increasing end-to-end latency for viewers of the live media content.

[0106] In a non-limiting example, Figure 3 The line "A" indicates that the second computing system(s) may be started at the starting time T n1 A request for live media content is received and it is determined that the media content and / or primary live ABR stream 305 is not at a starting segment boundary 315b. Based on determining that the live media content stream and / or primary live ABR stream 305 is not at a starting segment boundary 315, the second computing system(s) may determine whether one or more secondary ABR streams 325 are available to one or more secondary encoders, the first computing system(s), and / or the media content source. Based on determining that one or more secondary ABR streams 325 are available, the second computing system(s) may determine one or more decodable subsegment starting boundaries 335 closest to the live media content stream and decode and display the subsegment 330d having the starting subsegment boundary 335d closest to the live media content stream. In some cases, if the secondary live ABR stream 325d is still behind the live media content stream, the second computing system(s) may fast forward and / or speed up the display of the decoded subsegment 330d until the decoded secondary ABR stream 325d catches up with the live media content stream.

[0107] In various embodiments, one or more decoders may switch between one or more secondary ABR streams 325 at any ending subsegment boundary 340 and between one or more primary ABR streams at any segment starting boundary 315. In some cases, the second computing system(s) may determine when one or more subsegments 330 reach an ending subsegment boundary 340 and switch from the one or more secondary ABR streams 325 to the one or more primary ABR streams 305. When the second computing system(s) switch from the one or more secondary ABR streams 325 to the one or more primary ABR streams 305, one or more secondary encoders may be released back to the encoder pool.

[0108] In a non-limiting example, Figure 3 Line "B" in FIG. 3 shows that the second computing system(s) can determine when subsegment 330d reaches end subsegment boundary 340d. Based on determining that subsegment 330d has reached end subsegment boundary 340d, the second computing system(s) can switch from secondary ABR stream 325d to primary ABR stream 305. In this manner, secondary ABR stream 325 acts as a dedicated side channel until the second computing system(s) can switch to primary ABR stream 305.

[0109] In some cases, one or more secondary live ABR streams 325 and / or one or more subsegments 330 may be received by the second computing system(s) at a lower resolution, lower bitrate, and / or lower efficiency, or an older codec than the one or more primary live ABR streams 305 and / or one or more segments 310. In some cases, based on determining that a subsegment 330d has reached an ending subsegment boundary 340d, the second computing system(s) may switch from the secondary ABR stream 325d having the lower resolution, lower bitrate, and / or lower efficiency, or an older codec to the primary ABR stream 305 having the higher resolution, higher bitrate, and / or higher efficiency, or a new codec. By requesting the secondary live ABR stream of the lower resolution, lower bitrate, and / or lower efficiency, or an older codec, channel changes or requests for live channels may be faster without increasing end-to-end latency for viewers of the live media content.

[0110] Alternatively or additionally, the following Figure 4 One or more other methods for servicing requests when a live media content stream is not at a segment boundary are described in more detail.

[0111] Steering Figure 4 , Figure 4 FIG. 4 is a diagram illustrating an embodiment for implementing one or more primary adaptive bitrate streams 405 including one or more segments 410 and one or more secondary adaptive bitrate streams 425 including one or more sub-segments 430 according to various embodiments. Figure 4This is intended to provide an illustrative perspective on the implementation of one or more primary adaptive bitrate streams 405 and one or more secondary adaptive bitrate streams 425 and is not limited to such functionality, but is applicable to the above description of Figure 1 、 2 , 3, etc. or below regarding Figure 5 、 6 and some (if not all) of the functionality described in 7 et seq.

[0112] Figure 4 Depicts one or more live master adaptive bitrate ("ABR") streams 405 that may be streamed on a first computing system(s) (e.g., Figure 1 (several) first computing systems 105), (several) encoders (eg, Figure 1 (several) main encoders 115 and / or (several) sub-encoders 120) and / or content sources (e.g., Figure 1 content source 125) and second computing system(s) (e.g., Figure 1 (several) second computing systems, (several) user interface devices or (several) user devices 150) and / or (several) decoders (e.g., Figure 1 As live media content is broadcast, the first computing system, the encoder(s) and / or the content source (e.g., Figure 1 The content source 125 may convert the live media content stream into one or more primary ABR streams 405. In some embodiments, the one or more primary ABR streams 405 may include, but are not limited to, resolutions or formats such as 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of the one or more primary ABR streams 405 may also be delivered at a different bit rate and / or using a different codec.

[0113] In various cases, each primary live ABR stream 405 can be divided into one or more segments 410a, 410b, and 410c (collectively, segments 410). Each segment 410 can be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment 410 can include a start segment boundary 415 and an end segment boundary 420. The start segment boundary 415 of each segment 410 can indicate the start time when the live media content stream(s) and / or one or more primary live ABR media content streams 405 can be decoded by the decoder(s) of the second computing system(s). The end segment boundary 420 can indicate the end time of the segment 410.

[0114] Figure 4 Further depicted are one or more live secondary adaptive bit rate ("ABR") streams 425a-425c that may be streamed on a first computing system(s) (e.g., Figure 1(several) first computing systems 105), (several) encoders (eg, Figure 1 (several) main encoders 115 and / or (several) sub-encoders 120) and / or content sources (e.g., Figure 1 content source 125) and second computing system(s) (e.g., Figure 1 (several) second computing systems, (several) user interface devices or (several) user devices 150) and / or (several) decoders (e.g., Figure 1 The live media content is transmitted between the decoder(s) 165 of the first computing system. As the live media content is broadcast, the first computing system, the encoder(s), and the content source may convert the live media content stream and / or the one or more primary ABR streams 405 into one or more secondary ABR streams 425. The one or more secondary ABR streams 425 may be one or more side channels separate from the one or more primary ABR streams 405. In some embodiments, the one or more secondary ABR streams 425 may include, but are not limited to, resolutions of 8K, 4K, high definition ("HD"), standard definition ("SD"), and / or the like. Each resolution of the one or more secondary ABR streams 425 may also be delivered at a different bit rate and / or with a different codec.

[0115] In various cases, each live secondary ABR stream 425 may be divided into one or more sub-segments 430a through 430s (collectively referred to as sub-segments 430). Each secondary ABR stream 425 may contain only one sub-segment 430. Alternatively, each secondary ABR stream 425 may contain two or more sub-segments 430. The one or more sub-segments 430a through 430s represent different ways of implementing the one or more sub-segments 430 and are not limited to Figure 4 The implementation scheme shown in .

[0116] Each sub-segment 430 may be smaller than the length of a corresponding segment in the one or more segments 410. Each sub-segment 430 may be divided into various sizes based on a predetermined amount of time (eg, 1 second, 2 seconds, 5 seconds, 9 seconds, and / or the like).

[0117] In some examples, each sub-segment 430 may include a starting sub-segment boundary 435 and an ending sub-segment boundary 440. The starting sub-segment boundary 435 of each sub-segment 430 may indicate a starting time when the decoder(s) of the second computing system(s) may decode the live media content stream(s) and / or the one or more secondary live ABR media content streams 425. The ending sub-segment boundary 440 may indicate an ending time for the sub-segment.

[0118] In some cases, one or more subsegments 430 may be evenly or unevenly divided into one or more consecutive subsegments of one or more segments 410. In a non-limiting example, if segment 410a is 10 seconds, subsegment 430a may be 3.33 seconds, subsegment 430b may be 3.33 seconds, and subsegment 430c may be 3.33 seconds, and / or the like. In another non-limiting example, if segment 410a is 10 seconds, subsegment 430a may be 2 seconds, subsegment 430b may be 3 seconds, and subsegment 430c may be 5 seconds, and / or the like.

[0119] In some instances, one or more subsegments 430 may have a first subsegment having a starting subsegment boundary 435 that is the same as the corresponding starting segment boundary 415 of the corresponding segment 410 and a second subsegment having an ending subsegment boundary 440 that is the same as the corresponding ending segment boundary 420 of the corresponding segment 410. In a non-limiting example, a first subsegment 430a may have a starting subsegment boundary 435a that is the same as the corresponding starting segment boundary 415a of the corresponding segment 410a, and a second subsegment 430c may have an ending subsegment boundary 440c that is the same as the corresponding ending segment boundary 420a of the corresponding segment 410a.

[0120] In some instances, one or more consecutive subsegments may not have a first subsegment whose starting subsegment boundary 435 is identical to the corresponding starting segment boundary 415 of the corresponding segment 410 and / or a second subsegment whose ending subsegment boundary 440 is identical to the corresponding ending segment boundary 420 of the corresponding segment 410. In a non-limiting example, consecutive subsegments 430h and 430i may not have a first subsegment 430h whose starting subsegment boundary 435h is identical to the corresponding starting segment boundary 415a of the corresponding segment 410a and / or a second subsegment 430i whose ending subsegment boundary 440i is identical to the corresponding ending segment boundary 420a of the corresponding segment 410a.

[0121] In some instances, one or more consecutive subsegments may not have a first subsegment whose starting subsegment boundary 435 is identical to the corresponding starting segment boundary 415 of the corresponding segment 410 and may have a second subsegment whose ending subsegment boundary 440 is identical to the corresponding ending segment boundary 420 of the corresponding segment 410. In a non-limiting example, one or more consecutive subsegments may not have a first subsegment 430j whose starting subsegment boundary 435j is identical to the corresponding starting segment boundary 415b of the corresponding segment 410b and may have a second subsegment 430k whose ending subsegment boundary 440k is identical to the corresponding ending segment boundary 420b of the corresponding segment 410b.

[0122] In various embodiments not shown, one or more consecutive subsegments may have a first subsegment whose starting subsegment boundary 435 is the same as the corresponding starting segment boundary 415 of the corresponding segment 410 and may not have a second subsegment whose ending subsegment boundary 440 is the same as the corresponding ending segment boundary 420 of the corresponding segment 410.

[0123] Alternatively, in some cases, one or more subsegments 430 may be one or more discontinuous subsegments located between the starting segment boundary 415 and the ending segment boundary 420. In a non-limiting example, discontinuous subsegments 430n and 430o may be located between the starting segment boundary 415a and the ending segment boundary 420a of segment 410a. In some cases, at least one of the discontinuous subsegments may have the same starting subsegment boundary 435 and / or the same ending subsegment boundary 440 as the corresponding segment 410. In some instances, one or more discontinuous subsegments may not have a first subsegment whose starting subsegment boundary 435 is the same as the corresponding starting segment boundary 415 of the corresponding segment 410 and / or a second subsegment whose ending subsegment boundary 440 is the same as the corresponding ending segment boundary 420 of the corresponding segment 410.

[0124] In some instances, one or more discontinuous subsegments may not have a first subsegment 430 whose starting subsegment boundary 435 is identical to the corresponding starting segment boundary 415 of the corresponding segment 410 and may have a second subsegment whose ending subsegment boundary 440 is identical to the corresponding ending segment boundary 420 of the corresponding segment 410. In a non-limiting example, one or more discontinuous subsegments 430p and 430q may not have a first subsegment 430p whose starting subsegment boundary 435p is identical to the corresponding starting segment boundary 415b of the corresponding segment 410b and may have a second subsegment 430q whose ending subsegment boundary 440q is identical to the corresponding ending segment boundary 420b of the corresponding segment 410b.

[0125] Alternatively, in other examples, one or more continuous subsegments and / or discontinuous subsegments may overlap with the starting boundary 415 of the next segment or the ending boundary 420 of the corresponding segment in the one or more segments 410. In a non-limiting example, subsegment 430f overlaps with the ending segment boundary 420b of segment 410b and / or the starting segment boundary 415 of the next segment 410c, subsegment 430m overlaps with the ending segment boundary 420c of segment 410c and / or the starting segment boundary (not shown) of the next segment, and subsegment 430s overlaps with the ending segment boundary 420c of segment 410c and / or the starting segment boundary (not shown) of the next segment.

[0126] In some examples, one or more consecutive and / or discontinuous sub-segments may be transmitted unencrypted by one or more secondary encoders. Alternatively or in addition, one or more secondary live ABR streams 425 and / or one or more sub-segments 430 may be transmitted at a lower resolution, lower bit rate, and / or lower efficiency or older codec than one or more primary live ABR streams 405 and / or one or more segments 410.

[0127] In some examples, each of the one or more secondary live ABR streams 425 may be encoded by a single or separate secondary encoder. Furthermore, in various cases, when one or more secondary live ABR streams 425 reach a corresponding end subsegment boundary 440, the single or separate secondary encoder may be released back to the encoder pool until one or more new segments and / or subsegments need to be encoded. Alternatively or in addition, one or more consecutive subsegments may be encoded by the same encoder. In a non-limiting example, subsegments 430a to 430g may be encoded by the same encoder.

[0128] In operation, first computing system(s), one or more primary encoders, and / or one or more media content sources may convert a live media content stream into one or more primary live ABR streams 405. The one or more primary live ABR streams 405 may then be divided into one or more segments 410. Next, the one or more primary encoders may encode the one or more live primary ABR streams 405 for transmission to second computing system(s) and / or decoder(s).

[0129] The second computing system(s) may request from the one or more primary encoders one or more primary live ABR streams 405. In various embodiments, users of the second computing system(s) may request live media content streams at times that are not at segment boundaries (e.g., starting segment boundary 415 and / or ending segment boundary 420).

[0130] To service the request when the live media content stream and / or the primary live ABR stream 405 is not at a segment boundary 415 and / or 420, the second computing system(s) may determine that the media content and / or the one or more primary live ABR streams 405 are not at a starting segment boundary 415. Based on the determination that the media content and / or the one or more primary live ABR streams 405 are not at a starting segment boundary, the second computing system(s) may determine whether one or more secondary ABR streams 425 are available to the one or more secondary encoders. Based on the determination that one or more secondary ABR streams 425 are available, the second computing system(s) may determine the one or more decodable sub-segment starting boundaries 435 closest to the live media content stream and decode and display the sub-segment 430 having the starting sub-segment boundary 435 closest to the live media content stream. In some cases, if the secondary live ABR stream 425 is still behind the real-time media content stream, the second computing system(s), user interface device(s), or user device(s), and / or the like may fast forward and / or speed up the display of the decoded sub-segments until the decoded secondary ABR stream 425 catches up with the real-time media content stream.

[0131] In a non-limiting example, Figure 4 The line "A" indicates that the second computing system(s) may be started at the starting time T n1A request for live media content is received and it is determined that the media content and / or primary live ABR stream 405 is not at a starting segment boundary 415b. Based on the determination that the media content and / or primary live ABR stream 405 is not at a starting segment boundary 415, the second computing system(s) may determine whether one or more secondary ABR streams 425 are available to one or more secondary encoders. Based on the determination that one or more secondary ABR streams 425 are available, the second computing system(s) may determine one or more decodable sub-segment starting boundaries 435 closest to the live media content stream and decode and display the sub-segments 430e, 430k, and / or 430q having the starting sub-segment boundaries 435e, 435k, and / or 435q closest to the live media content stream. In some cases, if the secondary live ABR stream 425a is still behind the real-time media content stream, the second computing system(s) may fast forward and / or speed up the display of the decoded sub-segments 430e until the decoded secondary ABR stream 425a catches up with the real-time media content stream.

[0132] In various embodiments, one or more decoders may switch between one or more secondary ABR streams 425 at any starting subsegment boundary 435 and / or ending subsegment boundary 440 and between one or more primary ABR streams at any starting segment boundary 415. In some cases, the second computing system(s) may determine when one or more subsegments 430 reach an ending subsegment boundary 440 and switch from the one or more secondary ABR streams 425 to the one or more primary ABR streams 405. In some cases, the second computing system(s) may determine when one or more subsegments 430 reach an ending subsegment boundary 440 that is the same as the starting segment boundary 415 of the corresponding segment and switch from the one or more secondary ABR streams 425 to the one or more primary ABR streams 405. When the second computing system(s) switch from the one or more secondary ABR streams 425 to the one or more primary ABR streams 405, one or more secondary encoders may be released back to the encoder pool.

[0133] In some instances, one or more subsegments 430 may overlap with the starting boundary 415 of the next segment or the ending boundary 420 of the corresponding segment in the one or more segments 410. Based on determining that the one or more subsegments 430 overlap with the starting boundary 415 of the next segment or the ending boundary 420 of the corresponding segment, the second computing system(s) may determine that one or more overlapping subframes of the one or more subsegments overlap with one or more segment frames of the next segment in the one or more segments. The second computing system(s) may determine that the subsegments and the one or more frames of the segments overlap based on a time or timestamp associated with each frame in the segment and the subsegments. In some cases, the second computing system(s) may discard the one or more overlapping subframes of the one or more subsegments 430 and / or the one or more overlapping segment frames of the next segment. The one or more overlapping subframes and / or segment frames may be discarded before or after the one or more overlapping subframes and / or segment frames are decoded.

[0134] In a non-limiting example, sub-segment 430f may overlap with the starting boundary 415c of the next segment 410c or the ending boundary 420b of the corresponding segment 410b. Based on determining that sub-segment 430f overlaps with the starting segment boundary 415c of the next segment 410c or the ending segment boundary 420b of the corresponding segment 410b, the second computing system(s) may determine one or more overlapping subframes of sub-segment 430f and / or overlapping segment frames of the next segment 410c. In some cases, the decoder may discard the one or more overlapping subframes of sub-segment 430f and / or the one or more overlapping segment frames of the next segment 410c. In some cases, the decoder may discard the one or more overlapping subframes of sub-segment 430f and / or the one or more overlapping segment frames of the next segment 410c based on determining that the overlapping subframes of sub-segment 430f and / or the one or more overlapping segment frames of the next segment 410c are the same.

[0135] In some cases, at or after the second computing system(s) request the secondary live ABR stream 425 that is closest to the real-time media content stream, the second computing system(s) may also request the primary live ABR stream 405 that includes the next segment in the one or more segments 410 when it becomes available. Alternatively, the second computing system(s) may determine that the at least one primary live ABR stream 405 that includes the next segment in the one or more segments 410 will not be available before or when the one or more sub-segments 430 reach the ending sub-segment boundary 440.

[0136] When at least one primary live ABR stream 405 including the next of the one or more segments 410 becomes available, the second computing system(s) may receive the at least one primary live ABR stream 405 including the next of the one or more segments 410. In some cases, the secondary live ABR stream 425 may be at an ending sub-segment boundary 440 and the primary live ABR stream 405 may be at a starting segment boundary 415. In those cases, the second computing system(s) may switch from the secondary live ABR stream 425 to the primary live ABR stream 405 at the ending sub-segment boundary 440 and the starting segment boundary 415. In a non-limiting example, the second computing system(s) may currently be displaying sub-segment 430k and requesting the next segment 410c of the primary live ABR stream 405. The second computing system(s) may switch from the secondary ABR stream 425b to the primary ABR stream 405 at the ending sub-segment boundary 440k and the starting segment boundary 415c.

[0137] Alternatively, in other cases, when at least one primary live ABR stream 405 including a next segment of the one or more segments 410 becomes available, the second computing system(s) may determine that one or more sub-segments 430 currently being decoded overlap with the start boundary 415 of the next segment of the one or more segments 410 or the end boundary 420 of the corresponding segment. In some cases, the one or more secondary live ABR streams 425 may be synchronized (e.g., simultaneously streaming the same frames in the segment 410 and the sub-segment 430) and / or desynchronized (e.g., not simultaneously streaming the same frames in the sub-segment 430 and the next segment 510) with the one or more primary live ABR streams 405, and the second computing system(s) may discard the one or more synchronized and / or desynchronized overlapping sub-frames of the one or more sub-segments 430 or the one or more synchronized and / or desynchronized overlapping segment frames of the next segment and switch to the at least one primary ABR stream 405.

[0138] In some embodiments, if the second computing system(s) is currently decoding subsegment 430f, the second computing system(s) may determine whether one or more subframes of subsegment 430f precede or follow one or more segment frames of the next segment 410c. Based on determining that subsegment 430f precedes one or more segment frames of the next segment 410c, the second computing system(s) may slow down the display of subsegment 430f and / or speed up the decoding of the next segment 410c until the next segment 410c catches up with subsegment 430f. Once segment 410c catches up with subsegment 430f, the decoder may switch from the secondary live ABR stream 425 to the primary live ABR stream 405.

[0139] Alternatively, based on determining that subsegment 430f is one or more segment frames after next segment 410c, the second computing system(s) may accelerate the decoding and display of subsegment 430f until subsegment 430f catches up with segment 410c. Once subsegment 430f catches up with segment 410c, the second computing system(s) may switch from secondary live ABR stream 425 to primary live ABR stream 405. In some cases, the second computing system(s) may accelerate the decoding and display of subsegment 430f until subsegment 430f reaches end subsegment boundary 440f, switch to next segment 410c, and accelerate the decoding and display of next segment 410c until next segment 410c catches up with the real-time media content.

[0140] Alternatively, when at least one primary live ABR stream 405 comprising the next segment of one or more segments 410 is unavailable, the second computing system(s) may slow down the display of the one or more sub-segments 430 until the next segment becomes available. Alternatively, the second computing system(s) may repeat one or more previous sub-frames of the one or more sub-segments 430 until one or more live or real-time frames of the next segment are available. In various examples, the live and / or real-time frames may have a slight time delay (e.g., 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds, and / or the like) between the time the live content appears and the time the live frames are displayed in the live media stream. In a non-limiting example, the second computing system(s), user interface device(s), user device(s), and / or the like may currently be decoding sub-segment 430i. The second computing system(s), user interface device(s), user device(s), and / or the like may determine that a period of time 410b will be unavailable when a subsegment 430i reaches an end subsegment boundary 440i. Based on the determination that a segment 410b will be unavailable when a subsegment 430i reaches an end subsegment boundary 440i, the second computing system(s) may slow down the display of the subsegment 430i until the segment 410b becomes available, or repeat the display of one or more previous subframes of the subsegment 430i until one or more real-time frames of the next segment become available. Once the segment 410b becomes available, the decoder may switch from the secondary ABR stream 425b to the primary ABR stream 405.

[0141] Alternatively or additionally, the following Figure 5 One or more other methods for servicing requests when a live media content stream containing advertisements is not at a segment boundary are described in greater detail.

[0142] Steering Figure 5 , Figure 5 is a diagram illustrating an embodiment 500 for implementing advertisements in one or more primary adaptive bitrate streams 505 including one or more segments 510 and / or one or more secondary adaptive bitrate streams 525 including one or more subsegments 530 according to various embodiments. Figure 5 This is intended to provide an illustrative perspective on the implementation of one or more primary adaptive bitrate streams 505 and one or more secondary adaptive bitrate streams 525 and is not limited to such functionality, but is applicable to the above description of Figure 1 、 2 , 3, 4, etc. or the following about Figure 6 and some (if not all) of the functionality described in 7 et seq.

[0143] Figure 5 Depicts one or more live primary adaptive bitrate ("ABR") streams 505 that may be streamed on a first computing system(s) (e.g., Figure 1 (several) first computing systems 105), (several) encoders (eg, Figure 1 (several) main encoders 115 and / or (several) sub-encoders 120) and / or content sources (e.g., Figure 1 content source 125) and second computing system(s) (e.g., Figure 1 (several) second computing systems, (several) user interface devices or (several) user devices 150) and / or (several) decoders (e.g., Figure 1 (several) decoders 165) are transmitted between them.

[0144] In various cases, each primary live ABR stream 505 can be divided into one or more segments 510a, 510b, and 510c (collectively, segments 510). In some cases, the primary ABR stream 505 can include one or more advertisement segments 510b. Each segment 510 can include a starting segment boundary 515 and an ending segment boundary 520. In some cases, the starting segment boundary 515b of the advertisement segment 510b can indicate the start time of one or more advertisements in the one or more primary live ABR streams 505 and / or the one or more secondary live ABR streams 525.

[0145] Figure 5 Further depicted are one or more live secondary adaptive bitrate ("ABR") streams 525a and 525b (collectively, secondary live ABR streams 525) that can be transmitted between the first computing system(s), encoder(s) and / or content source(s) and the second computing system(s) and / or decoder(s). As live media content is broadcast, the first computing system(s), encoder(s) and / or content source(s) can convert the live media content stream and / or the one or more primary live ABR streams 505 into one or more secondary live ABR streams 525. The one or more secondary ABR streams 525 can be one or more side channels separate from the one or more primary ABR streams 505.

[0146] In various cases, each live secondary ABR stream 525 can be divided into one or more sub-segments 530a-530n (collectively referred to as sub-segments 530). In some cases, one or more advertisement sub-segments 530d-530f and / or 530k and 530l and / or the like can be one or more advertisement sub-segments. Each sub-segment 530 can be less than the length of the corresponding segment of the one or more segments 510.

[0147] In some examples, each sub-segment 530 may include a starting sub-segment boundary 535 and an ending sub-segment boundary 540. The starting sub-segment boundary 535 of each sub-segment 530 may indicate a starting time when the decoder(s) of the second computing system(s) may decode the live media content stream(s) and / or the one or more secondary live ABR media content streams 525. The ending sub-segment boundary 540 may indicate an ending time for the sub-segment 530.

[0148] In operation, a first computing system, one or more primary encoders, and / or one or more media content sources may convert a live media content stream into one or more primary live ABR streams 505. The one or more primary live ABR streams 505 may then be divided into one or more segments 510. Next, the one or more primary encoders may encode the one or more live primary ABR streams 505 for transmission to (several) second computing systems. In some cases, the one or more primary encoders may encode one or more advertisement segments 510b into the one or more live primary ABR streams 505. Alternatively or in addition, one or more secondary encoders may encode one or more advertisement sub-segments 530d to 530f and / or 530k and 530l into one or more live secondary ABR streams 525 for transmission to (several) second computing systems.

[0149] The second computing system(s) may request one or more primary live ABR streams 505 from one or more primary encoders. In various embodiments, a user of the second computing system(s) may request a live media content stream at a time that is not at a segment boundary (e.g., start segment boundary 515 and / or end segment boundary 520). The request may be, but is not limited to, an initial request to receive a live media content stream (e.g., to turn on a display device, open an application, and / or the like) or a channel change request to change the channel to a live media content stream and / or the like. Alternatively, when the primary ABR stream 505 reaches an advertisement start boundary 515b, the second computing system(s) may request one or more advertisement sub-segments 530d-530f and / or 530k and 530l from one or more secondary ABR streams 525. The one or more advertisement sub-segments 530d-530f and / or 530k and 530l may be one or more local advertisements, one or more national advertisements, one or more international advertisements, and / or the like.

[0150] To service the request when the live media content stream and / or primary live ABR stream 505 is not at segment boundaries 515 and / or 520 and / or when the primary ABR stream 505 reaches the advertisement start segment boundary 515b, the second computing system(s) may determine whether one or more secondary ABR streams 525 exist for the one or more secondary encoders. Based on determining the presence of the one or more secondary ABR streams 525, the second computing system(s) may determine the one or more decodable sub-segment start boundaries 535 closest to the live media content stream and decode and display the sub-segment 530 having the starting sub-segment boundary 535 closest to the live media content stream.

[0151] In some examples, advertisement sub-segment 530f may overlap with the starting boundary 515c of the next segment 510c in the one or more segments 510 or the ending boundary 520b of the corresponding segment 510b. Based on determining that advertisement sub-segment 530f overlaps with the starting boundary 515c of the next segment 510c in the one or more segments 510 or the ending boundary 520b of the corresponding segment 510b, the second computing system(s) may determine that one or more overlapping sub-frames of advertisement sub-segment 530f overlap with one or more segment frames of the next segment 510c. The second computing system(s) may determine that advertisement sub-segment 530f overlaps with one or more segment frames of the next segment 510c based on a time or timestamp associated with each segment and sub-segment. In some cases, the second computing system(s) may discard the one or more overlapping sub-frames of advertisement sub-segment 530f and / or one or more segment frames of the next segment 510c. The one or more overlapping sub-frames and / or segment frames may be discarded before or after the one or more overlapping sub-frames and / or segment frames are decoded.

[0152] In some cases, when the second computing system(s) request the secondary ABR stream 525 that is closest to the real-time media content stream, the second computing system(s) may also request the primary ABR stream 505 that includes the next one of the one or more segments 510 when it becomes available. Alternatively, the second computing system(s) may determine that the at least one primary live ABR stream 505 that includes the next one of the one or more segments 410 will not be available before or when the one or more advertisement sub-segments 530d to 530f and / or 530k or 530l reach the ending sub-segment boundaries 540d to 540f and / or 540k or 540l.

[0153] When at least one primary ABR stream 505 including the next segment 510c of the one or more segments 510 becomes available, the second computing system(s) may receive the at least one primary ABR stream 505 including the next segment 510c of the one or more segments 510. In some cases, the secondary ABR stream 525 may be at an ending sub-segment boundary 540 and the primary ABR stream 505 may be at a starting segment boundary 515 (not shown). In those cases, the second computing system(s) may switch from the secondary ABR stream 525 to the primary ABR stream 505 at the ending sub-segment boundary and the starting segment boundary.

[0154] Alternatively, in other cases, when at least one primary ABR stream 505 including the next segment of the one or more segments 510 becomes available, the second computing system(s) may determine that the advertisement sub-segment 530f currently being decoded overlaps with the start boundary 515c of the next segment 510c of the one or more segments 510 or the end boundary 520b of the corresponding segment 510b. In some cases, the one or more secondary ABR streams 525 may be synchronized (e.g., simultaneously streaming the same frames in the advertisement sub-segment 530f and the next segment 510c) and / or desynchronized (e.g., not simultaneously streaming the same frames in the advertisement sub-segment 530f and the next segment 510c) with the one or more primary ABR streams 505. The second computing system(s) may discard one or more synchronized and / or desynchronized overlapping sub-frames of the advertisement sub-segment 530f or one or more synchronized and / or desynchronized overlapping segment frames of the next segment 510c and switch to the at least one primary ABR stream 505.

[0155] Alternatively, the second computing system(s) may determine whether one or more subframes of the advertisement subsegment 530f follow one or more segment frames of the next segment 510c. In other words, live media content may be available, but the advertisement has not yet ended and is still being broadcast. Based on determining that the advertisement subsegment 530f follows one or more segment frames of the next segment 510c, the second computing system(s) may accelerate the decoding and display of the advertisement subsegment 530f until the advertisement subsegment 530f catches up with the segment 510c. Once the advertisement subsegment 530f catches up with the segment 510c, the second computing system(s) may switch from the secondary ABR stream 525 to the primary ABR stream 505. In some cases, the second computing system(s) may accelerate the decoding and display of the advertisement subsegment 530f until the advertisement subsegment 530f reaches the ending subsegment boundary 540f, switch to the next segment 510c, and accelerate the decoding and display of the segment 510c until the next segment 510c catches up with the live media content.

[0156] Alternatively, when at least one primary ABR stream 505 including the next segment 510c of the one or more segments 510 is unavailable (e.g., when the advertisement completes before the live media content is available), the second computing system(s) may slow down the display of the one or more sub-segments until the next segment becomes available. Alternatively, the second computing system(s) may repeat one or more previous sub-frames of the one or more sub-segments until one or more real-time frames of the next segment are available. In a non-limiting example, the second computing system(s) may currently be decoding and displaying advertisement sub-segment 5301. The second computing system(s) may determine that time period 510c will be unavailable until advertisement sub-segment 5301 reaches end sub-segment boundary 5401. Based on determining that when advertisement sub-segment 5301 reaches end sub-segment boundary 5401, that segment 510c will be unavailable, the second computing system(s) may slow down the display of advertisement sub-segment 5301 until the next segment 510c becomes available, or repeat one or more previous sub-frames of sub-segment 5301 until one or more real-time frames of the next segment 510c become available. Once the next segment 510c becomes available, the second computing system(s) may switch from secondary ABR stream 525b to primary ABR stream 505.

[0157] Figure 6 is a flow chart illustrating a method 600 for implementing encoding of a live adaptive bitrate media content stream according to various embodiments. Although techniques and procedures are depicted and / or described in a certain order for illustrative purposes, it should be understood that certain procedures may be reordered and / or omitted within the scope of various embodiments. Figure 6 The illustrated method 600 may be performed by or with Figure 1 、 2 , 3, 4, and 5 are implemented with reference to (and, in some cases, described below with respect to) the systems, examples, or embodiments 100, 200, 300, 400, and 500 (or components thereof), such methods may also be implemented using any suitable hardware (or software) implementation. Similarly, although Figure 1 、 2 Each of the systems, examples, or embodiments 100, 200, 300, 400, and 500 (or components thereof) may be configured according to the embodiment of the present invention. Figure 6 The method 600 is described as operating (eg, by executing instructions embodied on a computer-readable medium), but Figure 1 、 2 , 3, 4 and 5 systems, examples or embodiments 100, 200, 300, 400 and 500 may also each operate according to other operating modes and / or execute other suitable procedures.

[0158] exist Figure 6In a non-limiting embodiment, method 600 may include, at optional block 605, receiving a live media content stream from a media content source using a computing system.

[0159] In some embodiments, the computing system may include, but is not limited to, a first processor and a first memory. In some embodiments, the computing system may include, but is not limited to, one of a user device, a server computer, a server computer on a network, a cloud-based computing system, a cloud-based computing system on a network, a distributed computing system, and / or the like. In various cases, the source of media content may include, but is not limited to, one of a user device, a server computer, a server computer on a network, a content provider computer, a content provider computer on a network, a cloud-based computing system, a cloud-based computing system on a network, a distributed computing system, and / or the like. The live media content stream may be a live video content stream, and / or the like.

[0160] At block 610, method 600 may include using a computing system to divide the live media content stream into one or more segments. Each segment may be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment may include a start segment boundary indicating a start time when the live media content stream(s) and / or one or more primary live adaptive bitrate ("ABR") media content streams may be decoded by the decoder(s) of the second computing system(s) and an end segment boundary indicating an end time of the decodable segment.

[0161] In some cases, at block 615, method 600 may include using a computing system to divide one or more segments of the live media content stream into one or more sub-segments. Each sub-segment may be smaller than the length of a corresponding segment in the one or more segments. Each sub-segment may be divided into various sizes based on a predetermined amount of time (e.g., 1 second, 2 seconds, 5 seconds, 9 seconds, and / or the like). In a non-limiting example, if the corresponding segment is 10 seconds, the first sub-segment may be 8 seconds, the second sub-segment may be 5 seconds, and the third sub-segment may be 2 seconds, and / or the like.

[0162] In some examples, each subsegment may include a starting subsegment boundary and an ending subsegment boundary. In some cases, the starting subsegment boundary of each subsegment may indicate a starting time when the subsegment, live media content stream(s), and / or one or more secondary live ABR media content streams may be decoded by decoder(s) of the second computing system(s), user interface device(s), user device(s), and / or the like. The ending subsegment boundary may indicate an ending time for the segment.

[0163] In various cases, one or more subsegments may have a starting subsegment boundary that is different from the corresponding starting segment boundary of the corresponding segment, thereby forming one or more gaps between the starting subsegment boundary and the corresponding starting segment boundary of the corresponding segment. Alternatively or additionally, one or more subsegments may have an ending boundary that is the same as the corresponding ending segment boundary of the corresponding segment. Because there are one or more gaps between the starting subsegment boundary and the corresponding starting segment boundary of the corresponding segment, one or more secondary live adaptive bitrate streams and / or one or more subsegments may not be a continuous live media content stream and the one or more secondary live adaptive bitrate streams and / or one or more subsegments may be transmitted unencrypted by the one or more secondary encoders. Alternatively or additionally, one or more secondary live adaptive bitrate streams and / or one or more subsegments may be transmitted at a lower bitrate than one or more primary live adaptive bitrate streams and / or one or more segments.

[0164] In other cases, a first subsegment of the one or more subsegments may have a starting subsegment boundary that is the same as a corresponding starting segment boundary of the corresponding segment, and a second subsegment of the one or more subsegments may have an ending subsegment boundary that is the same as a corresponding ending segment boundary of the corresponding segment. Alternatively or additionally, one or more subsegments may have a starting boundary that is the same as a corresponding starting segment boundary of the corresponding segment and an ending subsegment boundary that is different from a corresponding ending segment boundary of the corresponding segment.

[0165] In some instances, a first subsegment of the one or more subsegments may overlap a starting subsegment boundary of a corresponding starting segment boundary of a corresponding segment.

[0166] At block 625, method 600 may include encoding one or more sub-segments of the live media content stream into one or more secondary adaptive bitrate streams using one or more secondary encoders of the computing system. In various embodiments, each sub-segment and / or secondary adaptive bitrate stream may be encoded by a single and separate secondary encoder. When a sub-segment of the one or more sub-segments reaches an end sub-segment boundary, method 600 may continue at block 630 by releasing one or more secondary encoders using the computing system. In some cases, the one or more secondary encoders may be released back into the encoder pool.

[0167] Figures 7A to 7D (collectively, FIG. 7 ) is a flow chart illustrating a method 700 for implementing decoding of a live adaptive bitrate media content stream according to various embodiments. The method 700 of FIG. 7 may be independent of Figure 6 Method 600 or used in conjunction therewith. Figure 7A The method 700 continues to the circle marked with "A" Figure 7B . Figure 7A Alternatively or additionally, the method 700 may be continued to the following circular mark indicated as "B" and / or the circular mark indicated as "C". Figure 7C or Figure 7D .

[0168] Method 700 may begin at block 702 by receiving a request for live media content using a computing system. The request may be, but is not limited to, an initial request to receive a live media content stream (e.g., to turn on a display device, open an application, select a particular television show or program, and / or the like) or a channel change request to change the channel to a live media content stream, and / or the like. The second computing system may send the request for the live media content stream to one or more primary encoders, one or more secondary encoders, and / or one or more media content sources.

[0169] In some cases, the second computing system(s) may include, but are not limited to, at least one of one or more processors, memory (not shown), one or more decoders, one or more displays, and one or more speakers, and / or the like. In some cases, the computing system may be, but is not limited to, at least one of a set-top box, a television, a server computer, a desktop computer, a laptop computer, a tablet computer, a smartphone, a cellular phone, a mobile phone, a personal digital assistant, a remote control device, a game console, or a portable gaming device, or any suitable device or the like capable of communicating with the one or more encoders and / or content sources via a web-based portal, an application programming interface ("API"), a server, a software application ("app"), or any other suitable communication interface.

[0170] Method 700 may continue to optional block 704. At optional block 704, method 700 may include utilizing a computing system to request one or more primary adaptive bitrate streams associated with live media content from one or more primary encoders. The one or more primary adaptive bitrate streams may include one or more segments. Each segment may be divided into various sizes based on a predetermined amount of time (e.g., 5 seconds, 10 seconds, 15 seconds, and / or the like). Each segment may include a start segment boundary indicating a start time when the live media content stream(s) and / or one or more primary live adaptive bitrate ("ABR") media content streams may be decoded by the decoder(s) of the second computing system(s) and an end segment boundary indicating an end time of the decodable segment.

[0171] At block 706, method 700 may include determining, using a computing system, that one or more primary adaptive bitrate streams are not at a starting segment boundary. Based on determining that the one or more primary adaptive bitrate streams are not at a starting segment boundary, at block 708, method 700 may include requesting, using the computing system, one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders. The one or more secondary adaptive bitrate streams may include one or more subsegments.

[0172] Each sub-segment may be smaller than the length of a corresponding segment in the one or more segments. Each sub-segment may be divided into various sizes based on a predetermined amount of time (e.g., 1 second, 2 seconds, 5 seconds, 9 seconds, and / or the like). In a non-limiting example, if the corresponding segment is 10 seconds, the first sub-segment may be 8 seconds, the second sub-segment may be 5 seconds, and the third sub-segment may be 2 seconds, and / or the like.

[0173] In some examples, each subsegment may include a starting subsegment boundary and an ending subsegment boundary. In some cases, the starting subsegment boundary of each subsegment may indicate a starting time when the subsegment, live media content stream(s), and / or one or more secondary live ABR media content streams may be decoded by decoder(s) of the second computing system(s), user interface device(s), user device(s), and / or the like. The ending subsegment boundary may indicate an ending time for the segment.

[0174] In various cases, one or more subsegments may have a starting subsegment boundary that is different from the corresponding starting segment boundary of the corresponding segment, thereby forming one or more gaps between the starting subsegment boundary and the corresponding starting segment boundary of the corresponding segment. Alternatively or additionally, one or more subsegments may have an ending boundary that is the same as the corresponding ending segment boundary of the corresponding segment. Because there are one or more gaps between the starting subsegment boundary and the corresponding starting segment boundary of the corresponding segment 310, one or more secondary live adaptive bitrate streams and / or one or more subsegments may not be a continuous live media content stream and the one or more secondary live adaptive bitrate streams and / or one or more subsegments may be transmitted unencrypted by the one or more secondary encoders. Alternatively or additionally, one or more secondary live adaptive bitrate streams and / or one or more subsegments may be transmitted at a lower bitrate than one or more primary live adaptive bitrate streams and / or one or more segments.

[0175] In other cases, a first subsegment of the one or more subsegments may have a starting subsegment boundary that is the same as a corresponding starting segment boundary of the corresponding segment, and a second subsegment of the one or more subsegments may have an ending subsegment boundary that is the same as a corresponding ending segment boundary of the corresponding segment. Alternatively or additionally, one or more subsegments may have a starting boundary that is the same as a corresponding starting segment boundary of the corresponding segment and an ending subsegment boundary that is different from a corresponding ending segment boundary of the corresponding segment.

[0176] In some instances, a first subsegment of the one or more subsegments may overlap a starting subsegment boundary of a corresponding starting segment boundary of a corresponding segment.

[0177] Method 700 may continue at block 710 by receiving, using a computing system, one or more secondary adaptive bitrate streams comprising one or more sub-segments. Next, at block 712, method 700 may decode, using the computing system, live media content associated with the one or more secondary adaptive bitrate streams. Additionally, at block 714, method 700 may include displaying, using the computing system, the live media content associated with the one or more secondary adaptive bitrate streams.

[0178] Method 700 may be continued by following the circular marker marked "A" to Figure 7B Optional box 716, Figure 7C Option box 724 or Figure 7D The process at one of the optional boxes 738 in.

[0179] Steering Figure 7B , at optional block 716 (following Figure 7A ), method 700 may include, using a computing system, determining that one or more subsegments of one or more secondary adaptive bitrate streams have reached the same end boundary as a corresponding end segment boundary of a corresponding segment. In some embodiments, based on determining that the one or more subsegments of the one or more secondary adaptive bitrate streams have reached the same end boundary, at optional block 718, method 700 may include, using the computing system, switching from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams. At optional block 720, method 700 may include, using the computing system, receiving at least one primary adaptive bitrate stream comprising one or more segments. At optional block 722, method 700 may include, using the computing system, decoding and displaying live media content associated with the at least one primary adaptive bitrate stream.

[0180] refer to Figure 7C (follow Figure 7A ), at optional block 724, method 700 may continue by requesting and receiving, using the computing system, the next segment of the main adaptive bitrate stream. Next, at block 726, method 700 may determine, using the computing system, whether the one or more sub-segments overlap with a next starting segment boundary of a next segment of the one or more segments.

[0181] Based on determining that the one or more sub-segments overlap with a next starting segment boundary of a next segment in the one or more segments, method 700 may include, at optional block 728, switching, using a computing system, from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams. In some cases, the computing system may switch from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams at a starting segment boundary of a next segment in the one or more primary adaptive bitrate streams.

[0182] At optional block 730, method 700 may further include discarding, using the computing system, one or more overlapping subframes of one or more subsegments that overlap with a next starting segment boundary of a next segment of the one or more segments. In some cases, the one or more overlapping subframes may be discarded before the one or more overlapping subframes are decoded. Alternatively, the one or more overlapping subframes may be discarded after the one or more overlapping subframes are decoded.

[0183] Alternatively or additionally, based on determining that one or more subsegments overlap with the next starting segment boundary of the next segment in the one or more segments, at optional block 732, method 700 may use a computing system to determine whether one or more overlapping subframes of the one or more subsegments follow one or more live or real-time frames of the next segment. In various examples, live and / or real-time frames may have a slight time delay (e.g., 0.5 seconds, 1 second, 2 seconds, 5 seconds, 10 seconds, and / or the like) between the time the live content appears and the time the live frames are displayed in the live media stream. Based on determining that the one or more overlapping subframes of the one or more subsegments follow the one or more real-time frames of the next segment, at block 734, method 700 may decode and display the one or more overlapping subframes faster to catch up with the one or more real-time frames of the next segment. Additionally, based on determining that the one or more overlapping subframes of the one or more subsegments have caught up with the one or more real-time frames of the next segment, at optional block 736, method 700 may switch from the one or more secondary adaptive bitrate streams to the one or more primary adaptive bitrate streams.

[0184] Alternatively, refer to Figure 7D (follow Figure 7A ), at optional block 738, method 700 may include, using the computing system, requesting the next segment of the primary adaptive bitrate stream. At optional block 740, method 700 may include determining, using the computing system, whether one or more real-time frames of one or more segments of the primary adaptive bitrate stream are unavailable. Based on determining that one or more real-time frames of the one or more segments are unavailable, at optional block 742, method 700 may include, using the computing system, more slowly decoding and / or displaying at least one of the one or more sub-frames of the one or more sub-segments until one or more real-time frames are available, or repeating one or more previous sub-frames of the one or more sub-segments until one or more real-time frames are available. Next, based on determining that one or more real-time frames are available, at optional block 744, method 700 may include, using the computing system, switching from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams.

[0185] Example System and Hardware Implementation

[0186] Figure 8 is a block diagram illustrating an example computer or system hardware architecture according to various embodiments. Figure 8A schematic diagram of one embodiment of a computer system 800 of a service provider system hardware is provided, which can perform the methods provided by various other embodiments (as described herein) and / or can perform the functions of a computer or hardware system (e.g., first computing system(s) 105, primary encoder(s) 115, secondary encoder(s) 120, content source(s) 125, second computing system(s) 150, decoder(s) 165, display(s) 170, speaker(s) 175, etc.) (as described above). It should be noted that Figure 8 It is intended only to provide a general description of the various components, one or more (or none) of each of which may be utilized as appropriate. Figure 8 It generally illustrates how individual system elements may be implemented in a relatively separate or relatively more integrated manner.

[0187] Computer or hardware system 800—which may represent an embodiment of a computer or hardware system (e.g., first computing system(s) 105, primary encoder(s) 115, secondary encoder(s) 120, content source(s) 125, second computing system(s) 150, decoder(s) 165, display(s) 170, speaker(s) 175, etc.), as described above with respect to Figure 1 7 - is shown as including hardware elements that may be electrically coupled via a bus 805 (or may communicate in other ways, as the case may be). The hardware elements may include: one or more processors 810, including but not limited to one or more general-purpose processors and / or one or more special-purpose processors (e.g., microprocessors, digital signal processing chips, graphics acceleration processors, and / or the like); one or more input devices 815, which may include but are not limited to a mouse, keyboard, and / or the like; and one or more output devices 820, which may include but are not limited to a display device, a printer, and / or the like.

[0188] The computer or hardware system 800 may further include (and / or communicate with) one or more storage devices 825, which may include, but are not limited to, local and / or network accessible storage devices, and / or may include, but are not limited to, disk drives, drive arrays, optical storage devices, solid-state storage devices, such as random access memory ("RAM") and / or read-only memory ("ROM"), which may be programmable, flash-updatable, and / or the like. Such storage devices may be configured to implement any suitable data storage, including, but not limited to, various file systems, database structures, and / or the like.

[0189] The computer or hardware system 800 may also include a communication subsystem 830, which may include but is not limited to a modem, a network card (wireless or wired), an infrared communication device, a wireless communication device and / or a chipset (such as Bluetooth TM Devices, 802.11 devices, WiFi devices, WiMax devices, WWAN devices, cellular communication facilities, etc.) and / or the like. The communication subsystem 830 can allow data to be exchanged with a network (such as the network described below, for example), with other computer or hardware systems, and / or with any other devices described herein. In many embodiments, the computer or hardware system 800 will further include a working memory 835, which can include RAM or ROM devices, as described above.

[0190] The computer or hardware system 800 may also include software elements, which are shown as currently located in working memory 835, including an operating system 840, device drivers, executable libraries, and / or other code, such as one or more application programs 845, which may include computer programs provided by various embodiments (including but not limited to hypervisors, VMs, and the like), and / or may be designed to implement methods provided by other embodiments and / or configure systems, as described herein. By way of example only, one or more programs described with respect to the method(s) discussed above may be implemented as code and / or instructions executable by a computer (and / or a processor within a computer); then, in one aspect, such code and / or instructions may be used to configure and / or adapt a general-purpose computer (or other device) to perform one or more operations according to the described methods.

[0191] A set of these instructions and / or codes may be encoded and / or stored on a non-transitory computer-readable storage medium, such as the storage device(s) 825 described above. In some cases, the storage medium may be incorporated into a computer system, such as system 800. In other embodiments, the storage medium may be separate from the computer system (i.e., removable media such as an optical disc, etc.) and / or provided in an installation package so that the storage medium can be used to program, configure, and / or adapt a general-purpose computer using the instructions / code stored thereon. These instructions may take the form of executable code that can be executed by the computer or hardware system 800, and / or may take the form of source code and / or installable code that, when compiled and / or installed on the computer or hardware system 800 (e.g., using any of a variety of commonly available compilers, installers, compression / decompression utilities, etc.), then takes the form of executable code.

[0192] It will be apparent to those skilled in the art that significant variations may be made depending on specific requirements. For example, customized hardware (e.g., programmable logic controllers, field programmable gate arrays, application specific integrated circuits, and / or the like) may also be used, and / or specific elements may be implemented in hardware, software (including portable software such as applets), or both. Furthermore, connections to other computing devices, such as network input / output devices, may be employed.

[0193] As mentioned above, in one aspect, some embodiments may employ a computer or hardware system (e.g., computer or hardware system 800) to perform methods according to various embodiments of the present invention. According to one set of embodiments, some or all of the procedures of such methods are performed by computer or hardware system 800 in response to processor 810 executing one or more sequences of one or more instructions contained in working memory 835 (which may be incorporated into operating system 840 and / or other code, such as application program 845). Such instructions may be read into working memory 835 from another computer-readable medium, such as one or more of storage device(s) 825. By way of example only, execution of the sequences of instructions contained in working memory 835 may cause processor(s) 810 to perform one or more procedures of the methods described herein.

[0194] As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any medium that participates in providing data that causes a machine to operate in a specific manner. In embodiments implemented using a computer or hardware system 800, various computer-readable media may participate in providing instructions / code to the processor(s) 810 for execution and / or may be used to store and / or carry such instructions / code (e.g., as signals). In many implementations, computer-readable media are non-transitory physical and / or tangible storage media. In some embodiments, computer-readable media may take a variety of forms, including but not limited to non-volatile media, volatile media, or the like. Non-volatile media include, for example, optical and / or magnetic disks, such as the storage device(s) 825. Volatile media include, but are not limited to, dynamic memory, such as working memory 835. In some alternative embodiments, computer-readable media may take the form of transmission media, including but not limited to coaxial cables, copper wire, and optical fiber, including the wires comprising bus 805, as well as the various components of the communication subsystem 830 (and / or the media through which the communication subsystem 830 provides communication with other devices). In an alternative set of embodiments, transmission media may also take the form of waves (including but not limited to radio waves, acoustic waves, and / or light waves, such as those generated during radio wave and infrared data communications).

[0195] For example, common forms of physical and / or tangible computer-readable media include floppy disks, flexible disks, hard disks, magnetic tape or any other magnetic media, CD-ROMs, any other optical media, punch cards, paper tape, any other physical media with patterns of holes, RAM, PROM and EPROM, FLASH-EPROM, any other memory chip or cassette, a carrier wave as described hereinafter, or any other medium from which a computer can read instructions and / or code.

[0196] Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to the processor(s) 810 for execution. By way of example only, the instructions may initially be carried on a magnetic and / or optical disk of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions as signals over a transmission medium for receipt and / or execution by the computer or hardware system 800. According to various embodiments of the invention, such signals, which may be in the form of electromagnetic signals, acoustic signals, optical signals, and / or the like, are all examples of carrier waves on which instructions may be encoded.

[0197] The communication subsystem 830 (and / or its components) will typically receive the signal, and the bus 805 may then carry the signal (and / or the data, instructions, etc. carried by the signal) to the working memory 835, from which the processor(s) 805 retrieve and execute the instructions. The instructions received by the working memory 835 may optionally be stored on the storage device 825 before or after execution by the processor(s) 810.

[0198] As described above, one set of embodiments includes methods and systems for implementing encoding and decoding of media content streams, and more particularly, methods, systems, and apparatus for implementing encoding and decoding of live adaptive bitrate media content streams. Figure 9 Schematic diagram illustrating a system 900 that can be used according to one set of embodiments. The system 900 can include one or more user computers, user devices, or client devices 905. The user computers, user devices, or client devices 905 can be running various commercially available UNIX TM, or any of a variety of other computer systems. The user computer, user device, or client device 905 may be a general-purpose personal computer (by way of example only, including desktop computers, tablet computers, laptop computers, handheld computers, and the like running any suitable operating system, several of which are available from vendors such as Apple, Microsoft Corporation, and the like), a cloud computing device, server(s), and / or workstation(s) computers. The user computer, user device, or client device 905 may also have any of a variety of applications, including one or more applications configured to perform the methods provided by the various embodiments (e.g., as described above) as well as one or more office applications, database client and / or server applications, and / or web browser applications. Alternatively, the user computer, user device, or client device 905 may be any other electronic device capable of communicating over a network (e.g., network(s) 910 described below) and / or capable of displaying and navigating web pages or other types of electronic documents, such as a thin client computer, an Internet-enabled mobile phone, and / or a personal digital assistant. Although the example system 900 is shown with two user computers, user devices, or client devices 905, any number of user computers, user devices, or client devices may be supported.

[0199] Certain embodiments operate in a networking environment that may include network(s) 910. Network(s) 910 may be any type of network familiar to those skilled in the art that may support data communications using any of a variety of commercially available (and / or free or proprietary) protocols, including but not limited to TCP / IP, SNA, TM 、IPX TM 、AppleTalk TM And the like. By way of example only, the network(s) 910 (with Figure 1 The network(s) 135, 140 and / or 145 or the like) may each comprise a local area network ("LAN") including, but not limited to, a fiber optic network, Ethernet, Token-Ring, TM wide area network ("WAN"); wireless wide area network ("WWAN"); virtual network, such as a virtual private network ("VPN"); the Internet; an intranet; an extranet; a public switched telephone network ("PSTN"); an infrared network; wireless networks, including but not limited to those in the IEEE 802.11 protocol suite, Bluetooth 5.0, or similar, as known in the art. TMThe present invention also includes a network operating under any of the WLAN protocols and / or any other wireless protocols; and / or any combination of these and / or other networks. In a particular embodiment, the network may include an access network of a service provider, such as an Internet service provider ("ISP"). In another embodiment, the network may include a core network of the service provider and / or the Internet.

[0200] The embodiment may also include one or more server computers 915. Each of the server computers 915 may be configured with an operating system, including but not limited to any of the operating systems discussed above, as well as any commercially (or freely) available server operating system. Each of the servers 915 may also run one or more applications that may be configured to provide services to one or more clients 905 and / or other servers 915.

[0201] By way of example only, one of the servers 915 may be a data server, a web server, a cloud computing device(s), or the like, as described above. The data server may include (or be in communication with) a web server, which, by way of example only, may be used to process requests for web pages or other electronic documents from the user computers 905. The web server may also run a variety of server applications, including HTTP servers, FTP servers, CGI servers, database servers, Java servers, and the like. In some embodiments of the present invention, the web server may be configured to provide web pages that may be operated within a web browser on one or more of the user computers 905 to perform the methods of the present invention.

[0202] In some embodiments, the server computers 915 may include one or more application servers that may be configured with one or more applications that may be accessed by clients running on one or more of the client computers 905 and / or other servers 915. By way of example only, the server(s) 915 may be one or more general-purpose computers capable of executing programs or scripts in response to the client computers 905 and / or other servers 915, including but not limited to web applications (which in some cases may be configured to perform the methods provided by various embodiments). By way of example only, the web application may be implemented in any suitable programming language (e.g., Java). TM , C, C# TM or C++) and / or any scripting language (such as Perl, Python or TCL) and any combination of programming and / or scripting languages. The application server(s) may also include a database server, including but not limited to Oracle TM 、Microsoft TM 、SybaseTM 、IBM TM The application server may be a commercially available database server that can process requests from clients running on a user computer, user device or client device 905 and / or another server 915 (including, depending on the configuration, a dedicated database client, an API client, a web browser, etc.). In some embodiments, the application server may execute one or more of the processes for implementing the encoding and decoding of media content streams, and more particularly, for implementing the encoding and decoding of live adaptive bitrate media content streams, as described in detail above. The data provided by the application server may be formatted as one or more web pages (for example, including HTML, JavaScript, etc.) and / or may be forwarded to the user computer 905 via a web server (for example, as described above). Similarly, the web server may receive web page requests and / or input data from the user computer 905 and / or forward web page requests and / or input data to the application server. In some cases, the web server may be integrated with the application server.

[0203] According to further embodiments, one or more servers 915 may function as file servers and / or may contain one or more of the files necessary to implement the various disclosed methods (e.g., application code, data files, etc.) incorporated by an application running on a user computer 905 and / or another server 915. Alternatively, as will be appreciated by one skilled in the art, a file server may contain all necessary files, thereby allowing such an application to be called remotely by a user computer, user device or client device 905 and / or server 915.

[0204] It should be noted that the functions described herein with respect to various servers (eg, application servers, database servers, web servers, file servers, etc.) can be performed by a single server and / or multiple dedicated servers, depending on implementation-specific needs and parameters.

[0205] In certain embodiments, the system may include one or more databases 920a through 920n (collectively, "databases 920"). The location of each of databases 920 is arbitrary: by way of example only, database 920a may reside on a storage medium local to (and / or residing within) server 915a (and / or user computer, user device, or client device 905). Alternatively, database 920n may be remote from any or all of computers 905, 915, as long as it can communicate with one or more of these computers (e.g., via network 910). In a particular set of embodiments, database 920 may reside in a storage area network ("SAN") familiar to those skilled in the art. (Similarly, any necessary files for performing the functions attributed to computers 905, 915 may be stored locally on the respective computers and / or remotely, as appropriate.) In one set of embodiments, database 920 may be a relational database, such as an Oracle database, adapted to store, update, and retrieve data in response to SQL-formatted commands. For example, as described above, the database may be controlled and / or maintained by a database server.

[0206] According to some embodiments, the system 900 may further include a computing system 925 (with Figure 1 105 or the like) and corresponding database(s) 930 (with Figure 1 The system 900 may further include one or more encoders 935 (with Figure 1 The system 900 may also include (several) media content sources 940 (similar to the primary encoder(s) 115 and secondary encoder(s) 120 or the like). Figure 1 One or more media content sources 125 or the like) and corresponding database(s) 945 (with Figure 1 The user devices 905a and 905b may also be one or more second computing systems ( Figure 1 Each user device 905a and 905b may include one or more decoders 950 (with Figure 1 In some cases, the one or more decoders 950 may be separate from the user devices 905a and 905b.

[0207] In operation, one or more first computing systems 925 may divide a live media content stream from one or more content sources 940 into one or more segments. Each segment may include a starting segment boundary and an ending segment boundary. The one or more first computing systems 925 may use (several) encoders 935 to encode the one or more segments of the live media content stream into one or more primary adaptive bitrate streams. The one or more first computing systems 925 may also divide the one or more segments of the live media content stream into one or more sub-segments. Each sub-segment may be shorter than the length of a corresponding segment in the one or more segments. The one or more first computing systems 925 may use (several) encoders 935 to encode the one or more sub-segments into one or more secondary adaptive bitrate streams.

[0208] According to some embodiments, one or more user devices 905a and 905b may receive a request for live media content on a live channel. User devices 905a and 905b may first request one or more primary adaptive bitrate streams associated with the live media content. User devices 905a and 905b may then determine that the one or more primary adaptive bitrate streams are not at a starting segment boundary. Based on determining that the one or more primary adaptive bitrate streams are not at a starting segment boundary, user devices 905a and 905b may request one or more secondary adaptive bitrate streams associated with the live media content. User devices 905a and 905b may receive the one or more secondary adaptive bitrate streams comprising one or more subsegments and decode the live media content associated with the one or more secondary adaptive bitrate streams using decoder(s) 950.

[0209] In some cases, one or more subsegments may have a starting boundary that is different from a corresponding starting segment boundary of a corresponding segment in the one or more segments and an ending boundary that is the same as a corresponding ending segment boundary of a corresponding segment in the one or more segments. In some cases, one or more subsegments may be continuous subsegments, discontinuous subsegments, overlapping subsegments, and / or the like.

[0210] The above about Figure 1 These and other functions of system 900 (and its components) are described in more detail in FIG. 7 .

[0211] Although certain features and aspects have been described with respect to exemplary embodiments, those skilled in the art will recognize that numerous modifications are possible. For example, the methods and processes described herein may be implemented using hardware components, software components, and / or any combination thereof. Furthermore, although the various methods and processes described herein may be described with respect to specific structural and / or functional components for ease of description, the methods provided by the various embodiments are not limited to any specific structural and / or functional architecture, but may be implemented on any suitable hardware, firmware, and / or software configuration. Similarly, although certain functionality is attributed to certain system components, unless the context dictates otherwise, according to some embodiments, this functionality may be distributed among various other system components.

[0212] In addition, although the procedures of the methods and processes described herein are described in a particular order for ease of description, various procedures may be reordered, added, and / or omitted according to various embodiments unless the context dictates otherwise. Furthermore, procedures described with respect to one method or process may be incorporated into other described methods or processes; similarly, system components described according to a particular structural architecture and / or with respect to one system may be organized in alternative structural architectures and / or incorporated into other described systems. Thus, although various embodiments are described with or without certain features for ease of description and illustrate exemplary aspects of those embodiments, various components and / or features described herein with respect to particular embodiments may be replaced, added, and / or deleted from other described embodiments unless the context dictates otherwise. Therefore, although several exemplary embodiments are described above, it will be understood that the present invention is intended to cover all modifications and equivalents within the scope of the appended claims.

Claims

1. A method for media content processing, comprising: Using a computing system, dividing a live media content stream into two or more segments, each segment including a starting segment boundary and an ending segment boundary; encoding the two or more segments of the live media content stream into one or more primary adaptive bitrate streams using one or more primary encoders of the computing system; using the computing system to divide the two or more segments of the live media content stream into two or more sub-segments, wherein each sub-segment is smaller than a length of a corresponding segment of the two or more segments, and wherein at least one of the two or more sub-segments overlaps with a next starting segment boundary of a next segment of the two or more segments; and At least one of the two or more subsegments is encoded into one or more secondary adaptive bitrate streams using one or more secondary encoders of the computing system.

2. The method of claim 1 , wherein the one or more primary adaptive bitrate streams comprise one or more continuous segments of the live media content stream, and wherein the one or more secondary adaptive bitrate streams comprise at least one of one or more continuous subsegments of the live media content stream or one or more discontinuous subsegments of the live media content stream.

3. The method of claim 1 , wherein the two or more sub-segments include a starting boundary that is different from a corresponding starting segment boundary of a corresponding segment among the two or more segments and an ending boundary that is the same as a corresponding ending segment boundary of the corresponding segment among the two or more segments. 4 . The method of claim 3 , wherein each of the two or more subsegments has a subsegment start boundary that is different from a next subsegment start boundary of a next subsegment. 5 . The method of claim 4 , wherein the next subsegment start boundary of the next subsegment occurs a predetermined amount of time after a previous subsegment start boundary of a previous subsegment. 6 . The method of claim 4 , wherein each of the two or more subsegments is encoded by a single encoder or separate encoders among the one or more sub-encoders.

7. The method according to claim 3, further comprising: When the two or more sub-segments reach the same end boundary as the corresponding segment of the two or more segments, releasing the one or more sub-encoders using the computing system. The method of claim 1 , wherein the two or more sub-segments are transmitted in an unencrypted manner.

9. The method of claim 1, wherein the two or more sub-segments are transmitted at a lower bit rate than the two or more segments.

10. A device for media content processing, comprising: at least one processor; and a non-transitory computer-readable medium communicatively coupled to the at least one processor, the non-transitory computer-readable medium having stored thereon computer software comprising a set of instructions that, when executed by the at least one processor, cause the apparatus to: determining that one or more primary adaptive bitrate streams of live media content are not at a starting segment boundary, wherein the one or more primary adaptive bitrate streams include two or more segments, each segment including the starting segment boundary and an ending segment boundary; requesting, from one or more secondary encoders, one or more secondary adaptive bitrate streams associated with the live media content based on a determination that the one or more primary adaptive bitrate streams are not at a starting segment boundary, wherein the one or more secondary adaptive bitrate streams include one or more subsegments, wherein each subsegment is smaller than a length of a corresponding segment of the two or more segments, and wherein the one or more subsegments overlap with a next starting segment boundary of a next segment of the two or more segments; receiving the one or more secondary adaptive bitrate streams comprising the one or more subsegments; and The live media content associated with the one or more secondary adaptive bitrate streams is decoded.

11. The apparatus of claim 10 , wherein the request to the one or more secondary encoders for the one or more secondary adaptive bitrate streams comprises requesting a secondary adaptive bitrate stream of the one or more secondary adaptive bitrate streams, the secondary adaptive bitrate stream comprising a subsegment of the one or more subsegments, the subsegment having a starting subsegment boundary closest to a real-time display time of the live media content.

12. The apparatus of claim 10, wherein the one or more sub-segments include a start boundary that is different from a corresponding start segment boundary of a corresponding segment of the two or more segments and an end boundary that is the same as a corresponding end segment boundary of the corresponding segment of the two or more segments.

13. The apparatus of claim 12, wherein the set of instructions, when executed by the at least one processor, further causes the apparatus to: determining that the one or more sub-segments of the one or more secondary adaptive bitrate streams have reached the same end boundary as the corresponding end segment boundary of the corresponding segment; switching from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams based on determining that the one or more subsegments of the one or more secondary adaptive bitrate streams have reached the same end boundary; receiving the at least one primary adaptive bitrate stream comprising the two or more segments; and The live media content associated with the at least one primary adaptive bitrate stream is decoded.

14. The apparatus of claim 13, wherein the one or more secondary adaptive bitrate streams comprising the one or more subsegments are received with a first video codec, and the one or more primary adaptive bitrate streams are received with a second video codec different from the first video codec.

15. The apparatus of claim 10, wherein the one or more secondary adaptive bitrate streams comprising the one or more subsegments are received at at least one of a first bitrate, and the one or more primary adaptive bitrate streams are received at at least one of a second bitrate different from the first bitrate.

16. The apparatus of claim 10 , wherein when the one or more subsegments overlap with the next starting segment boundary of the next segment of the two or more segments, the set of instructions, when executed by the at least one processor, further cause the apparatus to: One or more overlapping subframes of the one or more subsegments are discarded, wherein the one or more overlapping subframes overlap between the one or more subsegments and the next segment of the two or more segments.

17. The apparatus of claim 10 , wherein when the one or more subsegments overlap with the next starting segment boundary of the next segment of the two or more segments, the set of instructions, when executed by the at least one processor, further cause the apparatus to: requesting and receiving at least one primary adaptive bitrate stream comprising the next segment of the two or more segments; determining whether one or more overlapping subframes of the one or more subsegments follow one or more real-time frames of the next segment of the two or more segments; decoding and displaying the one or more overlapping subframes of the one or more subsegments faster to catch up with the one or more real-time frames of the next segment based on determining that the one or more overlapping subframes of the one or more subsegments are after the one or more real-time frames of the next segment; and Based on determining that the one or more overlapping sub-frames of the one or more sub-segments have caught up with the one or more real-time frames of the next segment, switching from the one or more secondary adaptive bitrate streams to the one or more primary adaptive bitrate streams.

18. The apparatus of claim 10, wherein the set of instructions, when executed by the at least one processor, further causes the apparatus to: determining whether one or more real-time frames of the next segment of the two or more segments are unavailable; Based on determining that the one or more real-time frames for the next segment of the two or more segments are not available, more slowly decoding and displaying at least one of the one or more sub-frames of the one or more sub-segments until the one or more real-time frames are available, or repeating one or more previous sub-frames of the one or more sub-segments until the one or more real-time frames are available; and Based on determining that the one or more real-time frames are available, switching from at least one of the one or more secondary adaptive bitrate streams to at least one of the one or more primary adaptive bitrate streams.

19. The apparatus of claim 10, wherein the two or more segments include a header at the starting segment boundary, wherein each header indicates one or more additional decodable segment boundaries, the additional decodable segment boundaries indicating one or more additional locations within the corresponding segment where the apparatus is able to start decoding the live media content.

20. A system for media content processing, comprising: A first computing system comprising: one or more master encoders; one or more secondary encoders; at least one first processor; and a first non-transitory computer-readable medium communicatively coupled to the at least one first processor, the first non-transitory computer-readable medium having stored thereon computer software, the computer software comprising a first set of instructions that, when executed by the at least one first processor, cause the first computing system to: Dividing the live media content stream into two or more segments, each segment including a start segment boundary and an end segment boundary; encoding the two or more segments of the live media content stream into one or more primary adaptive bitrate streams using the one or more primary encoders; dividing the two or more segments of the live media content stream into two or more sub-segments, wherein each sub-segment is smaller than a length of a corresponding segment of the two or more segments, and wherein at least one of the two or more sub-segments overlaps with a next starting segment boundary of a next segment of the two or more segments; and encoding at least one of the two or more subsegments into one or more secondary adaptive bitrate streams using the one or more secondary encoders; and A second computing system comprising: at least one second processor; and a second non-transitory computer-readable medium communicatively coupled to the at least one second processor, the second non-transitory computer-readable medium having stored thereon computer software comprising a second set of instructions that, when executed by the at least one second processor, cause the second computing system to: requesting one or more primary adaptive bitrate streams associated with live media content from the one or more primary encoders; determining that the one or more primary adaptive bitrate streams are not at the starting segment boundary; requesting one or more secondary adaptive bitrate streams associated with the live media content from one or more secondary encoders based on determining that the one or more primary adaptive bitrate streams are not at a starting segment boundary; receiving the one or more secondary adaptive bitrate streams including at least one of the two or more subsegments; and The live media content associated with the one or more secondary adaptive bitrate streams is decoded.

Citation Information

Patent Citations

  • Segment-based reshaping for coding high dynamic range video

    US20190272643A1

  • An apparatus, a method and a computer program for video coding and decoding

    WO2018146376A1