Synchronization of video cameras

By transmitting synchronization clock values ​​in multiple devices and calculating camera offsets to adjust video capture parameters, the problem of video capture synchronization of multiple devices is solved, achieving high-quality video analysis and fan experience.

CN120153590APending Publication Date: 2025-06-13GENIUS SPORTS SS LLC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202380076542.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-10-31
Filing Date
2023-10-31
Publication Date
2025-06-13

AI Technical Summary

Technical Problem

The prior art is difficult to achieve video capture synchronization of multiple devices, especially when capturing videos of sports activities, there are challenges in synchronizing video capture from devices from different perspectives.

Method used

By transmitting synchronization clock values ​​in multiple devices and determining camera synchronization time in each device, the camera offset is calculated to adjust video capture parameters to ensure that video capture synchronization for each device.

Benefits of technology

The synchronization of video capture of multiple devices is achieved, improving the quality of video analysis and fan experience, and ensuring that video frames captured from different perspectives are synchronized in time.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120153590A_ABST
    Figure CN120153590A_ABST
Patent Text Reader

Abstract

A system and method for synchronously capturing video using respective cameras of a plurality of devices is disclosed. A device captures video according to a schedule based on a common camera period and a common synchronization clock, and adjusts its video capture parameters based on deviations from the schedule.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications

[0002] This application claims the benefit of U.S. Patent Application No. 63 / 420,858, titled "SYNCHRONIZATION OF VIDEO CAMERAS OVER IP", filed on October 31, 2022.

[0003] The entire content of the foregoing application is hereby incorporated by reference herein for all purposes. Technical Field

[0004] The present invention relates to methods and systems for synchronizing video capture of multiple devices, particularly portable electronic devices such as smartphones or tablet computers. In the examples disclosed herein, the methods and systems are used to capture video of a sporting activity, such as a sports event or a practice session, where multiple devices are used to capture video of the activity from multiple perspectives. Background Art

[0005] Sports are an important source of entertainment and recreation for millions of people worldwide. The use of video in sports has revolutionized the way teams and athletes analyze, strategize, and improve their performance. Video analysis allows for a detailed review of game play, techniques, and tactics, providing valuable insights that can lead to improved on-field performance. Coaches can study the strengths and weaknesses of their teams, identify patterns, and make data-driven decisions to optimize strategies. Players can analyze their own performance, identify areas for improvement, and precisely enhance their skills.

[0006] Video technology has also transformed the fan experience, allowing viewers to relive and dissect key moments, gain a deeper understanding of the game, and engage in discussions and debates with other fans. Summary of the Invention

[0007] According to a first aspect of the present disclosure, there is provided a system for capturing video, the system comprising: a plurality of electronic devices, each electronic device including a respective camera; and at least one server configured to transmit a synchronization clock value to each of the plurality of devices and receive video data from each of the plurality of devices, wherein the system is configured to determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronization clock value, and wherein each of the plurality of devices is configured to: capture video using the device's camera; determine that the camera synchronization time has elapsed, and in response, determine a camera offset by calculating a difference between a timestamp time of a current frame captured by the device and the camera synchronization time; and adjust one or more video capture parameters of the device based on the camera offset.

[0008] In some examples, each of the plurality of devices is configured to: compare a camera offset with a threshold; and adjust one or more video capture parameters of the device based on the amount by which the camera offset exceeds the threshold.

[0009] Additionally or alternatively, the system may also be configured to: determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, by adding a second integer number of camera cycles to the immediately preceding camera synchronization time, wherein each of the plurality of devices is further configured to: use the camera of the device to capture video; and for each of the one or more additional camera synchronization times, determine that the additional camera synchronization time has passed, and in response, determine the camera offset by calculating the difference between the timestamp of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset. In an example, the second integer is equal to the illustrated integer.

[0010] In an example, each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: capturing a frame with an exposure time determined based on the camera offset of the device. Additionally or alternatively, each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture cycle of the device based on the camera offset of the device. Additionally or alternatively, each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0011] In some examples, each of the plurality of devices is configured to use the Internet protocol to transmit video data to at least one server. Additionally or alternatively, the at least one server is configured to use the Internet protocol to transmit a synchronization clock value to each of the plurality of devices.

[0012] In some examples, the at least one server includes a clock server that is configured to transmit a synchronization clock value to each of the plurality of devices. The clock server may be configured, for example, to use the Internet protocol to transmit a synchronization clock value to each of the plurality of devices.

[0013] In some examples, the at least one server (and in a specific example, the clock server included in the at least one server) is configured to: store the current server time; and transmit a request for the current device time to each of the plurality of devices, where each of the plurality of devices is configured to, in response to receiving the request, transmit the current device time of the device to the at least one server (e.g., the clock server), and where the at least one server (e.g., the clock server) is further configured to use the current server time, the current device time of the device, and the transmission time of the communication between the at least one server (e.g., the clock server) and the device to determine a first clock offset for each of the plurality of devices. In such an example, the at least one server (e.g., the clock server) may be configured to: determine a second clock offset for each of the plurality of devices; and determine the clock drift for each of the plurality of devices by comparing the first clock offset and the second clock offset of the device.

[0014] In some examples, the at least one server includes a grabber server, and each of the plurality of devices is configured to transmit video data to the grabber server. In such an example, the plurality of devices may be configured to use the Internet protocol to transmit the video data to the grabber server.

[0015] In some examples, the at least one server is configured to determine the camera cycle of the cameras of the plurality of devices, including by at least triggering a group of the plurality of devices to capture video, and measuring the camera cycle of each of the devices in the group of devices when the group of devices in the plurality of devices captures video, and the at least one server determines the camera cycle of the cameras of the plurality of devices based on the measured camera cycles for the group of devices.

[0016] According to another aspect of the present disclosure, a method for synchronizing video captures of corresponding cameras of a plurality of devices is provided, the method including: determining the camera cycle of the cameras of the plurality of devices; determining a camera synchronization time, including by adding an integer number of camera cycles (T) to a synchronization clock value; capturing video at each of the plurality of devices using the corresponding cameras of the plurality of devices; at each of the plurality of devices, once the device determines that the camera synchronization time has passed, determining a camera offset by calculating a difference between the timestamp time of the current frame captured by the device and the camera synchronization time; and adjusting one or more video capture parameters of one or more of the devices based on the corresponding camera offsets of one or more of the plurality of devices.

[0017] In an example, the method includes: at each of a plurality of devices, comparing a camera offset of the device with a threshold, and adjusting one or more video capture parameters of the device based on an amount by which the camera offset of the device exceeds the threshold.

[0018] Additionally or alternatively, the method further includes: determining one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, adding a second integral number of camera cycles to the immediately preceding camera synchronization time; capturing video using a camera of each of the plurality of devices; and for each of the plurality of devices and each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determining a camera offset by calculating a difference between a timestamp time of a current frame captured by the device and the additional camera synchronization time, and then adjusting one or more video capture parameters of the device based on the camera offset. In an example, the second integral number is equal to the illustrated integral number.

[0019] In some examples, the illustrated adjustment includes: for each of one or more devices, triggering the device to capture a frame at an exposure time determined based on a camera offset of the device. Additionally or alternatively, the adjustment includes: for each of one or more devices, temporarily increasing or decreasing a capture cycle of the device based on a camera offset of the device. Additionally or alternatively, the adjustment includes: for each of one or more devices, stopping video capture of the device for a period of time determined based on a camera offset of the device.

[0020] In some examples, the method further includes transmitting a synchronization clock value from a clock server to each of the plurality of devices. In such an example, the transmission of the synchronization clock value can be performed using the Internet protocol.

[0021] In some examples, the method further includes: storing a current server time of at least one server (and in a specific example, the clock server included in the at least one server); transmitting, by the at least one server (e.g., the clock server), a request for a current device time to each of the plurality of devices; at each of the plurality of devices, in response to receiving the request, transmitting a current device time of the device; and using the current server time, the current device time of the device, and a transmission time of communication between the at least one server (e.g., the clock server) and the device, to determine a first clock offset of each of the plurality of devices. In such an example, the method can further include: determining a second clock offset of each of the plurality of devices; and determining a clock drift of each of the plurality of devices by comparing the first clock offset and the second clock offset of the device.

[0022] In some examples, the method further includes transmitting video data from each of the plurality of devices to a grabber server. In such examples, the Internet protocol may be used to perform the transmission of the video data.

[0023] In some examples, determining the camera cycles of the cameras of the plurality of devices includes at least triggering a set of the plurality of devices to capture video, and measuring the camera cycle of each of the set of devices while the set of devices of the plurality of devices captures video, and determining the camera cycles of the cameras of the plurality of devices is based on the camera cycles measured for the set of devices.

[0024] According to another aspect of the present disclosure, there is provided a device for capturing video, the device including: at least one processor; a camera; and a computer-readable storage medium including instructions that, when executed by the at least one processor, cause the device to: receive a synchronous clock value from at least one server; determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronous clock value; capture video using the at least one camera; determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating a difference between a timestamp time of a current frame captured by the device and the camera synchronization time; adjust one or more video capture parameters based on the camera offset; and send the video to the at least one server.

[0025] In some examples, the instructions, when executed by the at least one processor, cause the device to: compare the camera offset with a threshold; and adjust one or more video capture parameters based on an amount by which the camera offset exceeds the threshold.

[0026] Additionally or alternatively, the instructions, when executed by the at least one processor, may cause the device to: determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, by adding an integer number of camera cycles to the immediately preceding camera synchronization time; capture video using the camera; and for each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine a camera offset by calculating a difference between a timestamp time of a current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

[0027] In some examples, the adjustment of one or more video capture parameters by the device includes: capturing frames with an exposure time determined based on the camera offset of the device. Additionally or alternatively, the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture period of the device based on the camera offset of the device. Additionally or alternatively, the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0028] In some examples, the instruction, when executed by at least one processor, causes the device to send video to at least one server using the Internet Protocol.

[0029] According to another aspect of the present invention, there is provided a computer program product including instructions that, when executed by at least one processor of a device for capturing video, cause the device to: receive a synchronous clock value from at least one server; determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronous clock value; capture video using at least one camera; determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time; adjust one or more video capture parameters based on the camera offset; and send the video to at least one server. In some examples, the instruction, when executed by at least one processor, causes the device to: compare the camera offset with a threshold; and adjust one or more video capture parameters based on the amount by which the camera offset exceeds the threshold.

[0030] Additionally or alternatively, the instruction, when executed by at least one processor, causes the device to: determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, by adding an integer number of camera cycles to the immediately preceding camera synchronization time; capture video using the camera; and for each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

[0031] In some examples, the adjustment of one or more video capture parameters by the device includes: capturing frames with an exposure time determined based on the camera offset of the device. Additionally or alternatively, the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture period of the device based on the camera offset of the device. Additionally or alternatively, the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0032] In an example of any of the above aspects, the integer is at least 2.

[0033] In an example of any of the above aspects, at least some of the devices in the device can be portable electronic devices, such as mobile devices. Additionally or alternatively, at least some of the devices in the device can be smartphones or tablet computing devices.

[0034] Additional features and advantages will become apparent from the following description which is given by way of example only and with reference to the accompanying drawings. Description of the Drawings

[0035] Figure 1 is a schematic diagram showing a video capture system according to an illustrative embodiment.

[0036] Figure 2A and Figure 2B is a diagram showing a detailed example of the synchronization process of the devices for the Figure 1 system.

[0037] Figure 3 is Figure 1 a perspective view of the system when deployed in a basketball game.

[0038] Figure 4 is a schematic diagram showing a method for synchronizing video captures of corresponding cameras of multiple devices according to another illustrative embodiment. Detailed Description

[0039] Embodiments of the present application relate to synchronously capturing videos using corresponding cameras of multiple devices. In the embodiments described below, these devices capture videos according to a schedule based on a common camera cycle and a common synchronization clock, and adjust their video capture parameters based on the deviation from the schedule. Specific embodiments of the present application relate to capturing videos of sports activities, specifically using cameras of multiple devices to capture videos of sports activities from multiple perspectives.

[0040] Video frames are said to be synchronized if they are captured at approximately the same instant in time. In an embodiment, video frames are considered to be synchronized if they are captured within a threshold time window of each other. In an embodiment, the threshold time window can be 1 microsecond, 10 microseconds, 1 millisecond, 10 milliseconds, 100 milliseconds, or greater. The threshold time window may vary for each application, device, or environment. For example, in an application where the image does not change frequently, it may be acceptable to use a larger threshold time window (such as 100 milliseconds) than in an application where the video includes fast movement of objects or people. In another example, in a system with a large number of devices and cameras (such as 100 or more), it may be appropriate to use a larger threshold time window (such as 100 milliseconds), for example because it would be difficult to synchronize the capture of such a large number of devices. In contrast, in a system with fewer cameras (such as 100 or fewer), a smaller threshold time window may be appropriate and thus the difficulty of synchronized capture is less. In an embodiment, the threshold of the time window can be changed during operation of the system and / or can be adjusted based on the application, the type of video being captured, the number of devices capturing the video, the distance between the devices, network characteristics (latency, reliability, jitter), etc.

[0041] Reference is now made to Figure 1 which is a schematic diagram showing a video capture system according to an illustrative embodiment. As shown, the system 100 includes a plurality of devices 110(a)-(f), each device including at least one camera 112. As shown, each of the devices 110(a)-(f) can be arranged, for example, to capture video from a respective different viewpoint 114. In the specific example shown, the system 100 includes six devices 110(a)-(f); however, this is of course merely illustrative and not required.

[0042] In Figure 1 the specific embodiment shown, each device 110 is a portable electronic device, more specifically a smartphone. However, this is not required and in other embodiments, some or all of the devices 110(a)-(f) can be, for example, different types of portable electronic devices, such as tablet computing devices, or can be larger (non-portable) devices, or indeed any device having one (or more) cameras and having sufficient processing power to operate in the manner described herein. In an embodiment, the devices 110(a)-(f) may lack a built-in mechanism for precise frame synchronization across devices and / or may not include a dedicated video camera (which typically includes such a built-in mechanism for precise frame synchronization across devices).

[0043] Modern portable electronic devices 110 having cameras (specifically, such as smartphones and tablet computing devices) are: readily accessible, allowing system 100 to be easily expanded by adding more portable electronic devices 110(a)-(f), and allowing system 100 to be easily upgraded to take full advantage of future advancements in the functionality of portable electronic devices; directly configurable for use in system 100 by installing suitable software on portable electronic device 110 and utilizing the wireless connection of portable electronic device 110; generally capable of using the camera of such a device to capture video at high resolution and / or high frame rate; and capable of providing powerful processing capabilities.

[0044] Returning to Figure 1 , it is noted that system 100 also includes server 120. As Figure 1 indicated by the lines extending from electronic devices 110(a)-(f) and server 120 in, server 120 communicates data with electronic devices 110(a)-(f) via network 130, which can be (or include) for example the Internet. Thus (or otherwise), devices 110(a)-(f) and server 120 can (at least in part) use Internet Protocol and / or Transmission Control Protocol to communicate. However, it should be understood that network 130 need not include the Internet, and thus (or otherwise), network 130 can be (or include) a LAN, VPN, and / or an intranet. Additionally, it is not necessary for devices 110(a)-(f) and server 120 to use Internet Protocol or Transmission Control Protocol to communicate; other embodiments of system 100 can utilize any communication protocol suitable for the particular type of network 130 connecting devices 110(a)-(f) and server 120.

[0045] It should also be understood that in embodiments, for example using 4G, 5G, or Wi-Fi protocols, electronic devices 110(a)-(f) and server 120 can communicate wirelessly. The wireless connection can provide greater flexibility in the placement / arrangement of multiple devices 110(a)-(f). However, in other embodiments, some or all of the data connections between portable electronic devices 110(a)-(f) and server 120 can be physical connections.

[0046] Now the interaction of server 120 with devices 110(a)-(f) in the Figure 1 system will be described. In Figure 1 embodiments, server 120 is configured to periodically transmit a common synchronization clock value (t REF )(i.e., each of the multiple devices receives the same synchronization clock value (t REF)) to assist in synchronizing video capture of multiple devices 110(a)-(f). The synchronization clock value (t REF ) can be based on a reference clock on board the server 120, or can be based on a reference clock that transmits a time signal to the server 120. The server 120 is also configured to receive video data from each of the multiple devices 110(a)-(f). The server 120 can perform various processes on the received video data, such as analyzing the video and / or preparing the video for streaming.

[0047] As mentioned above, the devices 110(a)-(f) use the synchronization clock value (t REF ) transmitted by the server 120 to synchronize the video capture of their respective cameras. To this end, each device 110(a)-(f) is configured (e.g., by appropriately programming the (multiple) on-board processors) to determine a future camera synchronization time (t REF ) based on the synchronization clock value (t sync[1] ) and based on an integer (n) number of camera cycles (T). For example, determining the camera synchronization time (t sync[1] ) by each device 110(a)-(f) can include adding an integer (n) number of camera cycles (T) to the synchronization clock value (t REF ). To assist in synchronizing video capture, all of the devices 110(a)-(f) use the same n value.

[0048] In an embodiment, the same camera cycle (T) is used at each device to determine the camera synchronization time (t sync ). In some cases, the value of the camera cycle (T) can be determined by measuring the respective values of the camera cycles of a group of devices (or in some cases all of the devices) among the multiple devices 110(a)-(f) during operation of the devices. For example, the respective values of the camera cycles of a group of devices (or all of the devices) among the multiple devices 110(a)-(f) can be measured during a test run of the devices.

[0049] The server 120 can trigger such a measurement of the camera cycles of some or all of the devices 110(a)-(f). For example, the server 120 can transmit or broadcast a message to each of the multiple devices 110(a)-(f) that causes the device to capture video, measure the camera cycle value while capturing the video, and transmit the measured camera cycle value to the server 120.

[0050] However, it should be understood that the value of the camera cycle (T) is not necessarily determined by such measurements of the camera cycles of some or all of the devices 110(a)-(f). Thus (or otherwise), in other embodiments, the camera cycle (T) may be based on pre-existing data / information, such as camera cycle data from the manufacturer(s) of the device 110.

[0051] While the above mentions that the devices 110(a)-(f) determine the camera synchronization time (t sync[1] ), it should be understood that in other examples, the server 120 may determine the camera synchronization time (t sync[1] ) and transmit it to each of the devices 110(a)-(f), where it may be transmitted separately from the synchronization clock value (t REF ), or it may be transmitted together with the synchronization clock value (t REF ).

[0052] A more detailed example of the synchronization process for the multiple devices 110(a)-(f) of the system 100 for Figure 2A and Figure 2B will now be described with reference to Figure 1 and Figure 2A and Figure 2B which are timing diagrams showing the capture of a series of frames 200(1)-200(12) by one of the multiple devices 110(a)-(f) of the system 100 for Figure 1 . In each of the diagrams in Figure 2A and Figure 2B , the abscissa indicates time, where the time range shown by the abscissa in Figure 2B immediately follows the time range shown by the abscissa in Figure 2A , and thus Figure 2B is a continuation of Figure 2A .

[0053] As can be seen from the examples in Figure 2A and Figure 2B , the first frame 200(1) is captured shortly after the synchronization clock value (t REF ), while the second, third, and fourth frames 200(2)-200(4) are captured at subsequent consecutive times. It can also be seen from Figure 2A that in the specific example shown, the camera synchronization time (t sync[1] ) is determined by adding 3 camera cycles (T) to the synchronization clock value (t REF ). In other words, in the example of Figure 2, n = 3. However, this is of course merely illustrative, and in other examples, n may be 1, 2, 4, or any other suitable integer value.

[0054] Note that the fourth frame 200(4) is captured after the camera synchronization time (t sync[1] ) has passed. The device 110 is configured to recognize that the camera synchronization time (t sync[1] ) has passed, and determines the camera offset (t sync[1] ) by calculating the difference between the timestamp time of the current frame captured by the device (the fourth frame 200(4) in the example of FIG. 2) and the camera synchronization time (t offset ).

[0055] According to the Figure 2A and Figure 2B synchronization process, the camera offset (t offset ) thus determined is then used to determine the adjustment of one or more video capture parameters of the device 110.

[0056] One or more video capture parameters adjusted by the device 110 may include, for example:

[0057] · Exposure time (e.g., for the very next frame), such that the adjustment includes capturing frames with an exposure time determined based on the device's camera offset (t offset );

[0058] · Capture period (e.g., for each frame until the next camera synchronization time) or conversely, capture frequency, such that the adjustment includes temporarily increasing or decreasing the capture period for the device based on the device's camera offset (t offset ); and / or

[0059] · Delay time until the next frame is captured, such that the adjustment includes stopping the device's video capture for a period of time determined based on the device's camera offset.

[0060] In some examples, the determination of the adjustment of one or more video capture parameters of the device 110 can be performed by the device itself. However, in other examples, the server 120 can determine the adjustment of the corresponding video capture parameters for a group of devices or all devices among the multiple devices 110(a)-(f) in the system 100. In such examples, each device 110(a)-(f) transmits its corresponding camera offset (t offset ) value to the server 120, and the server 120 in turn transmits adjustment data to the devices 110(a)-(f), which indicates the adjustment of the video capture parameters of the devices 110(a)-(f) based on the camera offset (t offset ). In fact, even in examples where the determination of the adjustment of one or more video capture parameters of the device 110 is performed by the device 110 itself, each device 110(a)-(f) transmits its corresponding camera offset (t offset) It is also useful to transfer the value to server 120, for example, so that server 120 can perform an analysis of the operation of system 100 and / or so that server 120 can control the overall operation of system 100.

[0061] In various embodiments, the same video capture parameters can be adjusted at each of devices 110(a)-(f). For example, the exposure time can be adjusted only for each of devices 110(a)-(f). However, in more complex embodiments, different video capture parameters can be adjusted for different devices. For example, the exposure time can be adjusted for some of devices 110(a)-(f) (e.g., devices that only require minor adjustments), while the capture period can be adjusted for other devices 110(a)-(f) (e.g., devices that require more significant adjustments).

[0062] Generally, the adjustment of the video capture parameters for devices 110(a)-(f) can be calculated to reduce the expected camera offset at subsequent camera synchronization times. Figure 2A An example of this can be seen in sync[2] ), where after frame 200(4), the capture period of the device is reduced, which results in a significantly smaller camera offset at the second camera synchronization time (t offset[2] ). In an embodiment, in the case where it is determined that the camera offset is less than a threshold, system 100 may not perform any adjustment to the camera parameters of the device, because the capture of the camera of the device can be considered to achieve satisfactory synchronization.

[0063] As is obvious from Figure 2A , the second camera synchronization time (t sync[2] ) is determined by adding n camera cycles (T) (where n = 3, the same as before) to the previous camera synchronization time (t sync[1] ). Subsequent camera synchronization times are determined in the same manner.

[0064] Now refer to Figure 2B , which shows how device 110 responds to receiving the second synchronization clock value (t REF[2] ). The time corresponding to the second synchronization clock value (t REF[2] ) is indicated on the time axis; however, it should be understood that the time when device 110 actually receives the second synchronization clock value (t REF[2] ) will be later than the time (t REF[2] ) indicated on the time axis by an amount corresponding to the transmission time between server 120 and device 110.

[0065] In any case, as can be seen from Figure 2B , upon receiving the second synchronization clock value (tREF[2] ) After that, the next camera synchronization time (t sync[1’] ) is determined by adding n camera cycles (T) to the newly received second synchronization clock value (t REF[2] ). Specifically, as shown in the figure, by adding three camera cycles (3T) to the second synchronization clock value t REF[2] to determine t sync[1’] . Then, the camera synchronization time t sync[1’] thus determined is used to determine the camera offset (t offset[3]) . Subsequently, as before, the subsequent camera synchronization times are determined by adding n camera cycles (T) to the previous camera synchronization time.

[0066] More generally, according to the Figure 2A and Figure 2B synchronization process, when another (third, fourth, fifth, etc.) synchronization clock value is received from the server 120, similarly, the next camera synchronization time immediately following is determined by adding n camera cycles (T) to the newly received synchronization clock value. Subsequently, as before, the subsequent camera synchronization times are determined by adding n camera cycles (T) to the previous camera synchronization time.

[0067] In some embodiments, the synchronization clock values (t REF[1] , t REF[2] ) sent by the server 120 may, for example, correspond to equally spaced time points. For example, the interval between them may be an integer multiple of nT. In other embodiments, the synchronization clock values may correspond to semantically significant time points during the activity captured by the video, such as the start of an event (e.g., the start of a sports game) and / or the interval of an event (e.g., halftime during a sports game). Thus (or otherwise), the server 120 determines when to send synchronization clock values to the multiple devices 110(a)-(f) by analyzing the videos received from the multiple devices 110(a)-(f).

[0068] Returning to the Figure 1 system 100 in

[0069] 1. The server 120 sends a request with the current reference clock time (RCT) to each device 110, and the server 120 stores the value of this current reference clock time (the first reference clock time value).

[0070] 2. When the device 110 receives the request, the device determines the difference between the received reference clock time (the first reference clock time value) and its current device clock time as the device clock offset, and sends a reply to the server.

[0071] 3. The server 120 records the reference clock time when the reply is received as the second reference clock time value.

[0072] 4. Then, for example, by calculating the difference between the reference clock time when the request is sent to each device 110 (i.e., the first reference clock time value) and the reference clock time when the response is received from each device 110 (i.e., the second reference clock time value of each device 110), the server 120 can calculate the round trip time for the server 120 and each device 110.

[0073] 5. If the round trip time is not abnormally large (e.g., exceeding a predetermined threshold), the server 120 then sends a message with the transmission time of the device 110 to each device. For example, the transmission time of each device 110 can be calculated as half of the round trip time of that device.

[0074] 6. When the device 110 receives this message, the device 110 adds the transmission time to the device clock offset value calculated in step 2, and stores it as its reference clock offset value. Then, the device 110 can determine the time (synchronized device time) that is (at least approximately) synchronized with the reference clock by adding the stored reference clock offset value to its internal clock time. Optionally, the device 110 can then send a reply to the server 120 containing its current synchronized device time.

[0075] However, it should be understood that this is merely an illustrative example, and various other methods can be utilized to synchronize the clocks of multiple devices 110(a)-(f) with a reference clock that generates synchronized clock values.

[0076] In an embodiment, whenever clock drift exceeding a specific threshold is detected at the server 120, resynchronization of the device clocks can be performed, e.g., it can be performed periodically at a predetermined time interval set based on the desired synchronization accuracy, and / or at a time based on other considerations, e.g., during a pause or between periods of a sports game.

[0077] For example, the clock drift (i.e., the desynchronization from the reference clock) of a device clock can be determined by calculating the offsets at two time points, e.g., with a time interval of several minutes, between the given device clock and the reference clock (taking into account the transmission time between the server 120 and the given device). For example, the first clock offset value can be determined when the clock is synchronized, and the second clock offset value can be determined after 10 minutes. When the difference between the clock offset values is greater than a threshold (such as 500 μs, 1 ms, 10 ms or more), the synchronization of the device clock can be repeated.

[0078] Alternatively or additionally, the clock drift can be identified by comparing features in the captured images. For example, images captured by different devices but with the same timestamp can be compared and analyzed to determine whether they captured an event at the same time point. In an embodiment, using one or more of the methods described in commonly assigned U.S. Patent Application 18 / 346,355, features of frames such as a game clock, a billboard, etc. can be used to determine the time offset between such frames captured by different devices, thereby determining the clock drift.

[0079] Now returning to Figure 1 , it should be noted that although the system 100 is shown as including only a single server 120, it should of course be understood that the system 100 can include multiple servers. Specifically, in some embodiments, the system 100 can include a clock server configured to synchronize the clocks of multiple devices 110(a)-(f), including by transmitting synchronized clock values to each of the multiple devices 110(a)-(f) (and, optionally, determining adjustments to the corresponding video capture parameters for a group or all of the multiple devices 110(a)-(f), and / or optionally determining the clock offsets for some or all of the multiple devices 110(a)-(f)), and a "grabber" server configured to receive video data from each of the multiple devices 110(a)-(f).

[0080] It should also be noted that while the above description focuses on the operation of the multiple devices 110(a)-(f), in other examples, the system 100 can also include additional devices having cameras. In fact, such devices can be of the same type as the multiple devices 110(a)-(f); for example, the additional device and the multiple devices 110(a)-(f) can be smartphones. Additionally, the video capture of the additional device can be synchronized using the same or different methods as the multiple devices 110(a)-(f), or can be not synchronized at all.

[0081] We believe that Figure 1The system 100 in [description] is particularly (but not exclusively) suitable for capturing videos of sports activities, especially when the devices 110 are portable, as they can be easily mounted in various positions and orientations to capture videos of sports activities. Figure 3 Such an installation of the system 100 is shown in [figure reference], which shows the system 100 when deployed to analyze a basketball game. As with Figure 1 the portable electronic devices shown in [figure reference], Figure 3 each of the portable electronic devices 100(a)-(g) shown in [figure reference] has a corresponding different viewing point 114 from which to capture videos. As shown, most of the multiple portable electronic devices 100(a)-(f) are arranged around the basketball court in different fixed positions and orientations. However, one of the devices 100(g) is worn by a participant in the sports activity, thus providing a viewing point of the sports activity that a conventional camera may not be able to provide. The participant can be a player (e.g., capable of directly collecting data characterizing the player's movement, such as using the accelerometer, gyroscope, etc. provided on board the portable electronic device, e.g., as part of an IMU), or can be a referee, umpire, etc. (e.g., assisting with automatic refereeing). Of course, although Figure 3 only one of the devices 100(g) is shown being worn by a participant in the sports activity in the example deployment shown in [figure reference], it should be understood that in other deployments of the system, multiple (or all) of the portable electronic devices 100(a)-(g) can be worn by participants in the sports activity rather than being deployed in fixed positions and orientations. Additionally, in some examples, some of the portable electronic devices 100(a)-(g) can be held by a coach or even a fan (e.g., the fan's own personal device can be used as the portable electronic device 100(a)-(g) of the system 100). Furthermore, although Figure 3 a basketball game is depicted in [figure reference], it should be understood that this is merely illustrative, and Figure 1 the system 100 of [description] is suitable for deployment in many other types of sports activities and is actually suitable for deployment in non-sports environments, such as non-sports live events (e.g., concerts, comedy shows, or plays) or non-sports practice sessions (e.g., music practice, or theater rehearsals).

[0082] Now returning to Figure 1 the system of [description], it should be noted that in some examples, the server 120 can be located in the same physical location as the portable electronic devices 110(a)-(f). For example, in the case where the system 100 is deployed at a sports activity, such as as Figure 3As shown, server 120 may be located in the server room of the sports event venue. Alternatively, server 120 may be located in a truck parked at the venue site. However, in other examples, server 120 may be a remote / cloud server.

[0083] In addition, when system 100 includes multiple servers, they do not have to be located in the same location. For example, when system 100 includes a grabber server and a clock server, the grabber server may be in the same physical location as the multiple devices 110(a)-(f) (and vice versa). For example, in the case where system 100 is deployed at a sports event, such as as Figure 3 shown, the grabber server may be located in the server room of the sports event venue, or in a truck parked at the venue site, while the clock server may be a remote / cloud server (and vice versa).

[0084] Now note Figure 4 , which shows a method 400 for synchronizing video captures of corresponding cameras of multiple devices according to another aspect of the present disclosure. Specific embodiments of method 400 may incorporate the principles and features taught by any of the embodiments of system 100 referenced above Figures 1 - 3 . For example, method 400 may synchronize video captures of corresponding cameras of multiple devices 110(a)-(f) according to any of the methods described above with reference to Figures 1 - 3 .

[0085] As Figure 4 shown in block 401, the method includes determining the camera cycles of the cameras of the multiple devices. The determination of block 401 may be implemented by any of the methods for determining the camera cycle (T) described above with reference to Figures 1 - 3 . For example, the determination may include at least triggering a group of the multiple devices to capture video, and measuring the camera cycle of each device in the group of devices while the group of devices in the multiple devices captures video. In such an example, the camera cycles of the cameras of the multiple devices may be determined based on the measured camera cycles for the group of devices.

[0086] Also as Figure 4 shown, method 400 further includes determining 402 the camera synchronization time, including adding an integer number of camera cycles (T) to the synchronization clock value. The determination of block 402 may similarly be implemented by any of the methods for determining the camera synchronization time described above with reference to Figures 1 - 3 .

[0087] As Figure 4 further shown, method 400 also includes capturing video 403 at each of the multiple devices using the corresponding cameras of the multiple devices.

[0088] As Figure 4 shown, method 400 additionally includes: at each of the plurality of devices 110(a)-(f), once the device determines that the camera synchronization time has passed, determining 404 the camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time. The determination 404 of the camera offset for each device 110(a)-(f) can employ any of the methods described above with reference to Figures 1 - 3 and specifically with reference to Figure 2A and Figure 2B any of the methods described therein.

[0089] Also as Figure 4 shown, method 400 further includes adjusting 405 one or more video capture parameters of one or more of the devices based on the respective camera offsets of one or more of the devices. The adjustment 405 of the one or more video capture parameters for one or more of the plurality of devices 110(a)-(f) can likewise employ any of the methods described above with reference to Figures 1 - 3 described therein. For example, for each device, the adjustment can include: triggering the device to capture a frame at an exposure time determined based on the camera offset of the device. Additionally or alternatively, for each device, the adjustment can include: temporarily increasing or decreasing the capture period of the device based on the camera offset of the device. Additionally or alternatively, for each device, the adjustment can include: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0090] Although Figure 4 the blocks 401-405 are shown in sequence, it should be understood that the actions of blocks 401-405 are not necessarily performed in the order shown, or that the actions of blocks 401-405 are not necessarily performed sequentially.

[0091] More generally, it should be understood that any feature described in connection with any embodiment can be used alone, or can be combined with other described features, or can be combined with one or more features of any other embodiment in the embodiment, or can be combined with any combination of any other embodiment in the embodiment. Additionally, equivalent solutions and modifications not described above can also be employed without departing from the scope of the present invention as defined by the appended claims.

[0092] Additional Embodiments of the Present Disclosure

[0093] Although various specific embodiments have been described above, additional embodiments of the present disclosure are set forth in the following clauses:

[0094] 1. A system for capturing video, the system comprising:

[0095] A plurality of electronic devices, each electronic device including a respective camera; and

[0096] At least one server configured to transmit a synchronization clock value to each of the plurality of devices and receive video data from each of the plurality of devices,

[0097] wherein the system is configured to determine a camera synchronization time, including adding an integer number of camera cycles to the synchronization clock value; and

[0098] wherein each of the plurality of devices is configured to:

[0099] Capture video using the camera of the device;

[0100] Determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time; and

[0101] Adjust one or more video capture parameters of the device based on the camera offset.

[0102] 2. The system according to clause 1, wherein each of the plurality of devices is configured to:

[0103] Compare the camera offset with a threshold; and

[0104] Adjust one or more video capture parameters of the device based on the amount by which the camera offset exceeds the threshold.

[0105] 3. The system according to clause 1 or clause 2, wherein the system is further configured to:

[0106] Determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, adding an integer number of camera cycles to the immediately preceding camera synchronization time;

[0107] wherein each of the plurality of devices is further configured to:

[0108] Capture video using the camera of the device; and

[0109] For each of the one or more additional camera synchronization times, determine that the additional camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

[0110] 4. The system according to any one of clauses 1-3, wherein each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: capturing frames with an exposure time determined based on the camera offset of the device.

[0111] 5. The system according to any one of clauses 1-4, wherein each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture period of the device based on the camera offset of the device.

[0112] 6. The system according to any one of clauses 1-5, wherein each of the plurality of devices is configured such that the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0113] 7. The system according to any one of clauses 1-6, wherein at least one server includes a clock server configured to transmit a synchronized clock value to each of the plurality of devices.

[0114] 8. The system according to clause 7, wherein the clock server is configured to transmit the synchronized clock value to each of the plurality of devices using the Internet protocol.

[0115] 9. The system according to any one of clauses 1-8, wherein at least one server is configured to:

[0116] store the current server time; and

[0117] transmit a request for the current device time to each of the plurality of devices,

[0118] wherein each of the plurality of devices is configured to transmit the current device time of the device to at least one server in response to receiving the request, and

[0119] wherein at least one server is further configured to determine a first clock offset for each of the plurality of devices using the current server time, the current device time of the device, and the transmission time of the communication between the at least one server and the device.

[0120] 10. The system according to clause 9, wherein at least one server is configured to:

[0121] determine a second clock offset for each of the plurality of devices; and

[0122] determine the clock drift for each of the plurality of devices by comparing the first clock offset and the second clock offset of the device.

[0123] 11. The system according to any one of clauses 1-10, wherein at least one server includes a crawler server, and wherein each of the plurality of devices is configured to transmit video data to the crawler server.

[0124] 12. The system according to clause 11, wherein the plurality of devices are configured to transmit video data to the crawler server using the Internet protocol.

[0125] 13. The system according to any one of clauses 1-12, wherein the plurality of devices includes at least one portable device.

[0126] 14. The system according to clause 13, wherein at least one portable device includes a smartphone.

[0127] 15. The system according to any one of clauses 1-14, wherein at least one server is configured to determine the camera cycle of the cameras of the plurality of devices, including by at least triggering a set of devices among the plurality of devices to capture video, and measuring the camera cycle of each device in the set of devices when the set of devices among the plurality of devices captures video, and at least one server determines the camera cycle of the cameras of the plurality of devices based on the measured camera cycles for the set of devices.

[0128] 16. A method for synchronizing video capture of corresponding cameras of a plurality of devices, the method comprising:

[0129] Determining the camera cycle of the cameras of the plurality of devices;

[0130] Determining a camera synchronization time, including by adding a synchronization clock value to an integer number of camera cycles;

[0131] Capturing video at each of the plurality of devices using the corresponding cameras of the plurality of devices;

[0132] At each of the plurality of devices, once the device determines that the camera synchronization time has passed, determining a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time;

[0133] Adjusting one or more video capture parameters of one or more devices based on the corresponding camera offsets of one or more devices among the plurality of devices.

[0134] 17. The method according to clause 16, including: at each of the plurality of devices, comparing the camera offset of the device with a threshold, wherein one or more video capture parameters of the device are adjusted based on the amount by which the camera offset of the device exceeds the threshold.

[0135] 18. The method according to clause 16 or clause 17 further includes:

[0136] Determining one or more additional camera synchronization times, including: for each camera synchronization time among the one or more additional camera synchronization times, by adding an integer number of camera cycles to the immediately preceding camera synchronization time;

[0137] Using the cameras of each of the multiple devices to capture video; and

[0138] For each of the multiple devices and for each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determining a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the additional camera synchronization time, and then adjusting one or more video capture parameters of the device based on the camera offset.

[0139] 19. The method according to any one of clauses 16 - 18, wherein the adjustment includes: for each of the one or more devices, triggering the device to capture a frame at an exposure time determined based on the camera offset of the device.

[0140] 20. The method according to any one of clauses 16 - 19, wherein the adjustment includes: for each of the one or more devices, temporarily increasing or decreasing the capture cycle of the device based on the camera offset of the device.

[0141] 21. The method according to any one of clauses 16 - 20, wherein the adjustment includes: for each of the one or more devices, stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0142] 22. The method according to any one of clauses 16 - 21 further includes: Transmitting a synchronization clock value from a clock server to each of the multiple devices.

[0143] 23. The method according to any one of clause 22, wherein the transmission of the synchronization clock value is performed using the Internet protocol.

[0144] 24. The method according to any one of clauses 16 - 23 further includes:

[0145] Storing the current server time of at least one server;

[0146] Transmitting a request for the current device time from at least one server to each of the multiple devices;

[0147] At each of the plurality of devices, in response to receiving the request, transmit the current device time of the device; and

[0148] Determine a first clock offset for each of the plurality of devices using the current server time, the current device time of the device, and the transmission time of at least one communication between the server and the device.

[0149] 25. The method according to clause 24, further comprising:

[0150] Determine a second clock offset for each of the plurality of devices; and

[0151] Determine the clock drift for each of the plurality of devices by comparing the first clock offset and the second clock offset of the device.

[0152] 26. The method according to any one of clauses 16 - 25, further comprising transmitting video data from each of the plurality of devices to a grabber server.

[0153] 27. The method according to any one of clauses 16 - 26, wherein the transmission of the video data is performed using the Internet protocol.

[0154] 28. The method according to any one of clauses 16 - 27, wherein the plurality of devices includes at least one portable device.

[0155] 29. The method according to clause 28, wherein the at least one portable device includes a smart phone.

[0156] 30. The method according to any one of clauses 16 - 29, wherein determining the camera cycle of the cameras of the plurality of devices includes: at least triggering a set of the plurality of devices to capture video, and measuring the camera cycle of each device in the set of devices while the set of devices in the plurality of devices captures video, and

[0157] wherein determining the camera cycle of the cameras of the plurality of devices is based on the measured camera cycles for the set of devices.

[0158] 31. A device for capturing video, the device comprising: at least one processor; a camera; and a computer - readable storage medium including instructions that, when executed by the at least one processor, cause the device to:

[0159] Receive a synchronous clock value from at least one server;

[0160] Determine a camera synchronization time, including adding an integer number of camera cycles to the synchronous clock value;

[0161] Capture video using at least one camera;

[0162] Determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp of the current frame captured by the device and the camera synchronization time;

[0163] Adjust one or more video capture parameters based on the camera offset; and

[0164] Send the video to at least one server.

[0165] 32. The device according to clause 31, wherein the instructions, when executed by at least one processor, cause the device to:

[0166] Compare the camera offset with a threshold; and

[0167] Adjust one or more video capture parameters based on the amount by which the camera offset exceeds the threshold.

[0168] 33. The device according to clause 31 or clause 32, wherein the instructions, when executed by at least one processor, cause the device to:

[0169] Determine one or more additional camera synchronization times, including: for each camera synchronization time among the one or more additional camera synchronization times, by adding an integer number of camera cycles to the immediately preceding camera synchronization time;

[0170] Use the camera to capture video; and

[0171] For each camera synchronization time among the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine a camera offset by calculating the difference between the timestamp of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

[0172] 34. The device according to any one of clauses 31 - 33, wherein the adjustment of one or more video capture parameters by the device includes: capturing frames with an exposure time determined based on the camera offset of the device.

[0173] 35. The device according to any one of clauses 31 - 34, wherein the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture cycle of the device based on the camera offset of the device.

[0174] 36. The device according to any one of clauses 31 - 36, wherein the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0175] 37. The apparatus according to any one of clauses 31 - 36, wherein the instructions, when executed by at least one processor, cause the apparatus to use the Internet Protocol to send video to at least one server.

[0176] 38. The apparatus according to any one of clauses 31 - 37, wherein the apparatus is a portable electronic device.

[0177] 39. The apparatus according to any one of clauses 31 - 38, wherein the apparatus is a smartphone.

[0178] 40. A computer program product comprising instructions that, when executed by at least one processor of a device for capturing video, cause the device to:

[0179] Receive a synchronization clock value from at least one server;

[0180] Determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronization clock value;

[0181] Capture video using at least one camera;

[0182] Determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time;

[0183] Adjust one or more video capture parameters based on the camera offset; and

[0184] Send the video to at least one server.

[0185] 41. The computer program product according to clause 40, wherein the instructions, when executed by at least one processor, cause the device to:

[0186] Compare the camera offset with a threshold; and

[0187] Adjust one or more video capture parameters based on the amount by which the camera offset exceeds the threshold.

[0188] 42. The computer program product according to clause 40 or clause 41, wherein the instructions, when executed by at least one processor, cause the device to:

[0189] Determine one or more additional camera synchronization times, including: for each camera synchronization time of the one or more additional camera synchronization times, by adding an integer number of camera cycles to the immediately preceding camera synchronization time;

[0190] Capture video using the camera; and

[0191] For each of one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, the camera offset is determined by calculating the difference between the timestamp of the current frame captured by the device and the additional camera synchronization time, and then one or more video capture parameters of the device are adjusted based on the camera offset.

[0192] 43. The computer program product according to any one of clauses 40 - 42, wherein the adjustment of one or more video capture parameters by the device includes: capturing frames with an exposure time determined based on the camera offset of the device.

[0193] 44. The computer program product according to any one of clauses 40 - 43, wherein the adjustment of one or more video capture parameters by the device includes: temporarily increasing or decreasing the capture cycle of the device based on the camera offset of the device.

[0194] 45. The computer program product according to any one of clauses 40 - 44, wherein the adjustment of one or more video capture parameters by the device includes: stopping the video capture of the device for a period of time determined based on the camera offset of the device.

[0195] 46. The computer program product according to any one of clauses 40 - 45, wherein the instructions, when executed by at least one processor, cause the device to use the Internet protocol to send video to at least one server.

Claims

1. A system for capturing video, the system comprising: a plurality of electronic devices, each of the plurality of electronic devices including a respective camera; and at least one server configured to transmit a synchronization clock value to each of the plurality of devices and receive video data from each of the plurality of devices, wherein the system is configured to determine a camera synchronization time, including adding an integer number of camera cycles to the synchronization clock value, and wherein each of the plurality of devices is configured to: use the camera of the device to capture video; determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time; and adjust one or more video capture parameters of the device based on the camera offset.

2. The system according to claim 1, wherein each of the plurality of devices is configured to: compare the camera offset with a threshold; and adjust one or more video capture parameters of the device based on the amount by which the camera offset exceeds the threshold.

3. The system according to claim 1, wherein the system is further configured to: determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, adding the integer number of camera cycles to the immediately preceding camera synchronization time, wherein each of the plurality of devices is further configured to: use the camera of the device to capture video; and for each of the one or more additional camera synchronization times, determine that the additional camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

4. The system according to any one of claims 1-3, wherein each of the plurality of devices is configured such that the adjustment of the one or more video capture parameters by the device comprises: capturing a frame with an exposure time determined based on the camera offset for the device.

5. The system according to any one of claims 1-3, wherein each of the plurality of devices is configured such that the adjustment of the one or more video capture parameters by the device comprises: temporarily increasing or decreasing the capture cycle for the device based on the camera offset for the device.

6. The system according to any one of claims 1-3, wherein each of the plurality of devices is configured such that the adjustment of the one or more video capture parameters by the device comprises: stopping video capture of the device for a period of time determined based on the camera offset for the device.

7. The system according to any one of claims 1 - 3, wherein the at least one server includes a clock server configured to transmit the synchronous clock value to each of the plurality of devices.

8. The system according to claim 7, wherein the clock server is configured to transmit the synchronous clock value to each of the plurality of devices using the Internet protocol.

9. The system according to any one of claims 1 - 3, wherein the at least one server is configured to: store the current server time; and transmit a request for the current device time to each of the plurality of devices, wherein each of the plurality of devices is configured to transmit the current device time for the device to the at least one server in response to receiving the request, and wherein the at least one server is further configured to determine a first clock offset for each of the plurality of devices using the current server time, the current device time for the device, and the transmission time for communication between the at least one server and the device.

10. The system according to claim 9, wherein the at least one server is configured to: determine a second clock offset for each of the plurality of devices; and determine the clock drift for each of the plurality of devices by comparing the first clock offset and the second clock offset for the device.

11. The system according to any one of claims 1 - 3, wherein the at least one server includes a grabber server, and wherein each of the plurality of devices is configured to transmit video data to the grabber server.

12. The system according to claim 11, wherein the plurality of devices are configured to transmit video data to the grabber server using the Internet protocol.

13. The system according to any one of claims 1 - 3, wherein the plurality of devices include at least one portable device.

14. The system according to claim 13, wherein the at least one portable device includes a smartphone.

15. The system according to any one of claims 1 - 3, wherein the at least one server is configured to determine the camera cycle of the cameras for the plurality of devices, including by at least triggering a group of the plurality of devices to capture video and measuring the camera cycle for each of the devices in the group of the plurality of devices while the group of the plurality of devices captures video, and the at least one server determines the camera cycle of the cameras for the plurality of devices based on the measured camera cycles for the group of the plurality of devices.

16. A method for synchronizing video capture of corresponding cameras of a plurality of devices, the method comprises: determining the camera cycle of the cameras for the plurality of devices; determining the camera synchronization time, including by adding a synchronous clock value to an integer number of camera cycles; Capture video at each of the plurality of devices using the respective cameras of the plurality of devices; At each of the plurality of devices, once the device determines that the camera synchronization time has passed, determine a camera offset by calculating the difference between the timestamp of the current frame captured by the device and the camera synchronization time; Adjust one or more video capture parameters for one or more of the plurality of devices based on the respective camera offsets for the one or more of the plurality of devices.

17. The method according to claim 16, comprising: At each of the plurality of devices, compare the camera offset of the device with a threshold, wherein one or more video capture parameters for the device are adjusted based on the amount by which the camera offset for the device exceeds the threshold.

18. The method according to claim 16, further comprising: Determine one or more additional camera synchronization times, including: for each of the one or more additional camera synchronization times, by adding the integer number of camera cycles to the immediately preceding camera synchronization time; Capture video using the cameras of each of the plurality of devices; and For each of the plurality of devices and for each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine a camera offset by calculating the difference between the timestamp of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

19. The method according to any one of claims 16-18, wherein the adjustment comprises: For each of the one or more devices, trigger the device to capture a frame based on an exposure time determined based on the camera offset for the device.

20. The method according to any one of claims 16-18, wherein the adjustment comprises: For each of the one or more devices, temporarily increase or decrease the capture period for the device based on the camera offset for the device.

21. The method according to any one of claims 16-18, wherein the adjustment comprises: For each of the one or more devices, stop video capture of the device for a period of time determined based on the camera offset for the device.

22. The method according to any one of claims 16-18, further comprising: Transmit the synchronization clock value from a clock server to each of the plurality of devices.

23. The method according to claim 22, wherein the transmission of the synchronization clock value is performed using the Internet protocol.

24. The method according to any one of claims 16-18, further comprising: Store the current server time for the at least one server; Transmitting, by the at least one server, a request for the current device time to each of the plurality of devices; At each of the plurality of devices, in response to receiving the request, transmitting the current device time for the device; And Using the current server time, the current device time for the device, and the transmission time for communication between the at least one server and the device to determine a first clock offset for each of the plurality of devices.

25. The method according to claim 24, further comprising: Determining a second clock offset for each of the plurality of devices; And Determining a clock drift for each of the plurality of devices by comparing the first clock offset and the second clock offset for the device.

26. The method according to any one of claims 16 - 18, further comprising transmitting video data from each of the plurality of devices to a grabber server.

27. The method according to any one of claims 16 - 18, wherein the transmission of the video data is performed using the Internet protocol.

28. The method according to any one of claims 16 - 18, wherein the plurality of devices includes at least one portable device.

29. The method according to claim 28, wherein the at least one portable device includes a smart phone.

30. The method according to any one of claims 16 - 18, wherein determining a camera cycle of the cameras of the plurality of devices comprises: At least triggering a group of the plurality of devices to capture video, and measuring the camera cycle for each of the devices in the group of the plurality of devices when the group of the plurality of devices captures video, and wherein the determination of the camera cycle of the cameras of the plurality of devices is based on the measured camera cycles for the group of devices.

31. A video capture device, the device comprising: At least one processor; A camera; and a computer-readable storage medium including instructions which, when executed by the at least one processor, cause the device to: Receive a synchronous clock value from at least one server; Determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronous clock value; Use the at least one camera to capture video; Determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating a difference between the timestamp time of the current frame captured by the device and the camera synchronization time; Adjust one or more video capture parameters based on the camera offset; And Send the video to the at least one server.

32. The device according to claim 31, wherein the instructions, when executed by the at least one processor, cause the device to: Compare the camera offset with a threshold; and Adjust the one or more video capture parameters based on the amount by which the camera offset exceeds the threshold.

33. The device according to claim 31, wherein the instructions, when executed by the at least one processor, cause the device to: Determine one or more additional camera synchronization times, Including: For each of the one or more additional camera synchronization times, by adding the integer number of camera cycles to the immediately preceding camera synchronization time; Use the camera to capture video; And For each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

34. The device according to any one of claims 31 - 33, wherein the adjustment of the one or more video capture parameters by the device Includes: Capture frames with an exposure time determined based on the camera offset for the device.

35. The device according to any one of claims 31 - 33, wherein the adjustment of the one or more video capture parameters by the device Includes: Temporarily increase or decrease the capture cycle for the device based on the camera offset for the device.

36. The device according to any one of claims 31 - 33, wherein the adjustment of the one or more video capture parameters by the device Includes: Stop video capture of the device for a period of time determined based on the camera offset for the device.

37. The device according to any one of claims 31 - 33, wherein the instructions, when executed by the at least one processor, cause the device to send the video to the at least one server using the Internet protocol.

38. The device according to any one of claims 31 - 33, wherein the device is a portable electronic device.

39. The device according to any one of claims 31 - 33, wherein the device is a smart phone.

40. A computer program product, the computer program product including instructions that, when executed by at least one processor of a device for capturing video, cause the device to: Receive a synchronization clock value from at least one server; Determine a camera synchronization time, including by adding an integer number of camera cycles to the synchronization clock value; Use the at least one camera to capture video; Determine that the camera synchronization time has passed, and in response, determine a camera offset by calculating the difference between the timestamp time of the current frame captured by the device and the camera synchronization time; Adjust one or more video capture parameters based on the camera offset; And Send the video to the at least one server.

41. The computer program product according to claim 40, wherein the instructions, when executed by the at least one processor, cause the device to: Compare the camera offset with a threshold; and Adjust the one or more video capture parameters based on the amount by which the camera offset exceeds the threshold.

42. The computer program product according to claim 40, wherein the instructions, when executed by the at least one processor, cause the device to: Determine one or more additional camera synchronization times, including: For each of the one or more additional camera synchronization times, by adding the integer number of camera cycles to the immediately preceding camera synchronization time; Use the camera to capture video; and For each of the one or more additional camera synchronization times, once the device determines that the additional camera synchronization time has passed, determine the camera offset by calculating the difference between the timestamp of the current frame captured by the device and the additional camera synchronization time, and then adjust one or more video capture parameters of the device based on the camera offset.

43. The computer program product according to any one of claims 40-42, wherein the adjustment of the one or more video capture parameters by the device includes: Capture a frame with an exposure time determined based on the camera offset for the device.

44. The computer program product according to any one of claims 40-42, wherein the adjustment of one or more video capture parameters by the device includes: Temporarily increase or decrease the capture cycle for the device based on the camera offset for the device.

45. The computer program product according to any one of claims 40-42, wherein the adjustment of the one or more video capture parameters by the device includes: Stop video capture of the device for a period of time determined based on the camera offset for the device.

46. The computer program product according to any one of claims 40-42, wherein the instructions, when executed by the at least one processor, cause the device to send the video to the at least one server using the Internet protocol.

Citation Information

Patent Citations

  • Automatic alignment of video streams

    US20240007723A1