1

hi dudes,
it would be very very cool if we could load a signal, say acceleration for instance, to a video showing the task in which acceleration were recorded. The signal could be contained in a txt file. Once you have loaded the video and the signal, you have two windows, one for the video and one for the signal. Now, both windowas has a slider in which you can move through time. Once you have slcted the synch instant of time in both window, you can press a button and...there you go...you have a unique slider and the movie moves accordingly with your synchronized signal.
Hope someone could make a good work out of this suggestion.
cheers,
Pietro

2

Hi,

If I understood correctly, stop me if it's wrong :

- user open a data file.
- this file will be displayed on its own player screen.
- the content of the data is turned into a graph and displayed as if it was a video, can be manipulated with the video controls.
- By way of existing functionnality, the user can synchronize an existing video with this new "graph video", and even overlay the graph over the actual video.

I had never thought of this but I think it's a very interesting idea.

I guess the other way to go about external data visualization is to load it in the same screen and have the graph displayed in a zone somewhere over the video. But then we have to reimplement an interface for synchronizing it…
Whereas in your solution the synchronization interface is the same than for synching two videos, and as an added bonus one can also just load the data and analyze it on its own with all the existing features like key images, labels, etc.

3

Hi Joan, thanks for your answer and sorry for the late reply... sad
You did understand correctly.
Also your alternative solution sounds fine.
The important thing is to browse into a synch signal simultaneosly with the video frame.
Hope you could work on this.
Cheers,

4

There is one piece of architecture that was introduced in version 0.8.17 that would make this much easier to implement than before.

I think what is needed to go forward on this topic is to settle on a data format. Converting the raw data into graphics shouldn't be too difficult.
What is the most common data format for timed values ? Plain old CSV ?

5

Joan, again: sorry for the late reply! Comma separated values is the most common data format for exporting and sharing various biomedical signals. Cheers,

6

+1 for this option. It would be really usefull to sync video with heartrate data or gps recorded speeds etc.

7

+1 as well on this idea

8

I am really looking for this as well. CSV, SDV, or XML-format would do fine. In my case I want to overlay some calculated sensor-data on the video. Could be speed, altitude etc. One example format (sdv-format) could be:

time1;text-string
time2;text-string
....

An example:

0;6:00 min/km
1;6:10 min/km
1.5;6:20 min/km
2;6:10 min/km
2.7;5:50 min/km
4;5:40 min/km
5;5:40 min/km
6;5:30 min/km

In this format, I could add any information from several sensors, and get everything displayed. Allowing variable step in time would be good. An arbitrary offset (when applying the file) would be a useful setting, as well as position for the overlaid text and text size.

On the other hand, it might be possible to make a script which writes this in Kinovea's native xml-file format? I am just trying to do that now - will let you know if I have any success. Is there a description of the file format anywhere?

Taking it one step further, I also have some cases where I have angle-information (again from a sensor), and it would have been great to get my angle data overlaid graphically on the video. I.e. if my SDV-file was

0;90
1;85
2;84

the overlay could be a varying angle. This would only be a nice-to-have though - and not absolutely necessary.

A third type of overlay which I am interested in in some cases, is a second video with a different fps (could e.g. be map position which I generate in 1 fps) which I would like to sync to the original video.

9

It turned out to be quite straightforward to make a perl script which takes my gpx-file (or accelerometer file) and makes a .kva-file (xml-format) to overlay either a new text for every data point (i just tested with elevation data for now as that is what I had readily available) or angle-information via the angle-drawing. However, loading the kva-file is very slow when I have 10 minutes of video with one information point every second (which gives 600 keyframes). Loading the video now takes several minutes (during which Kinovea hangs). So I guess there is a need for a more dedicated function. Or maybe it is possible to make loading faster by omitting some info? I now have this type of keyframe for every data point,


  <Keyframe>
      <Position UserTime="'.$thetimems.'">'.$thetimecc.'</Position>
      <Title>'.$thetimems.'</Title>
      <Drawings>
        <Label>
          <Text>'.$thetext.'</Text>
          <Position>20;360</Position>
          <DrawingStyle>
            <Color Key="back color">
              <Value>255;100;149;237</Value>
            </Color>
            <FontSize Key="font size">
              <Value>14</Value>
            </FontSize>
          </DrawingStyle>
          <InfosFading>
            <Enabled>true</Enabled>
            <Frames>1</Frames>
            <AlwaysVisible>false</AlwaysVisible>
            <UseDefault>true</UseDefault>
          </InfosFading>
        </Label>
      </Drawings>
    </Keyframe>

or alternatively using the  <Angle> .... </Angle>.

One other issue I have is also that the fading is too slow even if I set it to last only for one frame - but no big problem.

10

Hi,
Thanks for working on this.
Could you send me some sample files so I can later look where the slowing down is coming from ? If you send the .kva I guess I can load it on my own 10min video and see what happens. Having the gpx would be interesting too.

There is certainly a lot of interesting things to do in this area. Overlaying raw data, graphs, cloud of points, or maybe even maps would be super cool.

The spec for .KVA files can be found in the source under Tools/XML/Schema. (online here).
I admit it wasn't really thought out to scale to 500+ key images…

You can also disable fading entirely, the drawing should only be visible on the exact key image it is attached to.
<InfosFading>
            <Enabled>false</Enabled>

11

jankoc wrote:

However, loading the kva-file is very slow when I have 10 minutes of video with one information point every second (which gives 600 keyframes). Loading the video now takes several minutes (during which Kinovea hangs). So I guess there is a need for a more dedicated function.

Thanks for the sample files, it is helpful.
The slowdown/freeze is coming from the fact that upon loading the kva, the file is seeked to create the key images thumbnails on the fly. It will inevitably slow down the loading. Worse, on some formats seeking itself is problematic and can take even more time for each seek.
The final feature shouldn't necessarily create key images, just overaly the data in real time.

When using the perspective grid, it would also be interesting to be able to treat KVA files themselves as input for an overlay, to provide the view of data as seen from above.

Don't really have time to dive into this right now, but it solves several recurring needs so it's definitely climbing the todo list.

12

Thanks a lot for your effort. I'll use VLC and SRT-overlay for now when I have a lot of data points to display, and use Kinovea when I can do with less data points and want to combine it with other information (and especially when I want to display angles based on the input data).

Being able to import and overlay different types of information in a flexible way is an extremely interesting feature - which I think will get more and more useful as cheaper sensors are readily available. The map overlay would also be nice, although I can't see a very flexible way to input the data as of now (with all the easy solutions I can think of, you would probably have to do quite a lot of pre-calculation up front which would be OK for me, but not for the normal user).