SYSTEMS AND METHODS FOR ADAPTIVE BITRATE STREAMING OF MEDIA INCLUDING SUBTITLES
Systems and methods for adaptive bitrate streaming of media including subtitles utilizing Hypertext Transfer Protocol (HTTP) in accordance with embodiments of the invention are disclosed. One embodiment of the invention includes requesting and buffering portions of video from at least one of the alternative streams using a playback device, requesting information indicative of a font utilized by a font-rendering engine to render text from a selected subtitle stream, downloading at least one font file when the font is not present on the playback device, requesting and buffering at least a portion of the selected subtitle stream, decoding the buffered portions of video using a decoder on the playback device, rendering the portions of the subtitle stream corresponding to the buffered portion of video using a font-rendering engine configured by the at least one downloaded font file, and performing synchronized playback of the decoded video and rendered subtitles using the playback device.
1 . A method of playing back encoded media, where the media is encoded as a plurality of alternative streams and at least one subtitle stream, the method comprising:
requesting and buffering portions of video from at least one of the alternative streams using a playback device;
requesting information indicative of a font utilized by a font-rendering engine to render text from a selected subtitle stream;
downloading at least one font file when the font is not present on the playback device;
requesting and buffering at least a portion of the selected subtitle stream;
decoding the buffered portions of video using a decoder on the playback device;
rendering the portions of the subtitle stream corresponding to the buffered portion of video using a font-rendering engine configured by the at least one downloaded font file; and
performing synchronized playback of the decoded video and rendered subtitles using the playback device.
2 . The method of claim 1 , further comprising measuring the current streaming conditions by measuring the time taken to receive requested portions of a stream from the time at which the portions were requested.
3 . The method of claim 2 , wherein requesting and buffering portions of video from at least one of the alternative streams using a playback device further comprises requesting and buffering portions of video from at least one of the alternative streams based upon the bitrates of the alternative streams and the measured streaming conditions using a playback device.
4 . The method of claim 1 , wherein the selected subtitle stream is stored within a container file that includes the font file as an attachment to the container file.
5 . The method of claim 4 , wherein the container file in which the selected subtitle stream is stored includes a separate element containing metadata describing the attached font file.
6 . The method of claim 5 , further comprising determining whether the font file is present on the playback device without downloading the font file by requesting the metadata describing the attached font file from the container file using the playback device.
7 . The method of claim 5 , wherein the metadata describing the attached font file includes a description of the font file and the location of the font file within the container file.
8 . The method of claim 1 , wherein the font file is compressed and the method further comprises decompressing the downloaded font file using the playback device.
9 . The method of claim 1 , wherein the selected subtitle stream is selected by the playback device in response to a user instruction.
10 . The method of claim 1 , further comprising displaying a user interface indicative of the estimated time to download the at least one font file using the playback device.
11 . The method of claim 1 , wherein the subtitle stream is encoded as Unicode text.
12 . The method of claim 1 , wherein requesting and buffering at least a portion of the selected subtitle stream comprises downloading and buffering the entire subtitle stream prior to the commencement of playback
13 . The method of claim 1 , wherein requesting and buffering at least a portion of the selected subtitle stream comprises requesting and buffering segments of the subtitle stream with timing corresponding to the timing of the portions of video requested by the playback device.
14 . The method of claim 13 , wherein the font used to render the subtitle track is contained within a plurality of font files and at least one of the plurality of font files corresponds to a segment of the subtitle stream, the method further comprising downloading the font file corresponding to a segment of the subtitle stream when the playback device requests the segment of the subtitle stream.
15 . The method of claim 14 , wherein the font used to render the subtitle track is active according to an associated start timecode and end timecode, and the start and end timecodes are independent of the subtitle segment times.
16 . The method of claim 15 , wherein start and end timecodes for a plurality of font segments overlap, and lead to multiple font segments being utilized for rendering subtitles at a given time.
17 . The method of claim 1 , wherein:
the alternative streams and the subtitle stream are stored in separate container files; and
requesting portions of a stream further comprising requesting portions of files from remote servers via Hypertext Transfer Protocol (HTTP) byte range requests using the playback device.
18 . The method of claim 1 , wherein the alternative streams and the subtitle stream are stored in separate Extensible Binary Markup Language (EBML) container files.
19 . The method of claim 18 , wherein each of the EBML container files comprises a plurality of Cluster elements, where each Cluster element contains a portion of encoded media.
20 . The method of claim 19 , wherein the portions of encoded media in each of the Cluster elements have the same duration.
21 . The method of claim 20 , wherein the portions of encoded media in each of the Cluster elements have a 2 second duration.
22 . The method of claim 18 , wherein the EBML container file containing the selected subtitle stream includes at least one font file as an attachment to the container file.
23 . The method of claim 22 , wherein the at least one font file attached to the container file are compressed.
24 . The method of claim 1 , further comprising retrieving a top level index file using the playback device that identifies the alternative streams and identifies at least one subtitle stream.
25 . A playback device configured to playback encoded media, where the media is encoded as a plurality of alternative streams and at least one subtitle stream, the playback device comprising:
a processor configured by a client application to request portions of files from a remote server;
wherein the client application further configures the processor to:
request and buffer portions of video from at least one of the alternative streams;
request information indicative of a font utilized by a font-rendering engine to render text from a selected subtitle stream;
download at least one font file when the font is not present on the playback device;
request and buffer at least a portion of the selected subtitle stream;
decode the buffered portions of video;
render the portions of the subtitle stream corresponding to the buffered portion of video using a font-rendering engine configured by the at least one downloaded font file; and
perform synchronized playback of the decoded video and rendered subtitles.