IP Library Granted Patent US 9,635,077
Granted Patent B2
US 9,635,077 · App. 14/213,127 · Granted Apr 25, 2017

Low latency live video streaming

Inventors: Viswanathan Swaminathan (Saratoga, CA); Sheng Wei (San Jose, CA)
Assignee: Adobe Systems Incorporated
H04L65/4084H04L65/608H04L65/80H04L67/02H04N21/2187H04N21/643H04N21/654H04N21/8456
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,635,077
App. No.
14/213,127
Granted
Apr 25, 2017
Kind
B2
Abstract

Techniques are disclosed for low latency live video streaming. A client can be configured to send a single HTTP request for live video streaming to a server. The server can be configured to push one or more video segments to the client in response to the request, following a pre-defined push strategy. For example, using a so-called all-push strategy, the client sends only one request to the server, and in response, the server sends all of the video segments to the client as soon as each segment is complete. The HTTP 2.0 protocol may be used for pushing the video from the server to the client. This technique eliminates the request explosion problem when small segments are used. Further, the number of segments pushed with each request can be varied, which is to facilitate adaptive bitrate switching.

Claims (33)

1. A computer-implemented method comprising:

generating a plurality of video segments, each segment representing a portion of multimedia content, as the respective portions of the multimedia content are received from a live content source;

receiving, from a client computing device, only one HTTP request for at least two of the video segments, the HTTP request indicating start and end segments within the plurality of video segments to be pushed to the client computing device; and

pushing, from a server computer to the client computing device, the at least two video segments in accordance with a predefined push strategy without requiring separate HTTP requests from the client for each of the video segments; and

subsequent to pushing the at least two video segments, varying the predefined push strategy based at least in part on a latency representing a time difference between generation of the at least two video segments and playback of the at least two video segments,

wherein the predefined push strategy is a k-push strategy and the end segment is any segment other than first and last segments of the plurality of video segments, and wherein varying the k-push strategy includes changing a total number of video segments pushed in response to receiving the HTTP request.

2. The method of claim 1 , wherein the pushing of the at least two video segments is performed using a stateless communication protocol.

3. The method of claim 1 , wherein the request includes an HTTP GET request that indicates the start and the end segments within the plurality of video segments to be pushed to the client computing device.

4. The method of claim 1 , further comprising encoding each of the video segments according to at least one of a file fragments-based segmentation scheme and a stream fragments-based segmentation scheme.

5. The method of claim 4 , wherein the segmentation scheme includes at least one of an HTTP Live Streaming (HLS) technique, an HTTP Dynamic Streaming (HDS) technique, a Smooth Streaming technique, and an MPEG Dynamic Adaptive Streaming over HTTP (DASH) technique.

6. The method of claim 1 , wherein the video segments represent different consecutive time periods of the multimedia content.

7. The method of claim 1 , further comprising varying at least one of the bitrate and resolution of at least one video segment in response to a change in a network condition.

8. The method of claim 1 , wherein the pushing of the at least two video segments by the server computer is performed asynchronously with respect to the receiving of the request.

9. A computer-implemented method comprising:

sending, by a client computing device to a server computer, only one HTTP request for at least two of a plurality of video segments representing a portion of multimedia content, the HTTP request indicating start and end segments within the plurality of video segments to be pushed to the client computing device;

receiving, by the client computing device, the at least two video segments from the server computer in accordance with a predefined push strategy without requiring separate HTTP requests from the client computing device for each of the video segments; and

playing back, by the client computing device, the multimedia content using the at least two video segments,

wherein subsequent to playing back the at least two video segments, the predefined push strategy is varied based at least in part on a latency representing a time difference between a generation of the at least two video segments and the playback of the at least two video segments,

wherein the predefined push strategy is a k-push strategy and the end segment is any segment other than first and last segments of the plurality of video segments, and wherein varying the k-push strategy includes changing a total number of video segments pushed in response to receiving the HTTP request.

10. The method of claim 9 , wherein the receiving of the at least two video segments is performed using a stateless communication protocol.

11. The method of claim 9 , wherein the request includes an HTTP GET request that indicates the start and the end segments within a plurality of video segments to be received from the server computer.

12. The method of claim 9 , further comprising decoding the requested video segment according to at least one of a file fragments-based segmentation scheme and a stream fragments-based segmentation scheme.

13. The method of claim 12 , wherein the segmentation scheme includes at least one of an HTTP Live Streaming (HLS) technique, an HTTP Dynamic Streaming (HDS) technique, a Smooth Streaming technique, and an MPEG Dynamic Adaptive Streaming over HTTP (DASH) technique.

14. The method of claim 9 , wherein at least one of the bitrate and resolution of the requested video segment is varied, with respect to other video segments received by the client computing device, in response to a change in a network condition.

15. The method of claim 9 , wherein the receiving of the at least two video segments by the client computing device is performed asynchronously with respect to the sending of the request.

16. A system comprising:

a storage; and

a processor operatively coupled to the storage and configured to execute instructions stored in the storage that when executed cause the processor to carry out a process comprising:

generating a plurality of video segments, each segment representing a portion of multimedia content, as the respective portions of the multimedia content are received from a live content source;

receiving, from a client computing device, only one HTTP request for at least two of the video segments, the HTTP request indicating start and end segments within the plurality of video segments to be pushed to the client computing device;

pushing, from the system to the client computing device, the at least two video segments in accordance with a predefined push strategy without requiring separate HTTP requests from the client computing device for each of the video segments; and

subsequent to pushing the at least two video segments, varying the predefined push strategy based at least in part on a latency representing a time difference between generation of the at least two video segments and playback of the at least two video segments,

wherein the predefined push strategy is a k-push strategy and the end segment is any segment other than first and last segments of the plurality of video segments, and wherein varying the k-push strategy includes changing a total number of video segments pushed in response to receiving the HTTP request.

Assignments (2)
CHANGE OF NAME Recorded Apr 8, 2019
From: ADOBE SYSTEMS INCORPORATED
To: ADOBE INC.
Reel/Frame 048867/0882 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2014
From: SWAMINATHAN, VISWANATHAN; WEI, SHENG
To: ADOBE SYSTEMS INCORPORATED
Reel/Frame 032451/0061 →
Continuity (1)
Related Publication 20150264096A1 · Sep 17, 2015