Patent Publication Number: US-9848132-B2

Title: Multi-camera time synchronization

Description:
BACKGROUND 
     Technical Field 
     This disclosure relates to a camera system, and more specifically, to time synchronization in multi-camera environments. 
     Description of the Related Art 
     Digital cameras have become ubiquitous. Multi-camera storytelling enables more comprehensive coverage of an event from different perspectives. To support multi-camera storytelling, multiple cameras need to be synchronized when shooting an event. Users are otherwise prevented from editing footage captured by the multiple cameras. However, it is very difficult to synchronize cameras using an external time signal. Cameras&#39; internal clocks are likely to drift and are not very accurate. Users&#39; experiences can be diminished if users are required to synchronize all cameras prior to shooting. Adding a master controller such as a timing master accessory (e.g., a WiFi remote control) will limit the consumer applications to only those users who proactively synchronize cameras. GPS signals may not provide sufficient time accuracy and at the same time consume a lot of power, thereby reducing a device&#39;s battery life. 
    
    
     
       BRIEF DESCRIPTIONS OF THE DRAWINGS 
       The disclosed embodiments have other advantages and features which will be more readily apparent from the following detailed description of the invention and the appended claims, when taken in conjunction with the accompanying drawings, in which: 
         FIG. 1 a    illustrates a perspective view of a camera system, according to one embodiment. 
         FIG. 1 b    illustrates a perspective view of a rear of the camera system, according to one embodiment. 
         FIG. 2 a    illustrates a perspective view of a camera for use with the camera system, according to one embodiment. 
         FIG. 2 b    illustrates a perspective view of a rear of a camera for use with the camera system, according to one embodiment. 
         FIG. 3  is a block diagram illustrating electronic components of a camera, according to one embodiment. 
         FIG. 4  is a block diagram illustrating a synchronization engine of a camera, according to one embodiment. 
         FIG. 5A  is a sequence diagram illustrating a synchronization between cameras, according to one embodiment. 
         FIG. 5B  is a flow diagram illustrating a method of aligning video clips and images, according to one embodiment. 
     
    
    
     DETAILED DESCRIPTION 
     Video clips and images can be aligned based on their capturing time to support a multi-camera storytelling. Video clips and images captured by one device (e.g., a camera) are associated with one or more synchronization labels such as synchronization device labels and synchronization time labels, both of which are generated by the device. Synchronization device labels can be used to identify devices that are synchronized. Synchronization time labels indicate relative timing between devices that are synchronized. When a first device is on, it transmits a first synchronization signal including device information such as the camera identifier and current date and time of the first device. The first device receives a second synchronization signal from a second device in response to the receipt by the second device of the first synchronization signal. Each of the two devices calculates a synchronization device label and a synchronization time label based on the first and second synchronization signals and associates the synchronization device label and synchronization time label with the video frames and images captured by the device. Video clips and images captured by synchronized devices can subsequently be aligned using the associated synchronization device labels and the synchronization time labels, for instance in post-processing. 
     The figures and the following description relate to preferred embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles of what is claimed. 
     Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality. The figures depict embodiments of the disclosed system (or method) for purposes of illustration only. One skilled in the art will readily recognize from the following description that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles described herein. 
     Example Camera System Configuration 
     A camera system includes a camera and a camera housing structured to at least partially enclose the camera. The camera comprises a camera body having a camera lens structured on a front surface of the camera body, various indicators on the front of the surface of the camera body (such as LEDs, displays, and the like), various input mechanisms (such as buttons, switches, and touch-screen mechanisms), and electronics (e.g., imaging electronics, power electronics, etc.) internal to the camera body for capturing images via the camera lens and/or performing other functions. The camera housing includes a lens window structured on the front surface of the camera housing and configured to substantially align with the camera lens, and one or more indicator windows structured on the front surface of the camera housing and configured to substantially align with the camera indicators. 
       FIGS. 1 a  and 1 b    illustrate various views of a camera system according to one example embodiment. The camera system includes, among other components, a camera housing  100 . In one embodiment, a first housing portion  101  includes a front face with four sides (i.e., a top side, bottom side, left side, and right side) structured to form a cavity that receives a camera (e.g. a still camera or video camera), and a second housing portion  102  structured to couple to the first housing portion  101  and securely enclose a camera within the camera housing  100 . The first housing portion  101  and second housing portion  102  can be pivotally coupled via a hinge mechanism (described in greater detail in  FIG. 1 b   ), and can securely couple via a latch mechanism  103 . In some embodiments, the camera housing  100  may not include one or more sides or faces. For instance, the camera housing  100  may not include a front or back face, allowing the front face and rear face of the camera to be exposed when partially enclosed by the top side, bottom side, left side, and right side of the camera housing  100 . 
     In one embodiment, the camera housing  100  has a small form factor (e.g., a height of approximately 4 to 6 centimeters, a width of approximately 5 to 7 centimeters, and a depth of approximately 1 to 4 centimeters), and is lightweight (e.g., approximately 50 to 150 grams). The camera housing  100  can be rigid (or substantially rigid) (e.g., plastic, metal, fiberglass, etc.) or pliable (or substantially pliable) (e.g., leather, vinyl, neoprene, etc.). In one embodiment, the camera housing  100  may be appropriately configured for use in various elements. For example, the camera housing  100  may comprise a waterproof enclosure that protects a camera from water when used, for example, while surfing or scuba diving. 
     Portions of the camera housing  100  may include exposed areas to allow a user to manipulate buttons on the camera that are associated with the camera functionality. Alternatively, such areas may be covered with a pliable material to allow the user to manipulate the buttons through the camera housing  100 . For example, in one embodiment the top face of the camera housing  100  includes an outer shutter button  112  structured so that a shutter button of the camera is substantially aligned with the outer shutter button  112  when the camera is secured within the camera housing  100 . The shutter button  112  of the camera is operationally coupled to the outer shutter button  112  so that pressing the outer shutter button  112  allows the user to operate the camera shutter button. 
     In one embodiment, the front face of the camera housing  100  includes a lens window  104  structured so that a lens of the camera is substantially aligned with the lens windows  104  when the camera is secured within the camera housing  100 . The lens window  104  can be adapted for use with a conventional lens, a wide angle lens, a flat lens, or any other specialized camera lens. 
     In one embodiment, the camera housing  100  includes one or more securing structures  120  for securing the camera housing  100  to one of a variety of mounting devices such as a clip-style mount. In the embodiment of  FIG. 1 a   , the camera housing  100  includes a plurality of protrusions  124 , each including a hole  126  configured to receive a coupling mechanism, for instance, a turnable handscrew to pivotally couple the camera housing  100  to a mounting device including a plurality of reciprocal protrusions. In other embodiments, the camera housing  100  can be secured to a different type of mounting structure, and can be secured to a mounting structure via a different type of coupling mechanism. 
     In one embodiment, the camera housing  100  includes an indicator window  106  structured so that one or more camera indicators are substantially aligned with the indicator window  106  when the camera is secured within the camera housing  100 . The indicator window  106  can be any shape or size, and can be made of the same material as the remainder of the camera housing  100 , or can be made of any other material, for instance a transparent or translucent material and/or a non-reflective material. 
     The described housing  100  may also be adapted for a wider range of devices of varying shapes, sizes and dimensions besides cameras. For example, an expansion module may be attached to housing  100  to add expanded features to electronic devices such as cell phones, music players, personal digital assistants (“PDAs”), global positioning system (“GPS”) units, or other portable electronic devices. 
       FIG. 1 b    is a rear perspective view of camera housing  100 , according to one example embodiment. The second housing portion  102  detachably couples with the first housing portion  101  opposite the front face of the first housing portion  101 . The first housing portion  101  and second housing portion  102  are collectively structured to enclose a camera within the cavity formed when the second housing portion  102  is securely coupled to the first housing portion  101  in a closed position. 
     In one embodiment, the second housing portion  102  pivots around a hinge mechanism  130 , allowing the second housing portion  102  to be either in a closed position relative to the first housing portion  101  (for instance, when the second housing portion  102  is securely coupled to the first housing portion  101  via the latch mechanism  103 ), or in an open position (when the first housing portion  101  and the second housing portion  102  are not coupled via the latch mechanism  103 ). In the open position, a camera can be removed from or placed into the camera housing  100 , and in the closed position, the camera can be securely enclosed within the camera housing  100 . In one embodiment, the latch mechanism  103  includes a hook-shaped lateral bar configured to securely couple around a reciprocal structure of the second housing portion  102 . In different embodiments, the latch mechanism  103  includes different fastening structures for securing the second housing portion  102  to the first housing portion  101 , for example a button assembly, a buckle assembly, a clip assembly, a hook and loop assembly, a magnet assembly, a ball and catch assembly, and an adhesive assembly, or any other type of securing mechanism. 
     In one alternative embodiment, the hinge  130  is instead located on the top face of the housing  100 , and the latch mechanism  103  is located on the bottom face of the housing  100 . Alternatively, the hinge  130  and the latch mechanism  103  may be located on opposite side faces of the camera housing  100 . 
     In one embodiment, the housing  100  includes a watertight seal so that the housing  100  is waterproof when the second housing portion  102  is in the closed position. For example, in one embodiment, the second housing portion  102  includes a sealing structure positioned on interior edges of the second housing portion  102 . The sealing structure provides a watertight seal between the first housing portion  101  and the second housing portion when the latch mechanism securely couples the housing portions. 
       FIG. 2 a    illustrates a camera  200  for use with the camera systems described herein, according to one example embodiment. The camera  200  is configured to capture images and video, and to store captured images and video for subsequent display or playback. The camera  200  is adapted to fit within a camera housing, such as the housing  100  discussed above or any other housing described herein. As illustrated, the camera  200  includes a lens  202  configured to receive light incident upon the lens and to direct received light onto an image sensor internal to the lens for capture by the image sensor. The lens  202  is enclosed by a lens ring  204 . 
     The camera  200  can include various indicators, including the LED lights  206  and the LED display  208  shown in  FIG. 2 a   . When the camera  200  is enclosed within the housing  100 , the LED lights and the LED display  208  are configured to substantially align with the indicator window  106  and be visible through the housing  100 . The camera  200  can also include buttons  210  configured to allow a user of the camera to interact with the camera, to turn the camera on, to initiate the capture of video or images, and to otherwise configure the operating mode of the camera. The camera  200  can also include one or more microphones  212  configured to receive and record audio signals in conjunction with recording video. In some embodiments, the camera  200  includes one or more sets of microphones, with each set of microphones including a first microphone and a second, dampened microphone, where the second dampened microphone is configured to capture audio at approximately 20 dB (or any other suitable magnitude) less than the first microphone. The side of the camera  200  includes an I/O interface  214 . Though the embodiment of  FIG. 2 a    illustrates the I/O interface  214  enclosed by a protective door, the I/O interface can include any type or number of I/O ports or mechanisms, such as USC ports, HDMI ports, memory card slots, and the like. 
       FIG. 2 b    illustrates a perspective view of a rear of a camera  200  for use with the camera systems described herein, according to one embodiment. The camera  200  includes a display  218  (such as an LCD or LED display) on the rear surface of the camera  200 . The display  218  can be configured for use, for example, as an electronic view finder, to preview captured images or videos, or to perform any other suitable function. The camera  200  also includes an expansion pack interface  220  configured to receive a removable expansion pack, such as an extra battery module, a wireless module, and the like. Removable expansion packs, when coupled to the camera  200 , provide additional functionality to the camera via the expansion pack interface  220 . 
     Example Camera Configuration 
       FIG. 3  is a block diagram illustrating electronic components of a camera, such as the camera  200 , according to one embodiment. The camera  200  includes one or more microcontrollers  302  (such as a processor) that control the operation and functionality of the camera  200 . An image sensor  312  captures light directed by the lens  202  to be incident upon the image sensor, and generates image data based on the light incident upon the image sensor at the time of capture. The microcontroller  302  receives the image data generated by the image sensor  312 . A lens and focus controller  314  is configured to control the operation and configuration of the camera lens  202 , for instance based on user input or based on analysis of captured image data. A system memory  304  is configured to store executable computer instructions that, when executed by the microcontroller  302 , perform the camera functionalities described herein. The microcontroller  302 , the image sensor  312 , the lens  202 , and the lens and focus controller  314  can be collectively referred to as an “image capturing module”. A synchronization engine  306  is configured to synchronize the camera  200  with other cameras or with other external devices, such as a remote control, a second camera (such as a slave camera or master camera), an external controller, or a smartphone. Video clips and/or images captured by cameras that are synchronized can be aligned in post-processing, as described in greater detail with respect to  FIGS. 4 through 5B . 
     A controller hub  308  transmits and receives information from user I/O components. In one embodiment, the controller hub  308  interfaces with the LED lights  206 , the display  208 , and the buttons  210 . However, the controller hub  308  can interface with any conventional user I/O component or components. For example, the controller hub  308  may send information to other user I/O components, such as a speaker. 
     A microphone controller  310  receives and captures audio signals from one or more microphones  212 . The microphone controller  310  is configured to control the operation of the microphones  212 . In some embodiments, the microphone controller  310  selects which microphones from which audio data is captured. For instance, for a camera  200  with multiple microphone pairs (each paid including a standard microphone and a dampened microphone), the microphone controller  310  selects one microphone of the pair to capture audio data. 
     Additional components connected to the microcontroller  302  include an I/O port interface  214  and an expansion pack interface  220 . The I/O port interface  214  may facilitate the camera  200  in receiving or transmitting video or audio information through an I/O port. Examples of I/O ports or interfaces include USB ports, HDMI ports, Ethernet ports, audioports, and the like. Furthermore, embodiments of the I/O port interface  214  may include wireless ports that can accommodate wireless connections. Examples of wireless ports include Bluetooth, Wireless USB, Near Field Communication (NFC), and the like. The expansion pack interface  220  is configured to interface with camera add-ons and removable expansion packs, such as an extra battery module, a wireless module, and the like. 
     Synchronization Engine 
       FIG. 4  is a block diagram illustrating a synchronization engine of a camera, according to one embodiment. The synchronization engine  306  of  FIG. 4  includes a transmission module  402 , a receiving module  404 , and a synchronization determination module  406 . The transmission module  402  transmits a synchronization signal including a unique identifier (ID) identifying the camera (e.g., the camera  200 ). In addition, the synchronization signal transmitted by the transmission module  402  includes a current date and time of the camera (e.g., the camera  200 ). A transmission module  402  can be configured to transmit synchronization signals anytime the camera is on, regardless of whether the camera is capturing images or videos. In some embodiments, the transmission module  402  is configured to transmit synchronization signals periodically (e.g., every one minute). The transmission module  402  of a slave device, in response to a synchronization signal received from a master device, transmits a corresponding synchronization signal. The synchronization signals may be based on various wireless communication protocols, such as, for example, Bluetooth, Wi-Fi such as IEEE 802.11, NFC, Zigbee, Ant+ protocol, WiFi Direct protocol, etc. 
     The receiving module  404  is configured to receive synchronization signals from one or more other devices. The received signals include information such as the unique IDs of the one or more other devices as well as the current date and time of the one or more other devices when they transmit the synchronization signals. In various embodiments, a device can discover the other devices using the signals received from one or more other devices. In some embodiments, a device can pair with all the devices it has discovered. In some embodiments, a device presents all the devices it has discovered to a user and pairs with only the devices selected by the user. In some embodiments, when synchronization signals travel over limited distances, only devices within a predetermined proximity can be paired. At a particular time point, a device may be paired with up to a predetermined number of other devices. Devices that are paired can be configured to actively communicate with each other. Note that devices that are paired can be synchronized, and can subsequently be unpaired. In other words, devices that are synchronized may move out of communicative range of each other—in such embodiments, the synchronized devices can still capture images and videos, can include synchronization labels with the captured images and videos, and the captured images and videos can be subsequently aligned in post-processing using the synchronization labels. 
     The synchronization determination module  406  determines synchronization information with one or more other devices. The synchronization information can be used to identify devices that are synchronized and to identify video frames or images that are captured substantially at the same time. In some embodiments, the synchronization determination module  406  provides the unique identifier of the device to the transmission module  402  and triggers the transmission module  402  to transmit synchronization signals including device information such as the unique identifier, the current date, or the current time at a particular time point. The synchronization determination module  406 , based on the device information included in the synchronization signal received from another device, such as the unique ID, the current date, and the current time of the other device, determines the synchronization information with the other device including a synchronization device label and a synchronization time label. The synchronization determination module  406  further associates the determined synchronization information with the other device, including the synchronization device label and the synchronization time label, with one or more captured images or video frames. 
     The synchronization device label identifies a pair of synchronized devices including a master device and a slave device. The synchronized devices are those devices for which a temporal relationship has been established. The synchronization device label represents the unique identifiers of the devices (i.e., the unique identifier transmitted by the transmission module  402  of a master device and the unique identifier received by the receiving module  404  of a slave device). The synchronization determination modules  406  of a master device and of a slave device determine the synchronization device labels similarly such that the synchronization device labels determined by the master device and the slave device match. A master device&#39;s receiving module  404  receives a synchronization signal transmitted by a slave device in response to receiving the synchronization signal transmitted by the master device. A slave device&#39;s transmission module  402  transmits a synchronization signal in response to its receiving module  404  receiving a synchronization signal from a master device. A synchronization determination module  406  determines the synchronization device label based on the unique identifiers of the master device and of the slave device. As one example, the synchronization determination module  406  determines the synchronization device label as a sum of hash values of the unique identifiers of a master device and of a slave device. As such, devices&#39; privacy is protected as the devices&#39; identifiers cannot be reversely determined from synchronization device labels. In other embodiments, the synchronization determination module  406  may determine the synchronization device label as a function of the unique identifiers of the devices. Accordingly, when the synchronization device labels associated with two images or video frames captured by different devices match, it can be determined (for instance, in post-processing) that the images or video frames are captured by devices that are synchronized. The temporal relationship between the devices can also be established. That is, the relative timing between the video frames captured by the synchronized devices can be determined from a synchronization time label. 
     The synchronization time label indicates the relative timing between a pair of synchronized devices including a master device and a slave device. The synchronization determination module  406  of a master device determines the synchronization time label as the difference between the current date and time of the master device and that of the slave device. Conversely, the synchronization determination module  406  of a slave device determines the synchronization time label as the difference between the current date and time of the slave device and that of the master device. 
     As the transmission module  402  of a device may transmit synchronization signals periodically, the synchronization determination module  406  of the device may determine synchronization device labels and the synchronization time labels periodically based on the synchronization signals periodically transmitted by the transmission module  402  and the synchronization signals periodically received by the receiving module  404  from another device. For example, the synchronization determination module  406  of a device may determine the synchronization device label and the synchronization time label periodically when the transmission module  402  of the device transmits the synchronization signals. As another example, the receiving module  404  of a device provides device information such as the unique identifier, the current date, and the current time of another device to the synchronization determination module  406  upon receiving a synchronization signal from the other device. The synchronization determination module  406  of the device determines the synchronization device label and the synchronization time label upon receiving the synchronization information from the receiving module  404  of the device. As a further example, the synchronization determination module  406  of a device regularly obtains synchronization information such as the unique identifier, the current data, and the current time received from one or more other devices from the receiving module  404  and determines one or more synchronization device labels and synchronization time labels upon receiving the synchronization information from the receiving module  404 . 
     The synchronization determination module  406  of a device modifies one or more video frames it captures with the synchronization device label and the synchronization time label. The synchronization determination module  406  of a device associates the determined synchronization device label and synchronization time label with images and video captured by the device. For example, the synchronization device label and synchronization time label can be included within image or video metadata (either within each video frame or within each video clip), in a table associating the synchronization information with captured images and videos, or The synchronization determination module  406  may associate multiple synchronization device labels and synchronization time labels with a video frame the device captures when the device is paired with multiple other devices. The synchronization determination module  406  may associate one or more video frames the device has captured or is about to capture with the determined synchronization device label and the synchronization time label. For a particular synchronization device label determined for a pair of synchronized devices, the synchronization determination module  406  of one device associates the synchronization time label with the video frames it captures until the synchronization time label is updated. In some embodiments, for a pair of synchronized devices with a particular synchronization device label, the devices update the synchronization time labels periodically to reduce the effect that various dynamic factors may have on synchronization time labels, thereby improving the accuracy of synchronization time labels. Exemplary dynamic factors include propagation delays, individual device clock drifting, or a relative distance change between the devices. For example, at a predetermined time point after a master device and a slave device have been paired, a previous master device becomes the new slave device and a previous slave device becomes the new master device. Each device calculates an updated synchronization time label, and further compares the updated synchronization time label to the previous synchronization time label, beneficially enabling the devices to account for a processing lag by one of the devices that affects the generation of the synchronization time labels. In such embodiments, the synchronization determination module  406  associates the previous or the updated synchronization time label with the video frames captured by the device, depending on which synchronization time label is determined to represent a more accurate time differential between the devices. 
     Temporal relationships between videos captured by different devices can be established, for example, by using synchronization device and time labels. Video clips produced by different devices can thereby be aligned and edited in a single editing environment. Devices that are synchronized capture video frames associated with the same synchronization device label. That is, video frames associated with matching synchronization device labels are captured by devices that are synchronized. The temporal relationship between the video frames captured by the synchronized devices can be determined according to the synchronization time label. That is, relative timing between the video frames or images captured by the synchronized devices can be determined and video frames or images that are captured substantially at the same time should be aligned. In various embodiments, a device associates its device identifier and a starting time point of a video clip with the video clip. As a result, a local time point when a video frame of the video clip is captured can be determined by using the starting time point of the video clip as well as the time period relative to the starting time point. The local time point of a first video frame captured by a master or slave device can be converted to a local time stamp of the slave or master device, respectively, according to the synchronization time label associated with the first video frame. The converted local time stamp of the slave or master device is used to identify a second video frame captured by the slave or master device substantially at the same time as the first video frame captured by the slave or master device, respectively. As a result, the video frames captured by the synchronized devices substantially at the same time can be determined. 
     In addition, temporal relationships between video clips captured by devices that are not paired may also be established. For instance, devices outside the predetermined proximity limited by the distance synchronization signals can travel cannot be paired. However, unpaired devices may be indirectly synchronized by other devices paired with those devices. For example, devices belonging to friends at opposite corners of a stadium watching a baseball game cannot be paired with each other but each of them can be paired with a common device belonging to a friend who is located in the middle of the stadium. Because temporal relationships can be established between video clips captured by devices that are synchronized and within the distance limit supported by the synchronization signals, a temporal relationship between video clips captured by a first and a second device may be established or inferred from an established temporal relationship between video clips captured by the first device and a third device, and an established temporal relationship between video clips captured by the second device and the third device. Returning to the baseball game example, relative temporal relationships between the video clips captured by the unpaired devices may be established via the synchronization time labels established with a common device. Accordingly, in a single editing environment, video clips captured by unpaired devices can be aligned and accordingly edited. For example, video clips of an event captured by unpaired devices may be uploaded to a cloud service where editing based on the temporal relationships established between the unpaired devices and a common device is provided. 
       FIG. 5A  is a sequence diagram illustrating a synchronization between cameras, according to one embodiment. A first device  502  transmits a first synchronization signal  506  and initiates the synchronization process between the first device  502  and a second device  504 . The first synchronization signal  506  includes device information such as the identifier as well as the current date and time of the first device  502 . The first synchronization signal  506  may be received by one or more other devices within a predetermined proximity. The first device  502  may transmit the first synchronization signal  506  periodically. 
     The second device  504  receives the first synchronization signal  506  and responds to the first device  502  with a second synchronization signal  508 . The second synchronization signal  508  includes device information such as the identifier as well as the current date and time of the second device  504 . The first device  502  determines  510  a synchronization device label and a synchronization time label based on its identifier and current date and time included in the first synchronization signal  506  and the second device&#39;s identifier and current and date and time included in the second synchronization signal  508 . The second device  504  also determines  512  another synchronization device label and another synchronization time label based on the second device identifier and current date and time included in the second synchronization signal  508  as well as the first device&#39;s identifier and current date and time included in the first synchronization signal  506 . The first device  502  and the slave device  504  may determine the synchronization device and time labels at the same time or at different times. 
     The first device  502  and the second device  504  may be paired and the synchronization device and time labels may be determined before or when one or both of the first and second devices  502  and  504  capture video or images. The first device  502  associates  514  the determined synchronization device and time labels with video frames or images captured by the first device. The second device  504  also associates  516  the determined synchronization device and time labels with video frames or images captured by the second device. Accordingly, the video frames or images captured by the first device  502  and the second device  504  can be aligned based on the synchronization device and time labels associated with each. After capturing images and/or video, the first and second devices  502  and  504  provide  518  and  520  the video clips or images, for example, to one or more users, to a cloud server, or to any other suitable device or entity. The video clips or images are associated with synchronization device and time labels and can be aligned as described with respect to  FIG. 5B . 
       FIG. 5B  is a flow diagram illustrating a method of aligning video clips and images, according to one embodiment. Video frames and/or images associated with synchronization device labels and synchronization time labels generated by the devices that captured the video frames and images are received  550 , for instance by a server, a desktop, or a mobile device. Users may upload video clips or images to the computing device, a storage device, or a cloud server, and can access the uploaded video clips or images with a media processing device (such as a computer or mobile device). 
     The media processing device identifies  552  video frames or images that have matching synchronization device labels. Video frames or images having matching synchronization device labels are captured by devices that are synchronized. That is, the temporal relationship between these video frames or images can be established using the synchronization time labels. For example, the media processing device identifies a first set of video frames from the first video clip and a second set of video frames from the second video clip. The first set of video frames and the second set of video frames each are associated with the same synchronization device label. 
     Among the video frames that have matching synchronization device labels, the media processing device identifies  554  the video frames or images that are captured at substantially the same time based on the synchronization time labels associated with the video frames. In other words, the media processing device identifies the video frames or images that are captured by a pair of synchronized devices at substantially the same time. The media processing device selects a first subset of video frames from the first set of video frames from the first video clip and identifies a first synchronization time label associated with the first subset of video frames. The media processing device selects a second subset of video frames from the second set of video frames based on the identified first synchronization time label and a second synchronization time label associated with the second subset of video frames. The first synchronization time label and the second synchronization time label represent a substantially similar time difference. 
     A local time point of a video frame can be determined based on a starting time point of the video clip including the video frame. The local time point of a first video frame captured at a first device can be converted to a corresponding local time point at the second device that is synchronized with the first device by adding or subtracting the time difference included within the synchronization time label corresponding to the second device. The media processing device can identify a second video frame captured by the second device based on the converted local time point at the second device. The second video frame and the first video frame are captured substantially at the same time. Accordingly, the media processing device can identify the video frames with matching synchronization device labels that are captured substantially at the same time. 
     Subsequently, the media processing device organizes  556  all video frames and images of the received video clips or images such that the video frames and images captured substantially at the same time are aligned. Accordingly, video frames and images that are captured by different devices at the same time can be correlated, combined into a single multi-camera video or set of images, and presented to a user of the media processing device, for instance via a hardware display. 
     Additional Configuration Considerations 
     Throughout this specification, some embodiments have used the expression “coupled” along with its derivatives. The term “coupled” as used herein is not necessarily limited to two or more elements being in direct physical or electrical contact. Rather, the term “coupled” may also encompass two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other, or are structured to provide a thermal conduction path between the elements. 
     Likewise, as used herein, the terms “comprises,” “comprising,” “includes,” “including,” “has,” “having” or any other variation thereof, are intended to cover a non-exclusive inclusion. For example, a process, method, article, or apparatus that comprises a list of elements is not necessarily limited to only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. 
     In addition, use of the “a” or “an” are employed to describe elements and components of the embodiments herein. This is done merely for convenience and to give a general sense of the invention. This description should be read to include one or at least one and the singular also includes the plural unless it is obvious that it is meant otherwise. 
     Finally, as used herein any reference to “one embodiment” or “an embodiment” means that a particular element, feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. 
     Upon reading this disclosure, those of skill in the art will appreciate still additional alternative structural and functional designs for a camera expansion module as disclosed from the principles herein. Thus, while particular embodiments and applications have been illustrated and described, it is to be understood that the disclosed embodiments are not limited to the precise construction and components disclosed herein. Various modifications, changes and variations, which will be apparent to those skilled in the art, may be made in the arrangement, operation and details of the method and apparatus disclosed herein without departing from the spirit and scope defined in the appended claims.