Low-latency HTTP live streaming

US10567461B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-10567461-B2
Application numberUS-201715654494-A
CountryUS
Kind codeB2
Filing dateJul 19, 2017
Priority dateAug 4, 2016
Publication dateFeb 18, 2020
Grant dateFeb 18, 2020

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Implementations provide a structure for low-latency live-video streams using existing content delivery networks. An example method includes creating, at the start of a broadcast stream, a playlist for the broadcast stream that identifies at least two segment files. The content of each of the segment files is a table header. The method also includes transmitting the playlist and each of the segment files to a cache server, obtaining the video broadcast stream as a series of frames, and transmitting each frame in the series of frames to the cache server using an HTTP chunk transfer protocol, each frame being associated with, and written to, a first segment file identified in the playlist. When a frame in the broadcast stream is a break frame, the method includes transmitting an end of file marker for the first segment file and adding a video header for the break frame before it is transmitted.

First claim

Opening claim text (preview).

What is claimed is: 1. A computing device comprising: at least one processor; and a non-transitory computer-readable medium having executable instructions stored thereon that, when executed by the at least one processor, are configured to execute a low-latency video broadcasting engine, the low-latency video broadcasting engine configured to: write a header to at least two segment files, the at least two segment files including a current segment file and a next segment file, the header identifying a video broadcast stream, generate a playlist identifying the at least two segment files and, for each segment file, a respective tag with a target duration, wherein the next segment file lacks associated video frames when added to the playlist, and wherein an interval at which key frames occur is independent of the target durations, transmit the playlist and the at least two segment files to a cache server, wherein the transmission occurs prior to associating any frames with the next segment file, and begin receiving the video broadcast stream as a series of frames from a broadcast device, wherein as each frame is received the low-latency video broadcasting engine is configured to: determine whether the frame is a break frame, responsive to determining that the frame is not a break frame, associate the frame with the current segment file and transmit the frame to the cache server as a chunk via HTTP chunk transfer, and responsive to determining the frame is a break frame: close the current segment file by transmitting a marker indicating an end of the current segment file as a chunk via HTTP chunk transfer to the cache server, associate the break frame with the next segment file, and transmit, via HTTP chunk transfer, the break frame to the cache server as a chunk for the next segment file. 2. The computing device of claim 1 , wherein the break frame represents a discontinuance in the video broadcast stream. 3. The computing device of claim 1 , wherein the break frame represents a frame occurring after the target duration is reached. 4. The computing device of claim 3 , wherein the target durations are each less than four seconds. 5. The computing device of claim 1 , wherein the break frame represents a first key frame received after the target duration is reached. 6. The computing device of claim 1 , wherein actual duration of the current segment file when the end-of-file marker is sent differs from the target duration for the current segment file. 7. The computing device of claim 1 , wherein the low-latency video broadcasting engine is configured to, after transmitting the marker indicating an end of the current segment file: write the header to a new segment file; update the playlist by adding the new segment file to the playlist and removing the current segment file from the playlist; and send the updated playlist and the new segment file to the cache server, wherein the new segment file lacks associated frames when added to the playlist. 8. The computing device of claim 1 , wherein the low-latency video broadcasting engine is configured to, after transmitting the marker indicating an end of the current segment file: add the current segment file to an HLS playlist associated with the video broadcast stream. 9. A method for generating low-latency video streams using existing content delivery networks, the method comprising: creating a playlist for a video broadcast stream, the playlist identifying a quantity of segment files and, for each segment file, a respective tag with a target duration, the segment files including a current segment file and a next segment file, wherein each of the segment files includes header data, and wherein an interval at which key frames occur is independent of the target durations; transmitting the playlist and, for each of the segment files, the header data using HTTP chunk transfer protocol, to a cache server; obtaining the video broadcast stream as a series of frames; and determining, for each frame in the series of frames, whether the frame is a break frame; responsive to determining that the frame is not a break frame, assigning the frame to the current segment file and transmitting the frame to the cache server using an HTTP chunk transfer protocol, at least some of the frames being written to the current segment file subsequent to transmitting the header data for the current segment file to the cache server; and responsive to determining that the frame is a break frame: transmitting an end of file marker for the current segment file to the cache server, associating the break frame with the next segment file, and transmitting the break frame to the cache server as a chunk for the next segment file using the HTTP chunk transfer protocol. 10. The method of claim 9 , wherein responsive to determining that the frame is a break frame, the method further includes: creating a new segment file with the header data as the content of the new segment file, adding the new segment file at an end of the playlist, deleting the current segment file from the playlist. 11. The method of claim 10 , wherein the new segment file is a first new segment file and the method further includes adding a respective in-progress tag in the playlist for each segment file as the segment file is added to the playlist, wherein deleting the current segment file occurs responsive to creating a second new segment file and wherein the respective in-progress tag for the current segment file is deleted from the playlist responsive to adding the first new segment file. 12. The method of claim 9 , wherein transmitting the header data in a segment file occurs prior to associating a last frame with the segment file. 13. The method of claim 9 , wherein determining that the frame is a break frame includes determining that the frame represents a discontinuity. 14. The method of claim 9 , wherein the header includes a video stream identifier for the video broadcast stream. 15. The method of claim 9 , wherein the header includes an audio stream identifier for the video broadcast stream. 16. A method comprising: receiving a playlist for a video broadcast stream from a caching server, the playlist identifying at least a current segment file and a next segment file and, for each segment file, a respective tag with a target duration, wherein an interval at which key frames occur is independent of the target durations; requesting the segment files from the caching server, wherein the next segment file lacks associated video frames when initially requested from the caching server; receiving a chunked HTTP transfer having content, the transfer identifying a segment file from the playlist; determining whether the chunked HTTP transfer is an end-of-file message; responsive to determining the chunked HTTP transfer is not an end-of-file message, adding the content of the transfer to a pipeline for rendering frames associated with the segment file identified in the transfer; and responsive to determining the chunked HTTP transfer is an end-of-file message, adding the content of the transfer to a pipeline for rendering frames associated with a next segment in the playlist. 17. The method of claim 16 , wherein as part of adding the content of the transfer to the pipeline for rendering frames associated with the next segment, the method further includes: reading video parameters from a first frame in the pipeline; and adjusting video playback parameters using the video parameters from the first frame. 18. The method of claim 16 , furth

Assignees

Inventors

Classifications

  • IP · CPC title

  • by decomposing the content in the time domain, e.g. in time segments · CPC title

  • Structuring of content, e.g. decomposing content into time segments · CPC title

  • based on web technology, e.g. hypertext transfer protocol [HTTP] · CPC title

  • for generating different versions · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10567461B2 cover?
Implementations provide a structure for low-latency live-video streams using existing content delivery networks. An example method includes creating, at the start of a broadcast stream, a playlist for the broadcast stream that identifies at least two segment files. The content of each of the segment files is a table header. The method also includes transmitting the playlist and each of the segm…
Who is the assignee on this patent?
Twitter Inc
What technology area does this patent fall under?
Primary CPC classification H04L65/605. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Feb 18 2020 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 4 related publications on this page (citations in our corpus or others sharing the same primary CPC).