Search

US-12621512-B2 - Method for just-in-time transcoding of byterange-addressable parts

US12621512B2US 12621512 B2US12621512 B2US 12621512B2US-12621512-B2

Abstract

A method including: ingesting a video segment and a set of video features of the video segment; estimating a part size distribution for the video segment based on the set of video features and a first rendition of the video segment; calculating a maximum expected part size based on a threshold percentile in the part size distribution; at a first time, transmitting, to an video player, a manifest file indicating a set of byterange-addressable parts of the video segment in the first rendition, each byterange addressed part characterized by the maximum expected part size; at a second time, receiving, a playback request for a first byterange-addressable part; transcoding the first byterange-addressable part; in response to the maximum expected part size exceeding a size of the first byterange-addressable part in the first rendition, appending padding data to the first byterange-addressable part; and transmitting the first byterange-addressable part to the AV player.

Inventors

  • Nick Chadwick
  • Matthew Szatmary
  • Adam Brown

Assignees

  • Mux, Inc.

Dates

Publication Date
20260505
Application Date
20240618

Claims (20)

  1. 1 . A method comprising: at a first time: for a first target rendition: accessing a first part size distribution model associated with the first target rendition; identifying a first media part, in a first media segment, characterized by a first range of bytes defined by a first target part size according to the first part size distribution model; identifying a second media part, in the first media segment, characterized by a second range of bytes based on the first target part size according to the first part size distribution model; generating a first playlist based on the first media part and the second media part in the first media segment; and for a second target rendition: accessing a second part size distribution model associated with the second target rendition; identifying a third media part, in the first media segment, characterized by a third range of bytes according to the second part size distribution model; identifying a fourth media part, in the first media segment, characterized by a fourth range of bytes according to the second part size distribution model; and generating a second playlist based on the third media part and the fourth media part in the first media segment; generating a manifest file based on the first playlist and the second playlist; and publishing the manifest file for access by a media player.
  2. 2 . The method of claim 1 , further comprising: at a second time, receiving a first playback request for the first media part from the media player; in response to absence of the first media part in the first target rendition in a rendition cache, transcoding the first media part of the first segment into the first target rendition to generate a first rendition part; in response to the first target part size exceeding a first part size of the first rendition part, appending a first set of padding data to the first rendition part; and serving the first rendition part to the media player.
  3. 3 . The method of claim 1 : further comprising detecting a first set of media features in the first media segment; wherein identifying the first media part comprises: estimating a first part size distribution of the first media segment based on the first set of media features and the first part size distribution model; and calculating the first target part size based on a threshold percentile part size in the first part size distribution for the first target rendition; wherein identifying the third media part comprises: estimating a second part size distribution of the first media segment based on the first set of media features and the second part size distribution model; and calculating a second target part size based on the threshold part size in the second part size distribution for the second target rendition.
  4. 4 . The method of claim 2 : wherein appending the first set of padding data to the first rendition part comprises appending the first set of padding data to the first rendition part based on a first padding scheme corresponding to a first compression type; further comprising compressing the first rendition part from the first target part size to a first compression part size smaller than the first target part size to generate a first compressed part; and wherein serving the first rendition part comprises serving the first compressed part to the media player.
  5. 5 . The method of claim 4 , further comprising: at the second time, receiving a second playback request for the third media part from the media player; in response to absence of the third media part in the second target rendition in the rendition cache, transcoding the third media part into the second target rendition to generate a second rendition part; in response to the second target part size exceeding a second part size of the second rendition part, appending a second set of padding data to the second rendition part based on a second padding scheme corresponding to a second compression type; compressing the second rendition part from the second target part size into a second compression part size less than the second target part size to generate a second compressed part; and serving the second compressed part to the media player.
  6. 6 . The method of claim 3 , further comprising: detecting a second set of media features in a second media segment; calculating a similarity score between the first set of media features and the second set of media features for the second segment; for the first target rendition: in response to the similarity score exceeding a similarity score threshold, predicting the first target part size for parts in the second media segment based on the first part size distribution and the second set of media features in the second media segment; and updating the manifest file to indicate a first set of parts of the second media segment in the first target rendition, each part in the first set of parts characterized by the first target part size; and for the second target rendition: in response to the similarity score exceeding the similarity score threshold, predicting the second target part size for parts in the second media segment based on the second part size distribution and the second set of media features in the second media segment; and updating the manifest file to indicate a second set of parts of the second media segment in the second target rendition, each part in the second set of parts characterized by the second target part size.
  7. 7 . The method of claim 1 , further comprising: setting a first target quality associated with playback of the first media part in the first media segment; selecting the first target rendition based on the first target quality; setting a second target quality associated with playback of the third media part in the first media segment; and selecting the second target rendition based on the second target quality.
  8. 8 . The method of claim 1 , further comprising: receiving a first playback request for the first media part from the media player; in response to absence of the first media part in the first target rendition in a rendition cache, transcoding the first media part of the first segment into the first target rendition to generate a first rendition part; and in response to the first part size of the first rendition part exhibiting the first target part size, serving the first rendition part to the media player for playback at the media player.
  9. 9 . The method of claim 1 , further comprising: receiving a second playback request for the third media part in the first media segment from the media player; in response to absence of the third media part in the second target rendition in the rendition cache, identifying an open transcoding job for the third media part at a worker; and in response to identifying the open transcoding job for the first media segment corresponding to the third media part at the worker, streaming the third media part from a local cache, associated with the worker executing the transcoding job, to transcode the third media part into the second target rendition.
  10. 10 . The method of claim 1 , further comprising: at a third time, receiving a third playback request for the third media part in the first media segment in the second target rendition; in response to identifying a third rendition part in the second target rendition corresponding to the third media part in the rendition cache, streaming the third rendition part to the media player for playback at the media player; receiving a fourth playback request for the fourth media part in the first media segment in the second target rendition; identifying absence of a fourth rendition part in the second target rendition in the rendition cache; while serving the third rendition part to the media player, initiating transcode of the fourth media part to generate a fourth rendition part in the second target rendition; and in response to generating the fourth rendition part, serving the fourth rendition part to the media player for playback proceeding the third rendition part.
  11. 11 . A method comprising: ingesting a first media file comprising a first media segment and a second media segment; identifying a first set of parts specified by a first range of bytes based on a first target part size for the first media segment; identifying a second set of parts specified by a second range of bytes based on a second target part size for the second media segment; and identifying a first rendition, defined by a first bitrate, based on the first range of bytes; identifying a second rendition, defined by a second bitrate, based on the second range of bytes; and aggregating the first rendition and the second rendition into a manifest file; publishing the manifest file for access by a media player; receiving a first playback request for a first part in the first set of parts, from the media player; in response to absence of the first part in the first rendition in a rendition cache, transcoding the first part into the first rendition to generate a first rendition part for access by the media player.
  12. 12 . The method of claim 11 , further comprising: detecting a first set of characteristics in the first media segment; detecting a second set of characteristics in the second media segment; estimating a first part size distribution of the first media segment based on the first set of characteristics and a first part size distribution model associated with the first target rendition; estimating a second part size distribution of the second media segment based on the second set of characteristics and the first part size distribution model associated with the first target rendition; calculating the first target part size based on a first threshold part size in the first part size distribution for the first media segment; and calculating the second target part size based on a second threshold part size in the second part size distribution for the second media segment.
  13. 13 . The method of claim 11 , further comprising: detecting a first set of characteristics in the first media segment; detecting a second set of characteristics in the second media segment; estimating a first part size distribution of the first media segment based on the first set of characteristics and a first part size distribution model associated with the first target rendition; calculating a similarity score for the first set of characteristics in the first media segment and the second set of characteristics in the second media segment; in response to the similarity score exceeding a threshold similarity score, associating the first part size distribution with the second media segment; calculating the first target part size based on the first part size distribution for the first media segment; and calculating the second target part size based on the first part size distribution for the second media segment.
  14. 14 . The method of claim 11 , further comprising: receiving a second playback request for a second part in the second set of parts, from the media player; and in response to identifying the second part in the first target rendition in the rendition cache, streaming the second part to the media player.
  15. 15 . The method of claim 11 , further comprising: in response to the first target part size exceeding a first rendition part size of the first rendition part, appending a first set of padding data to the first rendition part; receiving a second playback request for a second part, in the second set of parts, from the media player; transcoding the second part into a second target rendition to generate a second rendition part; in response to the second target part size exceeding a second part size of the second rendition part, appending a second set of padding data to the second rendition part; compressing the second rendition part from the second target part size to a second compression part size smaller than the second target part size to generate a second compressed part; and serving the second compressed part to the media player.
  16. 16 . A method comprising: ingesting a first media segment; defining a target rendition based on first range of bytes of the first media segment; generating a manifest file for the first media segment, the manifest file specifying the target rendition and file indicating a set of parts of the first media segment in the first target rendition, each part in the set of parts characterized by a target part size; publishing the manifest file for access by a media player; receiving, from the media player, a playback request for the first part in the set of parts based on the manifest file; generating a first rendition part in the first target rendition by transcoding the first part; in response to the target part size exceeding a size of the first rendition part, appending a first set of padding data to the first rendition part; and serving the first rendition part to the media player.
  17. 17 . The method of claim 16 : wherein ingesting the first media segment comprises ingesting the first media segment associated with a first set of media features; and further comprising: estimating a part size distribution for the first media segment based on the first set of media features and a first part size distribution model associated with the first target rendition of the first media segment; and calculating the target part size based on a threshold part size in the part size distribution.
  18. 18 . The method of claim 17 , further comprising: further comprising: identifying a set of characteristics in the first set of media features; and classifying a first scene in the first media segment based on the set of characteristics; ingesting a second media segment associated with a second set of media features; detecting the set of characteristics in the second set of media features identifying the first scene in the second media segment according to the set of characteristics; and predicting the target part size for the second media segment based on the part size distribution for the first media segment.
  19. 19 . The method of claim 16 : wherein serving the first rendition part to the media player comprises: generating a first compressed part by compressing the first rendition part from the target part size to a first compression part size smaller than the target part size; and serving the first compressed part to the media player; and further comprising: at a third time, receiving a second playback request for a second part in the set of parts of the first media segment in the first rendition; and upon serving the first compressed part to the media player, initiating transcode of the second part generate a second rendition part in the first target rendition.
  20. 20 . The method of claim 16 , further comprising: detecting a first set of characteristics in the first media segment; ingesting a second media segment associated with a second set of media features; detecting a second set of characteristics in the second media segment; calculating a similarity score between the first media segment and the second media segment based on the first set of characteristics of the first media segment and the second set of characteristics of the second media segment; in response to the similarity score exceeding a similarity score threshold, predicting the target part size based on the part size distribution; and updating the manifest file to specify a second set of parts for the second media segment, each part in the second set of parts characterized by the target part size.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS This Application is a continuation of U.S. patent application Ser. No. 18/124,507, filed on 21 Mar. 2023, which is a continuation of U.S. patent application Ser. No. 17/842,667, filed on 16 Jun. 2022, which claims the benefit of U.S. Provisional Application No. 63/211,419, filed on 16 Jun. 2021, each of which is incorporated in its entirety by this reference. U.S. patent application Ser. No. 17/842,667 is also a continuation-in-part application of U.S. patent application Ser. No. 16/458,630 filed on 1 Jul. 2019, which claims the benefit of U.S. Provisional Application No. 62/694,408, filed on 5 Jul. 2018, each of which is incorporated in its entirety by this reference. TECHNICAL FIELD This invention relates generally to the field of internet video streaming and more specifically to a new and useful method for just-in-time transcoding of byterange-addressable parts in the field of internet video streaming. BRIEF DESCRIPTION OF THE FIGURES FIG. 1 is a schematic representation of a method; FIG. 2 is a flowchart representation of the method; FIG. 3 is a flowchart representation of the method; FIG. 4 is a flowchart representation of the method; FIG. 5 is a flowchart representation of the method; FIG. 6 is a flowchart representation of the method; and FIG. 7 is a flowchart representation of the method. DESCRIPTION OF THE EMBODIMENTS The following description of embodiments of the invention is not intended to limit the invention to these embodiments but rather to enable a person skilled in the art to make and use this invention. Variations, configurations, implementations, example implementations, and examples described herein are optional and are not exclusive to the variations, configurations, implementations, example implementations, and examples they describe. The invention described herein can include any and all permutations of these variations, configurations, implementations, example implementations, and examples. 1. Methods As shown in FIG. 1, a method for S100 includes: ingesting an AV segment in an original rendition and a set of AV features of the AV segment in Block Silo; estimating a part size distribution for the AV segment based on the set of AV features of the AV segment and a first rendition of the AV segment in Block S120; calculating a maximum expected part size based on a threshold percentile in the part size distribution in Block S130; at a first time prior to transcoding the AV segment, transmitting, to an AV player, a manifest file indicating a set of byterange-addressable parts of the AV segment in the first rendition, each byterange addressed part characterized by the maximum expected part size in Block S140; at a second time, receiving, from the AV player, a playback request for a first byterange-addressable part in the set of byterange addressed parts via the manifest file in Block S150; transcoding the first byterange-addressable part in Block S160; in response to the maximum expected part size exceeding a size of the first byterange-addressable part in the first rendition, appending padding data to the first byterange-addressable part in Block S170; and transmitting the first byterange-addressable part to the AV player in Block S180. One variation of the method S100 includes: detecting a set of video features in a first video segment in Block S115; estimating a first part size distribution of the first video segment based on the set of video features and a first target rendition in Block S120; estimating a second part size distribution of the first video segment based on the set of video features and a second target rendition in Block S120; calculating a first maximum target part size based on a threshold percentile in the first part size distribution for the first target rendition in Block S130; and calculating a second maximum target part size based on the threshold percentile in the second part size distribution for a second target rendition in Block S130. In this variation, the method S100 further includes: at a first time, for the first target rendition, identifying a first part in the first video segment specified by a first range of bytes based on the first maximum target part size in Block S132; identifying a second part in the first video segment specified by a second range of bytes based on the first maximum target part size in Block S134; generating a first playlist by aggregating the first part and the second part in the first video segment in Block S136; and, for the second target rendition, identifying a third part in the first video segment specified by a third range of bytes based on the second maximum target part size in Block S132; identifying a fourth part in the first video segment specified by a fourth range of bytes based on the second maximum target part size in Block S134; and generating a second playlist by aggregating the third part and the fourth part in the second video segment in Block S136. In this variation, the me