Method, system, and medium for synchronizing video streams - Patents.com

The method synchronizes video streams by generating fingerprints and adjusting electronic program guides based on time shifts, addressing manual detection inefficiencies and ensuring precise timing in broadcast synchronization.

JP7680588B2Active Publication Date: 2025-05-20GOOGLE LLC
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
JP2024017451
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2024-02-07
Publication Date
2025-05-20
Estimated Expiration
2040-04-02

AI Technical Summary

Technical Problem

Manual detection and adjustment of program delays in video broadcasts are resource-intensive, leading to inefficiencies in synchronizing video streams across different local stations.

Method used

A method and system for synchronizing video streams by identifying target and reference streams, generating fingerprints from frames, determining time shifts, and adjusting electronic program guides based on synchronization thresholds, with optional alerts to operators.

Benefits of technology

Enables efficient and automated synchronization of video streams, reducing manual intervention and ensuring accurate timing information in electronic program guides.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007680588000001
    Figure 0007680588000001
  • Figure 0007680588000002
    Figure 0007680588000002
  • Figure 0007680588000003
    Figure 0007680588000003
Patent Text Reader

Abstract

To provide a method, a system, and a medium for synchronizing video streams.SOLUTION: A method comprises the steps of: discriminating a target video stream from a reference video stream, where the target video stream and the reference video stream are two different broadcasts of a program; generating, for the target video stream, a sequence of fingerprints; determining a time shift at which the sequence of fingerprints appears within the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and, in response to determining that the target video stream is not synchronized with the reference video stream, causing an electronic programming guide that includes an indication of the target video stream to be modified based on the time shift.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The disclosed subject matter relates to methods, systems, and mediums for synchronizing video streams. [Background technology]

[0002] A television network may broadcast programs to different local stations. For example, a single program may be broadcast to hundreds of local stations across the country. In some cases, the broadcast of a program on a particular local station may be delayed, for example, due to a sporting event that goes into extra innings, a breaking news event, weather delays, etc. In such cases, a local operator of the local station may have to manually detect that the program broadcast is delayed, for example, to manually adjust an electronic program guide with corrected timing information. Manually detecting program delays and adjusting timing information may be resource intensive. Summary of the Invention [Problem to be solved by the invention]

[0003] Therefore, it would be desirable to provide new methods, systems, and mediums for synchronizing video streams. [Means for solving the problem]

[0004] SUMMARY OF THE DISCLOSURE Methods, systems, and media are provided for synchronizing video streams.

[0005] According to some embodiments of the disclosed subject matter, a method for synchronizing video streams is provided, the method including the steps of: identifying a target video stream and a reference video stream, the target video stream and the reference video stream being two different broadcasts of a program; generating a sequence of fingerprints for the target video stream; determining a time shift at which the sequence of fingerprints appears in the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and, in response to determining that the target video stream is not synchronized with the reference video stream, modifying an electronic program guide including a display of the target video stream based on the time shift. The sequence of fingerprints may be comprised of fingerprints derived, for example, from a sequence of frames of the target video stream. A "fingerprint" of a frame of a video stream may be, for example, a compact digital descriptor extracted from the frame. In some embodiments, each fingerprint is derived from a respective frame of the sequence of frames.

[0006] In some embodiments, the method further includes sending an alert to an operator associated with the target video stream, the alert indicating the time shift. The alert may, for example, indicate that a time shift was detected and, in some cases, also indicate the length of the time shift.

[0007] In some embodiments, the method further comprises determining an error type associated with the time shift.

[0008] In some embodiments, the error type indicates that the target video stream did not start at the correct time.

[0009] In some embodiments, the error type indicates that the target video stream does not end at the correct time.

[0010] In some embodiments, the target video stream is identified based on metadata associated with the target video stream. Additionally or alternatively, the reference video stream may be identified based on metadata associated with the reference video stream.

[0011] In some embodiments, the method further includes identifying a second target video stream; generating a second sequence of fingerprints for the second target video stream; determining that the second sequence of fingerprints is not included in the reference video stream; and, in response to determining that the second sequence of fingerprints is not included in the reference video stream, determining that the second target video stream is not a broadcast of a program corresponding to the reference video stream.

[0012] In some embodiments, the second target video stream is identified based on metadata associated with the target video stream.

[0013] According to some embodiments of the disclosed subject matter, a system for synchronizing video streams is provided, the system comprising a hardware processor configured to: identify a target video stream and a reference video stream, where the target video stream and the reference video stream are two different broadcasts of a program; generate a sequence of fingerprints for the target video stream; determine a time shift at which the sequence of fingerprints appears in the reference video stream; determine whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and, in response to a determination that the target video stream is not synchronized with the reference video stream, cause an electronic program guide including a display of the target video stream to be altered based on the time shift.

[0014] According to some embodiments of the disclosed subject matter, a computer-readable medium is provided that includes computer-executable instructions that, when executed by a processor, cause the processor to perform a method for synchronizing video streams, the computer-readable medium may be a non-transitory computer-readable medium, although this embodiment is not limited to non-transitory computer-readable media, the method including the steps of identifying a target video stream and a reference video stream, where the target video stream and the reference video stream are two different broadcasts of a program; generating a sequence of fingerprints for the target video stream; determining a time shift at which the sequence of fingerprints appears in the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and, in response to determining that the target video stream is not synchronized with the reference video stream, causing an electronic program guide including a display of the target video stream to be altered based on the time shift.

[0015] According to some embodiments of the disclosed subject matter, a system for synchronizing video streams is provided, the system comprising: means for identifying a target video stream and a reference video stream, the target video stream and the reference video stream being two different broadcasts of a program; means for generating a sequence of fingerprints for the target video stream; means for determining a time shift at which the sequence of fingerprints appears in the reference video stream; means for determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and means for modifying an electronic program guide including a display of the target video stream based on the time shift in response to a determination that the target video stream is not synchronized with the reference video stream.

[0016] According to some embodiments of the disclosed subject matter, a method for synchronizing video streams is provided, the method including the steps of identifying a target video stream and a reference video stream, where the target video stream and the reference video stream are two different broadcasts of a program; generating a sequence of fingerprints for the target video stream; determining a time shift at which the sequence of fingerprints appears in the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; and in response to determining that the target video stream is not synchronized with the reference video stream, sending an alert to an operator associated with the target video stream, the alert indicating the time shift.

[0017] According to some embodiments of the disclosed subject matter, a method is provided that includes the steps of identifying a target video stream and a reference video stream, generating a sequence of fingerprints for the target video stream, determining that the sequence of fingerprints is not included in the reference video stream, and, in response to determining that the sequence of fingerprints is not included in the reference video stream, determining that the target video stream is not a broadcast of a program corresponding to the reference video stream.

[0018] In accordance with some embodiments of the disclosed subject matter, the computer-readable medium may be a non-transitory computer-readable medium, although this embodiment is not limited to a non-transitory computer-readable medium, and includes computer-executable instructions that, when executed by a processor, cause the processor to perform a method according to any embodiment or implementation described herein.

[0019] According to some embodiments of the disclosed subject matter, a system for synchronizing video streams is provided, the system comprising a hardware processor configured to perform a method according to any embodiment or implementation described herein.

[0020] Aspects of the present disclosure thus allow for determining whether a target video stream is synchronized with a reference video stream by analysis of a sequence of fingerprints derived from a sequence of frames of the target video sequence. The sequence of frames used to derive the sequence of fingerprints may include many fewer frames than those included in the target video sequence, and thus determining whether the target video stream is synchronized with the reference video stream is computationally efficient. Furthermore, if the sequence of frames used to derive the sequence of fingerprints is selected from frames occurring at an initial point in the target video stream, the determination of whether the target video stream is synchronized with the reference video stream can be made at an early stage of the transmission of the target video stream. This allows for knowing at an early stage of the transmission of the target video stream whether the target video stream is synchronized with the reference video stream, thereby allowing an operator, a recipient of the target video stream, and / or a device or entity to be notified that the target video stream is not precisely synchronized with the reference video stream before the transmission of the target video stream is completed.

[0021] Various objects, features, and advantages of the disclosed subject matter may be more fully understood by reference to the following detailed description of the disclosed subject matter when considered in conjunction with the following drawings, in which like reference numerals identify like elements and in which: [Brief description of the drawings]

[0022] [Figure 1] 1 shows an illustrative example of a process for synchronizing video streams in accordance with some embodiments of the disclosed subject matter. [Figure 2A] FIG. 2 shows an illustrative example of a schematic diagram for synchronizing video streams in accordance with some embodiments of the disclosed subject matter. [Figure 2B]A diagram showing an illustrative example of comparing a target video stream and a reference video stream to determine whether the video streams are considered to be time-synchronized, in accordance with some embodiments of the disclosed subject matter. [Diagram 3] FIG. 1 is a schematic diagram of an illustrative system suitable for implementation of mechanisms described herein for synchronizing video streams, in accordance with some embodiments of the disclosed subject matter. [Figure 4] A diagram showing a detailed example of hardware that may be used in the server and / or user device of Figure 3 in accordance with some embodiments of the disclosed subject matter. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0023] According to various embodiments, mechanisms (which may include methods, systems, and media) are provided for synchronizing video streams.

[0024] In some embodiments, the mechanisms described herein may determine whether two video streams, each corresponding to a broadcast of a show or programming (e.g., a television show, a movie, and / or any other suitable type of show or programming), are time-synchronized. For example, in some embodiments, the mechanisms may determine whether a target video stream (e.g., corresponding to a particular local station broadcast of the show) is time-synchronized to a reference video stream corresponding to the same show. In some embodiments, in response to determining that the target video stream is not time-synchronized to the reference video stream, the mechanisms may take any appropriate action.

[0025] For example, in some embodiments, the mechanism can generate an alert, which can be sent to an operator of the local station providing the target video stream. As another example, in some embodiments, the mechanism can cause an electronic program guide that includes the target video stream to be modified. For example, in an instance where the mechanism determines that the target video stream is out of sync with the reference video stream because the target video stream lags relative to the reference video stream, the mechanism can cause the electronic program guide to be modified to show the exact start time of the target video stream, an updated end time of the target video stream, and / or updated in any other suitable manner.

[0026] In some embodiments, the mechanism may use any suitable technique or combination of techniques to determine whether the target video stream is time-synchronized with the reference video stream. For example, in some embodiments, the mechanism may identify a sequence of fingerprints (e.g., video fingerprints, audio fingerprints, and / or any other suitable fingerprints) of the target video stream. Continuing with this example, in some embodiments, the mechanism may determine a time shift at which the sequence of fingerprints appears in the reference video stream. Continuing with this example, in some embodiments, the mechanism may determine whether the target video stream is synchronized with the reference video stream based on the time shift. As a more detailed example, in some embodiments, the mechanism may determine that the target video stream is synchronized with the reference video stream in response to determining that the time shift is less than a predetermined threshold. Conversely, in some embodiments, the mechanism may determine that the target video stream is not synchronized with the reference video stream in response to determining that the time shift is greater than a predetermined threshold.

[0027] 1, an illustrative example of a process for synchronizing video streams in accordance with some embodiments of the disclosed subject matter is shown 100. In some embodiments, process 100 may be performed by any suitable device, such as a server that stores different video streams corresponding to an episode of a show or program broadcast on different local stations.

[0028] At 102, process 100 may begin by identifying a reference video stream and a target video stream that are broadcasts of a program. In some embodiments, process 100 may identify the reference video stream and the target video stream in any suitable manner. It should be noted that in some embodiments, the reference video stream and the target video stream may each be any suitable type of show or broadcast of a program, such as a television show, a movie, and / or any other suitable type of show. Additionally, in some embodiments, the reference video stream may be any suitable video stream that is to be used as a reference, such as a video stream broadcast on a particular local station, a randomly selected broadcast of a show, and / or any other suitable reference video stream.

[0029] In some embodiments, process 100 may identify the reference video stream and / or the target video stream based on metadata associated with each video stream. In some embodiments, the metadata may indicate any suitable information, such as the name of a show or program corresponding to the video stream. For example, in some embodiments, the metadata may indicate the name of a television show, an episode number or name of a particular television show, and / or the name of a movie. In some embodiments, the metadata may indicate any other suitable information, such as a program identifier, an identifier of the channel on which the video stream is scheduled to be broadcast, an identifier of the geographic region in which the video stream is scheduled to be broadcast, a time slot in which the video stream is scheduled to be broadcast, and / or any other suitable information. In some embodiments, process 100 may identify the target video stream based on metadata indicating that the target video stream corresponds to the same show or program as the reference video stream.

[0030] At 104, process 100 may sample the target video stream to identify a sequence (group) of frames of the target video stream. In some embodiments, process 100 may sample the target video stream at any suitable frequency (e.g., once every second, twice every second, once every two seconds, and / or any other suitable frequency). In some embodiments, process 100 may sample the target video stream at a particular frequency and may identify a frame of the target video stream that corresponds to each sampling time point.

[0031] At 106, process 100 may identify a fingerprint sequence for the frame sequence of the target video stream. In some embodiments, the fingerprint sequence may include any suitable number of video fingerprints of video content corresponding to frames in the frame sequence. Additionally or alternatively, in some embodiments, the fingerprint sequence may include any suitable number of audio fingerprints of audio content corresponding to frames in the frame sequence. In some embodiments, process 100 may identify the fingerprint sequence in any suitable manner. For example, in some embodiments, process 100 may use any suitable video fingerprinting and / or audio fingerprinting algorithms to generate the fingerprint sequence. As another example, in some embodiments, process 100 may search for a fingerprint sequence corresponding to the frame sequence from any suitable entity or database. It should be noted that in some embodiments, a frame sequence may include any suitable number of frames of a target video stream (e.g., 1, 2, 5, 10, 20, and / or any other suitable number), and each frame in the frame sequence may be associated with any suitable number of fingerprints (e.g., one fingerprint for each frame in the frame sequence, two fingerprints for each frame in the frame sequence (e.g., a video fingerprint and an audio fingerprint, two different video fingerprint representations, etc.), and / or any other suitable number of fingerprints). Additionally, it should be noted that in some embodiments, different numbers of fingerprints may be identified for different frames.For example, in some embodiments, a first frame in a frame sequence may be associated with two fingerprints in the fingerprint sequence, and a second frame in the frame sequence may be associated with one fingerprint in the fingerprint sequence. Further, in some embodiments, the frames in the frame sequence may be associated with a sequence of consecutive frames (e.g., frames. 1 , Frame 2 , ... frame N Alternatively, in some embodiments, the frames in a frame sequence may not be consecutive (e.g., frames 1 , Frame 5 , Frame 6 , ... frame N ), any suitable frames are skipped in the frame sequence.

[0032] 2A, an example of a reference video stream 202 and a target video stream 204 is shown in accordance with some embodiments of the disclosed subject matter. As shown, the target video stream 204 includes a frame in which there is a fingerprint sequence 206. It should be noted that although three fingerprints are shown in the fingerprint sequence 206, in some embodiments, any suitable number of fingerprints (e.g., 1, 2, 3, 5, 10, and / or any other suitable number), any suitable type of fingerprint (e.g., video fingerprints and / or audio fingerprints) may be included in the fingerprint sequence 206. Additionally, in some embodiments, the first fingerprint of the fingerprint sequence 206 may be associated with a corresponding checkpoint 210 (which may define the time or point in the sequence where the fingerprint occurs or where synchronization is checked).

[0033] 1, at 108, for each fingerprint sequence of the target video stream, process 100 may determine a time shift at which the fingerprint sequence appears in the reference video stream. With reference to FIG. 2A, a time shift 216 may indicate the duration between a checkpoint 210 of the fingerprint sequence 206 of the target video stream 204 and a corresponding first fingerprint of the fingerprint sequence 208 of the reference video stream 202.

[0034] 1, in some embodiments, process 100 may determine the time shift at which the fingerprint sequence of the target video appears in the reference video stream in any suitable manner. For example, in some embodiments, process 100 may perform a cross-correlation of the fingerprint sequences of the target and reference video streams to identify the fingerprint sequence in the reference video stream and the time location in the reference video stream at which the fingerprint sequence appears in the reference video stream.

[0035] In some embodiments, the process 100 may search for the fingerprint sequence of the target video stream within any suitable search window of the reference video stream. For example, with reference to FIG. 2A, in some embodiments, the process 100 may search for the reference video stream 202 over a time window 212 preceding the checkpoint 210. As another example, in some embodiments, the process 100 may alternatively or additionally search for the reference video stream 202 over a time window 214 following the checkpoint 210. Note that in some embodiments, the time window 212 and the time window 214 may be of the same duration. Alternatively, in some embodiments, the time window 212 and the time window 214 may be of different durations. Note that in some embodiments, the time window 212 and / or the time window 214 may each be of any suitable duration (e.g., 5 seconds, 10 seconds, 30 seconds, 1 minute, 5 minutes, 10 minutes, and / or any other suitable duration).

[0036] It should be noted that in some embodiments, process 100 may determine that the fingerprint sequence of the target video stream does not appear in the reference video stream. In some embodiments, in response to determining that the fingerprint sequence does not appear in the reference video stream, process 100 may determine that the reference video stream corresponds to a different program than the target video stream.

[0037] At 110, the process 100 may determine whether the target video stream is time synchronized to the reference video stream. In some embodiments, the process 100 may use any suitable technique to determine whether the target video stream is time synchronized to the reference video stream. For example, in some embodiments, the process 100 may determine that the target video stream is time synchronized to the reference video stream in response to determining that the time shift determined at 108 is less than a predetermined threshold duration (e.g., less than 5 seconds, less than 10 seconds, less than 1 minute, less than 2 minutes, and / or any other suitable duration). In a more detailed example, FIG. 2B illustrates that the target video stream V1 is synchronized with the reference video stream V0 because the length of out-of-sync across the target video stream V1 is less than a predetermined threshold. As another example, in some embodiments, the process 100 may determine that the target video stream is not time synchronized to the reference video stream in response to determining that the time shift determined at 108 exceeds a predetermined threshold duration.

[0038] It should be noted that in some embodiments, process 100 can determine that the target video stream is not time synchronized with the reference video stream in response to determining that the reference video stream does not include a fingerprint sequence of the target video stream.

[0039] If, at 110, the process 100 determines that the target video stream is time synchronized with the reference video stream (“yes” at 110), the process 100 may end at 116.

[0040] If process 100 determines at 110 that the target video stream is not time synchronized with the reference video stream (“no” at 110), process 100 may determine synchronization information at 112. In some embodiments, the synchronization information may include any suitable information, such as an error type associated with a lack of synchronization between the reference video stream and the target video stream.

[0041] For example, in some embodiments, in the case where process 100 determines that the fingerprint sequence of the target video stream was not found in the reference video stream, process 100 may determine that the error type is that the reference video stream has incorrect content. In a more detailed example, as shown in FIG. 2B, in the case where process 100 determines that the fingerprint sequence of the target video stream V2 was not found in the reference video stream V0, or more than a certain amount of the target video stream V2 was found to be out of sync with the reference video stream V0, process 100 may determine that the reference video stream V2 was incorrectly identified and a different content item is being provided.

[0042] In another example, in the case where the fingerprint sequence is found in the reference video stream at a time location preceding the time point where the fingerprint sequence is found in the target video stream, the process 100 may determine that the error type is an incorrect start time of the target video stream (or generally, the electronic program guide time associated with the target video stream is incorrect). In a more detailed example, as shown in FIG. 2B, in the case where the process 100 determines that a particular portion of the content in the target video stream V3 is found to be out of sync with the reference video stream V0 (e.g., a particular amount of asynchronous content is within a beginning portion of the target video stream V3), the process 100 may determine that the reference video stream has an incorrect start time. In some embodiments, in response to the process 100 determining that a particular portion (e.g., 75%) of the asynchronous content is within a particular amount of time (e.g., the first 5 minutes, the first 10 minutes, etc.) from the designed start time of the video content item, the process 100 may determine that the target video stream V3 has an incorrect start time. It should be noted that an inaccurate start time may be due to a natural progression of events or the existence of unpredictable conditions, for example, when a previous content item is time-extended.

[0043] As yet another example, in the case where the fingerprint sequence is found in the reference video stream at a time position after the time point where the fingerprint sequence is found in the target video stream, the process 100 can determine that the error type is an incorrect end time of the target video stream (or generally, the electronic program guide time associated with the target video stream is incorrect). In a more detailed example, as shown in FIG. 2B, in the case where the process 100 determines that a particular portion of the content in the target video stream V4 is found to be out of sync with the reference video stream V0 (e.g., a particular amount of the asynchronous content is within the end portion of the target video stream V4), the process 100 can determine that the reference video stream has an incorrect end time. In some embodiments, in response to the process 100 determining that a particular portion (e.g., 75%) of the asynchronous content is within a particular amount of time (e.g., the last 5 minutes, the last 10 minutes, etc.) from the designed start time of the video content item, the process 100 can determine that the reference video stream V4 has an incorrect end time.

[0044] At 114, process 100 may send an alert. In some embodiments, the alert may include any suitable information, such as the duration of the time shift determined at 108, the error type (e.g., such as those described above in connection with 112), and / or any other suitable information. In some embodiments, process 100 may send the alert to any suitable user or entity, such as an operator (e.g., an operator of the local station, and / or any other suitable operator) associated with the target video stream that is not time synchronized to the reference video stream. In some embodiments, process 100 may send the alert in any suitable manner. For example, in some embodiments, process 100 may send the alert by sending a message to a user account associated with the recipient of the alert. Note that in some embodiments, block 114 may be omitted. For example, in some embodiments, process 114 may be omitted in instances where process 100 directly updates an electronic program guide (EPG) as described below in connection with block 115.

[0045] At 115, in some embodiments, process 100 may modify an electronic program guide that includes a display of the target video stream. For example, in an instance where process 100 determines that the target video stream is out of time synchronization with the reference video stream because the target video stream has been time-shifted by a particular duration (e.g., because the target video stream began later than the reference video stream, and / or for any other suitable reason), process 100 may determine that the electronic program guide must be modified to indicate an accurate start time of the target video stream and / or an updated end time of the target video stream. As a more detailed example, in some embodiments, the electronic program guide may be modified to indicate an accurate start time based on the time shift determined at 108 and / or may be modified to indicate an updated end time based on the time shift determined at 108. It should be noted that in some embodiments, an electronic program guide associated with a particular target video stream may be automatically updated without manual input by an operator associated with a particular target video stream.

[0046] Additionally, it should be noted that in some embodiments, process 100 can analyze multiple target video streams to determine if any of the multiple target video streams are not time synchronized to the reference video stream. For example, in some embodiments, the multiple target video streams may include different broadcasts of a particular show or program. In some embodiments, process 100 can identify a time shift corresponding to each target video stream relative to the reference video stream (e.g., using the techniques described above with respect to 104-108). In some embodiments, process 100 can perform any suitable analysis of the time shift and / or take any suitable action. For example, in some embodiments, process 100 can send an alert to an operator associated with any target video stream associated with a time shift that exceeds a predetermined threshold (e.g., as described above with respect to 114).

[0047] As another example, in some embodiments, process 100 may cluster the identified time shifts for the multiple target video streams and may identify a target video stream associated with an outlier time shift based on the clustering. As a more detailed example, in some embodiments, process 100 may cluster any suitable number of time shifts associated with a corresponding number of target video streams (e.g., 50 target video streams, 100 target video streams, 500 target video streams, and / or other suitable numbers) to identify a subset of the target video streams that are not time synchronized to the reference video stream. As a specific example, in some embodiments, process 100 may identify clusters corresponding to subsets of target video streams having similar time shifts and may determine that the clusters represent outliers in time synchronization to the reference video stream relative to other target video streams not included in the subset. Continuing with this example, in some embodiments, process 100 may cause any suitable action to be taken with respect to the target video streams in the subset of target video streams, such as causing EPG timing information to be updated, sending a notification or alert to an operator associated with each target video stream in the subset of target video streams, and / or taking any other suitable action.

[0048] 3, an illustrative example of hardware for synchronizing video streams 300 that may be used in accordance with some embodiments of the disclosed subject matter is shown. As shown, the hardware 300 may include a server 302, a communications network 304, and / or one or more user devices 306, such as user devices 308 and 310.

[0049] Server 302 may be any suitable server for storing information, data, programs, media content, and / or any other suitable content. In some embodiments, server 302 may perform any suitable functions. For example, in some embodiments, server 302 may detect that a target video stream is out of sync with a reference video stream, as shown and described above with respect to FIG. 1. As another example, in some embodiments, server 302 may take any suitable action in response to determining that a target video stream is out of sync with a reference video stream, such as sending an alert to an operator or local station associated with the target video stream, causing an electronic program guide to be altered, and / or taking any other suitable action, as shown and described above with respect to FIG.

[0050] The communication network 304 may be any suitable combination of one or more wired and / or wireless networks in some embodiments. For example, the communication network 304 may include any one or more of the Internet, an intranet, a wide area network (WAN), a local area network (LAN), a wireless network, a digital subscriber line (DSL) network, a frame relay network, an asynchronous transfer mode (ATM) network, a virtual private network (VPN), and / or any other suitable communication network. The user device 306 may be connected by one or more communication links (e.g., communication link 312) to the communication network 304, which may be linked to the server 302 via one or more communication links (e.g., communication link 314). The communication link may be any communication link suitable for communicating data between the user device 306 and the server 302, such as a network link, a dial-up link, a wireless link, a hardwired link, any other suitable communication link, or any suitable combination of such links.

[0051] The user devices 306 may include any one or more user devices suitable for presenting media content. In some embodiments, the user devices 306 may include any suitable type of user device, such as a mobile phone, a tablet computer, a wearable computer, a laptop computer, a desktop computer, a smart television, a media player, a streaming media player, a game console, a vehicle information and / or entertainment system, and / or any other suitable type of user device.

[0052] Although server 302 is shown as one device, the functions performed by server 302 may be performed using any suitable number of devices in some embodiments. For example, in some embodiments, multiple devices may be used to implement the functions performed by server 302.

[0053] To avoid overcomplicating the diagram, two user devices 308 and 310 are shown in FIG. 3, although in some embodiments any suitable number and / or type of user devices may be used.

[0054] In some embodiments, the server 302 and the user device 306 may be implemented using any suitable hardware. For example, in some embodiments, the devices 302 and 306 may be implemented using any suitable general-purpose or special-purpose computer. For example, a mobile phone may be implemented using a special-purpose computer. Any such general-purpose or special-purpose computer may include any suitable hardware. For example, as shown in the example hardware 400 of FIG. 4, such hardware may include a hardware processor 402, memory and / or storage 404, an input device controller 406, an input device 408, a display / audio driver 410, a display and audio output circuit 412, a communication interface 414, an antenna 416, and a bus 418.

[0055] The hardware processor 402, in some embodiments, may include any suitable hardware processor, such as a microprocessor, a microcontroller, a digital signal processor, special purpose logic circuitry, and / or any other suitable circuitry for controlling the functions of a general purpose or special purpose computer. In some embodiments, the hardware processor 402 may be controlled by a server program stored in memory and / or storage of a server, such as the server 302. In some embodiments, the hardware processor 402 may be controlled by a computer program stored in memory and / or storage 404 of the user device 306.

[0056] The memory and / or storage 404, in some embodiments, may be any suitable memory and / or storage for storing programs, data, and / or any other suitable information. For example, the memory and / or storage 404 may include random access memory, read-only memory, flash memory, hard disk storage, optical media, and / or any other suitable memory.

[0057] The input device controller 406, in some embodiments, may be any suitable circuitry for controlling and receiving input from one or more input devices 408. For example, the input device controller 406 may be circuitry for receiving input from a touch screen, from a keyboard, from one or more buttons, from a voice recognition circuit, from a microphone, from a camera, from an optical sensor, from an accelerometer, from a temperature sensor, from a near-field sensor, from a pressure sensor, from an encoder, and / or from any other type of input device.

[0058] Display / audio driver 410, in some embodiments, may be any suitable circuitry for controlling and driving output to one or more display / audio output devices 412. For example, display / audio driver 410 may be circuitry for driving a touch screen, a flat panel display, a cathode ray tube display, a projector, one or more speakers, and / or any other suitable display and / or presentation device.

[0059] The communications interface 414 may be any suitable circuitry for interfacing with one or more communications networks (e.g., the computer network 304). For example, the interface 414 may include network interface card circuitry, wireless communications circuitry, and / or any other suitable type of communications network circuitry.

[0060] The antenna 416, in some embodiments, may be any suitable antenna or antennas for wirelessly communicating with a communications network (e.g., the communications network 304). In some embodiments, the antenna 416 may be omitted.

[0061] The bus 418 may be any suitable mechanism for communicating between two or more components 402, 404, 406, 410, and 414 in some embodiments.

[0062] According to some embodiments, any other suitable components may be included in hardware 400.

[0063] In situations where the systems and methods described herein may collect or utilize personal information about a user, the user may be given the opportunity to control whether a program or function collects user information (e.g., information about the user's social network, social actions or activities, occupation, user preferences, or the user's current location) or to control whether or how to receive content from a content server that may be more relevant to the user. In addition, some data may be handled in one or more ways before being stored or used such that personally identifiable information is removed. For example, the user's identification information may be handled such that personally identifiable information cannot be determined about the user, or the user's geographic location may be generalized (e.g., to the city, ZIP code, or state level) when location information is obtained such that the user's specific location cannot be determined. The user may add, delete, or modify information about the user. Thus, the user may control how information is collected about the user and used by the server.

[0064] In some embodiments, at least some of the above-described blocks of the process of Figure 1 may be executed or performed in any order or sequence, including but not limited to the order and sequence shown in and described in connection with the figures. Also, some of the above-described blocks of Figure 1 may be executed or performed substantially simultaneously, where appropriate, or in parallel to reduce latency and processing time. Additionally or alternatively, some of the above-described blocks of the process of Figure 1 may be omitted.

[0065] In some embodiments, any suitable computer-readable medium may be used to store instructions for implementing the functions and / or processes herein. For example, in some embodiments, the computer-readable medium may be transitory or non-transient. For example, a non-transient computer-readable medium may include media such as magnetic media in non-transient form (such as hard disks, floppy disks, and / or any other suitable magnetic media), optical media in non-transient form (such as compact disks, digital video disks, Blu-ray disks, and / or any other suitable optical media), semiconductor media in non-transient form (such as flash memory, electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and / or any other suitable semiconductor media), any suitable media that is not ephemeral or does not lose apparent permanence during transmission, and / or any suitable tangible media. As another example, a transitory computer-readable medium may include signals on a network, in wires, in conductors, in optical fibers, in circuits, in any suitable medium that is ephemeral and loses any apparent permanence during transmission, and / or in any suitable non-tangible medium.

[0066] Thus, a method, system, and medium are provided for synchronizing video streams.

[0067] While the present invention has been described and shown in the foregoing illustrative embodiments, it will be understood that the disclosure is made by way of example only, and that numerous changes in the details of the implementation of the invention may be made without departing from the spirit and scope of the invention, which is limited only by the following claims. The features of the disclosed embodiments may be combined and rearranged in various ways. [Explanation of symbols]

[0068] 300 Hardware 302 Server 304 Communication Network 306 User Devices 308 User Device 310 User Devices 312 Communication Links 314 Communication Links 400 Hardware 402 Hardware Processor 404 Memory and / or Storage 406 Input Device Controller 408 Input Devices 410 Display / Audio Driver 412 Display and audio output circuit 414 Communication Interface 416 Antenna 418 Bus

Claims

1. A method comprising: identifying, by a computing system, a target video stream and a reference video stream, the target video stream and the reference video stream being two different broadcasts of a program; generating, by the computing system, one or more fingerprints for the target video stream; determining, by the computing system, a time shift at which one or more corresponding fingerprints appear in the reference video stream, where the one or more corresponding fingerprints match the one or more fingerprints; determining, by the computing system, whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; in response to determining that the target video stream is out of sync with the reference video stream, sending, by the computing system, an alert to a user indicating that the target video stream is out of sync; A method comprising:

2. The method of claim 1, further comprising a step of causing the computing system to cause an electronic program guide including a display of the target video stream to be modified based on the time shift.

3. The method of claim 1, wherein the alert includes a duration of the time shift.

4. The method of claim 1, wherein the one or more fingerprints are a sequence of fingerprints.

5. The method of claim 1, further comprising a step of determining, by the computing system, an error type associated with the time shift.

6. The method of claim 5 , wherein the error type indicates that the target video stream did not start at the correct time.

7. The method of claim 5 , wherein the error type indicates that the target video stream does not end at the correct time.

8. The method of claim 1 , wherein the target video stream is identified based on metadata associated with the target video stream.

9. The method according to claim 8, wherein the target video stream is a first target video stream, the method further comprising: identifying, by the computing system, a plurality of second target video streams; for each second target video stream of the plurality of second target video streams, generating, by the computing system, one or more second fingerprints for the second target video stream; determining, by the computing system, a second time shift at which the one or more corresponding fingerprints appear in the reference video stream, where the one or more corresponding fingerprints match the one or more second fingerprints; determining, by the computing system, whether the second target video stream is synchronized with the reference video stream by determining whether the second time shift exceeds a predetermined threshold; in response to determining that the second target video stream is out of sync with the reference video stream, sending, by the computing system, an alert to the user indicating that the second target video stream is out of sync; The method of claim 1, further comprising:

10. The method of claim 1, wherein for each second target video stream of the plurality of second target video streams, The method of claim 9 , wherein the alert includes a duration of the second time shift for the second target video stream that is out of sync.

11. A computing system comprising: A memory for storing instructions; A processing circuit, identifying a target video stream and a reference video stream, the target video stream and the reference video stream being two different broadcasts of a program; generating one or more fingerprints for the target video stream; determining a time shift at which one or more corresponding fingerprints appear in the reference video stream, where the one or more corresponding fingerprints match the one or more fingerprints; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; responsive to determining that the target video stream is out of sync with the reference video stream, sending an alert to a user indicating that the target video stream is out of sync; a processing circuit for executing the instructions to A computing system comprising:

12. The computing system of claim 11, wherein the processing circuitry further executes the instructions to cause an electronic program guide including a display of the target video stream to be modified based on the time shift.

13. The computing system of claim 11, wherein the alert includes a duration of the time shift.

14. The computing system of claim 11, wherein the one or more fingerprints are a sequence of fingerprints.

15. The computing system of claim 11, wherein the processing circuitry further executes instructions to determine an error type associated with the time shift.

16. 16. The computing system of claim 15, wherein the error type indicates that the target video stream did not start at the correct time.

17. 16. The computing system of claim 15, wherein the error type indicates that the target video stream does not end at the correct time.

18. The computing system of claim 11 , wherein the target video stream is identified based on metadata associated with the target video stream.

19. The method of claim 1, wherein the target video stream is a first target video stream, and the processing circuitry further comprises: identifying a plurality of second target video streams; for each second target video stream of the plurality of second target video streams, generating one or more second fingerprints for the second target video stream; determining a second time shift at which the one or more corresponding fingerprints appear in the reference video stream, where the one or more corresponding fingerprints match the one or more second fingerprints; determining whether the second target video stream is synchronized with the reference video stream by determining whether the second time shift exceeds a predetermined threshold; in response to determining that the second target video stream is out of sync with the reference video stream, sending an alert to the user indicating that the second target video stream is out of sync; The computing system of claim 11 further comprising the instructions to:

20. A non-transitory computer-readable storage medium containing instructions that, when executed by a processing circuit of a computing device, cause the processing circuit to: identifying a target video stream and a reference video stream, the target video stream and the reference video stream being two different broadcasts of a program; generating one or more fingerprints for the target video stream; determining a time shift at which one or more corresponding fingerprints appear in the reference video stream, where the one or more corresponding fingerprints match the one or more fingerprints; determining whether the target video stream is synchronized with the reference video stream by determining whether the time shift exceeds a predetermined threshold; responsive to determining that the target video stream is out of sync with the reference video stream, sending an alert to a user indicating that the target video stream is out of sync; A non-transitory computer-readable storage medium that causes

Citation Information

Patent Citations

  • Method and apparatus for generating and detecting fingerprints that act as trigger markers in multimedia signals

    JP2007528144A

  • System and method for synchronizing an electronic program guide with paused programs

    JP2013521674A

  • Fingerprint-Based Inter-Destination Media Synchronization

    US20170099515A1

  • Method and system for analyzing audio, video, and audio-video media data streams

    US20190342594A1

  • Synchronization of multimedia streams

    WO2013149989A1