Enabling playback and request of partial media fragments
AssigneeAmazon Technologies, Inc.
InventorsCharles Benjamin Franklin Waggoner, Marc Joliveau, Lauri Juhani Särkkä
Life of this patent
Estimating the term…
Abstract
Techniques are described that enable initiating playback of a media fragment before the entire fragment has been downloaded. Also described are techniques that enable a more granular approach to the way in which a client device requests and plays back media fragments.
Claims15
A computer-program product, comprising one or more non-transitory computer-readable media having computer program instructions stored therein, the computer program instructions being configured such that, when executed by one or more computing devices, the computer program instructions cause the one or more computing devices to:
- transmit a request for a video presentation, the video presentation including a plurality of video fragments;
- receive a manifest configured to enable the one or more computing devices to request video fragments in the plurality of video fragments;
- generate a first request for a video fragment of the video presentation using the manifest associated with the video presentation, the video fragment including a plurality of video frames and a fragment index, the fragment index identifying each of the video frames of the video fragment and including a byte offset for each of the video frames;
- transmit the first request to a remote platform specified by the manifest, the remote platform hosting the plurality of fragments of the video presentation;
- receive a first portion of the video fragment from the remote platform, the first portion of the video fragment including the fragment index and fewer than all of the video frames of the video fragment;
- initiate playback of the video frames of the first portion of the video fragment at the one or more computing devices before the video fragment is completely downloaded to the one or more computing devices;
- determine that downloading of the video fragment has terminated without the video fragment being completely downloaded;
- identify video frames of the video fragment not included in the first portion of the video fragment using the fragment index;
- generate a second request for a remainder portion of the video fragment, the remainder portion of the video fragment including at least some of the video frames of the video fragment not included in the first portion of the video fragment, the request specifying one or more byte ranges corresponding to the video frames of the remainder portion of the video fragment, the one or more byte ranges being derived using one or more of the byte offsets in the fragment index;
- transmit the second request to the remote platform;
- receive at least some of the video frames of the remainder portion of the video fragment while playback of the video frames of the first portion of the video fragment is ongoing;
- and
- initiate playback of the video frames of the remainder portion of the video fragment at the one or more computing devices after playback of the video frames of the first portion of the video fragment terminates and without rebuffering all of the video fragment.
A computer-implemented method, comprising:
- transmitting, by a client device, a request for media content, the media content including a plurality of media fragments;
- receiving, by the client device, manifest data configured to enable the client device to request the media fragments;
- transmitting, by the client device, a request for a media fragment, the media fragment including a plurality of frames;
- receiving, by the client device, a portion of the media fragment, the portion of the media fragment including fewer than all of the frames of the media fragment;
- tracking a received playback duration of the media content, the received playback duration of the media content including a first playback duration corresponding to the portion of the media fragment, the first playback duration being determined using a fragment index associated with the media fragment and a number of bytes for the portion of the media fragment, wherein the fragment index identifies frames, a reference hierarchy, and frame offsets for the media fragment;
- determining that the received playback duration exceeds a threshold;
- responsive to determining that the received playback duration exceeds a threshold, initiating, by the client device, playback of the frames of the portion of the media fragment without the media fragment being completely downloaded by the client device;
- determining, by the client device, that downloading of the media fragment has terminated without the media fragment being completely downloaded;
- identifying, by the client device, frames of the media fragment not included in the portion of the media fragment;
- and
- transmitting, by the client device, a second request specifying a remainder portion of the media fragment that is less than the entire media fragment, the remainder portion of the media fragment including at least some of the frames of the media fragment identified as not being included in the portion of the media fragment.
A client device, comprising:
- memory;
- and
- one or more processors configured, in conjunction with the memory, to:
- transmit, by the client device, a request for media content, the media content including a plurality of media fragments;
- receive, by the client device, manifest data configured to enable the client device to request the media fragments;
- transmit, by the client device, a request for a media fragment, the media fragment including a plurality of frames;
- receive, by the client device, a portion of the media fragment, the portion of the media fragment including fewer than all of the frames of the media fragment;
- track a received playback duration of the media content, the received playback duration of the media content including a first playback duration corresponding to the portion of the media fragment, the first playback duration being determined using a fragment index associated with the media fragment and a number of bytes for the portion of the media fragment, wherein the fragment index identifies frames, a reference hierarchy, and frame offsets for the media fragment;
- determine that the received playback duration exceeds a threshold;
- responsive to determining that the received playback duration exceeds a threshold, initiate, by the client device, playback of the frames of the portion of the media fragment without the media fragment being completely downloaded;
- determine, by the client device, that downloading of the media fragment has terminated without the media fragment being completely downloaded;
- identify, by the client device, frames of the media fragment not included in the portion of the media fragment;
- and
- transmit, by the client device, a second request specifying a remainder portion of the media fragment that is less than the entire media fragment, the remainder portion of the media fragment including at least some of the frames of the media fragment identified as not being included in the portion of the media fragment.
Dependencies are inferred from the claim text.