Constrained fidelity Adaptive Bit Rate encoding systems and methods
View Patent ↗This disclosure describes and adaptive bit rate encoding and distribution techniques for conserving bandwidth usage in a channel. The invention comprises, an encoder or transcoder, a video fragmenter, a video-quality analyzer that output complexity values, a streaming server, a process by which individual fragments are selected for distribution, a video-quality threshold, and, optionally a bandwidth reclamation factor. A video-quality analyzer inspects any combination of the input and output of the encoder, transcoder, or fragmenter, and produces a video-quality metric for each fragment. A fragment-selection process responds to request from a client device. If the video-quality value of the fragment requested exceeds the video-quality threshold, a different fragment having a lower vide-quality value is selected instead. Otherwise, the fragment that would have been selected is selected. In some embodiments, the video-quality threshold can be dynamically adjusted to permit varying amounts of bandwidth reclamation.
1. A method for joint management of video quality and bandwidth in adaptive bitrate streaming, the method comprising:
encoding a video to produce one or more bit streams;
creating a plurality of fragments of a bit stream of the encoded video;
generating a video-quality metric for each fragment of the plurality fragments based on a plurality of attributes associated with each fragment, the video-quality metric indicating a video quality of the fragment;
calculating a weighted apportionment of total available bandwidth allocated to a plurality of clients to which the video is distributed over a period of time;
dynamically determining a video-quality threshold associated with each fragment based on the calculated weighted apportionment, wherein the weight associated with the dynamically determined video-quality threshold of the fragment is determined based on an analysis of the video-quality metric and subscriber priority associated with the fragment with respect to video-quality metrics and subscriber priorities associated with other segments of the plurality of fragments;
receiving, from a client device, a request for a fragment of a bit stream of the encoded video, the request indicating a video quality required by the client device for the requested fragment; and
responsive to the video quality of the requested fragment exceeding the video-quality threshold for the requested fragment, selecting another fragment having a lower video quality than the video quality of the requested fragment.
2. The method of claim 1 , wherein the plurality of fragments of an encoded bitstream of the video are combined into a bitstream for delivery over a network.
3. The method of claim 1 , further comprising:
determining the video-quality threshold associated with a fragment based on available bandwidth allocated to the fragment and video quality of the segment.
4. The method of claim 1 , further comprising determining the video-quality threshold associated with each fragment based on at least one of the following:
content of the requested segment;
subscriber priority associated with the requested fragment, the subscriber priority being defined by a service provider of the video comprising the requested fragment;
program priority associated with the requested segment; and
target video quality of the requested segment.
5. The method of claim 1 , further comprising:
selecting a segment responsive to the video quality associated with the segment exceeding the corresponding video-quality threshold; and
re-encoding the selected segment into a new segment, the new segment being an alternate version of the requested segment having a lower video quality than the video quality of the request segment.
6. The method of claim 1 , wherein the plurality of fragments are recombined and repackaged into an MPEG2 transport stream.
7. A system for joint management of video quality and bandwidth in adaptive bitrate streaming, the system comprising:
a computer processor for executing computer program instructions; and
a non-transitory computer readable storage medium storing executable computer program instructions for:
encoding a video to produce one or more bit streams;
creating a plurality of fragments of a bit stream of the encoded video;
generating a video-quality metric for each fragment of the plurality fragments bases on a plurality of attributes associated with each fragment, the video-quality metric indicating a video quality of the fragment;
calculating a weighted apportionment of total available bandwidth allocated to a plurality of clients to which the video is distributed over a period of time;
dynamically determining a video-quality threshold associated with each fragment based on the calculated weighted apportionment, wherein the weight associated with the dynamically determined video-quality threshold of the fragment is determined based on an analysis of the video-quality metric and subscriber priority associated with the fragment with respect to video-quality metrics and subscriber priorities associated with other segments of the plurality of fragments;
receiving, from a client device, a request for a fragment of a bit stream of the encoded video, the request indicating a video quality required by the client device for the requested fragment; and
responsive to the video quality of the requested fragment exceeding the video-quality threshold for the requested fragment, selecting another fragment having a lower video quality than the video quality of the requested fragment.
8. The system of claim 7 , wherein the plurality of fragments of an encoded bitstream of the video are combined into a bitstream for delivery over a network.
9. The system of claim 7 , further comprising:
determining the video-quality threshold associated with a fragment based on available bandwidth allocated to the fragment and video quality of the segment.
10. The system of claim 7 , further comprising determining the video-quality threshold associated with each fragment based on at least one of the following:
content of the requested segment;
subscriber priority associated with the requested fragment, the subscriber priority being defined by a service provider of the video comprising the requested fragment;
program priority associated with the requested segment; and
target video quality of the requested segment.
11. The system of claim 7 , further comprising:
selecting a segment responsive to the video quality associated with the segment exceeding the corresponding video-quality threshold; and
re-encoding the selected segment into a new segment, the new segment being an alternate version of the requested segment having a lower video quality than the video quality of the request segment.
12. The system of claim 7 , wherein the plurality of fragments are recombined and repackaged into an MPEG2 transport stream.
13. The method of claim 1 , wherein the weight associated with the dynamically determined video-quality threshold of the fragment is determined based on a ratio between a product of video-quality metric and subscriber priority associated with the fragment and a sum of products of video-quality metric and subscriber priority associated with each of the other segments of the plurality of fragments.