The specification relates to synchronisation of media feeds.
Media recording of the same moment with multiple devices is nowadays common as many people carry mobile devices capable of recording media content. Several video and/or audio feeds relating to the same event may be used in many occasions, while a challenging issue is the efficient video and/or audio synchronization between the different recording devices.
In a first aspect, this specification describes a method comprising recording, at a recording device, a media feed relating to a scene; receiving a series of wireless synchronisation messages at the recording device; recording a time stamp value with respect to each of the received messages indicating a time of receipt, and storing the time stamp values and the media feed.
The method may further comprise uploading the time stamp values and the media feed to a remote apparatus for synchronisation with other media feeds.
The interval between messages may be varied randomly or pseudo-randomly.
Each message may contain a coarse synchronisation value and the method may further comprise sending the coarse synchronisation value relating to each time stamp value to the remote apparatus.
The coarse synchronisation value may be a random or pseudo-random variable.
The coarse synchronisation value may be determined from Linear Feedback Shift Register values contained in one or more of the received messages.
The coarse synchronisation value may be derived from a counter value contained in one or more of the received messages.
The method may further comprise associating each time stamp value with a timing instant of the media feed.
Associating each time stamp value with a timing instant of the media feed may comprise applying time stamp data to the media feed as metadata within a media file.
The method may further comprise storing time stamp data in a file separate from the media file.
The method may further comprise commencing recording in response to receiving a message containing an instruction to commence recording.
The method may further comprise storing an identifier of a remote device contained in a received message and scanning for further advertising packets from the remote device having the identifier.
The method may further comprise stopping recording in response to receiving a message containing an instruction to stop recording.
The method may further comprise calculating an angle of arrival of the received messages and outputting the calculated angle of arrival to a remote apparatus.
In a second aspect, this specification describes a method comprising receiving, from each of a first and second recording device, a media feed recorded by the respective recording device and a series of time stamp values, wherein each time stamp value indicates a time of receipt of one of a series of wireless synchronisation messages at the respective recording device, and aligning the set of time stamp values received from a first recording device with the set of time stamp values received from a second recording device to synchronise the media feed received from the first recording device with the media feed received from the second recording device.
The method may further comprise associating the series of time stamp values received from the first recording device with the media feed received from the first recording device and associating the series of time stamp values received from the second recording device with the media feed received from the second recording device.
The method may further comprise receiving coarse synchronisation values from each of the recording devices to using the coarse synchronisation values to coarse-synchronise the respective feeds.
In a third aspect, this specification describes a computer program comprising instructions that, when executed by a computing apparatus, cause the computing apparatus to perform the method of the first aspect or the second aspect.
In a fourth aspect, this specification describes an apparatus comprising at least one processor; at least one memory having computer-readable instructions stored thereon, the computer-readable instructions when executed by the at least one processor causing the apparatus at least to record, at a recording device, a media feed relating to a scene;
In a fifth aspect, this specification describes an apparatus comprising at least one processor; at least one memory having computer-readable instructions stored thereon, the computer-readable instructions when executed by the at least one processor causing the apparatus at least to receive, from each of a first and second recording device, a media feed recorded by the respective recording device and a series of time stamp values, wherein each time stamp value indicates a time of receipt of one of a series of wireless synchronisation messages at the respective recording device, and align the set of time stamp values received from a first recording device with the set of time stamp values received from a second recording device to synchronise the media feed received from the first recording device with the media feed received from the second recording device.
In a sixth aspect, this specification describes a-readable medium having computer-readable code stored thereon, the computer-readable code, when executed by at least one processor, causing performance of recording, at a recording device, a media feed relating to a scene; receiving a series of wireless synchronisation messages at the recording device; recording a time stamp value with respect to each of the received messages indicating a time of receipt, and storing the time stamp values and the media feed.
In a seventh aspect, this specification describes a computer-readable medium having computer-readable code stored thereon, the computer-readable code, when executed by at least one processor, causing performance of receiving, from each of a first and second recording device, a media feed recorded by the respective recording device and a series of time stamp values, wherein each time stamp value indicates a time of receipt of one of a series of wireless synchronisation messages at the respective recording device, and aligning the set of time stamp values received from a first recording device with the set of time stamp values received from a second recording device to synchronise the media feed received from the first recording device with the media feed received from the second recording device.
In an eighth aspect, this specification describes an apparatus comprising means for recording, at a recording device, a media feed relating to a scene; means for receiving a series of wireless synchronisation messages at the recording device; means for recording a time stamp value with respect to each of the received messages indicating a time of receipt, and means for storing the time stamp values and the media feed.
In a ninth aspect, this specification describes an apparatus comprising means for receiving, from each of a first and second recording device, a media feed recorded by the respective recording device and a series of time stamp values, wherein each time stamp value indicates a time of receipt of one of a series of wireless synchronisation messages at the respective recording device, and means for aligning the set of time stamp values received from a first recording device with the set of time stamp values received from a second recording device to synchronise the media feed received from the first recording device with the media feed received from the second recording device.
In a tenth aspect, this specification describes a system comprising a plurality of apparatuses according to the fourth, sixth or eighth aspect and an apparatus according to the fifth, seventh or ninth aspect.
For a more complete understanding of the methods, apparatuses and computer-readable instructions described herein, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
Embodiments described in this specification provide a mechanism for wirelessly synchronising video and/or audio feeds recorded by multiple recording devices. This may be done without a wired connection between the recording devices and utilises a time of receipt of a plurality of wireless synchronisation messages received in series, such as Bluetooth Low Energy (BLE) advertisement messages transmitted by a control device. In the following description, the terms packets and messages may be used interchangeably.
In the example shown in
Each of the recording devices 20 comprises a BLE module which may be configured to scan for BLE advertisement messages. For example, a certain UUID corresponding to the media recording application and a certain Camera ID corresponding to the control device 10 may be searched for.
Each of the recording devices 20 is configured to record time instants, for example an instant when an advertisement with a certain UUID has been received. Alternatively, each of the recording devices 20 is configured to record time instants when any advertisement message is received. The UUID may be monitored so that only those advertisements from the correct control device 10 are used in the synchronisation process. Alternatively, the UUID information contained within a message may be used only to filter out control packets used to control media recording so that only messages containing instructions to start or stop recording received from a particular control device 10 cause the recording device 20 to start, pause or stop a recording.
The control device 10 sends BLE advertisement messages in advertising events, as shown in
An advertising event can be one of the following types as defined in the Bluetooth specification v4.2:
For all undirected advertising events or connectable directed advertising events used in a low duty cycle mode, the time between the start of two consecutive advertising events (T_advEvent) may be computed as follows for each advertising event:
T_advEvent=advInterval+advDelay
The advInterval may be an integer multiple of 0.625 ms in the range of 20 ms to 10.24 s. If the advertising event type is either a scannable undirected event type or a non-connectable undirected event type, the advInterval may be at least 100 ms. If the advertising event type is a connectable undirected event type or connectable directed event type used in a low duty cycle mode, the advInterval may be 20 ms or greater.
The advDelay is a pseudo-random value with a range of 0 ms to 10 ms generated by the data link layer for each advertising event. The advDelay may also be referred to as advertisement jitter.
The format of advertising data and scan response data is shown in
The data structure shown in
An example of the specific advertising data structure of a BLE advertisement message 200 which may be used for synchronization is shown in
The data structure 200 may comprise a control data field 205. The control data field 205 may be, for example, 1 octet in length. A hexadecimal entry of 0x00 may mean “start recording” and a hexadecimal entry of 0x01 may be represent “stop/pause recording” instruction. Therefore, an early message transmitted by the control device 10 may have a control data field 205 value of 0x00 to start the recording. A later message may contain a control data field 205 value of 0x01 to stop the recording.
The advertisement message may also include data which can be used to estimate the relative orientation of the recording devices 20 with respect to the control device 10 using, for example, angle of arrival (AoA) and angle of departure (AoD) methods. AoA and/or AoD can be used to estimate relative positions of the recording devices 20 and may be used for example in the audio/video editing phase to position the media in space in addition to time synchronization.
The BLE advertisement message structure shown in
Fine tuning may then be performed by comparing receipt (RX) time stamps applied to advertisement messages received at each of the recording devices, as shown in
The recording devices 20 receive the BLE advertisement packets from the control device 10 and time stamp the time of receipt of the advertisement packets. In some embodiments, the time stamps are applied as tags to a video and/or audio feed file that is being recorded by the recording device 20. In other embodiments, the time stamps are stored separately.
The jitter introduced to the interval may be contained in the packet itself in the rand field 204. The variation in the interval between successive BLE advertisement messages allows for the audio/video feeds to be synchronised. If the interval between BLE advertisement messages were constant, the intervals between successive BLE advertisement messages would not be differentiable and so video synchronisation would not be possible due to the many possible permutations of media file alignment that would be possible.
Alternatively, the recorded media feeds may be output to a remote server together with the RX time stamps relating to the received BLE advertisement messages stored as a separate file so that the tagging of the feeds is performed remotely. The feeds, tagged remotely from the recording devices 20, may then synchronised at a remote apparatus such as a video editing computer.
The recording devices 20 may identify that the received messages are BLE advertisement messages transmitted from the control device 10 from the UUID field 202. This content may be used for recording devices 20 to search for BLE advertisement messages in order to stamp the video feed. The recording devices 20 may record only for example the timestamp and the BLE identifier of all received packets.
Each recording device 20 may stored the recorded video feeds and time stamp data locally, for example on a memory card. The video feeds and time stamp data may be uploaded, for example to a remote server 30 after users have recorded videos from the event. Alternatively, the video feeds and time stamp data may be stored at a network attached storage (NAS) device. The recording devices 20 shown in
The editing apparatus 40 may be a computer comprising a processor 41, a storage device 42 (having a non-volatile memory 43 and a volatile memory 44) and a user input/output 45. The non-volatile memory 43 may have code 43A stored thereon in the form of an operating system and software. The user/input 45 comprises input and output units such as a monitor, speakers, keyboard, mouse and so forth. Input and output functions may be combined in the form of a touchscreen.
The editing apparatus 40 may apply the time stamps to the audio/video feeds, as represented in
In some embodiments, the synchronisation process may be as follows. Video editing software (which is stored in the non-volatile memory 43 of the editing apparatus 40) takes the video from the first recording device 20a and which corresponds to the video feed recorded in
Table 1 shows information collected at a first recording device 20a. The first recording device 20a may be recording a video. A series of nine BLE advertisement messages are received. The first message is received at a time corresponding to 00:00:134 in the video timeline. The message is received from a device 10 having a MAC address 87:23:11:09:23:14. The first message contains data A22. Subsequent messages are received from the device 10 having MAC address 87:23:11:09:23:14. Timing values corresponding to time instants in the recorded media feed are also recorded.
A22
A23
A23
A23
A24
A22
A23
A23
A23
A24
A24
Similarly, the messages are also received at the second recording device 20b. Timing information, MAC address of the transmitting device 10 and additional data is likewise recorded, as shown in Table 2.
The synchronisation application identifies from the coarse synchronisation data obtained from each recording device 20 a pattern of received messages that may be synchronised. The coarse synchronisation data entries in Tables 1 and 2 that are highlighted in bold are identified as relating to receipt of BLE messages at respective recording devices 20 that may be synchronised. Fine synchronisation of the audio/video feeds may then be performed.
The timing values in the respective media timelines of the recorded feeds that correspond to the receipt of the series of BLE advertisement messages are compared. As shown in Table 3, the difference between the receipt times in the first media feed and the second media feed is constant for the series of BLE advertisement messages. This indicates that the two media feeds are synchronised. The synchronisation may still be completed even though the first device 20a failed to receive the fifth BLE advertisement messages.
In alternative embodiments, the BLE advertisement message comparison could be performed firstly by creating a timeline where the recordings are taken and videos are selected based on the timeline for producing one editorial video. Server 30 may contain multiple videos and the user of the editing apparatus 40 may select videos from certain area at the certain time, for example, “video of a concert that occurred yesterday at 18:00-20:00 at Tampere city centre”.
In alternative embodiments, BLE advertisement messages can also be received and recorded by the recording devices before the recording. In this case, time stamps corresponding to the BLE advertisement messages are recorded and compared to the timeline of the video or audio file after the recording has been stopped.
In alternative embodiments, BLE advertisement messages can also be received and recorded by the recording devices after the recording. In this case, time stamps corresponding to the BLE advertisement messages may be applied to the video or audio file after the final BLE advertisement message has been received. The last received BLE advertisement message may contain an instruction to say that the BLE advertisement message is indeed the final one. The recording device 20 or a remote device may then applies the tags to the timeline of the video or audio file video file.
As explained above, BLE transmitters can be located in a remote control device 10 or in recording devices 20 such as cameras. Alternatively, the BLE transmitters may be BLE beacon tags that are not otherwise involved with the recording process but whose BLE advertisement messages may be used for synchronization.
The data received during the recording may be included to media recording for example as metadata within the video file or audio file. Alternatively, the received timing data may be contained in a separate file.
At step 6.1, the recording device 20 receives a user input to start recording the event 25. This may be caused by a user pressing a physical or graphical record button on the recording device 20. At step 6.2, the recording device records the event 25. The recording may be a video recording, an audio recording or a video and audio recording. At step 6.3, the recording device 20 receives a BLE advertisement message. The recording device 20 may apply a time stamp to the received message and store the time stamp value at step 6.4. Additionally, coarse synchronisation data may stored at this step. Steps 6.2, 6.3 and 6.4 are repeated until the recording device 20 detects that it should stop recording at step 6.5. This may be in response to a user input to stop recording. This may be caused by a user pressing a physical or graphical stop button on the recording device 20. The recording device 20 stops recording at step 6.6. At step 6.7, the tagged video/audio file is stored, for example on a memory card of the recording device 20. Optionally, the stored video/audio file and BLE advertisement data may be uploaded at step 6.8 to the server 30.
In the above example shown in
In other embodiments, the record and stop instructions are contained within the BLE advertisement messages themselves.
Referring to
Referring to
In one embodiment of the invention, Linear Feedback Shift Register (LFSR) based pseudo-random advertising is used. The control device 10 reports its LSFR state value within an advertising packet, which makes it possible for the recording device 20 (that has similar LFSR) to calculate when the next advertising packets will come from the same control device 10. The LFSR value (or again the timings of the received adverts) can be stored and compared to synchronize the videos. The LSFR value used for the advertisement jitter generation may be used to estimate previous and following advertisement instants.
The jitter (advDelay) value may be pseudo-random instead of true random, and thus may be generated using the LSFR. If this value is received in at least one advertisement, in addition to advertisement interval (advInterval in
Furthermore, the LSFR value can be for example used to estimate packet reception times of the packets which were not received or to estimate packet reception times outside recording time. In some cases this could be used instead of advertisement jitter due to jitter is defined by LSFR.
In another embodiment, a counter is added to the advertising packet payload. The counter value is increased by one at every advertising event. The counter value can be stored by the recording devices 20 and used for synchronizing/aligning the videos. The packet reception times are recorded and compared to media feed timeline and the counter value is also stored in the advertisement data file.
In this embodiment the counter value takes the place of the rand field 204. The counter is increased every packet by the radio transceiver and rand 204 is updated by upper SW layers which doesn't have knowledge or control of actual transmissions of the packet, thus it is updated less frequently, for example once in 30 s.
After the tagged media files have been uploaded by each of the recording devices 20 to the server 30, the video editing computer 40 may then align the feeds from the respective recording devices 20 to synchronise the recordings from multiple recording devices by correlating advertisements tagged to the multiple recordings. Furthermore, geolocation and coarse timing information may be used. Geolocation may be based on coordinates recorded by the recording device 20 for example using GPS. Location may also be based on advertisement devices MAC address or Camera ID 203.
The BLE advertisement messages may be used by the control device 10 and recording devices 20 to determine angle-of-arrival (AoA) or angle-of-departure (AoD) information. Each of the recording devices 20 may be provided with an antenna array and code to provide this functionality.
The BLE advertisement messages transmitted by the control device 10 may also serve as AoA packets and the recording devices 20 execute antenna switching during the reception of the packets. The recording devices 20 scan for the BLE advertisement messages and execute amplitude and phase sampling during reception of these packets. The recording devices 20 may then utilize the amplitude and phase samples, along with its own antenna array information, to estimate the AoA of the packet from the control device 10. This information may be stored along with the time stamp information and audio/video feed and subsequently uploaded.
In embodiments using AoD, the control device 10 comprises an array of antennas. The control device 10 acts as a position beaconing device transmitting BLE advertisement messages which also act as AoD packets. The control device 10 executes antenna switching during the transmission of the packet. The recording devices 20 act as tracker devices and scan for the AoD packets and execute amplitude and phase sampling during reception of these packets. The recording devices 20 may then utilize the amplitude and phase samples, along with antenna array parameter information, to estimate the AoD of the packet from the control device 10.
The camera module 202 comprises hardware and software components required to record still and motion pictures as is known in the art. For example, the camera module 202 comprises a lens, a CMOS sensor or CCD image sensor for image sensing and so forth.
The video and audio processors may be separate processors, may be combined in a single multimedia processor or, as shown in
The computer readable instructions may be pre-programmed into the apparatuses 10, 20, 40. Alternatively, the computer readable instructions may arrive at the apparatuses 10, 20, 40 via an electromagnetic carrier signal or may be copied from a physical entity 1200 (see
Whilst embodiments have been described using BLE messages, alternative low-power radio technologies may be used such as IEEE 802.15.4 or 802.11.
The term ‘memory’ when used in this specification is intended to relate primarily to memory comprising both non-volatile memory and volatile memory unless the context implies otherwise, although the term may also cover one or more volatile memories only, one or more non-volatile memories only, or one or more volatile memories and one or more non-volatile memories. Examples of volatile memory include RAM, DRAM, SDRAM etc. Examples of non-volatile memory include ROM, PROM, EEPROM, flash memory, optical storage, magnetic storage, etc.
Embodiments of the present disclosure may be implemented in software, hardware, application logic or a combination of software, hardware and application logic. The software, application logic and/or hardware may reside on memory, or any computer media. In an example embodiment, the application logic, software or an instruction set is maintained on any one of various conventional computer-readable media. In the context of this document, a “computer-readable medium” may be any media or means that can contain, store, communicate, propagate or transport the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer.
A computer-readable medium may comprise a computer-readable storage medium that may be any tangible media or means that can contain or store the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer as defined previously.
According to various embodiments of the previous aspect of the present disclosure, the computer program according to any of the above aspects, may be implemented in a computer program product comprising a tangible computer-readable medium bearing computer program code embodied therein which can be used with the processor for the implementation of the functions described above.
Reference to “computer-readable storage medium”, “computer program product”, “tangibly embodied computer program” etc, or a “processor” or “processing circuit” etc. should be understood to encompass not only computers having differing architectures such as single/multi processor architectures and sequencers/parallel architectures, but also specialised circuits such as field programmable gate arrays FPGA, application specify circuits ASIC, signal processing devices and other devices. References to computer program, instructions, code etc. should be understood to express software for a programmable processor firmware such as the programmable content of a hardware device as instructions for a processor or configured or configuration settings for a fixed function device, gate array, programmable logic device, etc.
By way of example, and not limitation, such “computer-readable storage medium” may mean a non-transitory computer-readable storage medium which may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. It should be understood, however, that “computer-readable storage medium” and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of “computer-readable medium”.
Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated to circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and/or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.
If desired, the different steps discussed herein may be performed in a different order and/or concurrently with each other. Furthermore, if desired, one or more of the above-described steps may be optional or may be combined.
Although various aspects of the present disclosure are set out in the independent claims, other aspects of the present disclosure comprise other combinations of features from the described embodiments and/or the dependent claims with the features of the independent claims, and not solely the combinations explicitly set out in the claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/FI2015/050631 | 9/22/2015 | WO | 00 |