Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media
Methods and systems are provided for streaming a media asset with an adaptive bitrate transcoder. A server receives, from a client device, a first request for a first portion of the plurality of portions to be transcoded at a first bitrate. The server then starts to transcode the plurality of portions at the requested first bitrate to generate a plurality of corresponding transcoded portions. The server updates a header of a transcoded portion to include: 1) a transcode latency value; and 2) a count value indicating a number of available pre-transcoded portions of the media asset at the time the first request was received. The server then transmits the transcoded portion to the client. The client device then determines a second bitrate based on the transcode latency value included in the header of the transcoded portion corresponding to the first portion.
1 . A method for streaming a media asset, the method comprising:
utilizing a media guidance application to divide the media asset into a plurality of portions;
receiving, from a client device, a request for a portion of the plurality of portions to be transcoded at a certain bitrate;
starting to transcode the portion at the certain bitrate to generate a transcoded portion;
updating a header of the transcoded portion to include a transcode latency value and a count value, wherein, based at least in part on the transcode latency value, the client device is caused to determine available network bandwidth, and based at least in part on the count value, variable buffer depth control is caused at the client device; and
transmitting the transcoded portion to the client device.
2 . The method of claim 1 , comprising:
determining a variable buffer depth threshold that depends on whether pre-transcoded portions are available; and
receiving, from the client device, a request for a higher transcoding bitrate based at least in part on a higher determined available network bandwidth.
3 . The method of claim 1 , comprising:
accounting for a startup transcode latency involved in transcoding the portion; and
determining the startup transcode latency based at least in part on a time the request was received and the time at which transcoding at the certain bitrate was started.
4 . The method of claim 1 , further comprising:
implementing HTTP chunked transfer encoding protocol for transmitting the transcoded portion; and
storing the transcoded portion in a chunk buffer prior to transmission.
5 . The method of claim 1 , further comprising:
causing the client device to store received transcoded portions in a playback buffer;
causing the client device to play back the transcoded portion;
causing the client device to remove the transcoded portion from the playback buffer after playback;
comparing a number of transcoded portions stored in the playback buffer to a buffer depth threshold; and
continuing to receive additional requests for portions from the client device until the number of transcoded portions caused to be stored in the playback buffer meets the buffer depth threshold.
6 . The method of claim 1 , further comprising:
causing the client device to compare a number of transcoded portions stored in a playback buffer of the client device to a buffer depth threshold;
based at least in part on determining that the number of transcoded portions stored in the playback buffer meets the buffer depth threshold:
causing the client device to identify a time at which playback of a currently playing portion will end; and
causing the client device to transmit another request for another portion at the identified time.
7 . The method of claim 1 , further comprising:
causing the client device to compare a number of transcoded portions stored in a playback buffer of the client device to a buffer depth threshold; and
based at least in part on determining that the number of transcoded portions stored in the playback buffer is less than the buffer depth threshold:
causing the client device to immediately transmit another request.
8 . The method of claim 1 , wherein the count value is representative of a portion size in bytes or kilobytes.
9 . The method of claim 1 , wherein the count value indicates a number of segments that have been transcoded at the certain bitrate.
10 . The method of claim 1 , wherein the count value is a flag indicating whether an amount of data comprising a segment is available.
11 . A system for streaming a media asset, the system comprising:
at least one control circuitry that:
causes utilization of a media guidance application to divide the media asset into a plurality of portions;
receives, from a client device, a request for a portion of the plurality of portions to be transcoded at a certain bitrate;
starts to transcode the portion at the certain bitrate to generate a transcoded portion;
updates a header of the transcoded portion to include a transcode latency value and a count value, wherein, based at least in part on the transcode latency value, the client device is caused to determine available network bandwidth, and based at least in part on the count value, variable buffer depth control is caused at the client device; and
transmits the transcoded portion to the client device.
12 . The system of claim 11 , wherein the at least one control circuitry:
determines, based at least in part on the count value, a variable buffer depth threshold; and
receives, from the client device, a request for a higher transcoding bitrate based at least in part on a higher determined available network bandwidth.
13 . The system of claim 11 , wherein the at least one control circuitry:
accounts for a startup transcode latency involved in transcoding the portion; and
determines the startup transcode latency based at least in part on a time the request was received and the time at which transcoding at the certain bitrate was started.
14 . The system of claim 11 , wherein the at least one control circuitry:
implements HTTP chunked transfer encoding protocol for transmitting the transcoded portion; and
stores the transcoded portion in a chunk buffer prior to transmission.
15 . The system of claim 11 , wherein the at least one control circuitry:
causes the client device to store received transcoded portions in a playback buffer;
causes the client device to play back the transcoded portion;
causes the client device to remove the transcoded portion from the playback buffer after playback;
compares a number of transcoded portions stored in the playback buffer to a buffer depth threshold; and
continues to receive additional requests for portions from the client device until the number of transcoded portions caused to be stored in the playback buffer meets the buffer depth threshold.
16 . The system of claim 11 , wherein the at least one control circuitry:
causing the client device to compare a number of transcoded portions stored in a playback buffer of the client device to a buffer depth threshold;
based at least in part on determining that the number of transcoded portions stored in the playback buffer meets the buffer depth threshold:
causes the client device to identify a time at which playback of a currently playing portion will end; and
causes the client device to transmit another request for another portion at the identified time.
17 . The system of claim 11 , wherein the at least one control circuitry:
causing the client device to compare a number of transcoded portions stored in a playback buffer of the client device to a buffer depth threshold; and
based at least in part on determining that the number of transcoded portions stored in the playback buffer is less than the buffer depth threshold:
causes the client device to immediately transmit another request.
18 . The system of claim 11 , wherein the count value is representative of a portion size in bytes or kilobytes.
19 . The system of claim 11 , wherein the count value indicates a number of segments that have been transcoded at the certain bitrate.
20 . The system of claim 11 , wherein the count value is a flag indicating whether an amount of data comprising a segment is available.