IP Library › Granted Patent US 9,843,656
Granted Patent B2
US 9,843,656 · App. 14/971,997 · Granted Dec 12, 2017

Scalable, live transcoding with support for adaptive streaming and failover

Inventors: Krishnan Eswaran (Oakland, CA); Thierry Foucu (San Jose, CA); Jie Sun (Pleasanton, CA); Krishna Kumar Gadepalli (Fremont, CA); Vijnan Shastri (Palo Alto, CA)
Assignee: GOOGLE INC.
H04L69/40H04L29/06523H04L65/4015H04L65/602H04L65/607H04L67/2804H04N21/2343H04N21/23106H04N21/234309H04N21/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,843,656
App. No.
14/971,997
Granted
Dec 12, 2017
Kind
B2
Abstract

A system and method for a live streaming platform that can redundantly process input streams in parallel ingestion pipelines is disclosed herein. Ingested input streams in the parallel pipelines can be segmented using a segmentation function that creates identical segments in each of the streams in the pipelines. If errors occur, or there are disruptions in one or more of the input streams or pipelines, the live streaming platform can ensure that segments are identifiable and different parts of the pipelines can join a main stream at different points in time without disruption.

Claims (43)

1. A method comprising: receiving a media stream associated with a first transcoding pipeline of a plurality of transcoding pipelines, the media stream including a plurality of frames;

segmenting, using a segmentation component, the frames of the media stream into a plurality of content segments, the segmenting comprising: identifying a segment boundary for a content segment, the segment boundary marking a start of the content segment;

discarding frames occurring in the media stream prior to the start;

and adding frames occurring in a video stream after the start to the content segment;

transcoding, using a transcoding component, the plurality of content segments of the media stream from a first format to a second format to produce a plurality of transcoded content segments;

and joining, using a conjoining component, the plurality of transcoded content segments of the media stream associated with the first transcoding pipeline with a plurality of transcoded content segments of a second media stream associated with a second transcoding pipeline to produce a delivery stream, wherein the segmenting includes segmenting, using the segmentation component, the frames of the media stream into equivalent chunks based on the identified segment boundaries, wherein the plurality of transcoded content segments of the media stream are transcoded at a first transcode quality having a first bitrate, and wherein the plurality of transcoded content segments of the second media stream are transcoded at a second transcode quality having a second bitrate and wherein the first transcode quality is different from the second transcode quality.

2. The method of claim 1 , wherein the first bitrate is different from the second bitrate.

3. The method of claim 1 , further comprising: receiving a plurality of media streams, the plurality of media streams including the media stream and the second media stream, wherein the segmenting is performed in parallel for each of the plurality of media streams.

4. The method of claim 1 , further comprising: adding label metadata to the media stream that identifies times associated with the plurality of content segments, wherein the joining joins the plurality of content segments of the media stream with the plurality of content segments of the second media stream responsive to the label metadata.

5. The method of claim 1 , wherein identifying a segment boundary for a content segment comprises: identifying a key frame of the plurality of frames in the media stream; and identifying the segment boundary for the content segment responsive to the identified key frame.

6. The method of claim 1 , wherein the segmenting further comprises:

identifying a second segment boundary for the content segment, the second segment boundary marking an end of the content segment; and adding frames occurring in the video stream after the end to a subsequent content segment of the plurality of content segments.

7. The method of claim 6 , wherein the second segment boundary is identified responsive to a number of frames in the content segment.

8. The method of claim 6 , wherein the second segment boundary is identified responsive to a time length of the content segment.

9. A computer system comprising: a computer processor;

a non-transitory computer-readable medium storing computer program instructions executable by the processor to perform steps comprising:

receiving a media stream associated with a first transcoding pipeline, the media stream including a plurality of frames; segmenting the frames of the media stream into a plurality of content segments, the segmenting comprising: identifying a segment boundary for a content segment, the segment boundary marking a start of the content segment;

discarding frames occurring in the media stream prior to the start; and adding frames occurring in a video stream after the start to the content segment;

transcoding the plurality of content segments of the media stream from a first format to a second format to produce a plurality of transcoded content segments;

and joining the plurality of transcoded content segments of the media stream associated with the first transcoding pipeline with a plurality of transcoded content segments of a second media stream associated with a second transcoding pipeline to produce a delivery stream,

wherein the segmenting includes segmenting the frames of the media stream into equivalent chunks based on the identified segment boundaries, the plurality of transcoded content segments of the media stream are transcoded at a first transcode quality having a first bitrate, and the plurality of transcoded content segments of the second media stream are transcoded at a second transcode quality having a second bitrate and wherein the first transcode quality is different from the second transcode quality.

10. The computer system of claim 9 , wherein the first bitrate is different from the second bitrate.

11. The computer system of claim 9 , the steps further comprising:

receiving a plurality of media streams, the plurality of media streams including the media stream and the second media stream, wherein the segmenting is performed in parallel for each of the plurality of media streams.

12. The computer system of claim 9 , the steps further comprising:

adding label metadata to the media stream that identifies times associated with the plurality of content segments, wherein the joining joins the plurality of content segments of the media stream with the plurality of content segments of the second media stream responsive to the label metadata.

13. The computer system of claim 9 , wherein identifying a segment boundary for a content segment comprises:

identifying a key frame of the plurality of frames in the media stream; and identifying the segment boundary for the content segment responsive to the identified key frame.

14. The computer system of claim 9 , wherein the segmenting further comprises: identifying a second segment boundary for the content segment, the second segment boundary marking an end of the content segment; and adding frames occurring in the video stream after the end to a subsequent content segment of the plurality of content segments.

15. A non-transitory computer-readable medium storing computer program instructions executable by a computer processor to perform steps comprising: receiving a media stream associated with a first transcoding pipeline, the media stream including a plurality of frames;

segmenting the frames of the media stream into a plurality of content segments, the segmenting comprising: identifying a segment boundary for a content segment, the segment boundary marking a start of the content segment;

discarding frames occurring in the media stream prior to the start; and adding frames occurring in a video stream after the start to the content segment;

transcoding the plurality of content segments of the media stream from a first format to a second format to produce a plurality of transcoded content segments;

and joining the plurality of transcoded content segments of the media stream associated with the first transcoding pipeline with a plurality of transcoded content segments of a second media stream associated with a second transcoding pipeline to produce a delivery stream,

wherein the segmenting includes segmenting the frames of the media stream into equivalent chunks based on the identified segment boundaries, the plurality of transcoded content segments of the media stream are transcoded at a first transcode quality having a first bitrate, and the plurality of transcoded content segments of the second media stream are transcoded at a second transcode quality having a second bitrate and wherein the first transcode quality is different from the second transcode quality.

16. The computer-readable medium of claim 15 , wherein the first bitrate is different from the second bitrate.

17. The computer-readable medium of claim 15 , the steps further comprising: receiving a plurality of media streams, the plurality of media streams including the media stream and the second media stream, wherein the segmenting is performed in parallel for each of the plurality of media streams.

18. The computer-readable medium of claim 15 , the steps further comprising: adding label metadata to the media stream that identifies times associated with the plurality of content segments, wherein the joining joins the plurality of content segments of the media stream with the plurality of content segments of the second media stream responsive to the label metadata.

19. The computer-readable medium of claim 15 , wherein identifying a segment boundary for a content segment comprises:

identifying a key frame of the plurality of frames in the media stream;

and identifying the segment boundary for the content segment responsive to the identified key frame.

20. The computer-readable medium of claim 15 , wherein the segmenting further comprises: identifying a second segment boundary for the content segment, the second segment boundary marking an end of the content segment;

and adding frames occurring in the video stream after the end to a subsequent content segment of the plurality of content segments.

Assignments (2)
CHANGE OF NAME Recorded Oct 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044129/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 21, 2015
From: ESWARAN, KRISHNAN; FOUCU, THIERRY; SUN, JIE; GADEPALLI, KRISHNA KUMAR; SHASTRI, VIJNAN
To: GOOGLE INC.
Reel/Frame 037339/0666 →
Continuity (2)
Continuation 13444787 · Apr 11, 2012
Related Publication 20160173663A1 · Jun 16, 2016