Methods, systems, and media for synchronizing video streams
By identifying the fingerprint sequence and time offset of the video stream, the video stream in the television network is automatically synchronized, solving the problem of resource waste caused by program delay and improving the accuracy and efficiency of program guides.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- GOOGLE LLC
- Filing Date
- 2020-04-02
- Publication Date
- 2026-05-26
Smart Images

Figure CN115299067B_ABST
Abstract
Description
Technical Field
[0001] The disclosed topics relate to methods, systems, and media for synchronizing video streams. Background Technology
[0002] Television networks can broadcast programs to various local radio stations. For example, a single program can be broadcast to hundreds of local stations across the country. In some cases, the broadcast of a program on a particular local station may become delayed, for example, due to a sporting event going into overtime, due to breaking news events, or due to weather delays. In such cases, the local operator at the local station may have to manually detect the delay, for example, to manually adjust the electronic program guide using corrected timing information. Manually detecting program delays and adjusting timing information can consume significant resources.
[0003] Therefore, there is a need to provide new methods, systems, and media for synchronizing video streams. Summary of the Invention
[0004] Methods, systems, and media for synchronizing video streams are provided.
[0005] According to some embodiments of the disclosed subject matter, a method for synchronizing video streams is provided, the method comprising: identifying a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of a program; generating a fingerprint sequence for the target video stream; determining a time offset in which the fingerprint sequence appears within the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time offset exceeds a predetermined threshold; and, in response to determining that the target video stream and the reference video stream are out of sync, causing an electronic program guide including an indication of the target video stream to be modified based on the time offset. For example, the fingerprint sequence may consist of fingerprints derived from a frame sequence of the target video stream. For example, the “fingerprint” of a frame of the video stream may be a compact digital descriptor extracted from the frame. In some embodiments, each fingerprint is derived from a corresponding frame in the frame sequence.
[0006] In some embodiments, the method further includes sending an alert to an operator associated with the target video stream, wherein the alert indicates a time offset. For example, the alert may indicate that a time offset has been detected, and optionally may also indicate the length of the time offset.
[0007] In some embodiments, the method further includes determining the error type associated with the time offset.
[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 will 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 fingerprint sequence for the second target video stream; determining that the second fingerprint sequence is not included in a reference video stream; and, in response to determining that the second fingerprint sequence 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 including a hardware processor configured to: identify a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of a program; generate a fingerprint sequence for the target video stream; determine a time offset in which the fingerprint sequence appears within the reference video stream; determine whether the target video stream is synchronized with the reference video stream by determining whether the time offset exceeds a predetermined threshold; and, in response to determining that the target video stream and the reference video stream are not synchronized, modify an electronic program guide including an indication of the target video stream based on the time offset.
[0014] According to some embodiments of the disclosed subject matter, a computer-readable medium is provided containing computer-executable instructions. This computer-readable medium may be a non-transitory computer-readable medium, but the embodiments are not limited to non-transitory computer-readable media. When executed by a processor, the computer-executable instructions cause the processor to perform a method for synchronizing video streams. The method includes: identifying a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of a program; generating a fingerprint sequence for the target video stream; determining a time offset in which the fingerprint sequence appears within the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time offset exceeds a predetermined threshold; and, in response to determining that the target video stream and the reference video stream are not synchronized, causing an electronic program guide including an indication of the target video stream to be modified based on the time offset.
[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, wherein the target video stream and the reference video stream are two different broadcasts of a program; means for generating a fingerprint sequence for the target video stream; means for determining a time offset in which the fingerprint sequence appears within the reference video stream; means for determining whether the target video stream is synchronized with the reference video stream by determining whether the time offset exceeds a predetermined threshold; and means for modifying an electronic program guide including an indication of the target video stream based on the time offset in response to determining that the target video stream and the reference video stream are out of sync.
[0016] According to some embodiments of the disclosed subject matter, a method for synchronizing video streams is provided, the method comprising: identifying a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of a program; generating a fingerprint sequence for the target video stream; determining a time offset in which the fingerprint sequence appears within the reference video stream; determining whether the target video stream is synchronized with the reference video stream by determining whether the time offset exceeds a predetermined threshold; and, in response to determining that the target video stream and the reference video stream are out of sync, sending an alarm to an operator associated with the target video stream, wherein the alarm indicates the time offset.
[0017] According to some embodiments of the disclosed subject matter, a method is provided, the method comprising: identifying a target video stream and a reference video stream; generating a fingerprint sequence for the target video stream; determining that the fingerprint sequence is not included in the reference video stream; and, in response to determining that the fingerprint sequence 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] According to some embodiments of the disclosed subject matter, a computer-readable medium includes computer-executable instructions. The computer-readable medium may be a non-transitory computer-readable medium, but the embodiments are not limited to non-transitory computer-readable media. When executed by a processor, the executable instructions 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 including a hardware processor configured to perform methods according to any embodiment or implementation described herein.
[0020] Therefore, aspects of this disclosure enable the determination of whether a target video stream is synchronized with a reference video stream by analyzing a fingerprint sequence derived from a frame sequence of the target video sequence. The frame sequence used to derive the fingerprint sequence can contain far fewer frames than those included in the target video sequence, and thus the determination of whether the target video stream is synchronized with the reference video stream is computationally efficient. Furthermore, if the frame sequence used to derive the fingerprint sequence is selected from earlier frames in the target video stream, it is possible to determine whether the target video stream is synchronized with the reference video stream at an early stage of transmission. This allows it to be known at an early stage of transmission whether the target video stream is synchronized with the reference video stream, thereby enabling operators, receivers of the target video stream, and / or devices or entities to be notified that the target video stream is not properly synchronized with the reference video stream before transmission of the target video stream is complete. Attached Figure Description
[0021] The various objectives, features and advantages of the disclosed subject matter can be more fully appreciated when considered in conjunction with the following detailed description of the subject matter, in which the same reference numerals denote the same elements.
[0022] Figure 1 Illustrative examples of processes for synchronizing video streams, based on some embodiments of the disclosed subject matter, are shown.
[0023] Figure 2A Illustrative examples of schematic diagrams for synchronizing video streams, based on some embodiments of the disclosed subject matter, are shown.
[0024] Figure 2B Illustrative examples are shown that compare a target video stream and a reference video stream according to some embodiments of the disclosed subject matter to determine whether the video streams are considered to be time-synchronized.
[0025] Figure 3 A schematic diagram of an illustrative system suitable for implementing the mechanism for synchronizing video streams described herein is shown, based on some embodiments of the disclosed subject matter.
[0026] Figure 4 The present invention illustrates some embodiments of the disclosed subject matter that enable... Figure 3 Detailed examples of the hardware used in the servers and / or user equipment. Detailed Implementation
[0027] According to various embodiments, mechanisms (which may include methods, systems, and media) are provided for synchronizing video streams.
[0028] In some embodiments, the mechanisms described herein are capable of determining whether two video streams are time-synchronized, each corresponding to a broadcast of a performance or program (e.g., a television show, a movie, and / or any other suitable type of performance or program). For example, in some embodiments, these mechanisms are capable of determining whether a target video stream (e.g., corresponding to a broadcast of a performance on a particular local radio station) is time-synchronized with a reference video stream corresponding to the same performance. In some embodiments, in response to determining that the target video stream is not time-synchronized with the reference video stream, these mechanisms are capable of performing any appropriate action.
[0029] For example, in some embodiments, these mechanisms are capable of generating an alert that can be sent to the operator of the local radio station presenting the target video stream. As another example, in some embodiments, these mechanisms enable the modification of the electronic program guide (EPB) that includes the target video stream. For instance, where these mechanisms determine that the target video stream is out of sync with the reference video stream due to a delay relative to the reference video stream, these mechanisms enable the EPB to be modified to indicate the exact start time of the target video stream, the end time of the target video stream's update, and / or to be updated in any other suitable manner.
[0030] In some embodiments, these mechanisms are capable of using any suitable technique or combination of techniques to determine whether a target video stream is time-synchronized with a reference video stream. For example, in some embodiments, these mechanisms are capable of identifying a fingerprint sequence of the target video stream (e.g., a video fingerprint, an audio fingerprint, and / or any other suitable fingerprint). Continuing this example, in some embodiments, these mechanisms are capable of determining the time offset in which the fingerprint sequence appears within the reference video stream. Further continuing this example, in some embodiments, these mechanisms are capable of determining whether a target video stream is synchronized with a reference video stream based on the time offset. As a more specific example, in some embodiments, these mechanisms are capable of determining that the target video stream is synchronized with the reference video stream in response to determining that the time offset is less than a predetermined threshold. Conversely, in some embodiments, these mechanisms are capable of determining that the target video stream is not synchronized with the reference video stream in response to determining that the time offset exceeds a predetermined threshold.
[0031] Turning Figure 1 The illustration shows an example 100 of a process for synchronizing video streams according to some embodiments of the disclosed subject matter. In some embodiments, process 100 can be performed by any suitable device, such as a server, which stores different video streams corresponding to broadcast performances or programs to different local radio stations.
[0032] At point 102, process 100 can begin by identifying a reference video stream and a target video stream as a broadcast of a program. In some embodiments, process 100 can identify the reference video stream and the target video stream in any suitable manner. Note that in some embodiments, the reference video stream and the target video stream can each be a broadcast of any suitable type of performance or program, such as a television show, a movie, and / or any other suitable type of performance. Furthermore, in some embodiments, the reference video stream can be any suitable video stream to be used as a reference, such as a video stream broadcast to a particular local radio station, a broadcast of a randomly selected performance, and / or any other suitable reference video stream.
[0033] In some embodiments, process 100 is capable of identifying a reference video stream and / or a target video stream based on metadata associated with each video stream. In some embodiments, the metadata can indicate any suitable information, such as the name of the show or program corresponding to the video stream. For example, in some embodiments, the metadata can indicate the name of a television show, the episode number or name of a particular television show, and / or the name of a movie. In some embodiments, the metadata can indicate any other suitable information, such as a program identifier, an identifier of the channel on which the video stream is to be broadcast, an identifier of the geographic region on which the video stream is to be broadcast, the time slot on which the video stream is to be broadcast, and / or any other suitable information. In some embodiments, process 100 is capable of identifying a target video stream based on metadata indicating that the target video stream corresponds to the same show or program as the reference video stream.
[0034] At point 104, process 100 is capable of sampling the target video stream to identify frame sequences (groups) of the target video stream. In some embodiments, process 100 is capable of sampling the target video stream at any suitable frequency (e.g., once per second, twice per second, once every two seconds, and / or any other suitable frequency). In some embodiments, process 100 is capable of sampling the target video stream at a specific frequency and is capable of identifying frames of the target video stream corresponding to each sampling time point.
[0035] At 106, process 100 is capable of identifying a fingerprint sequence for a frame sequence of a target video stream. In some embodiments, the fingerprint sequence can include any suitable number of video fingerprints corresponding to video content in the frame sequence. Additionally or alternatively, in some embodiments, the fingerprint sequence can include any suitable number of audio fingerprints corresponding to audio content in the frame sequence. In some embodiments, process 100 is capable of identifying the fingerprint sequence in any suitable manner. For example, in some embodiments, process 100 is capable of generating the fingerprint sequence using any suitable video fingerprinting and / or audio fingerprinting algorithm. As another example, in some embodiments, process 100 is capable of retrieving a fingerprint sequence corresponding to the frame sequence from any suitable entity or database. Note that in some embodiments, the frame sequence can include any suitable number (e.g., one, two, five, ten, twenty, and / or any other suitable number) of frames in the target video stream, and each frame in the frame sequence can be associated with any suitable number of fingerprints (e.g., one fingerprint per frame in the frame sequence, two fingerprints per frame in the frame sequence (e.g., video fingerprint and audio fingerprint, two different video fingerprint representations, etc.) and / or any other suitable number of fingerprints). Additionally, note that in some embodiments, different numbers of fingerprints can be identified for different frames. For example, in some embodiments, the first frame in a frame sequence can be associated with two fingerprints in a fingerprint sequence, and the second frame in a frame sequence can be associated with one fingerprint in a fingerprint sequence. Furthermore, in some embodiments, the frames in a frame sequence can be a sequence of consecutive frames (e.g., Frame1, Frame2, ... Frame...). N Alternatively, in some embodiments, the frames in the frame sequence can be discontinuous (e.g., Frame1, Frame5, Frame6, ... Frame...). N ), where any suitable frame is skipped in the frame sequence.
[0036] Turning Figure 2A Examples of a reference video stream 202 and a target video stream 204 according to some embodiments of the disclosed subject matter are shown. As shown, the target video stream 204 includes frames having a fingerprint sequence 206. Note that although three fingerprints are shown in fingerprint sequence 206, in some embodiments, any suitable number of fingerprints (e.g., one, two, three, five, ten, and / or any other suitable number) and any suitable type of fingerprint (e.g., video fingerprints and / or audio fingerprints) can be included in fingerprint sequence 206. Additionally, note that in some embodiments, the first fingerprint in fingerprint sequence 206 can be associated with a corresponding checkpoint 210 (which can define the time or point in the sequence where the fingerprint occurs or the time or point in the sequence where the check is synchronized).
[0037] Return to reference Figure 1At position 108, for each fingerprint sequence in the target video stream, process 100 is able to determine the temporal offset at which the fingerprint sequence appears within the reference video stream. Reference Figure 2A The time offset 216 can indicate the duration between the checkpoint 210 of the fingerprint sequence 206 of the target video stream 204 and the corresponding first fingerprint of the fingerprint sequence 208 of the reference video stream 202.
[0038] Return to reference Figure 1 In some embodiments, process 100 can determine the time offset of the fingerprint sequence of the target video appearing within the reference video stream in any suitable manner. For example, in some embodiments, process 100 can perform cross-correlation of the fingerprint sequences of the target video stream and the reference video stream to identify the fingerprint sequence within the reference video stream and the time position of the fingerprint sequence appearing within the reference video stream.
[0039] In some embodiments, process 100 is capable of searching for a fingerprint sequence of a target video stream within any suitable search window of the reference video stream. For example, the reference... Figure 2A In some embodiments, process 100 is able to search for the reference video stream 202 in a time window 212 prior to checkpoint 210. As another example, in some embodiments, process 100 is able to alternatively or additionally search for the reference video stream 202 in a time window 214 after checkpoint 210. Note that in some embodiments, time windows 212 and 214 can have the same duration. Alternatively, in some embodiments, time windows 212 and 214 can have different durations. Note that in some embodiments, time windows 212 and / or 214 can each have any suitable duration (e.g., five seconds, ten seconds, thirty seconds, one minute, five minutes, ten minutes, and / or any other suitable duration).
[0040] Note that in some embodiments, process 100 is able to 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 is able to determine that the reference video stream corresponds to a program different from the target video stream.
[0041] At 110, process 100 can determine whether the target video stream is time-synchronized with the reference video stream. In some embodiments, process 100 can use any suitable technique to determine whether the target video stream is time-synchronized with the reference video stream. For example, in some embodiments, process 100 can determine that the target video stream is time-synchronized with the reference video stream in response to determining that the time offset determined at 108 is less than a predetermined threshold duration (e.g., less than five seconds, less than ten seconds, less than one minute, less than two minutes, and / or any other suitable duration). In a more specific example, Figure 2B This illustrates that the target video stream V1 is synchronized with the reference video stream V0 because the length of the asynchrony across the target video stream V1 is less than a predetermined threshold. As another example, in some embodiments, process 100 is able to determine that the target video stream is not time-synchronized with the reference video stream in response to determining that the time offset determined at 108 exceeds a predetermined threshold duration.
[0042] Note 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 contain a fingerprint sequence of the target video stream.
[0043] If process 100 determines at 110 that the target video stream and the reference video stream are in time synchronized ("Yes" at 110), then process 100 can end at 116.
[0044] If process 100 determines at 110 that the target video stream is not time-synchronized with the reference video stream ("No" at 110), then process 100 can determine synchronization information at 112. In some embodiments, the synchronization information can include any suitable information, such as the type of error associated with the lack of synchronization between the reference video stream and the target video stream.
[0045] For example, in some embodiments, where process 100 determines that no fingerprint sequence of the target video stream is found in the reference video stream, process 100 is able to determine that the error type is that the reference video stream contains incorrect content. In more specific examples, such as Figure 2B As shown, if process 100 determines that no fingerprint sequence of target video stream V2 is found in reference video stream V0 or that more than a certain number of target video streams V2 are found to be out of sync with reference video stream V0, process 100 is able to determine that reference video stream V2 is incorrectly identified and is providing different content items.
[0046] As another example, where the time position prior to the discovery of the fingerprint sequence in the target video stream is where the fingerprint sequence is found in the reference video stream, process 100 is able to determine that the error type is an incorrect start time of the target video stream (or, typically, an incorrect Electronic Program Guide time associated with the target video stream). In more specific examples, such as Figure 2B As shown, in cases where process 100 determines that a specific portion of the content within the target video stream V3 is found to be out of sync with the reference video stream V0 (e.g., a specific amount of out-of-sync content falls within the beginning portion of the target video stream V3), process 100 can determine that the reference video stream has an incorrect start time. In some embodiments, in response to process 100 determining that a specific portion (e.g., 75%) of the out-of-sync content falls within a specific amount of time (e.g., the first five minutes, the first ten minutes, etc.) from a specified start time of the video content item, process 100 can determine that the target video stream V3 has an incorrect start time. It should be noted that an incorrect start time may be due to, for example, the progression of a natural event (where a previous content item is extended in time) or the presence of unpredictable conditions.
[0047] As yet another example, where the fingerprint sequence is found in the reference video stream at a time point after the fingerprint sequence is found in the target video stream, process 100 can determine that the error type is an incorrect end time of the target video stream (or, typically, an incorrect Electronic Program Guide time associated with the target video stream). In more specific examples, such as Figure 2B As shown, in cases where process 100 determines that a specific portion of the content within the target video stream V4 is found to be out of sync with the reference video stream V0 (e.g., a specific amount of out-of-sync content falls within the end portion of the target video stream V4), process 100 can determine that the reference video stream has an incorrect end time. In some embodiments, in response to process 100 determining that a specific portion (e.g., 75%) of the out-of-sync content falls within a specific amount of time (e.g., the last five minutes, the last ten minutes, etc.) from a specified start time of the video content item, process 100 can determine that the reference video stream V4 has an incorrect end time.
[0048] At 114, process 100 is capable of sending an alert. In some embodiments, the alert can include any suitable information, such as the duration of the time offset determined at 108, the type of error (e.g., as discussed above in conjunction with 112), and / or any other suitable information. In some embodiments, process 100 is capable of sending the alert to any suitable user or entity, such as an operator associated with a target video stream that is not time-synchronized with a reference video stream (e.g., an operator at a local radio station and / or any other suitable operator). In some embodiments, process 100 is capable of sending the alert in any suitable manner. For example, in some embodiments, process 100 is capable of sending the alert by sending a message to the user account associated with the recipient of the alert. Note that in some embodiments, box 114 can be omitted. For example, in some embodiments, where process 100 directly updates the Electronic Program Guide (EPG) as described below in conjunction with box 115, process 114 can be omitted.
[0049] At 115, in some embodiments, process 100 is capable of modifying the electronic program guide (EPB) that includes an indication of the target video stream. For example, where process 100 determines that the target video stream is not time-synchronized with the reference video stream because the target video stream is time-offset for a specific duration (e.g., because the target video stream starts later than the reference video stream and / or for any other suitable reason), process 100 is capable of determining that the EPB should be modified to indicate the exact start time of the target video stream and / or the end time of the update of the target video stream. As a more specific example, in some embodiments, the EPB can be modified to indicate the exact start time based on the time offset determined at 108, and / or can be modified to indicate the end time of the update based on the time offset determined at 108. Note that in some embodiments, the EPB associated with a particular target video stream can be automatically updated without manual input by an operator associated with the particular target video stream.
[0050] Additionally, note that in some embodiments, process 100 is capable of analyzing multiple target video streams to determine whether any of the multiple target video streams is not time-synchronized with a reference video stream. For example, in some embodiments, the multiple target video streams may include different broadcasts of a particular performance or program. In some embodiments, process 100 is capable of identifying time offsets relative to the reference video stream corresponding to each target video stream (e.g., using the techniques described above in conjunction with 104-108). In some embodiments, process 100 is capable of performing any appropriate analysis and / or any appropriate action on the time offsets. For example, in some embodiments, process 100 is capable of sending an alert to an operator associated with any target video stream that has a time offset exceeding a predetermined threshold (e.g., as discussed above in conjunction with 114).
[0051] As another example, in some embodiments, process 100 is capable of clustering time offsets identified for multiple target video streams and is capable of identifying target video streams associated with anomalous time offsets based on the clustering. As a more specific example, in some embodiments, process 100 is capable of clustering any number of time offsets associated with a corresponding number of target video streams (e.g., fifty target video streams, one hundred target video streams, five hundred target video streams, and / or any other suitable number) to identify a subset of target video streams that are not time-synchronized with a reference video stream. As a specific example, in some embodiments, process 100 is capable of identifying clusters corresponding to subsets of target video streams with similar time offsets and is capable of determining that the cluster represents an anomaly in time synchronization with the reference video stream relative to other target video streams not included in the subset. Continuing this example, in some embodiments, process 100 is capable of causing the target video streams in the subset of target video streams to take any appropriate action, such as causing EPG timing information to be updated, sending notifications or alarms to operators associated with each target video stream in the subset of target video streams, and / or performing any other appropriate action.
[0052] Turning Figure 3 The illustration shows 300 of hardware 300 that can be used for synchronizing video streams according to some embodiments of the disclosed subject matter. As shown, hardware 300 may include server 302, communication network 304 and / or one or more user devices 306, such as user devices 308 and 310.
[0053] Server 302 can be any suitable server for storing information, data, programs, media content, and / or any other suitable content. In some embodiments, server 302 can perform any suitable function. For example, in some embodiments, server 302 can detect that the target video stream is out of sync with the reference video stream, such as in... Figure 1 The shown and combined Figure 1 As described above. As another example, in some embodiments, server 302 is capable of performing any appropriate action in response to determining that the target video stream is out of sync with the reference video stream, such as sending an alert to the operator or local radio station associated with the target video stream, causing the electronic program guide to be modified, and / or performing any other appropriate action, such as in Figure 1 The shown and combined Figure 1 As described above.
[0054] In some embodiments, the communication network 304 can be any suitable combination of one or more wired and / or wireless networks. For example, the communication network 304 can include any one or more of the Internet, intranet, wide area network (WAN), local area network (LAN), wireless network, digital subscriber line (DSL) network, frame relay network, asynchronous transfer mode (ATM) network, virtual private network (VPN), and / or any other suitable communication network. The user equipment 306 can be connected to the communication network 304 via one or more communication links (e.g., communication link 312), and the communication network 304 can be linked to the server 302 via one or more communication links (e.g., communication link 314). The communication links can be any communication link suitable for transmitting data between the user equipment 306 and the server 302, such as network links, dial-up links, wireless links, hardwired links, any other suitable communication links, or any suitable combination of these links.
[0055] User equipment 306 may include any one or more user devices suitable for presenting media content. In some embodiments, user equipment 306 may include any suitable type of user device, such as a mobile phone, tablet computer, wearable computer, laptop computer, desktop computer, smart TV, media player, streaming media player, game console, vehicle information and / or entertainment system, and / or any other suitable type of user device.
[0056] Although server 302 is illustrated as a single device, in some embodiments, any suitable number of devices can be used to perform the functions performed by server 302. For example, in some embodiments, multiple devices can be used to implement the functions performed by server 302.
[0057] Despite Figure 3 Two user devices 308 and 310 are shown to avoid making the diagram overly complicated, but in some embodiments any suitable number of user devices and / or any suitable type of user device can be used.
[0058] In some embodiments, server 302 and user equipment 306 can be implemented using any suitable hardware. For example, in some embodiments, devices 302 and 306 can be implemented using any suitable general-purpose computer or special-purpose computer. For example, a special-purpose computer can be used to implement a mobile phone. Any such general-purpose computer or special-purpose computer can include any suitable hardware. For example, such as Figure 4As shown in example hardware 400, such hardware may include a hardware processor 402, a memory and / or storage unit 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.
[0059] In some embodiments, hardware processor 402 may include any suitable hardware processor, such as a microprocessor, microcontroller, digital signal processor, dedicated logic, and / or any other suitable circuitry for controlling the functions of a general-purpose computer or a special-purpose computer. In some embodiments, hardware processor 402 may be controlled by a server program stored in the memory and / or storage of a server, such as server 302. In some embodiments, hardware processor 402 may be controlled by a computer program stored in the memory and / or storage 404 of user equipment 306.
[0060] In some embodiments, memory and / or storage 404 can be any suitable memory and / or storage for storing programs, data, and / or any other suitable information. For example, memory and / or storage 404 can include random access memory, read-only memory, flash memory, hard disk storage, optical media, and / or any other suitable memory.
[0061] In some embodiments, the input device controller 406 can be any suitable circuitry for controlling and receiving input from one or more input devices 408. For example, the input device controller 406 can be circuitry for receiving input from a touchscreen, a keyboard, one or more buttons, a voice recognition circuit, a microphone, a camera, an optical sensor, an accelerometer, a temperature sensor, a near-field sensor, a pressure sensor, an encoder, and / or any other type of input device.
[0062] In some embodiments, the display / audio driver 410 can be any suitable circuitry used to control and drive output to one or more display / audio output devices 412. For example, the display / audio driver 410 can be circuitry used to drive a touchscreen, flat panel display, cathode ray tube display, projector, one or more speakers, and / or any other suitable display and / or presentation device.
[0063] The communication interface 414 can be any suitable circuit for interfacing with one or more communication networks (e.g., computer network 304). For example, the interface 414 can include network interface card circuitry, wireless communication circuitry, and / or any other suitable type of communication network circuitry.
[0064] In some embodiments, antenna 416 can be any suitable one or more antennas for wireless communication with a communication network (e.g., communication network 304). In some embodiments, antenna 416 can be omitted.
[0065] In some embodiments, bus 418 can be any suitable mechanism for communication between two or more components 402, 404, 406, 410 and 414.
[0066] According to some embodiments, any other suitable component can be included in the hardware 400.
[0067] In situations where the systems and methods described herein collect or may utilize personal information about a user, the user is given the opportunity to control whether a program or feature collects user information (e.g., information about the user's social networks, social behaviors or activities, occupation, user preferences, or the user's current location) or to control whether or how content that may be more relevant to the user is received from a content server. Furthermore, specific data can be processed in one or more ways before it is stored or used, such as erasing personally identifiable information. For example, the user's identity can be processed to the point that the user's personally identifiable information cannot be determined, or the user's geographic location can be generalized (e.g., to the city, zip code, or state level) if location information is available, making it impossible to determine the user's specific location. The user can add, delete, or modify information about themselves. Therefore, the user can control how information about them is collected and used by the server.
[0068] In some embodiments, Figure 1 At least some of the processes described in the above boxes can be run or executed in any order or sequence, which is not limited to the order and sequence shown and described in conjunction with the accompanying drawings. Furthermore, Figure 1 Some of the items in the boxes above can run or execute substantially simultaneously or in parallel when appropriate, to reduce latency and processing time. Additionally or alternatively, these can be omitted. Figure 1 Some of the processes described in the boxes above.
[0069] In some embodiments, any suitable computer-readable medium can be used to store instructions for performing the functions and / or processes described herein. For example, in some embodiments, the computer-readable medium can be transient or non-transient. For example, a non-transient computer-readable medium can include media such as non-transient magnetic media (such as hard disks, floppy disks, and / or any other suitable magnetic media), non-transient optical media (e.g., optical discs, digital video discs, Blu-ray discs, and / or any other suitable optical media), non-transient semiconductor media (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 medium that does not vanish during transmission or has no persistent appearance, and / or any suitable tangible medium. As another example, a transient computer-readable medium can include signals in networks, in wires, conductors, optical fibers, circuits, any suitable medium that vanishes during transmission and has no persistent appearance, and / or any suitable intangible medium.
[0070] Therefore, methods, systems, and media for synchronizing video streams are provided.
[0071] Although the invention has been described and illustrated in the foregoing illustrative embodiments, it should be understood that this disclosure has been made by way of example only, and many changes in the details of the implementation of the invention can be made without departing from the spirit and scope of the invention as defined only by the appended claims. Features of the disclosed embodiments can be combined and rearranged in various ways.
Claims
1. A method for synchronizing video streams, the method comprising: Identify a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of the same program; Generate a fingerprint sequence for the target video stream; Based on the cross-correlation of the fingerprint sequences of the target video stream and the reference video stream, the time offset of the fingerprint sequence appearing in the reference video stream is determined; Whether the target video stream is synchronized with the reference video stream is determined by whether the time offset exceeds a predetermined threshold; and In response to determining that the target video stream is out of sync with the reference video stream, the electronic program guide including an indication of the target video stream is modified based on the time offset.
2. The method according to claim 1, further comprising: An alert is sent to the operator associated with the target video stream, wherein the alert indicates the time offset.
3. The method according to claim 1, further comprising: Determine the error type associated with the time offset.
4. The method according to claim 3, wherein, The error type indicates that the target video stream did not start at the correct time.
5. The method according to claim 3, wherein, The error type indicates that the target video stream will not end at the correct time.
6. The method of claim 1, further comprising: Identify the second target video stream; Generate a second fingerprint sequence for the second target video stream; It was determined that the second fingerprint sequence was not included in the reference video stream; as well as In response to determining that the second fingerprint sequence is not included in the reference video stream, it is determined that the second target video stream is not a broadcast of the program corresponding to the reference video stream.
7. The method according to any one of claims 1-6, wherein, The target video stream is identified based on metadata associated with the target video stream.
8. A system for synchronizing video streams, the system comprising: Hardware processor, the hardware processor being configured to: Identify a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of the same program; Generate a fingerprint sequence for the target video stream; Based on the cross-correlation of the fingerprint sequences of the target video stream and the reference video stream, the time offset of the fingerprint sequence appearing in the reference video stream is determined; Whether the target video stream is synchronized with the reference video stream is determined by whether the time offset exceeds a predetermined threshold; and In response to determining that the target video stream is out of sync with the reference video stream, the electronic program guide including an indication of the target video stream is modified based on the time offset.
9. The system according to claim 8, wherein, The hardware processor is further configured to send an alert to an operator associated with the target video stream, wherein the alert indicates the time offset.
10. The system according to claim 8, wherein, The hardware processor is further configured to determine the error type associated with the time offset.
11. The system according to claim 10, wherein, The error type indicates that the target video stream did not start at the correct time.
12. The system according to claim 10, wherein, The error type indicates that the target video stream will not end at the correct time.
13. The system according to claim 8, wherein, The hardware processor is further configured to: Identify the second target video stream; Generate a second fingerprint sequence for the second target video stream; It was determined that the second fingerprint sequence was not included in the reference video stream; as well as In response to determining that the second fingerprint sequence is not included in the reference video stream, it is determined that the second target video stream is not a broadcast of the program corresponding to the reference video stream.
14. The system according to any one of claims 8 to 13, wherein, The target video stream is identified based on metadata associated with the target video stream.
15. A computer-readable medium comprising computer-executable instructions, which, when executed by a processor, cause the processor to perform a method for synchronizing a video stream, the method comprising: Identify a target video stream and a reference video stream, wherein the target video stream and the reference video stream are two different broadcasts of the same program; Generate a fingerprint sequence for the target video stream; Based on the cross-correlation of the fingerprint sequences of the target video stream and the reference video stream, the time offset of the fingerprint sequence appearing in the reference video stream is determined; Whether the target video stream is synchronized with the reference video stream is determined by whether the time offset exceeds a predetermined threshold; and In response to determining that the target video stream is out of sync with the reference video stream, the electronic program guide including an indication of the target video stream is modified based on the time offset.
16. The computer-readable medium of claim 15, wherein, The method further includes sending an alert to an operator associated with the target video stream, wherein the alert indicates the time offset.
17. The computer-readable medium of claim 15, wherein, The method further includes: determining the error type associated with the time offset.
18. The computer-readable medium of claim 17, wherein, The error type indicates that the target video stream did not start at the correct time.
19. The computer-readable medium of claim 17, wherein, The error type indicates that the target video stream will not end at the correct time.
20. The computer-readable medium of claim 15, wherein, The method further includes: Identify the second target video stream; Generate a second fingerprint sequence for the second target video stream; It was determined that the second fingerprint sequence was not included in the reference video stream; and In response to determining that the second fingerprint sequence is not included in the reference video stream, it is determined that the second target video stream is not a broadcast of the program corresponding to the reference video stream.
21. The computer-readable medium according to any one of claims 15 to 20, wherein, The target video stream is identified based on metadata associated with the target video stream.