IP Library Granted Patent US 8,743,906
Granted Patent B2
US 8,743,906 · App. 12/359,254 · Granted Jun 3, 2014

Scalable seamless digital video stream splicing

Inventors: Steve Branam (Ayer, MA); Craig Frink (Chelmsford, MA); Santosh Krishnan (Windham, NH); Weidong Xu (Westford, MA); Jean Zhou (Nashua, NH); Qin-Fan Zhu (Acton, MA)
Assignee: Akamai Technologies, Inc.
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 8,743,906
App. No.
12/359,254
Granted
Jun 3, 2014
Kind
B2
Abstract

Described are computer-based methods and apparatuses, including computer program products, for scalable seamless digital video stream splicing. Data packets in a first video stream of bits are rearranged. Placeholder packets are created in a second video stream of bits. The first video stream of bits and the second video stream of bits are combined to generate a spliced stream by inserting data packets from the first video stream of bits into the placeholder packets in the second video stream of bits.

Claims (74)

1. A computerized method for splicing at a splicer, a first video stream of bits and a plurality of additional video streams of bits, the method comprising:

Rearranging data packets in the first video stream of bits;

Creating placeholder packets in a second video stream of bits, each placeholder packet including the location of the placeholder packet in the second video stream of bits and including a packet identification field having a value distinct from that defined for null packets in a format used by the second video stream of bits;

creating placeholder packets in a third video stream of bits, each placeholder packet including location the placeholder packet in the third video stream of bits and including a packet identification field with a value distinct from that defined for null packets in a format used by the third video stream of bits; and

In response to a splicing command, inserting a rearranged data packet from the first video stream of bits into (i) a placeholder packet in the second video stream of bits to generate a first spliced stream and (ii) a placeholder packet in the third video stream of bits to generate a second spliced stream.

2. The method of claim 1 , wherein the rearranging comprises:

identifying one or more data packets located in the first video stream of bits; and

positioning the identified data packets consecutively within the first video stream of bits.

3. The method of claim 2 , wherein the identifying comprises:

determining a video out-point of the first video stream of bits;

determining an audio out-point of the first video stream of bits; and

locating the identified data packets between the video out-point and the audio-out point.

4. The method of claim 3 , wherein the determining the video out-point and the determining the audio out-point are based on stream metadata from the first video stream of bits.

5. The method of claim 4 , wherein the stream metadata comprises timing information, picture type information, pull-down information, splicing cue messages, indexing information, or any combination thereof.

6. The method of claim 2 , wherein the positioning comprises locating the identified data packets immediately after the video out-point.

7. The method of claim 1 , wherein the creating placeholder packets in a second video stream of bits comprises:

determining a video in-point of the second video stream of bits;

determining an audio in-point of the second video stream of bits; and

inserting placeholder packets between the video in-point and the audio in-point.

8. The method of claim 7 , wherein the determining the video in-point and the determining the audio in-point are based on stream metadata from the second video stream of bits.

9. The method of claim 7 , wherein the inserting placeholder packets comprises determining a number and position of placeholder packets.

10. The method of claim 9 , wherein the number of placeholder packets depends on the rearranged data packets.

11. The method of claim 1 , further comprising storing the rearranged first video stream of bits, the second video stream of bits with placeholder packets, and the third video stream of bits with placeholder packets in one or more storage devices.

12. The method of claim 11 , wherein the one or more storage devices comprise a physical storage module, a transient buffer memory, or any combination thereof.

13. The method of claim 1 , further comprising buffering the first video stream of bits, the second video stream of bits, and the third video stream of bits in a buffer.

14. The method of claim 1 , further comprising:

formatting the first video stream of bits, the second video stream of bits, and the third video stream of bits into a packet storage data structure; and

storing the first video stream of bits, the second video stream of bits, and the third video stream of bits according to the packet storage data structure.

15. The method of claim 14 , wherein the packet storage structure includes a packet type, a timestamp flag, a timestamp offset, a scheduling timestamp, a packet start, a packet end, a data length, and a data payload.

16. The method of claim 1 , further comprising:

modifying a video out-point associated with the first video stream of bits to a predetermined condition;

modifying a video in-point associated with the second video stream of bits to a predetermined condition; and

modifying a video in-point associated with the third video stream of bits to a predetermined condition.

17. The method of claim 16 , wherein the modifying the video out-point comprises modifying an ending delay associated with the video out-point wherein the ending delay is equal to or greater than a predetermined threshold.

18. The method of claim 16 , wherein the modifying the a video in-point comprises modifying a starting delay associated with the video in-point wherein the starting delay is equal to or less than a predetermined threshold.

19. The method of claim 16 , wherein the modifying the video out-point, the modifying the video in-point, or both, includes transrating, Program Clock Reference (PCR) restamping, NULL packet removing, or any combination thereof.

20. The method of claim 1 , further comprising retrieving, in response to the splicing command, at least one of: the first video stream of bits, the second video stream of bits, or the third video stream of bits.

21. The method of claim 1 , further comprising changing scheduling timestamps associated with data packets in the second video stream of bits, the third video stream of bits, or both so that said scheduling timestamps are temporally continuous with scheduling timestamps associated with data packets in the first video stream of bits.

22. The method of claim 21 , further comprising:

transmitting the first video stream of bits, the second video stream of bits, and the third video stream of bits based on the scheduling timestamps of the packets associated with each of the video streams of bits.

23. The method of claim 1 , wherein at least one of the first video stream of bits, the second video stream of bits, or the third video stream of bits is an MPEG transport stream.

24. The method of claim 1 , wherein the rearranging comprises:

identifying one or more data packets located in the first video stream of bits; and

positioning the identified data packets within the first video stream of bits.

25. A computer program product, tangibly embodied in a machine-readable storage device, for splicing at a splicer, a first video stream of bits and a plurality of additional video streams of bits, the computer program product including instructions operable to cause a data processing apparatus in communication with a splicer to:

rearrange data packets in the first video stream of bits;

create placeholder packets in a second video stream of bits, each placeholder packet including the location of the placeholder packet in the second video stream of bits and including a packet identification field having a value distinct from that defined for null packets in a format used by the second video stream of bits;

create placeholder packets in a third video stream of bits, each placeholder packet including location the placeholder packet in the third video stream of bits and including a packet identification field with a value distinct from that defined for null packets in a format used by the third video stream of bits; and

in response to a splicing command, inserting a rearranged data packet from the first video stream of bits into (i) a placeholder packet in the second video stream of bits to generate a first spliced stream and (ii) a placeholder packet in the third video stream of bits to generate a second spliced stream.

26. A video stream splicer comprising:

means for rearranging data packets in the first video stream of bits;

means for creating placeholder packets in a second video stream of bits, each placeholder packet including the location of the placeholder packet in the second video stream of bits and including a packet identification field having a value distinct from that defined for null packets in a format used by the second video stream of bits;

means for creating placeholder packets in a third video stream of bits, each placeholder packet including location the placeholder packet in the third video stream of bits and including a packet identification field with a value distinct from that defined for null packets in a format used by the third video stream of bits;

means for storing at least one of the first video stream of bits, the second video stream of bits, or the third video stream of bits in a storage device; and means for inserting, in response to a splicing command, a rearranged data packet from the first video stream of bits into (i) a placeholder packet in the second video stream of bits to generate a first spliced stream and (ii) a placeholder packet in the third video stream of bits to generate a second spliced stream.

27. A method for splicing a first compressed video stream of bits and a plurality of additional compressed video streams of bits, the method comprising:

receiving the first compressed video stream of bits;

extracting stream metadata from the first compressed stream of bits;

determining a splice out-point of the first compressed video stream of bits based on the stream metadata;

rearranging data packets in the first compressed video stream of bits based on the stream metadata;

storing the rearranged first compressed video stream of bits in a storage device;

receiving a second compressed video stream of bits;

extracting stream metadata from the second compressed video stream of bits;

determining a splice in-point of the second compressed video stream of bits based on the stream metadata extracted from the second compressed video stream of bits;

creating placeholder packets in the second compressed video stream of bits, each placeholder packet including the location of the placeholder packet in the second compressed video stream of bits and including a packet identification field having a value distinct from that defined for null packets in a format used by the second compressed video stream of bits;

storing the second compressed video stream of bits in a storage device;

receiving a third compressed video stream of bits;

extracting stream metadata from the third compressed video stream of bits;

determining a splice in-point of the third compressed video stream of bits based on the stream metadata extracted from the third compressed video stream of bits;

creating placeholder packets in the third compressed video stream of bits, each placeholder packet including the location of the placeholder packet in the third compressed video stream of bits and including a packet identification field having a value distinct from that defined for null packets in a format used by the third compressed video stream of bits;

storing the third compressed video stream of bits in a storage device;

retrieving the first compressed video stream of bits from the storage device;

retrieving at least one of the second compressed video stream of bits or the third compressed video stream of bits from the storage device;

transmitting at least a portion of the first compressed video stream of bits, the transmission ending at the splice out-point; and

transmitting immediately thereafter at least a portion of at least one of the second compressed video stream of bits or the third compressed video stream of bits, the transmission starting at the splice in-point.

Assignments (2)
MERGER Recorded May 8, 2013
From: VERIVUE, INC.
To: AKAMAI TECHNOLOGIES, INC.
Reel/Frame 030370/0798 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2009
From: BRANAM, STEVE; FRINK, CRAIG; KRISHNAN, SANTOSH; XU, WEIDONG; ZHOU, JEAN; ZHU, QIN-FAN
To: VERIVUE, INC.
Reel/Frame 022496/0775 →
Continuity (1)
Related Publication 20100189131A1 · Jul 29, 2010