Hello,
I would like to understand better how ELAN controls playback / retrieval of image for a specific frame and how this works for multiple videos with different frame rates.
I read in the form that ELAN internally works with timestamps and going to next frame is based on the hypothesized frame rate. Furthermore, I read that the used media framework retrieves commands such as “Play” or “Pause”.
Are following assumptions correct:
- When pressing play, ELAN will initiate the playback of all opened video files starting at the timestamp selected in the timeline. During playback, there will be no re-synchronization but it is assumed that both videos play back without interruptions.
- The called media framework does not know that both videos are to be played synchronously (that is, it only retrieves n tasks for playback for the n video files at hand.
- When resuming playback or making a new selection in the timeline before playback, ELAN does the same as described in 1. (instead of simply sending a “resume” to the media framework).
- When jumping to the next frame via the control below the video, ELAN calculates the hypothesized timestamp of that frame based on the master video’s frame rate and uses that timestamp to retrieve images from the media framework. For instance, when jumping one frame forward from frame 999 with a master video frame rate of 30, ELAN calculates (999+1)/30=33.333s. For the other media, the image of the frame at that time will be retrieved, that is, they do not necessarily proceed by one frame if the frame rate is another one.
- We can assume that the underlying media framework will interpret the timestamp input as video time. That is, the time displayed in a video player which does not necessarily match real time for some (non drop frame) frame rates.
The reason why I ask these questions is that I would like to understand the implications of slightly different frame rates among videos. I have read that especially for the non-integer frame rates (29.97, 59.94 etc.) with non drop frame time code, video time deviates from real time (reason: for 29.97 FPS, the video time is still increased by 1 second after 30 frames, even though one real time second has already passed after 29.97 frames).
Let me define an example where following media files with recordings of the same scene at the same time are opened in an ELAN instance:
Video 1 (30.0 FPS) non drop frame
Video 2 (29.97 FPS) non drop frame
Used time formats: HH:mm:ss.SSS
(HH:mm:ss:ff
) where SSS
are milliseconds, ff
is a timecode frame number
If all 5 assumptions are true, I would expect for a recording:
- If the videos are played back in ELAN from start without any interaction, after 01:00:00.000 (1 hour) real time, the presented frames would be the ones displayed in a media player at:
Video 1: 01:00:00:00
Video 2: 00:59:56:12 (00:59:56.400)
However, the videos would stay synchronized in playback (given that the media framework is not interrupted for one of the videos).
- If I select the time 01:00:00.000 in the ELAN timeline and press “Play”, due to the video time of both videos being set to that time, the frames would be the ones displayed after 1 hour of video time, which equates to following real time:
Video 1: 01:00:00:00
Video 2: 01:00:03:18 (01:00:03.604)
That in turn would mean that the playback is no more synchronized.
Are these thoughts correct? If not, could you please clarify where ELAN behaves differently or where I draw incorrect conclusions?
Thank you for your help!
Best, ASE