IP Library Granted Patent US 10,412,425
Granted Patent B2
US 10,412,425 · App. 15/863,804 · Granted Sep 10, 2019

Processing gaps in audio and video streams

Inventors: Sonal Gandhi (Seattle, WA); Mathieu R. Henaire (Redmond, WA); Amit Puntambekar (Fremont, CA)
Assignee: Facebook, Inc.
H04N21/2368G10L19/012G11B27/10H04N21/2187H04N21/233H04N21/2353H04N21/23418H04N21/23605H04N21/242H04N21/8547
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 10,412,425
App. No.
15/863,804
Granted
Sep 10, 2019
Kind
B2
Abstract

In one embodiment, a method includes receiving a series of a series of audio-and-video segment pairs in a live video feed. The series of audio-and-video segment pairs is traversed, comparing the end-time of a current audio-and-video segment with the start-time of the next audio-and-video segment pair, in the sequence, and identifying any time gap between consecutive audio-and-video segment pairs. When a time gap is identified, the end-time of a current segment pair is subtracted from the start time of the next segment-pair to define an offset time, and subsequent start times of segment pairs in the sequence are adjusted based on this offset time. If after adjusting a start time of the next segment-pair by the offset time, a gap in the audio segment remains, then the gap is filled with an encoded silence sequence.

Claims (63)

1. A method comprising:

by a computing device, accessing a series of data-unit pairs, each data-unit pair including a video data-unit having respective video content and an audio data-unit having respective audio content;

by the computing device, correcting for time gaps between consecutive data-unit pairs in the series of data-unit pairs to define a pre-muxed sequence of data-unit pairs, including:

i) for a first data-unit pair having a first video data-unit and first audio data unit, identifying a first video-ending-time of the first video data-unit's respective video content and a first audio-ending-time of the first audio data-unit's respective audio content;

ii) for a next data-unit pair having a next video data-unit and next audio data unit, the next data-unit pair being next in chronological starting order to the first data-unit pair, identifying a next video-start-time of the next video data-unit's respective video content and a next audio-start-time of the next audio data-unit's respective audio content;

iii) determining a time-difference between, the earlier of the next video-start-time and the next audio-start-time, and the later of the first video-ending-time and first audio-ending-time, to define a time-adjustment value;

iv) adjusting the next video-start-time based on the time-adjustment value to define an adjusted next video-start-time;

v) adjusting the next audio-start-time based on the time-adjustment value to define an adjusted next audio-start-time; and

vi) inserting a silence buffer to substantially fill any time gap between the first audio-ending-time and the adjusted next audio-start-time; and

by the computing device, multiplexing the pre-muxed sequence of data-unit pairs to define a media file.

2. The method of claim 1 , wherein:

the method further comprises a running offset comprised of a sum of the current time-adjustment value and all previous time-adjustment values determined during the correcting for time gaps between consecutive data-unit pairs in the series of data-unit pairs; and

the next video-start-time and the next audio-start-time are adjusted by subtracting the running offset from each of the next video-start-time and the next audio-start-time.

3. The method of claim 1 , wherein the next video-start-time and the next audio-start-time are adjusted by subtracting the time-adjustment value from each of the next video-start-time and the next audio-start-time.

4. The method of claim 1 , wherein at least one of the next video-start-time and the next audio-start-time precedes at least one of first video-ending-time and first audio-ending-time.

5. The method of claim 4 , wherein in step (iii), the time-difference is determined by subtracting the later of the first video-ending-time and first audio-ending-time from the earlier of the next video-start-time and the next audio-start-time to define the time-adjustment value.

6. The method of claim 1 , wherein:

each video data-unit further includes a video-time-stamp indicting a start time for its respective video content, and each audio data-unit further includes an audio-time-stamp indicting a start time for the respective audio content;

in step (iv), adjusting the next video-start-time includes rewriting the video-time-stamp of the of the next video data-unit; and

in step (v), adjusting the next audio-start-time includes rewriting the audio-time-stamp of the of the next video data-unit.

7. The method of claim 6 , wherein;

the video content and audio content of all data-unit pairs in the series of data-unit pairs are of a same, predefined time duration;

in step (i), the first video-ending-time is identified based on the video-time-stamp of the first video data-unit and the predefined time duration, and the first audio-ending-time is identified based on the audio-time-stamp of the first audio-unit and the predefined time duration; and

in step (ii), the next video-start-time is identified based on the video-time-stamp of the of the next video data-unit, and the next audio-start-time is identified based on the audio-time-stamp of the next audio data-unit.

8. The method of claim 1 , wherein:

in each data-unit pair, the video data-unit further includes a video-time-stamp indicting a start time for the respective video content and a video-duration indicator indicating a duration of the respective video content, the audio data-unit further includes an audio-time-stamp indicting a start time for the respective audio content, and an audio-duration indicator indicating a duration of the respective audio content; and

in step (i), the first video-ending-time is identified based on the video-time-stamp and video-duration indicator of the first data unit, and the first audio-ending-time is identified based on the audio-time-stamp and audio-duration indicator of the first audio data-unit.

9. The method of claim 1 , wherein the series of data-unit pairs are received over a network from a client computing device using a network protocol lacking handshaking dialogues.

10. The method of claim 1 , wherein the series of data-unit pairs are received from a client computing device with no guarantee of delivery or ordering.

11. The method of claim 1 , wherein the series of data-unit pairs are received from a client computing device in the form of a live video feed from the client computing device.

12. The method of claim 1 , wherein the media file is stream-packaged for video-on-demand transmission from the computing device to at least one client computing device.

13. One or more computer-readable non-transitory storage media embodying software that is operable when executed to:

access a series of data-unit pairs, each data-unit pair including a video data-unit having respective video content and an audio data-unit having respective audio content;

correct for time gaps between consecutive data-unit pairs in the series of data-unit pairs to define a pre-muxed sequence of data-unit pairs, including:

i) for a first data-unit pair having a first video data-unit and first audio data unit, identifying a first video-ending-time of the first video data-unit's respective video content and a first audio-ending-time of the first audio data-unit's respective audio content;

ii) for a next data-unit pair having a next video data-unit and next audio data unit, the next data-unit pair being next in chronological starting order to the first data-unit pair, identifying a next video-start-time of the next video data-unit's respective video content and a next audio-start-time of the next audio data-unit's respective audio content;

iii) determining a time-difference between, the earlier of the next video-start-time and the next audio-start-time, and, the later of the first video-ending-time and first audio-ending-time, to define a time-adjustment value;

iv) adjusting the next video-start-time based on the time-adjustment value to define an adjusted next video-start-time;

v) adjusting the next audio-start-time based on the time-adjustment value to define an adjusted next audio-start-time; and

vi) inserting a silence buffer to substantially fill any time gap between the first audio-ending-time and the adjusted next audio-start-time; and

multiplex the pre-muxed sequence of data-unit pairs to define a media file.

14. The media of claim 13 , wherein:

the software is further operable when executed to define a running offset comprised of a sum of the current time-adjustment value and all previous time-adjustment values determined during the correcting for time gaps between consecutive data-unit pairs in the series of data-unit pairs; and

the next video-start-time and the next audio-start-time are adjusted by subtracting the running offset from each of the next video-start-time and the next audio-start-time.

15. The media of claim 13 , wherein at least one of the next video-start-time and the next audio-start-time precedes at least one of first video-ending-time and first audio-ending-time.

16. The media of claim 13 , wherein the series of data-unit pairs are received in the form of a live video feed from a client computing device with no guarantee of delivery or ordering.

17. A system comprising:

one or more processors; and

one or more computer-readable non-transitory storage media coupled to one or more of the processors and comprising instructions operable when executed by one or more of the processors to cause the system to:

access a series of data-unit pairs, each data-unit pair including a video data-unit having respective video content and an audio data-unit having respective audio content;

correct for time gaps between consecutive data-unit pairs in the series of data-unit pairs to define a pre-muxed sequence of data-unit pairs, including:

i) for a first data-unit pair having a first video data-unit and first audio data unit, identifying a first video-ending-time of the first video data-unit's respective video content and a first audio-ending-time of the first audio data-unit's respective audio content;

ii) for a next data-unit pair having a next video data-unit and next audio data unit, the next data-unit pair being next in chronological starting order to the first data-unit pair, identifying a next video-start-time of the next video data-unit's respective video content and a next audio-start-time of the next audio data-unit's respective audio content;

iii) determining a time-difference between, the earlier of the next video-start-time and the next audio-start-time, and, the later of the first video-ending-time and first audio-ending-time, to define a time-adjustment value;

iv) adjusting the next video-start-time based on the time-adjustment value to define an adjusted next video-start-time;

v) adjusting the next audio-start-time based on the time-adjustment value to define an adjusted next audio-start-time; and

vi) inserting a silence buffer to substantially fill any time gap between the first audio-ending-time and the adjusted next audio-start-time; and

multiplex the pre-muxed sequence of data-unit pairs to define a media file.

18. The system of claim 17 , wherein:

the processors are further operable when executing the instructions to define a running offset comprised of a sum of the current time-adjustment value and all previous time-adjustment values determined during the correcting for time gaps between consecutive data-unit pairs in the series of data-unit pairs; and

the next video-start-time and the next audio-start-time are adjusted by subtracting the running offset from each of the next video-start-time and the next audio-start-time.

19. The system of claim 17 , wherein at least one of the next video-start-time and the next audio-start-time precedes at least one of first video-ending-time and first audio-ending-time.

20. The system of claim 17 , wherein the series of data-unit pairs are received from a client computing device in the form of a live video feed with no guarantee of delivery or ordering.

Assignments (2)
CHANGE OF NAME Recorded Dec 20, 2021
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058553/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2018
From: GANDHI, SONAL; HENAIRE, MATHIEU R.; PUNTAMBEKAR, AMIT
To: FACEBOOK, INC.
Reel/Frame 044987/0192 →
Continuity (1)
Related Publication 20190215542A1 · Jul 11, 2019