Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol
First Claim
1. A playback device configured to decode video from a plurality of alternative video streams with different maximum bitrates and packed in container files, wherein the container files are extensible binary markup language (EBML) files, the playback device comprising:
- a processor configured via a playback application to decode at least one multimedia file containing an encoded source video;
wherein the playback application further configures the processor to;
parse a top level index to obtain information that identifies a plurality of EBML container files, wherein each EBML container file of the plurality of EBML container files comprises a set of alternative portions of a source video, wherein the set of alternative portions for each EBML container file is encoded using a different maximum bitrate that is associated with a particular alternative video stream using a different set of encoding parameters, wherein each alternative portion of a set of alternative portions is stored in a Cluster element of the EBML container and commences with an intra frame starting a closed Group of Pictures (GOP), wherein corresponding alternative portions in the sets of alternative portions of different EBML container files share a same time code, wherein the top level index describes at least the maximum bitrate of the particular alternative video stream associated with each EBML container file and is separate from the EBML container files;
request a portion of at least one of the plurality of EBML container files based on the maximum bitrate of the particular alternative stream associated with the at least one EBML container file, wherein the requested portion comprises an element that specifies the set of encoding parameters used to encode the set of alternative portions of the source video contained within the EBML container file;
retrieve an index from a Cues element within the at least one EBML container file, wherein a first index entry of the index references an initial byte for a first Cluster element comprising a first alternative portion and a second index entry of the index references an initial byte for a next Cluster element comprising a second alternative portion;
infer a size of the given Cluster element from at least the first and second index entries of the Cues element within the at least one EBML container file;
request at least a portion of the first alternative portion from the Cluster element of the at least one EBML container file by retrieving a byte range of the at least one EBML container file based on the inferred size and the initial byte of the first Cluster;
receive and buffer the requested portion; and
decode the encoded video contained within the buffered Cluster elements utilizing the set of encoding parameters.
5 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods for encoding source media in Matroska container files for adaptive bitrate streaming utilizing Hypertext Transfer Potocol (HTTP) in accordance with embodiments of the invention are disclosed. One embodiment of the invention includes a processor configured via a source encoding application to ingest at least one multimedia file containing a source video. In addition, the source encoding application further configures the processor to select a portion of the source video, transcode the selected portion of the source video into a plurality of alternative portions of encoded video, where each alternative portion is encoded using a different set of encoding parameters and commences with an intra frame starting a closed Group of Pictures (GOP), write each of the alternative portions of encoded video to an element of a different EBML container file, where each element is located within an EBML container file that also includes another element that indicates the encoding parameters used to encode the alternative portion of encoded video, and add an entry to at least one index that identifies the location of the element containing one of the alternative portions of encoded video within each of the EBML container files.
652 Citations
20 Claims
-
1. A playback device configured to decode video from a plurality of alternative video streams with different maximum bitrates and packed in container files, wherein the container files are extensible binary markup language (EBML) files, the playback device comprising:
-
a processor configured via a playback application to decode at least one multimedia file containing an encoded source video; wherein the playback application further configures the processor to; parse a top level index to obtain information that identifies a plurality of EBML container files, wherein each EBML container file of the plurality of EBML container files comprises a set of alternative portions of a source video, wherein the set of alternative portions for each EBML container file is encoded using a different maximum bitrate that is associated with a particular alternative video stream using a different set of encoding parameters, wherein each alternative portion of a set of alternative portions is stored in a Cluster element of the EBML container and commences with an intra frame starting a closed Group of Pictures (GOP), wherein corresponding alternative portions in the sets of alternative portions of different EBML container files share a same time code, wherein the top level index describes at least the maximum bitrate of the particular alternative video stream associated with each EBML container file and is separate from the EBML container files; request a portion of at least one of the plurality of EBML container files based on the maximum bitrate of the particular alternative stream associated with the at least one EBML container file, wherein the requested portion comprises an element that specifies the set of encoding parameters used to encode the set of alternative portions of the source video contained within the EBML container file; retrieve an index from a Cues element within the at least one EBML container file, wherein a first index entry of the index references an initial byte for a first Cluster element comprising a first alternative portion and a second index entry of the index references an initial byte for a next Cluster element comprising a second alternative portion; infer a size of the given Cluster element from at least the first and second index entries of the Cues element within the at least one EBML container file; request at least a portion of the first alternative portion from the Cluster element of the at least one EBML container file by retrieving a byte range of the at least one EBML container file based on the inferred size and the initial byte of the first Cluster; receive and buffer the requested portion; and decode the encoded video contained within the buffered Cluster elements utilizing the set of encoding parameters. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
Specification