REDUCTION OF STARTUP TIME IN REMOTE HLS
20170359609 · 2017-12-14
Inventors
Cpc classification
H04N21/234345
ELECTRICITY
H04N21/44227
ELECTRICITY
H04N21/8456
ELECTRICITY
H04N21/4333
ELECTRICITY
H04N19/40
ELECTRICITY
H04N21/2662
ELECTRICITY
H04N21/4384
ELECTRICITY
International classification
H04N21/2662
ELECTRICITY
H04N19/40
ELECTRICITY
H04N21/234
ELECTRICITY
H04N21/2343
ELECTRICITY
H04N21/433
ELECTRICITY
Abstract
A method is provided for streaming transcoded HLS video from a video asset to allow a minimum startup delay time. A method includes pre-transcoding a first number of the HLS chunks. Then, once a request is received from a remote HLS client for the HLS video asset, transmitting a number of the pre-transcoded chunks to the remote HLS player. The pre-transcoded chunks are transmitted during a startup period until real-time transcoded chunks can be received and processed by the remote HLS player at a time position to allow seamless transition from the pre-transcoded chunks.
Claims
1. A method of streaming video comprising: providing a portion of a recorded video asset to a transcoder or transcoders; pre-transcoding the portion of the video asset into a number of the chunks and storing the chunks to allow transmission beginning at least at a first low bitrate; receiving a request from a remote HLS client for the HLS video asset; and transmitting at least a portion of the stored pre-transcoded chunks to the remote HLS until at least a time period when real-time transcoded chunks are provided to the remote HLS client.
2. The method of claim 1, further comprising: pre-transcoding the chunks at multiple increasing bitrates; transmitting at least a first one of the pre-transcoded chunks at said first low bitrate; measuring a bandwidth available to the remote HLS player; and transmitting subsequent ones of the pre-transcoded chunks at a higher bitrate until a startup time has ended for the transmission of the pre-transcoded chunks.
3. The method of claim 2, wherein the higher bitrate is chosen to be less than an available bandwidth receivable by the remote player by a predetermined margin.
4. The method of claim 2, wherein the higher bitrate is chosen to match the bandwidth of the remote player.
5. The method of claim 2, wherein the higher bitrate includes two or more higher bitrates.
6. The method of claim 2, wherein the higher bitrate includes continually increasing bitrates.
7. The method of claim 1, wherein the pre-transcoding of the chunks begins at a bookmarked timestamp.
8. The method of claim 1, further comprising during a startup time when the pre-transcoded chunks are transmitted, beginning transcoding and transmission of the remaining chunks at a time position to allow seamless transition from the pre-transcoded chunks provided to the remote HLS player.
9. The method of claim 8, wherein the pre-transcoded chunks include a first number of chunks of the video asset, and the real-time transcoded chunks include chunks after the first number of chunks of the video asset, wherein the real-time transcoding begins at the time of transmission of the pre-transcoded chunks, and wherein the transmission of the real-time transcoding begins after a predetermined number of pre-transcoded chunks are transmitted.
10. The method of claim 9, wherein all of the first number of pre-transcoded chunks are transmitted before the real-time transmitted chunks are transmitted.
11. The method of claim 9, wherein not all of the first number of pre-transcoded chunks are transmitted before the real-time transmitted chunks are transmitted.
12. A Digital Video Recorder (DVR) for streaming HLS video to at least one remote HLS device, the DVR comprising: an interface for transmitting the streaming HLS video to the remote HLS; a processor connected to control the interface; a memory storing processor executable code to cause the processor to provide the HLS video stream through the interface and to perform the following steps: provide a portion of a recorded video asset to a transcoder or transcoders; pre-transcode the portion of the recoreded asset into a number of the chunks and storing these chunks in the memory to allow transmission beginning at least at a first low bitrate; receive a request from the remote HLS client through the interface for the HLS video asset; and transmit at least a portion of the stored pre-transcoded chunks to the remote HLS through the interface until at least a time period when real-time transcoded chunks are provided to the remote HLS client.
13. The DVR of claim 12, wherein the memory stores processor executable code to cause the processor to perform the following additional steps: pre-transcode the chunks at multiple increasing bitrates; transmit at least a first one of the pre-transcoded chunks through the interface at said first low bitrate; measure a bandwidth available to the remote HLS player; and transmit subsequent ones of the pre-transcoded chunks through the interface at a higher bitrate until a startup time has ended for the transmission of the pre-transcoded chunks.
14. The DVR of claim 12, wherein the memory stores processor executable code to cause the processor during a startup time when the pre-transcoded chunks are transmitted, to begin transcoding and transmission of the remaining chunks through the interface at a time position to allow seamless transition from the pre-transcoded chunks provided to the remote HLS player.
15. The DVR of claim 14, wherein the pre-transcoded chunks include a first number of chunks of the video asset, and the real-time transcoded chunks include chunks after the first number of chunks of the video asset, wherein the real-time transcoding begins at the time of transmission of the pre-transcoded chunks, and wherein the transmission of the real-time transcoding begins after a predetermined number of pre-transcoded chunks are transmitted.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Further details of the present invention are explained with the help of the attached drawings in which:
[0011]
[0012]
[0013]
[0014]
DETAILED DESCRIPTION
[0015]
[0016] Embodiments of the present invention provide for pre-transcoding a number of chunks of a video asset using the transcoders 102 to enable more efficient startup of playback of a video asset. The pre-transcoding can be performed for each video asset and stored in memory 104. The transcoders 102 can pre-transcode video for transmission at several different rates, or at rates that can be ramped up to make a smooth transition from pre-transcoded video chunks to real time transcoded chunks for the remainder of the video asset that are transmitted to devices such as cell phone 106 or tablet 108.
[0017] Although not specifically shown, the STB 100 further includes at least one processor and at least one memory for storing code that is executable by the processor to enable the STB 100 to perform processes according to embodiments of the present invention that are described subsequently. The STB 100 further includes an interface for transmission of the streaming HLS video assets, and the memory further stores code to enable the processor to control the interface to enable such transmission as well as to control the transcoders 102 and storage of pre-transcoded video in memory 104.
[0018]
[0019] In a next step 204 a request for the video asset is received from a remote HLS client player, such as the cell phone 106 or tablet 108. In step 206 at least a portion of the pre-transcoded chunks are transmitted to the HLS client player in response to the request. The pre-transcoded chunks are transmitted during a startup procedure until a period where real-time transcoded chunks making up the remainder of the asset can be received and processed by the HLS client player. In step 206, all of the pre-transcoded chunks can be transmitted, or a number of chunks less than all of the pre-transcoded chunks can be transmitted before the real-time transcoded chunks are transmitted to enable a smooth transition to the real-time transcoded chunks. With a higher bandwidth of the receiving device, all of the pre-transcoded chunks might be transmitted, while with a lower bandwidth only a portion of the pre-transcoded chunks will be needed before transition to the real-time transcoded chunks.
[0020]
[0021]
[0022] The channel bitrate or equivalently, the available channel bandwidth, can be measured by the STB server during the client's download of the first and following pre-transcoded chunks or it can be provided from the receiving device after transmission of some of the pre-transcoded chunks. Alternatively, the channel bitrate for the receiving device can be known in advance at the transmitting STB. Because the receiving bitrate of the receiving device may not be identified until after startup transmission of the pre-transcoded chunks, the variable rate beginning with a low bitrate will enable the transmission bitrate to not surpass the bitrate of receiving device.
[0023] In a next step 304 a request for the asset is received from a remote HLS client player, such as the cell phone 106 or tablet 108. In step 306 at least a portion of the pre-transcoded chunks are transmitted to the HLS client player in response to the request. As indicated with respect to step 302, the pre-transcoded chunks are transmitted to the remote HLS player at a bitrate ramped up from initial low bitrate to a higher bitrate. The high bitrate can be set to a value just below the maximum channel bitrate for the receiving asset. Alternatively, the high bitrate can be set to match the maximum channel bitrate. The bitrate may be ramped up in steps, or ramped up continuously. In step 306, the real-time transcoded chunks are subsequently transmitted to the requesting HLS player, allowing a smooth transition from the pre-transcoded chunks for the remainder of the video asset.
[0024]
[0025]
[0026] In a next step 404 a request for the asset chunks beginning at a timestamp is received from a remote HLS client player. In step 406 the pre-transcoded chunks are transmitted to the HLS client player beginning at the timestamp in response to the request. The real-time transcoded chunks are subsequently transmitted to the requesting HLS player, allowing a smooth transition from the pre-transcoded chunks.
[0027] In one example, an iOS Server and an HLS Player are provided and the server provides to the HLS Player a live, sliding-window manifest that initially contains 3 segments. The player will download all 3 segments as fast as the network supports and begins playback after at least 2 seconds of content has been successfully downloaded, given the network bandwidth is higher than the chunk bitrate by a scale factor of typically 3×. The player will then request the next manifest at the HLS target duration which can be set to the chunk duration in seconds.
[0028] So for example, it is expected that a conventional sliding-window manifest advertising three chunks, e.g., 2 second chunks at 300 kbps over a network that supports approximately 900 kbps bandwidth, could allow a startup time of just (300 kbps/900 kbps)×2 sec=667 msecs. The download of all 3 chunks would require 2 secs and in that time the player would acquire 6 secs of content and have been playing for 1.33 secs to have a buffer of 4.67 seconds that would reach a minimum of 4.67−2 seconds over the next live chunk production duration. Conversely, the implementation of the present invention embodiments of advertising each chunk as it is produced in real-time would have a minimum startup time of 4 seconds (2 chunks available with one fully downloaded) while building a buffer of minimum 2 seconds in depth. So the benefits of the method according to embodiments of the present invention are shorter startup but with potentially larger buffers.
[0029] In another example for the reduction of startup time for remote HLS, the method described for embodiments of the present invention is accomplished by the following five steps.
[0030] In a first step 1, for every DVR asset on the STB, the STB will pre-transcode T.sub.startup seconds from the start and/or bookmarked position of the content to a low video bitrate and resolution, e.g., 236 kbps AVC at 384×216 plus HE-AAC stereo audio at 64 kbps. Additionally, the STB will pre-transcode the same T.sub.startup seconds of content to higher video bitrates, e.g., 448×232 at 336 kbps, 512×288 at 436 kbps, etc. when background CPU/transcoder resources and disk space permit. For each transcoded asset, the STB will save transcoder state metadata to facilitate the restarting of any future live transcode session at the point T.sub.startup seconds into the source file in a seamless or near seamless manner.
[0031] In a second step 2, the STB will create HLS chunk files of duration T.sub.chunk seconds from the T.sub.startup seconds of transcoded content.
[0032] In a third step 3, When an asset is requested by a remote HLS client, the STB server will create a manifest consisting of N chunks created from the T.sub.startup seconds of content at the lowest bitrate. N might typically be 3 and T.sub.chunk could typically be 2 or 3 seconds. The transcoder of the STB will be reconfigured to start transcoding the remainder of the asset in real-time from T.sub.startup position using the stored state metadata.
[0033] In a fourth step 4, the as the player downloads the N chunks, the server measures the download bandwidth achieved and may advertise, at the next HLS target duration interval, a manifest with a new chunk at a higher bitrate from the T.sub.startup seconds of pre-transcoded content, if the bandwidth will support it.
[0034] In a fifth step 5, when the T.sub.startup duration has been achieved, the live transcoded output begins to be accumulated for creation of future chunks. The last bandwidth measured by the server to the player is used to dynamically configure the live transcoder video bitrate. New chunks will be created from the real-time transcoder output operating on the remainder of the STB DVR content.
[0035] In summary, the embodiments of the present invention provide a significant time savings for startup of streaming HLS video. The current (prior) solution to remote HLS startup entailed transcoding the content in real-time from the desired start location (bookmark or start of asset) and creating and advertising a manifest with one chunk when the first chunk had been created. Typically, the time to startup up the transcoder and produce the first chunk was longer than T.sub.chunk by a few hundred milliseconds. To create a second chunk required exactly T.sub.chunk seconds. The total startup time in this prior solution exceeded the chunk duration by hundreds of milliseconds. Embodiments of the present invention will reduce that startup contingent on the network bandwidth available to the client.
[0036] Although the present invention has been described above with particularity, this was merely to teach one of ordinary skill in the art how to make and use the invention. Many additional modifications will fall within the scope of the invention as that scope is defined by the following claims.