Thanks for the tips.

The fact that I only have audio on one of the videos makes i difficult to use the concept of reference audio for video synchronization.

What about this?

Before video capture I sync. the devices running ffmpeg.

As all videos are captured using ffmpeg I imagine that I can embed the wall clock in the video through some ffmpeg option.

If that is possible then I also imagine that I can extract the wall clock from each video and cut the videos so they all cover the same wall clock period.

With the adjusted video cuts I can safely create a video that shows video from all cameras at the same time, knowing that the video cuts cover the same wall clock period.

Would that be a way to synchronize the videos?

What options would you use to embed the wall clock in the video?

How would you extract the wall clock from the videos?

Thanks

Thomas S


On 03/14/2016 10:31 PM, Jannes Faber wrote:
I'm very interested in the same thing. One recording from a laptop and one
recording from a crappy handheld camera without NTP. File timestamps easily
multiple seconds out of sync.

One option I've been working on a little bit is using the audio to
automatically sync.

I found this little gem somewhere deeply hidden in the interwebs:

http://www.fon.hum.uva.nl/praat/manual/Sounds__Cross-correlate___.html
http://www.dsg-bielefeld.de/dsg_wp/wp-content/uploads/2014/10/video_syncing_fun.pdf

If I remember correctly from some experiments it was quite reliable. If you
can use rough timestamps of your video files, extract some pieces of audio
from it (say 30 seconds) and then this tool can find the offset fairly well.


cat > "$TEMP2_DIR/corrolate_audio_offset.praat" <<~~~
form Cross Correlate two Sounds
     sentence Input_sound_1
     sentence Input_sound_2
     real start_time 0
     real end_time 30
endform

Open long sound file... 'Input_sound_1$'
Extract part: 0, 60, "no"
Extract one channel... 1
sound1 = selected("Sound")
Open long sound file... 'Input_sound_2$'
Extract part: 0, 60, "no"
Extract one channel... 1
sound2 = selected("Sound")

select sound1
plus sound2
Cross-correlate: "peak 0.99", "zero"
offset = Get time of maximum: 0, 0, "Sinc70"

writeInfoLine: 'offset'
~~~

praat corrolate_audio_offset.praat camera_audio_original.wav
laptop_audio_original.wav


Please share if you end up getting this or anything else to work.

--
Jannes

On 14 March 2016 at 18:23, Thomas Seilund <[email protected]> wrote:

Hi,

I have a number of devices. Each with a camera attached. Video from each
camera is captured to a file. Audio is only captured from one of the
cameras. Capture is done using ffmpeg.

Once I am done capturing data from the cameras I process the files, again
using ffmpeg. I create a single video where video from each camera is shown
at the same time.

My question is how can I make sure that the videos are synced correctly. I
am not able to start capturing at the same time, so I can not be sure that
the videos from each camera cover exactly the same period.

Any hints would be very much appreciated.

Thanks

Thomas S

_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

_______________________________________________
ffmpeg-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

Reply via email to