×

Method and apparatus for segmenting data

  • US 10,701,415 B2
  • Filed: 05/19/2017
  • Issued: 06/30/2020
  • Est. Priority Date: 05/19/2016
  • Status: Active Grant
First Claim
Patent Images

1. A method of coding a live video stream by an electronic media proxy, the method comprising:

  • receiving, by an input of the electronic media proxy and from a media source, a given block of video data comprising a portion of the live video stream for real time coding, a remainder of the live video stream being not yet received;

    reading, by a client socket of the electronic media proxy, a header of the given block of the live video stream to determine a length of the given block;

    dividing, by a segmenter of the electronic media proxy, the given block into a plurality of first segments and a second segment having a remainder of the given block, each of the plurality of the first segments has a target duration and a respective media segment identifier, the second segment has a different duration from the target duration;

    determining, by the client socket, whether a duration of the second segment is less than the target duration that can be readily coded based on the length of the given block;

    in response to determining the duration of the second segment is less than the target duration, generating a media segment to make the second segment spanning the remaining portion of the given block and adding the media segment to the given block to form a final given block, wherein the media segment is separate from the plurality of first segments;

    updating, by the electronic media proxy, a set of media segment identifiers to be published with an identifier of the media segment;

    providing, by the electronic media proxy, the final given block to an encoder of the electronic media proxy for coding;

    receiving a request for a manifest, the manifest comprising a list of the set of media segment identifiers;

    in response to the receiving of the request for the manifest at an interval of the target duration, determining whether the set of media segment identifiers includes media segment identifiers that have not been published;

    in response to the set of media segment identifiers includes media segment identifiers that have not been published, publishing the manifest comprising the list of the set of media segment identifiers that have not been published;

    in response to the set of media segment identifiers does not include media segment identifiers that have not been published, generating an interim media segment temporally spanning from an end of a previously generated media segment to a time the manifest request is received;

    updating the set of media identifiers with an identifier of the generated interim media segment; and

    publishing the manifest comprising the list of the media segment identifiers including the identifier of the generated interim media segment,wherein the list of media segment identifiers comprises a maximum number of media segment identifiers;

    wherein updating the set of media segment identifiers to be published with the identifier of the media segment comprises;

    postpending the list of the media segment identifiers with the identifier of the media segment, andremoving a temporally oldest identifier in the list of media segment identifiers from the list of the media segment identifiers in response to the list of the media segment identifiers with the identifier of the media segment includes more than the maximum number of media segment identifiers;

    wherein updating the list of media segment identifiers with the identifier of the generated interim media segment comprises;

    postpending the list of the media segment identifiers with the identifier of the generated interim media segment, andremoving a temporally oldest identifier in the list of media segment identifiers from the list of the media segment identifiers in response to the list of the media segment identifiers includes more than the maximum number of media segment identifiers; and

    controlling a read loop of the live video stream according to the target duration and the length of the given block to read the live video stream,wherein when a temporal duration of the length of the given block is less than a target, then the reading is terminated and read data of the given block is returned to a proxy.

View all claims
  • 5 Assignments
Timeline View
Assignment View
    ×
    ×