US8205004B1 - Multi-bit-rate streaming delivery - Google Patents
Multi-bit-rate streaming delivery Download PDFInfo
- Publication number
- US8205004B1 US8205004B1 US12/493,121 US49312109A US8205004B1 US 8205004 B1 US8205004 B1 US 8205004B1 US 49312109 A US49312109 A US 49312109A US 8205004 B1 US8205004 B1 US 8205004B1
- Authority
- US
- United States
- Prior art keywords
- media
- bit
- segments
- segment
- document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
- 238000000034 method Methods 0.000 claims abstract description 49
- 238000004590 computer program Methods 0.000 claims abstract description 14
- 238000004891 communication Methods 0.000 claims description 55
- 238000012545 processing Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 abstract description 5
- 238000012546 transfer Methods 0.000 abstract description 4
- 230000004048 modification Effects 0.000 abstract description 3
- 238000012986 modification Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
Definitions
- This specification relates to single-file multi-bit-rate streaming delivery.
- Some techniques for delivering (either pre-recorded or near-live) media files using Hypertext Transfer Protocol (HTTP) servers and content distribution networks based on HTTP provide a single bit-rate stream.
- HTTP Hypertext Transfer Protocol
- most progressive-playback HTTP video playback clients are configured to use a one-file-one-bit-rate approach.
- a client When playing a single bit-rate stream, a client may receive less data than the bandwidth available to the client (in which case a better experience could be provided if there was a higher source bit-rate). Further, when playing a single bit-rate stream, the client may receive too much data (in which case playback necessarily gets farther and farther behind by pausing the media and allowing the stream to catch up).
- This specification describes technologies relating to single-file multi-bit-rate streaming delivery.
- One aspect of the subject matter described in this specification can be implemented in methods that include the actions of receiving, from a media streaming provider via a communication channel, data regarding a media document.
- the received data can include a media data segment of the media document, and a portion of an index for the media document.
- the index portion can include information relating to fewer than all segments of the media document.
- a segment can be selected from the fewer than all the segments of the media document. The selection is based on the information in the index portion, and on a supportable streaming bit-rate via the communication channel.
- the supportable streaming bit-rate via the communication channel corresponds to an instant streaming bit-rate inferred from Transmission Control Protocol (TCP) information by a client receiving the media data segment.
- TCP Transmission Control Protocol
- the method can further include requesting the selected segment of the media document from the media streaming provider.
- Other implementations of this aspect include corresponding systems, apparatus, and computer programs, configured to perform the actions of the methods, encoded on computer storage devices.
- Requesting the selected segment of the media document via the communication channel can include specifying a locator of the media document, a byte-offset to indicate a beginning of the selected segment, and a byte-offset to indicate an ending of the selected segment.
- the media data segment can contain the index portion.
- the fewer than all segments of the media document include a first set of segments.
- the first set of segments can include, respectively, media portions succeeding the portion of the media being output for playing. Each succeeding media portion may be encoded at each of multiple bit-rates. If an encoding bit-rate of the data being output for playing on the output device is less than the supportable streaming bit-rate via the communication channel then, selecting the segment can include identifying the selected segment from the first set of segments. The identified segment may be encoded at one of the multiple bit-rates larger than or equal to the encoding bit-rate of the data being output for playing on the output device, and smaller than the supportable streaming bit-rate via the communication channel.
- selecting the segment can include identifying the selected segment from the first set of segments.
- the identified segment may be encoded at one of the multiple bit-rates smaller than the supportable streaming bit-rate via the communication channel.
- the fewer than all segments of the media document can also include a second set of segments.
- the second set of segments can contain, respectively, predetermined media locations of the media document.
- the predetermined media locations can contain byte-offsets spaced to divide the media into parts having equal duration.
- the predetermined media locations can correspond to media portions encoded at a lowest bit-rate from the multiple bit-rates. Selecting the segment can include identifying the selected segment from the second set of segments.
- the identified segment from the second set of segments can succeed the received media data segment. Further, the identified segment from the second set of segments can precede the received media data segment.
- the described subject matter can also be implemented in a system for streaming media to a remote media play point via a communication channel.
- the system includes a storage device configured to store a media document.
- the media document can include segments of the media document. Each segment can include a media portion of the media document.
- the media portion can be encoded at a bit-rate selected from a first set of different bit-rates.
- Each segment can also include a portion of an index for the media document.
- the index portion can contain information relating to fewer than all segments of the media document.
- the information can include byte-offsets corresponding to the fewer than all segments of the media document.
- the system also includes a processor communicatively coupled to the storage device.
- the processor is configured to receive, from the remote media play point, a request for a segment of the media document.
- the request can include a locator of the media document, a byte-offset to indicate a beginning of the requested segment, and a byte-offset to indicate an ending of the requested segment.
- the processor is also configured to provide the requested segment of the media document to the remote media play point.
- the first set of different bit-rates includes a first bit-rate smaller than a ratio between (i) a fraction of a TCP-initial-burst payload and (ii) a network round-trip time.
- the media portion included in the provided segment can be encoded at the first bit-rate.
- a combination of the fraction of the TCP-initial-burst payload and the first bit-rate may be selected based on media content to enable uninterrupted playback between consecutive requests at the remote media play point.
- each media portion can be encoded at each of the bit-rates from the first set of different bit-rates.
- the segments of the media document that contain the media portion encoded at each of the bit-rates from the first set of different bit-rates, respectively, can be interleaved in a file.
- the segments of the media document that contain the media portion encoded at each of the bit-rates from the first set of different bit-rates, respectively can be stored in separate files corresponding to the first set of different bit-rates, respectively.
- the fewer than all segments of the media document can include a second set of segments.
- the second set of segments may include, respectively, media portions succeeding the portion of the media. Each succeeding media portion may be encoded at each of the bit-rates from the first set of different bit-rates.
- the fewer than all segments of the media document can further include a third set of segments associated, respectively, with predetermined media locations of the media document. Each segment from the third set of segments can include a media portion encoded at the lowest bit-rate from the first set of different bit-rates.
- the predetermined media locations may be associated with publisher switch points.
- the predetermined media locations include byte-offsets spaced to divide the media into parts having equal duration.
- the byte-offsets included in an index portion associated with the first segment of the media document can have the largest spacing.
- the spacing may be reduced incrementally in subsequent segments before reaching a smallest spacing equal to a duration of the media portion included in each segment.
- the predetermined media locations of the media document may be selectively associated to preceding segments of the media document.
- the index portion can include (i) a predetermined byte-offset and (ii) a predetermined byte-range within the segment of the media document.
- the techniques and systems disclosed in this specification can encode media into a single file (or a very small number of files), which can then be placed on an unmodified HTTP server. Because the disclosed techniques and systems can use one or a few media files, the file system of the HTTP server does not need to manage a large numbers of small files, grouped nearby in the file system hierarchy. Further, because the disclosed techniques and systems can use one or a few media files, HTTP cache-servers correspondingly need store only one or a few files in each cache, therefore simplifying the post-stream cleanup. The techniques and systems described in this specification can also improve the ability of unmodified HTTP cache servers to pre-fetch content while being compatible with algorithms and settings existing on the unmodified HTTP cache servers for pre-fetching other content.
- the techniques disclosed here can use HTTP for distribution of the encoded media file and may support multi-bit-rate playback at a client without requiring a modification or plug-in to the software of the HTTP server or the HTTP cache-server. Also, in the disclosed techniques and systems no initial manifest file or index need be sent to the playback client as no interoperability with a server plug-in is required. By avoiding an initial download of such a manifest or index, the start of media playback can be sped up significantly.
- FIG. 1 shows block diagram of an example system and technique for multi-bit rate streaming delivery.
- FIG. 2A shows a block diagram of an example media streaming provider system for multi-bit rate streaming delivery.
- FIG. 2B shows a schematic of an example media document including an index interleaved in the media document.
- FIG. 3 shows a flow diagram of an example process for selecting multi-bit rate media segments of a media document.
- the techniques and systems disclosed in this specification can encode media into a single file (or a small number of files), which can then be placed on an unmodified Hypertext Transfer Protocol (HTTP) server. Further, the techniques disclosed here can use HTTP for distribution of the encoded media file and may support multi-bit-rate playback at a client without requiring a modification or plug-in to the server software. Furthermore, these techniques can use properties of HTTP and Transmission Control Protocol (TCP) to minimize playback startup time.
- HTTP Hypertext Transfer Protocol
- the techniques and systems disclosed in this specification can be implemented in the ADOBE® FLASH® Player and ADOBE® AIR® software (available from Adobe Systems Incorporated, of San Jose, Calif.) for potentially improved HTTP video delivery.
- the techniques described in this specification can enable the ADOBE® FLASH® Media Server (also available from Adobe Systems Incorporated, of San Jose, Calif.) to use HTTP as an alternative delivery vehicle for streaming video.
- FIG. 1 shows a block diagram of an example system and technique for multi-bit rate streaming delivery.
- a communication system 100 includes a consumer 10 communicatively coupled to a media streaming provider 20 via a communication channel 30 .
- the communication channel 30 may be implemented via the internet.
- the communication channel 30 may be implemented via a private communication network.
- the communication protocol over the communication channel 30 may be TCP.
- the consumer 10 can be identified as a client 10 and necessarily includes some hardware since the consumer 10 includes a computerized electronic device 10 .
- the computerized electronic device 10 may be a laptop computer, a media player device, a mobile device, etc.
- the computerized electronic device 10 includes a processor and may also include a storage device.
- the processor may be configured to request and receive a media stream from the media streaming provider 20 .
- the computerized electronic device 10 includes an output device for playing the received media.
- the media streaming provider 20 can be identified as a server 20 and necessarily includes some hardware since the media streaming provider 20 may include at least a computer workstation 20 .
- the components of the media streaming provider 20 are described in detail with reference to FIG. 2A .
- the media streaming provider 20 represents an unmodified HTTP server.
- the consumer 10 may use an HTTP-byte-range request for requesting segments of a media document that can be stored on the HTTP server of the media streaming provider 20 .
- an unmodified HTTP server can respond to the HTTP-byte-range requests received from the subscriber 10 .
- the media document can be identified as an electronic document which may, but need not, correspond to a file.
- the media document can, but need not, be identified as an HTTP resource having a corresponding Uniform Resource Locator (URL).
- URL Uniform Resource Locator
- a file may, but need not, be associated to an HTTP resource.
- An electronic document may be stored in a portion of a file that holds other documents, in a single file dedicated to the document in question, or in multiple coordinated files.
- a client processor can calculate whether an increase or decrease in bit-rate may be warranted, and can select which media segments are to be fetched next.
- the client 10 can use index information to translate from the selected segment number (equivalent to time offset) and the selected encoding bit-rate to a start and end byte offset (and, in the case of multiple files, the locator of the file containing that segment).
- the media document and the associated index are described in detail with reference to FIG. 2B .
- the technique can receive 200 , from the media streaming provider 20 via the communication channel 30 , data regarding a media document.
- the received data may include a media data segment of the media document, and a portion of an index for the media document.
- the media data segment includes the index portion.
- the index portion can contain information relating to fewer than all segments of the media document.
- the technique can select 300 a segment from the fewer than all the segments of the media document (referenced in the received index portion) for subsequent playing.
- the selection 300 may be based on the information in the index portion. If the index portion includes information about the following media segments, the technique may automatically select 300 the following media segments as part of progressive (forward) media playing. If the index portion includes information about predetermined locations of the media, the technique may select 300 a random media location as part of media seeking Further, the selection 300 may be based on a combination of information included in the received index portion and a supportable streaming bit-rate via the communication channel 30 .
- the supportable streaming bit-rate via the communication channel 30 corresponds to an instant streaming bit-rate inferred (from TCP information) by the client 10 receiving 200 the media data segment, for example.
- the streaming bit-rate supportable via the communication channel 30 may vary in time, and may depend on the client's 10 network activity, on the media streaming provider's 20 network activity and on the overall network 30 activity.
- the selection 300 can proceed to identify a subsequent media segment encoded at a bit-rate that can provide uninterrupted transmission and high resolution playing. The details of the selection 300 are described in detail with reference to FIG. 3 .
- the selection 300 may be based on a determination that the processing capacity of the client processor becomes insufficient to decode media encoded at the bit-rate of the data being output for playing on the output device. In such implementations, the selection 300 can identify a subsequent media segment encoded at a bit-rate smaller than the encoding bit-rate of the data being output for playing on the output device, even if the encoding bit-rate of the data being output for playing on the output device is less than the supportable streaming bit-rate via the communication channel 30 .
- the technique can then request 400 the selected segment of the media document from the media streaming provider 20 .
- requesting 400 the selected segment of the media document via a communication channel 30 based on HTTP can include specifying a locator of the media document, a byte-offset to indicate the beginning of the selected segment, and a byte-offset to indicate the ending of the selected segment.
- FIG. 2A shows a block diagram of an example media streaming provider system 20 for multi-bit-rate streaming delivery.
- the system for media streaming 20 is communicatively coupled to a remote media play point 10 via a communication channel 30 .
- the media streaming provider 20 includes a processor 40 communicatively coupled to a store 60 .
- the store 60 may be a storage device, for example a hard drive or a flash card.
- the store can be further identified as a database 60 integrated into a file system 50 .
- the database 60 can be configured to store media documents 70 , 71 and 75 . Segments of each of the media documents 70 , 71 and 75 may be accessed based on indexing schemes described below.
- Each segment of a media document may include a media portion of the respective media document.
- the media portion is also referred to interchangeably as the media data segment, or the media segment.
- the media portion can be encoded at a bit-rate selected from multiple bit-rates.
- each segment of the media document may include a portion of an index for the media document.
- the index portion contains information relating to fewer than all segments of the media document.
- the information contained in the index portion includes byte-offsets corresponding to the fewer than all segments of the media document.
- the media document 70 can be encoded into a single file.
- segments of the media document that include media portions encoded at each of the multiple bit-rates, respectively, may be interleaved in the single file.
- the media document 71 can contain a small number of files, 72 - 74 , and each file may correspond to a (different) encoding bit-rate.
- a recorded one-hour show can be encoded at a low bit-rate in file 72 , at an intermediate bit-rate in file 73 , at a high bit-rate in file 74 .
- the media document 75 can contain a small number of files, 76 and 77 .
- a first file 76 may correspond to the initial 6 minutes of a recorded one-hour show, while the second file 77 may correspond to the remaining 54 minutes of the recorded one-hour show.
- each media portion of files 76 and 77 can be encoded at each of the multiple bit-rates.
- a first file 76 may include the first 6 minutes of the recorded one-hour show encoded at a given bit-rate.
- a second file 77 may include the remaining 54 minutes of the recorded one-hour show encoded at the same bit-rate.
- Each file 70 , 72 - 74 , 76 and 77 can include both audio and video and index information.
- Each file 70 , 72 - 74 , 76 and 77 can also contain other kinds of media data, e.g., subtitle text, smell-o-vision, and non-index metadata, e.g., cross-references to entries of internet-based movie databases, current scores of related matches during a sporting event, and more.
- the processor 40 of the system for streaming media 20 may be configured to receive, from the remote media play point 10 , a request for a segment of the media document.
- the request can include a locator of the media document, a byte-offset to indicate a beginning of the requested segment, and a byte-offset to indicate an ending of the requested segment.
- the characteristics of the foregoing request may describe an HTTP request.
- the processor 40 may be configured to provide the requested segment of the media document to the remote media play point 10 .
- FIG. 2B shows a schematic of an example media document 70 including index information interleaved in the media document 70 .
- an index for the media document 70 may be arranged in a prioritized (partially hierarchical) order, and may be distributed throughout the media document 70 based on that order, as described below.
- the media document 70 can include segments of the media document, S(i, BR) 80 .
- Each segment of the media document, S(i, BR) 80 includes an index portion, I(i) 82 , and a media portion, MP(i, BR) 86 .
- the segment number “i” may be associated to a time offset for the media portion, MP(i, BR) 86 , included in the segment of the media document, S(i, BR) 80 .
- a time offset for the media portion, MP(i, BR) 86 included in the segment of the media document, S(i, BR) 80 .
- the encoding bit-rate, BR, of a media portion 86 can be one of the multiple encoding bit-rates described above.
- each media portion 86 may be encoded at a low (L) bit-rate, a medium (M) bit-rate and a high (H) bit-rate.
- An example of a low bit-rate for video encoding is 100 kbps.
- An example of a medium bit-rate for video encoding is 250 kbps.
- Examples of high bit-rates for video encoding are 1 Mbps and 3 Mbps.
- the set of multiple encoding bit-rates illustrated in FIG. 2B is just an example set.
- the set of multiple encoding bit-rates can include anywhere from two encoding bit-rates to a very large number of encoding bit-rates (e.g., a set of multiple encoding bit-rates containing 12 possible bit-rates is described in an example implementation below.)
- the index portion, I(i) 82 included in a segment of the media document, S(i, BR) 80 , may include information about a first set of segments, fewer than all segments of the media document 70 .
- the segments in the first set of segments include, respectively, media portions succeeding the media portion, MP(i, BR) 86 , each succeeding media portion encoded at each of the multiple bit-rates.
- the index portion, I(i) 82 corresponding to the segment of the media document, S(i, BR) 80 , includes information about segments that include the immediately following (consecutive) media portion, MP(i+1, BR′), encoded at all three available bit-rates, BR′ in ⁇ L, M, H ⁇ : S(i+1, L), S(i+1, M) and S(i+1, H).
- the index portion, I(i) 82 corresponding to the segment of the media document, S(i, BR5), references segments that include the immediately following (consecutive) media portion, MP(i+1, BR′), where BR′ includes some, but not all of, the 12 encoding bit-rates.
- the segments encoded at the same or next-smaller/larger bit-rates, S(i+1, BR4), S(i+1, BR5) and S(i+1, BR6) may be referenced in the index portion of the segment of the media document, S(i, BR5).
- information about the first set of segments can provide the ability for the client 10 to switch bit-rates.
- the index portion, I(i) 82 (received along with the received media portion, MP(i, BR) 86 ) may allow the client 10 to select the following media segment 80 at any available encoding bit-rate, S(i+1, L), S(i+1, M) and S(i+1, H), for instance.
- the index portion 82 may also include the information for the client 10 to select any bit rate of a few additional segments forward.
- the received index portion, I(i) 82 may also include information about the second next S(i+2, BR′), third next S(i+3, BR′) and fourth next S(i+4, BR′) segments, where the encoding bit-rate BR′ can be in ⁇ L, M, H ⁇ .
- the index portion, I(i) 82 included in the segment of the media document, S(i, BR) 80 , may also include information about a second set of segments, fewer than all segments of the media document. Segments from the second set of segments may be associated, respectively, with predetermined media locations (points or time offsets) of the media document 70 .
- each segment from the second set of segments includes a media portion 86 encoded at the lowest bit-rate from the multiple bit-rates.
- the index portion, I(i) 82 corresponding to the segment of the media document, S(i, BR) 80 , includes information about two segments from the second set of segments: the segment of the media document at point-j, S(j, L), and the segment of the media document at point-k, S(k, L). Further in this example, these two media locations “j” and “k” may belong on a predetermined grid of equally spaced time divisions: ⁇ n/8, n/4, 3n/8, n/2, 5n/8, 3n/4, 7n/8, n ⁇ , where n is the total number of segments of the media document. Specific implementations of the index portion 82 are being discussed in detail later in this specification.
- the information included in the index portion 82 may be limited to segments from the second set of segments having media portions encoded at the lowest available encoding bit-rate.
- the foregoing limitation may reduce the amount of index data included in the index portion, I(i) 82 , to enable providing a client more media data and less index data.
- limiting the information in the index portion 82 to segments from the second set of segments encoded at the lowest available bit-rate enables the index portion 82 to reference more predetermined points than if the index portion 82 references segments from the second set of segments encoded at every available bit-rate.
- the index portion 82 can reference segments from the second set of segments encoded at the lowest available bit-rate and at one other bit-rate.
- random-access seek information in the hierarchical index provided only for the baseline bit-rate may be adequate because playback is interrupted when randomly seeking.
- a client 10 may experience playback of the same quality at the seek-to point as playback during the first segment of the media document, S(1, L). Further, once playback may resume at that seek-to point, the client 10 can receive information to fetch the NEXT segment 80 (just a few seconds later) at a higher bit-rate, if the supportable streaming bit-rate via the communication channel 30 is higher than the available encoding bit-rates.
- the predetermined media locations include byte-offsets that can be spaced to divide the media in the media document 70 into portions having gradually shorter duration.
- the byte-offsets included in an index portion, I(1), associated with the first segment of the media document, S(1, L) can have the longest spacing.
- the index portion I(1) corresponding to the first segment of the media document S(1, L) may include information about the segment of the media document at the halfway point-n/2, S(n/2, L), and about the last segment of the media document, n, S(n, L).
- the index portion, I(2), corresponding to the second segment of the media document, S(2, BR) may include information about the segment of the media document at the quarter-way point-n/4, S(n/4, L), and about the segment of the media document at the three-quarter-way point-3n/4, S(3n/4, L). Because not all predetermined media locations can be referenced in a single index portion 82 , early random seeking to future media locations may not provide accurate random access to the seek-to media location. However, the spacing of the predetermined points may be reduced incrementally in subsequent segments before reaching a shortest spacing equal to the duration of the media portion 86 included in each segment 80 .
- Each segment of the media document 80 may include an index portion 82 to provide information for progressive (forward) media playing.
- the index portion 82 can also be used in the case where the received segment may be the target of a random-access seek. Therefore, the index portion 82 of a received segment 80 may also include finely-grained index information for the region of the media in the vicinity of the received segment of the media document 80 .
- the client 10 can accumulate enough information in an in-memory index (cumulative index maintained by the client 10 ) to seek randomly to other segments of the media document.
- the cumulative index, maintained by the client 10 can become more and more accurate.
- Frame-accurate seeking within a segment of the media document 80 can be performed independently of index information, because byte-locations within the frame can be calculated by examining the individual frame data blocks once the segment 80 is received.
- additional hierarchical index information regarding the second set of segments may be provided for evenly-spaced future points in time for which space in the first index portion, I(1), may be available, (e.g., the halfway point, the quarter and three-quarter points, the “1 ⁇ 8th”, “3 ⁇ 8ths”, “5 ⁇ 8ths”, and “7 ⁇ 8ths” points and so on,) until space in the first index portion, I(1), may be exhausted.
- the second set of segments may also be associated, respectively, with publisher switch points.
- the publisher switch points may be chapter points or scene points.
- Information about the segments of the media document associated with the publisher switch points may also be included in the index portion, I(1), of the first segment of the media document, S(1, L), until space in the first index portion, I(1), may be exhausted, and so on.
- a segment of the media document identified in the first or second sets of segments may include media that succeeds the received media data segment, MS(i, BR) 86 .
- the set of evenly-spaced points and the set of publisher switch points (illustrated in FIG. 2B ) are two among many possible examples of predetermined points that may be part of the second set of segments.
- a segment identified in the second set of segments may also include media that precedes the received media data segment, MS(i, BR) 86 . Because the user may seek to any point at any time, some of the index data in later segments of the media document 80 may replicate the finer-grained detail in the earlier segments (second segment, S(2, BR), third segment, S(3, BR), and so on) so that the in-memory index, maintained by the client 10 , may be filled out even if the user immediately seeks to a late point in the media. Further, if the user seeks in such a way that prior index portions 82 become necessary in order to improve seek resolution, the client 10 may choose to download (but not play) these earlier segments 80 .
- the client 10 can receive the index portions 82 for the earlier segments 80 and can fill out the in-memory index. Downloading earlier segments 80 may briefly use additional bandwidth and potentially interrupt play. However, when the user is randomly seeking to new points, playback may be already interrupted.
- the index portion 82 may include (i) a predetermined byte-offset and (ii) a predetermined byte-range within each segment of the media document.
- a media document 70 may have an index that can be placed in fixed-size index portions 82 of segments of the media document 80 .
- the fixed-size index portions 82 can be reserved and padded to fit the information relating to fewer than all segments of the media document. Further, the index portion 82 can be placed at either the beginning or the end of a segment of the media document 80 .
- the MPEG4 container format satisfies the foregoing properties.
- the foregoing format of a media document 70 may allow for the index information to be written late for near-live encoding.
- the techniques disclosed in this specification use properties of HTTP over TCP to minimize playback startup time.
- the media streaming provider 20 can use TCP to initially send a burst of data to the client 10 . Then, the media streaming provider 20 stops to wait for a first acknowledgement from the client 10 . The waiting time corresponds to one network round-trip time.
- Various industry standards for example RFC 3390 and RFC 2581, specify an initial behavior of TCP.
- the initial burst of data includes 4380 bytes of payload.
- the media playback may start as quickly as possible.
- an initial segment of the media document, S(1, BR1) may encode media data and index information into that first 4380 bytes.
- the initial (first) media portion, MP(1, BR1) may be encoded at a first bit-rate, BR1, to fit alongside the first index portion, I(1), in the 4380 bytes of payload. Additionally, the initial media portion, MP(1, BR1), may be selected to occupy sufficient playback time such that a request for the next segment of the media document, S(2, BR), can be placed and a second media frame can be received in reply to the request, before the playback time of the initial media portion, MP(1, BR1), expires.
- Some media documents may use initial metadata to begin playback.
- DRM digital rights management
- an amount of metadata much larger than 4380 bytes may be used to begin playback. In such situations, playback may not be able to start based on the first transmitted TCP packet.
- an example DRM scheme presented below can use metadata for beginning playback that can be fit in the initial segment transmitted with the first TCP packet.
- the metadata can be divided in small portions and playback of the media document can start with only part of the metadata available.
- Each of the small portions of metadata may be included in an index portion 82 .
- the DRM scheme described in this specification can be configured to enable lowest-bit-rate media or initial-segment media, or both, to be played without a DRM exchange.
- an 8-byte frame holding flags and an offset to a later key may be embedded in the segment of the media document, S(1, L), transmitted first.
- the key may be embedded in the segment of the media document, S(2, BR), transmitted second.
- the multiple bit-rates described above with reference to FIGS. 2A and 2B may include a first bit-rate, BR1, smaller than a ratio between (i) a fraction, f, of a TCP-initial-burst payload and (ii) a network round-trip time. (0 ⁇ f ⁇ 1.)
- the fraction, f (associated with the TCP payload reduction) depends at least in part on the size of the HTTP header length (also included in the 4380 bytes).
- the reduction (measured by f) in the total payload is based on the size of the HTTP header length.
- the media portion, MP(1, BR1), included in the provided segment, S(1, BR1), can be encoded at the first bit-rate, BR1.
- a combination of the fraction, f, of the TCP-initial-burst payload and the first bit-rate, BR1 may be selected based on media content to enable uninterrupted playback between consecutive requests at the remote media play point 10 .
- the fraction, f, of the TCP-initial-burst payload may be fixed.
- the first media portion, MP(1, BR1) may be, for example, a static (action-less) scene
- the initial video portion, MP(1, BR1) can be encoded at a first bit-rate, BR1, that may be high.
- the first media portion, MP(1, BR1) may be, for example, a dynamic (action-packed) scene
- the initial video portion, MP(1, BR1) can be encoded at a first bit-rate, BR1, that may be low.
- the first media portion, MP(1, BR1) may be encoded at only one first bit-rate, BR1.
- the fraction, f, of the TCP-initial-burst payload containing the first video portion, MP(1, BR1) may be low, thus providing ample data capacity for the first index portion, I(1).
- the first media portion, MP(1, BR1) may be, for example, a dynamic (action-packed) scene
- the fraction, f, of the TCP-initial-burst payload containing the first video portion, MP(1, BR1) may be high, thus providing limited data capacity for the first index portion, I(1).
- the fraction, f, of the TCP-initial-burst payload and the first bit-rate, BR1 can also be selected based on an estimate of the size of additional headers that may be added by cache-servers as the TCP-initial-burst packet makes its way from the media streaming provider 20 to the client's output device 10 .
- the information contained in the index portion, I(i), of the received segment of the media document, S(i, BR), relating to the fewer than all segment of the media document includes the encoding bit-rates of the fewer than all segment of the media document, respectively.
- FIG. 3 shows a flow diagram of an example process for selecting 300 multi-bit rate media segments of a media document.
- the indices “i” and “j” correspond to the previously received and the currently selected segments, respectively.
- the process may compare 320 an encoding bit-rate, BR(i), of the data being output for playing on the output device with a supportable streaming bit-rate, br, via the communication channel 30 .
- This comparison 320 may occur during progressive (forward) media playing on the output device at the client 10 .
- the foregoing selection may occur if the processing capacity of the client processor becomes insufficient to decode media encoded at the bit-rate, BR(i), of the data being output for playing on the output device.
- the identifying 350 may occur during random seeking on client's output device 10 .
- the index portion 82 regarding the second set of segments can reference media encoded at one or more bit-rates larger than the smallest available encoding bit-rate.
- the process may select a seek-to segment of the media document at the next-smaller encoding bit-rate, BR(i)- 1 , or even at the same encoding bit-rate, BR(i), for example.
- the selection of the encoding bit-rate, BR, of the seek-to segment of the media document can be based on the results of previous seek selections.
- the selection performed this way can be free from effects caused by, e.g., a local cache during sequential reading.
- Multiple algorithms that can take past seek selections into account may be applied to select the encoding bit-rate of the seek-to segment of the media document. For example, such algorithms may compute a non-weighted or a weighted running average of encoding bit-rates during previous seek selections.
- Embodiments of the subject matter and the operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them.
- Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on a computer storage medium for execution by, or to control the operation of, data processing apparatus.
- the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus.
- a computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them.
- a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially-generated propagated signal.
- the computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
- the operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
- the term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing
- the apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
- the apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
- the apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
- a computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment.
- a computer program may, but need not, correspond to a file in a file system.
- a program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code).
- a computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
- the processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output.
- the processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
- processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer.
- a processor will receive instructions and data from a read-only memory or a random access memory or both.
- the essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data.
- a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
- mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks.
- a computer need not have such devices.
- a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few.
- Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
- the processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
- a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer.
- a display device e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor
- keyboard and a pointing device e.g., a mouse or a trackball
- Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
- a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a
- Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components.
- the components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network.
- Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
- LAN local area network
- WAN wide area network
- inter-network e.g., the Internet
- peer-to-peer networks e.g., ad hoc peer-to-peer networks.
- the computing system can include clients and servers.
- a client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
- a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device).
- client device e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device.
- Data generated at the client device e.g., a result of the user interaction
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
Among other things, the fraction, f, (associated with the TCP payload reduction) depends at least in part on the size of the HTTP header length (also included in the 4380 bytes). The reduction (measured by f) in the total payload is based on the size of the HTTP header length. The media portion, MP(1, BR1), included in the provided segment, S(1, BR1), can be encoded at the first bit-rate, BR1. Further, a combination of the fraction, f, of the TCP-initial-burst payload and the first bit-rate, BR1, may be selected based on media content to enable uninterrupted playback between consecutive requests at the remote media play
Claims (22)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/493,121 US8205004B1 (en) | 2009-06-26 | 2009-06-26 | Multi-bit-rate streaming delivery |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/493,121 US8205004B1 (en) | 2009-06-26 | 2009-06-26 | Multi-bit-rate streaming delivery |
Publications (1)
Publication Number | Publication Date |
---|---|
US8205004B1 true US8205004B1 (en) | 2012-06-19 |
Family
ID=46209639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/493,121 Active 2030-03-02 US8205004B1 (en) | 2009-06-26 | 2009-06-26 | Multi-bit-rate streaming delivery |
Country Status (1)
Country | Link |
---|---|
US (1) | US8205004B1 (en) |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119395A1 (en) * | 2009-11-13 | 2011-05-19 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive streaming using segmentation |
US20110178991A1 (en) * | 2010-01-20 | 2011-07-21 | Siemens Aktiengesellschaft | Method for operating an archiving system for data sets, in particular medical image data sets, and archiving system |
US20110314130A1 (en) * | 2010-04-08 | 2011-12-22 | Nery Strasman | Managing streaming bandwidth for multiple clients |
US20120059912A1 (en) * | 2010-09-08 | 2012-03-08 | Saffron Digital Limited | Delivering a Media File to a Client |
US20120117263A1 (en) * | 2010-09-07 | 2012-05-10 | Samsung Electronics Co. Ltd. | Manifest mechanism in broadcast involved system |
US20120290644A1 (en) * | 2010-01-18 | 2012-11-15 | Frederic Gabin | Methods and Arrangements for HTTP Media Stream Distribution |
CN103281338A (en) * | 2013-06-21 | 2013-09-04 | 苏州鼎富软件科技有限公司 | Method for processing services of server |
US8533354B1 (en) * | 2012-04-24 | 2013-09-10 | Google Inc. | Initiating media presentation prior to receiving seek index data |
US20130254345A1 (en) * | 2012-03-21 | 2013-09-26 | Samsung Electronics Co., Ltd. | Method and apparatus for receiving multimedia contents |
WO2014015429A1 (en) * | 2012-07-23 | 2014-01-30 | Espial Group Inc. | Storage optimizations for multi-file adaptive bitrate assets |
US8665858B2 (en) | 2011-09-15 | 2014-03-04 | Vasona Networks Inc. | Method and computer readable medium for gathering user equipment location information |
US20140095672A1 (en) * | 2010-03-05 | 2014-04-03 | Samsung Electronics Co., Ltd. | Method and apparatus for generating a reproducing adaptive stream based on file format, and recording medium thereof |
US20140143440A1 (en) * | 2012-11-20 | 2014-05-22 | General Instrument Corporation | Method and apparatus for streaming media content to client devices |
US20140237112A1 (en) * | 2011-11-04 | 2014-08-21 | Huawei Technologies Co., Ltd. | Method for Evaluating Streaming Media Transmission Quality and Obtaining Information, and Related Device and System |
US8817614B1 (en) | 2010-09-16 | 2014-08-26 | Vasona Networks Inc. | Policy enforcer having load balancing capabilities |
US8902753B2 (en) | 2010-09-16 | 2014-12-02 | Vasona Networks Inc. | Method, system and computer readable medium for affecting bit rate |
US20140355603A1 (en) * | 2013-05-31 | 2014-12-04 | Broadcom Corporation | Adaptive bit rate distribution of multicast streams |
US8976655B2 (en) | 2010-09-16 | 2015-03-10 | Vasona Networks Inc. | Evaluating a capacity of a cell of a radio access network |
US20150149581A1 (en) * | 2013-11-22 | 2015-05-28 | Verizon Patent And Licensing Inc. | Content caching in a network for efficient user device access |
US9143838B2 (en) | 2010-09-06 | 2015-09-22 | Vasona Networks Inc. | Device and method for quality assessment of encrypted streaming media flows |
US9253103B2 (en) | 2010-04-08 | 2016-02-02 | Vasona Networks Inc. | Managing streaming bandwidth for multiple clients |
US9374404B2 (en) | 2010-08-26 | 2016-06-21 | Vasona Networks Inc. | Streaming media flows management |
US9571827B2 (en) | 2012-06-08 | 2017-02-14 | Apple Inc. | Techniques for adaptive video streaming |
US9654528B1 (en) | 2013-03-11 | 2017-05-16 | Google Inc. | Dynamic bitrate selection for streaming media |
US9832671B2 (en) | 2010-09-16 | 2017-11-28 | Vassona Networks | Modeling radio access networks |
US9872185B1 (en) | 2010-09-16 | 2018-01-16 | Vasona Networks Ltd. | Policy enforcer in a network that has a network address translator |
US9992499B2 (en) | 2013-02-27 | 2018-06-05 | Apple Inc. | Adaptive streaming techniques |
US10034031B2 (en) | 2012-10-05 | 2018-07-24 | Adobe Systems Incorporated | Generating a single content entity to manage multiple bitrate encodings for multiple content consumption platforms |
US20180375792A1 (en) * | 2017-06-27 | 2018-12-27 | Cisco Technology, Inc. | Non-real time adaptive bitrate recording scheduler |
US10200668B2 (en) * | 2012-04-09 | 2019-02-05 | Intel Corporation | Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content |
US10565158B2 (en) * | 2017-07-31 | 2020-02-18 | Amazon Technologies, Inc. | Multi-device synchronization for immersive experiences |
CN110875947A (en) * | 2018-09-03 | 2020-03-10 | 阿里巴巴集团控股有限公司 | Data processing method and edge node equipment |
US10659512B1 (en) * | 2017-12-05 | 2020-05-19 | Amazon Technologies, Inc. | Optimizing adaptive bit rate streaming at edge locations |
US11064230B2 (en) | 2017-11-01 | 2021-07-13 | Amazon Technologies, Inc. | Optimizing adaptive bit rate streaming for content delivery |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751968A (en) | 1995-09-12 | 1998-05-12 | Vocaltec Ltd. | System and method for distributing multi-media presentations in a computer network |
US20030061369A1 (en) | 2001-09-24 | 2003-03-27 | Emre Aksu | Processing of multimedia data |
US20050102371A1 (en) | 2003-11-07 | 2005-05-12 | Emre Aksu | Streaming from a server to a client |
US6938047B2 (en) | 2003-02-19 | 2005-08-30 | Maui X-Stream, Inc. | Methods, data structures, and systems for processing media data streams |
WO2006138432A2 (en) | 2005-06-17 | 2006-12-28 | Lightningcast Llc | Presenting advertising content |
US20070162611A1 (en) * | 2006-01-06 | 2007-07-12 | Google Inc. | Discontinuous Download of Media Files |
US7400764B2 (en) | 2005-05-04 | 2008-07-15 | Maui X-Stream, Inc. | Compression and decompression of media data |
US20080195743A1 (en) * | 2004-04-30 | 2008-08-14 | Brueck David F | Apparatus, system, and method for multi-bitrate content streaming |
US20080276173A1 (en) * | 2007-05-02 | 2008-11-06 | Microsoft Corporation | Iteratively Locating A Position Corresponding To A Desired Seek Time |
US7496676B2 (en) | 2003-02-19 | 2009-02-24 | Maui X-Stream, Inc. | Methods, data structures, and systems for processing media data streams |
US20090125636A1 (en) * | 2007-11-13 | 2009-05-14 | Qiong Li | Payload allocation methods for scalable multimedia servers |
US20090282162A1 (en) * | 2008-05-12 | 2009-11-12 | Microsoft Corporation | Optimized client side rate control and indexed file layout for streaming media |
US20100161825A1 (en) * | 2008-12-22 | 2010-06-24 | David Randall Ronca | On-device multiplexing of streaming media content |
US7783773B2 (en) * | 2006-07-24 | 2010-08-24 | Microsoft Corporation | Glitch-free media streaming |
US7925774B2 (en) * | 2008-05-30 | 2011-04-12 | Microsoft Corporation | Media streaming using an index file |
-
2009
- 2009-06-26 US US12/493,121 patent/US8205004B1/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5751968A (en) | 1995-09-12 | 1998-05-12 | Vocaltec Ltd. | System and method for distributing multi-media presentations in a computer network |
US20030061369A1 (en) | 2001-09-24 | 2003-03-27 | Emre Aksu | Processing of multimedia data |
US7496676B2 (en) | 2003-02-19 | 2009-02-24 | Maui X-Stream, Inc. | Methods, data structures, and systems for processing media data streams |
US6938047B2 (en) | 2003-02-19 | 2005-08-30 | Maui X-Stream, Inc. | Methods, data structures, and systems for processing media data streams |
US20050102371A1 (en) | 2003-11-07 | 2005-05-12 | Emre Aksu | Streaming from a server to a client |
US20080195743A1 (en) * | 2004-04-30 | 2008-08-14 | Brueck David F | Apparatus, system, and method for multi-bitrate content streaming |
US7400764B2 (en) | 2005-05-04 | 2008-07-15 | Maui X-Stream, Inc. | Compression and decompression of media data |
WO2006138432A2 (en) | 2005-06-17 | 2006-12-28 | Lightningcast Llc | Presenting advertising content |
US20070162611A1 (en) * | 2006-01-06 | 2007-07-12 | Google Inc. | Discontinuous Download of Media Files |
US7783773B2 (en) * | 2006-07-24 | 2010-08-24 | Microsoft Corporation | Glitch-free media streaming |
US20080276173A1 (en) * | 2007-05-02 | 2008-11-06 | Microsoft Corporation | Iteratively Locating A Position Corresponding To A Desired Seek Time |
US20090125636A1 (en) * | 2007-11-13 | 2009-05-14 | Qiong Li | Payload allocation methods for scalable multimedia servers |
US20090282162A1 (en) * | 2008-05-12 | 2009-11-12 | Microsoft Corporation | Optimized client side rate control and indexed file layout for streaming media |
US7925774B2 (en) * | 2008-05-30 | 2011-04-12 | Microsoft Corporation | Media streaming using an index file |
US20100161825A1 (en) * | 2008-12-22 | 2010-06-24 | David Randall Ronca | On-device multiplexing of streaming media content |
Non-Patent Citations (6)
Title |
---|
"Move Adaptive Stream," Move Networks, Inc., retrieved from internet on Aug. 29, 2008: http://www.movenetworks.com/wp-content/uploads/move-adaptive-stream.pdf, 4 pages. |
"Move Media Player," Move Networks, Inc., retrieved from internet on Aug. 29, 2008: http://www.movenetworks.com/wp-content/uploads/move-media-player.pdf, 3 pages. |
"Move Networks Solutions," Move Networks, Inc., retrieved from internet on Aug. 29, 2008: http://www.movenetworks.com/why-move/solutions, 4 pages. |
"Our Clients," Move Networks, Inc., retrieved from internet on Aug. 29, 2008: http://www.movenetworks.com/why-move/our-clients, 3 pages. |
Bill Birney, "Intelligent Streaming," Microsoft Corporation, May 2003, retrieved from internet: http://www.microsoft.com/windows/windowsmedia/howto/articles/intstreaming.aspx?pf=true, 7 pages. |
U.S. Appl. No. 12/201,952, filed Aug. 29, 2008, Kappor et al. |
Cited By (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110119395A1 (en) * | 2009-11-13 | 2011-05-19 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive streaming using segmentation |
US10425666B2 (en) * | 2009-11-13 | 2019-09-24 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptive streaming using segmentation |
US20120290644A1 (en) * | 2010-01-18 | 2012-11-15 | Frederic Gabin | Methods and Arrangements for HTTP Media Stream Distribution |
US9621610B2 (en) * | 2010-01-18 | 2017-04-11 | Telefonaktiebolaget Lm Ericsson (Publ) | Methods and arrangements for HTTP media stream distribution |
US20110178991A1 (en) * | 2010-01-20 | 2011-07-21 | Siemens Aktiengesellschaft | Method for operating an archiving system for data sets, in particular medical image data sets, and archiving system |
US20140095672A1 (en) * | 2010-03-05 | 2014-04-03 | Samsung Electronics Co., Ltd. | Method and apparatus for generating a reproducing adaptive stream based on file format, and recording medium thereof |
US9906580B2 (en) * | 2010-03-05 | 2018-02-27 | Samsung Electronics Co., Ltd | Method and apparatus for generating and reproducing adaptive stream based on file format, and recording medium thereof |
US10630759B2 (en) * | 2010-03-05 | 2020-04-21 | Samsung Electronics Co., Ltd | Method and apparatus for generating and reproducing adaptive stream based on file format, and recording medium thereof |
US9634946B2 (en) | 2010-04-08 | 2017-04-25 | Vassona Networks Inc. | Managing streaming bandwidth for multiple clients |
US9253103B2 (en) | 2010-04-08 | 2016-02-02 | Vasona Networks Inc. | Managing streaming bandwidth for multiple clients |
US9137278B2 (en) * | 2010-04-08 | 2015-09-15 | Vasona Networks Inc. | Managing streaming bandwidth for multiple clients |
US20110314130A1 (en) * | 2010-04-08 | 2011-12-22 | Nery Strasman | Managing streaming bandwidth for multiple clients |
US9374404B2 (en) | 2010-08-26 | 2016-06-21 | Vasona Networks Inc. | Streaming media flows management |
US9258623B2 (en) | 2010-09-06 | 2016-02-09 | Vasona Networks Inc. | Method and device for quality assessment of encrypted streaming media flows |
US9143838B2 (en) | 2010-09-06 | 2015-09-22 | Vasona Networks Inc. | Device and method for quality assessment of encrypted streaming media flows |
US20120117263A1 (en) * | 2010-09-07 | 2012-05-10 | Samsung Electronics Co. Ltd. | Manifest mechanism in broadcast involved system |
US8650322B2 (en) * | 2010-09-07 | 2014-02-11 | Samsung Electronics Co., Ltd. | Manifest mechanism in broadcast involved system |
US20120059912A1 (en) * | 2010-09-08 | 2012-03-08 | Saffron Digital Limited | Delivering a Media File to a Client |
US8976655B2 (en) | 2010-09-16 | 2015-03-10 | Vasona Networks Inc. | Evaluating a capacity of a cell of a radio access network |
US8902753B2 (en) | 2010-09-16 | 2014-12-02 | Vasona Networks Inc. | Method, system and computer readable medium for affecting bit rate |
US8817614B1 (en) | 2010-09-16 | 2014-08-26 | Vasona Networks Inc. | Policy enforcer having load balancing capabilities |
US9832671B2 (en) | 2010-09-16 | 2017-11-28 | Vassona Networks | Modeling radio access networks |
US9872185B1 (en) | 2010-09-16 | 2018-01-16 | Vasona Networks Ltd. | Policy enforcer in a network that has a network address translator |
US8665858B2 (en) | 2011-09-15 | 2014-03-04 | Vasona Networks Inc. | Method and computer readable medium for gathering user equipment location information |
US20140237112A1 (en) * | 2011-11-04 | 2014-08-21 | Huawei Technologies Co., Ltd. | Method for Evaluating Streaming Media Transmission Quality and Obtaining Information, and Related Device and System |
US9787748B2 (en) * | 2011-11-04 | 2017-10-10 | Huawei Technologies Co., Ltd. | Method for evaluating streaming media transmission quality and obtaining information, and related device and system |
US9246966B2 (en) * | 2012-03-21 | 2016-01-26 | Samsung Electronics Co., Ltd | Method and apparatus for receiving multimedia contents |
US20130254345A1 (en) * | 2012-03-21 | 2013-09-26 | Samsung Electronics Co., Ltd. | Method and apparatus for receiving multimedia contents |
US10200668B2 (en) * | 2012-04-09 | 2019-02-05 | Intel Corporation | Quality of experience reporting for combined unicast-multicast/broadcast streaming of media content |
US9055130B1 (en) | 2012-04-24 | 2015-06-09 | Google Inc. | Initiating media presentation prior to receiving seek index data |
US8533354B1 (en) * | 2012-04-24 | 2013-09-10 | Google Inc. | Initiating media presentation prior to receiving seek index data |
US9571827B2 (en) | 2012-06-08 | 2017-02-14 | Apple Inc. | Techniques for adaptive video streaming |
WO2014015429A1 (en) * | 2012-07-23 | 2014-01-30 | Espial Group Inc. | Storage optimizations for multi-file adaptive bitrate assets |
US10034031B2 (en) | 2012-10-05 | 2018-07-24 | Adobe Systems Incorporated | Generating a single content entity to manage multiple bitrate encodings for multiple content consumption platforms |
US9544344B2 (en) * | 2012-11-20 | 2017-01-10 | Google Technology Holdings LLC | Method and apparatus for streaming media content to client devices |
US20140143440A1 (en) * | 2012-11-20 | 2014-05-22 | General Instrument Corporation | Method and apparatus for streaming media content to client devices |
US9992499B2 (en) | 2013-02-27 | 2018-06-05 | Apple Inc. | Adaptive streaming techniques |
US10659832B1 (en) | 2013-03-11 | 2020-05-19 | Google Llc | Dynamic bitrate selection for streaming media |
US9654528B1 (en) | 2013-03-11 | 2017-05-16 | Google Inc. | Dynamic bitrate selection for streaming media |
US10205984B1 (en) | 2013-03-11 | 2019-02-12 | Google Llc | Dynamic bitrate selection for streaming media |
US20140355603A1 (en) * | 2013-05-31 | 2014-12-04 | Broadcom Corporation | Adaptive bit rate distribution of multicast streams |
US9215080B2 (en) * | 2013-05-31 | 2015-12-15 | Broadcom Corporation | Adaptive bit rate distribution of multicast streams |
CN103281338B (en) * | 2013-06-21 | 2016-03-09 | 新乡职业技术学院 | Server service processing method |
CN103281338A (en) * | 2013-06-21 | 2013-09-04 | 苏州鼎富软件科技有限公司 | Method for processing services of server |
US20150149581A1 (en) * | 2013-11-22 | 2015-05-28 | Verizon Patent And Licensing Inc. | Content caching in a network for efficient user device access |
US9509793B2 (en) * | 2013-11-22 | 2016-11-29 | Verizon Patent And Licensing Inc. | Content caching in a network for efficient user device access |
US20180375792A1 (en) * | 2017-06-27 | 2018-12-27 | Cisco Technology, Inc. | Non-real time adaptive bitrate recording scheduler |
US10652166B2 (en) * | 2017-06-27 | 2020-05-12 | Cisco Technology, Inc. | Non-real time adaptive bitrate recording scheduler |
US10565158B2 (en) * | 2017-07-31 | 2020-02-18 | Amazon Technologies, Inc. | Multi-device synchronization for immersive experiences |
US11064230B2 (en) | 2017-11-01 | 2021-07-13 | Amazon Technologies, Inc. | Optimizing adaptive bit rate streaming for content delivery |
US10659512B1 (en) * | 2017-12-05 | 2020-05-19 | Amazon Technologies, Inc. | Optimizing adaptive bit rate streaming at edge locations |
US11038942B2 (en) * | 2017-12-05 | 2021-06-15 | Amazon Technologies, Inc. | Optimizing adaptive bit rate streaming at edge locations |
CN110875947A (en) * | 2018-09-03 | 2020-03-10 | 阿里巴巴集团控股有限公司 | Data processing method and edge node equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8205004B1 (en) | Multi-bit-rate streaming delivery | |
US9680892B2 (en) | Providing integration of multi-bit-rate media streams | |
US11716371B2 (en) | Systems and methods for automatically generating top level index files | |
US11785268B1 (en) | System for managing video playback using a server generated manifest/playlist | |
US10459943B2 (en) | System and method for splicing media files | |
US8825790B2 (en) | Caching of fragmented streaming media | |
US8327013B2 (en) | Dynamic index file creation for media streaming | |
CN102740159B (en) | Media file storage format and self-adaptation transfer system | |
US20130212342A1 (en) | Storage format for media streams | |
US20120005313A1 (en) | Dynamic indexing for ad insertion in media streaming | |
US10033788B2 (en) | Method and a system for smooth streaming of media content in a distributed content delivery network | |
US20120166667A1 (en) | Streaming media | |
KR20060082135A (en) | Sparse caching for streaming media | |
US8954540B2 (en) | Dynamic audio track selection for media streaming | |
WO2011054319A1 (en) | Method, device and system for realizing hierarchically requesting content in http streaming system | |
AU2013240578B2 (en) | Dynamic audio track selection for media streaming | |
WO2020155959A1 (en) | Definition switching method and apparatus, computer device, and readable storage medium | |
WO2011142334A1 (en) | Content distribution system, script generation device, terminal, content distribution method, and content distribution program | |
JP2015512188A (en) | Method and system for providing file data of media files | |
CN110636368A (en) | Media playing method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ADOBE SYSTEMS INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KAUFMAN, MATTHEW;BARNERT, ANDREW;REEL/FRAME:023922/0667 Effective date: 20090625 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:ADOBE SYSTEMS INCORPORATED;REEL/FRAME:048867/0882 Effective date: 20181008 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |