4

I am working on a project that involves streaming video with audio to/from various cloud streaming services with intermediate encoding steps (i.e. mixing with additional overlays).

Each stage in the complex process has been tested in isolation, and we have mocked up a local environment for internal testing purposes.

I want to put together a UAT script package that caters for a fully live configuration. In this configuration, the client will receive 4 outputs going through various pathways. For example, one video/audio stream goes through two cloud services. The source video/audio is a live recording.

I can write suitable tests for comparing the audio/video delays between each pathway.

I am struggling to come up with a viable solution to testing any of these pathways against the source video/audio.

I am considering using Skype, by having it record the audio (as a minimum, maybe video too) during a live recording. I can then measure the delays in this audio output against the output streams.

I would end up with a recording via Skype, and a recording via the stream. From this I can calculate a delay. How do I calculate the time delay between the live recording and the Skype recording?

This is critical as we are promoting our various pathways as "within x seconds" and wish to provide the customer a means of proving this during their UAT cycles.

  • Are you asking how to calculate the delay between two time series? Or are you asking how to extract the audio signal from a Skype recording? Or something else? – user246 Dec 3 '15 at 18:46
  • The time delay between a sound being made and it being heard through Skype at another location. I can't see anything in Skype which shows the time delay. – Class Skeleton Dec 3 '15 at 19:14
  • Are both audio/video source (Skype) under your control? If so you could measure the delay using a Timeserver service like the following pool.ntp.org/en – L123 Dec 6 '15 at 7:38
2

Tomasz had a great start, let me add some details and pieces of advice-

  • Don't use Skype as a recording device, it has an inherited semi-random delay of itself.
  • A clock is not good enough as an accurate synchronization device since your stream will probably have low(ish) variable frame rate limiting you accuracy. A good approach will be to embed timing into the stream itself, for example by increasing a counter on each frame, and displaying it using a bar code (2d or 3d)- this way you will be able to automatically extract data from the stream.
    • For Audio you can add spikes in the audio stream, or simply create an audio file with spikes. Make sure to space them enough so they are further away then the maximum delay you expect + some. You then can use a scope or audio editing software to compare and figure out the delay.
2

The simplest possible solution is to send the time data explicitly in the audio/video channel.

If you go for the video streaming, that's easy peasy. Just put a clock in front of a camera and there you go. On the receiving end put another clock in front of a camera and Skype composes them both into a picture-in-picture, easy for comparison, though not so easily automatable. But surely easy to read 'manually'.

If you only use audio, that's more complex. You need to use a trick to send time reference. But it can be done quite easily too. For example;

  1. Start Skype streaming
  2. Make a computer beep at a certain moment precisely
  3. Read out loud the time of the beep or have the machine do this for you
  4. Repeat this for complex reference or stats as many times as needed
  5. On the receiving end you need a tool to pinpoint the reception time either manually or by a beep detector, etc

This may be a bit rough, but I hope it has put you on the right track.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.