Does anybody know of a Windows video conversion or editing program that would allow rotation of a video file in 90 degree increments and still retain 120 fps or 240 fps video resolution.  Most software I have tried converts the video to 30 or 60 fps.  I think these programs drop video frames to allow the video to play at the lower frame rates but maintain the intended playing speed.  I am using 120 and 240 fps video from a Gopro and iPhone and I need the images rotated by 90 degrees but I don't want to lose the higher frame rates.

I have a slow motion video that I wanted to play at full capture speed, however, the program currently re-scales the slider control on the playback window from 0 to 200% of the ratio of video framerate to capture framerate.  So if I am viewing a 10x slow motion video, the speed range is scaled from 0 to 20% of the capture framerate.  The only way to currently view the video at higher framerates  is to increase the default video frame rate.  If I increase the default video framerate to the capture framerate, the slider control speed range is re-scaled from 0 to 200% which allows me to view the slow motion video at full speed (100%).

Thanks Joan:

1)  I think it would be best to show the current playback framerate adjacent to the speed slider control (possibly on the right hand side of the speed slider) as this is what the user is ultimately adjusting with the speed control.  It gives the user real time feedback as to the changes in playback framerate in addition to the already displayed ratio of playback framerate to capture framerate (in percent).

2)  I think a possible improvement to the speed slider control would be to double it's physical length on the playback windows thereby doubling the mouse resolution for finer speed increments.  The current playback windows have room to double the slider control length and display the current playback framerate to the right of the slider control.  The problem with re-scaling the speed slider is that it becomes difficult to play a slow motion video at full capture speed.  For your 10X example, the re-scaled speed range becomes 0 to 20% which is very limiting if you want to speed up the slow motion video.  I do understand how re-scaling allows finer control of further slowing down this slow motion video.  The current work around for the re-scaling is to change the default video framerate using Configure Video Timing... under the Video menu to the same value as the capture framerate and this will give you a speed range of 0 to 200% on your playback window.

3)  I think the easiest and most flexible solution is to add a text box that would set the slider to an exact user input value rather than coming up with a finer increment scheme.  The new text box could be located on the left hand side of the slider where the speed % value is currently displayed.  It would become dual purpose in that it would allow the user to input an exact speed % and display the speed % selected by the user on the slider control or allowed by the program during the playing of the video.  I would obviously keep all of your current increment shortcuts.

Thanks Joan,

All the video comparison work I have tested has been with the speed sliders unlocked.  When the speed sliders have been adjusted differently from each other is when I started seeing some unpredictable things during synchronized video playback.  Most common is the video that finishes first restarts repeatedly instead of stopping until the other video finishes which makes things very confusing on the playback screen.

My next suggestion on synchronization also was going to be on a two point synchronization where the software would use two points defining the movement on each video to adjust both playback offset and playback framerate for one of the videos to compare the movements.  I have been sending other comments on the single point synchronization and didn't want to confuse the issue by bringing up two point synchronization but this is ultimately what I think would be the most useful.  The single point synchronization is a good start but you end up wanting to match the entire movement which requires adjustment in one or both of the playback speeds.  Adjusting the playback framerates for synchronization was the reason I brought up finer control of the speed sliders on the playback windows in another post.

Joan you are right that it is not a hard restriction.  I don't think the program should make the assumption that when a user wants to change the video framerate that they also want the capture framerate changed to the same value.  The first few times I used the program, I adjusted the video framerate and couldn't figure out why certain things were happening on my playback windows until I discovered the program had adjusted my capture framerate which is the crucial for time based calculations.

Currently the user has no visual indicator that alerts them that capture framework is dependent on the input video framerate in this input form.  It would be most straight forward for the user to be able to change these framerates individually without program intervention, especially for capture framerate which is crucial to all time based calculations.

Often videos are compared for a defined movement where the video playback speeds need to be adjusted for a more direct comparison either by reasons of: (1) video capture speeds that are unknown and different than playback speeds for one or both videos or (2) due to the compared movements being executed at slightly different speeds in real time. 

An example would be comparing baseball swings of a professional baseball player with an amateur player.  Say I am interested in comparing swings from load foot strike to ball contact on the bat.  The professional swing might simply be faster and all video capture and playback speeds are known but I want a direct comparison of that movement so I need to adjust playback speeds on one or both of the videos.  Or I might have a video of a professional player doing the movement (slow motion or full speed) at an unknown and different capture speed to that video’s playback speed and I need to adjust the playback speed on one of the videos to properly compare the movement.

Videos should be able to be synchronized on a particular frame with videos having different video capture and video speeds (specified or adjusted with Configure Video Timing…) and/or adjusted playback speeds on playback windows and have the same behavior when played using the common (synchronized) controls.  This is currently not the case with the current versions of the software.  Once playback speeds are adjusted to individually different values, the video that has finished first restarts and keeps playing a number of times and then pauses on the first frame until the other video has finished.  Also if you pause and restart the video synchronization, the video that will be the first to finish jumps back a number of frames for some unknown reason before restarting.

Principles:

- Video that needs to start first begins playing.
- Other video starts at calculated start time to match synchronization point.
- Video that ends first stops on last frame until other video ends at last frame
- Both videos reset to first frame once other video ends at last frame
- Video sequence is restarted if loop function is enabled or if play button activated

Adjustments to the individual video capture and video framerates or playback framerates using the speed control should not affect these principles.

Example:

Video 1:  500 frames@60 fps playback speed with speed setting at 1.00X, actual playback speed is 60fps, duration 8.33s
Video 2:  300 frames@30 fps playback speed with speed setting at 1.50X, actual playback speed is 45fps, duration 6.67s

Video 1: Synchronized on frame 180, time 3.000s
Video 2: Synchronized on frame 90, time 2.000s

Calculations determine that Video 1 must start first.  The delay in starting Video 2 = 3.000-2.000=1.000s.  Video 1 will have played 60 frames before the start of Video 2.  Video 2 will be at the last frame before Video 1 is finished at 7.67s (1.000s delay+6.67s duration) and should display the last video frame until Video 1 is ended and reset by the user or loop function.  Video 1 will be at frame 460 (7.67s x 60fps) when Video 1 is completed.

Currently using the Configure Video Timing… under the Video menu, you have the ability to change both the Capture Framerate and Video Framerate.  When a new video is imported, the default video framerate is imported directly from the file and the capture framerate is assumed to be the same value.  This is not a bad assumption, however, if you increase the video framerate, the program assumes that the capture framerate has to be equal to or greater than the video framerate and sets the capture framerate equal to the video framerate.  This is true while recording a video with a video camera where the video framerate physically can’t be higher than the capture framerate without repeating identical images.

This may be an unnecessary restriction as you may want to speed up a video using a higher video framerate even though the capture framerate was lower.  Unless this change affects the capture mode of the software, I would remove this restriction.  I agree with defaulting the capture framerate to the playback framerate when first opening a video file, but I would not force this assumption on users by forcing the capture framerate to be equal to or greater than the playback framerate.  I do like the reset buttons that reset the framerates to the original video file framerates.

1) It would be advantageous to have the current playback framerate indicated beside the speed control on the playback windows. 

2) Currently when the capture framerate is increased compared to the video framerate using Configure Video Settings..., the speed slider is rescaled to show the ratio of video framerate to capture framerate at the 1X, 100% midpoint.  It would be more intuitive if the speed slider kept the same scaling of 0 to 200% and simply adjusted the slider position to show the ratio of video framerate to capture framerate.  As an example, if your video framerate is set to 30 fps and your capture framerate is set to 60 fps, the playback window speed slider is currently re-scaled from 0 to 100% with the slider located at the midpoint 50% (where 1X or 100% normally would be located).  I would rather have the scale remain at 0 to 200% and have the slider position located at 50%.  This will ensure that playback speed is consistently represented by the ratio or playback framerate to capture framerate on a slider scale of 0 to 200%.  Playback speed should be represented relative to the capture framerate (true time).

3)  It would also be helpful to allow the user finer control of playback speeds on the playback windows.  Perhaps by offering a text input box beside the slider that would allow the user to input an exact value from 0.000 to 200.000%.  This would give users finer control of playback speeds to manually synchronize videos when comparing movements in two different videos.

I just now understand that a kva file is linked with a video file so if you open the video file the associated kva file is opened with it.

I still think that a single Project file that incorporates all video files, associated kva information, and player and capture window configuration and user settings for a particular session would be the simplest and most efficient way to manage analysis files for users and developers.  As previously mentioned, I would use Template files accessed on each player to manage frame specific kva information that would be used from analysis to analysis.

Sorry for the rambling...  I am a new user of your program and I am not intimately familiar with the program and the history of it's development.  I am very impressed with what has been accomplished.

For your current kva files, you could call these "Template" files and these could be saved and opened on the player window and be generated from a particular video frame which has saveable analysis objects associated with the frame.  Currently the kva files are multiple video frame edits that are fixed on specific frame numbers which may have no relevance from video file to video file however you may want to apply a certain template to a particular frame in another video.  Simplifying to a single frame kva template would be more meaningful.  So for example a baseball swing during the load phase may have three angles measurements, a distance measurement, and a text comment that are common for analyzing the load phase of a baseball swing.  A template of these objects could be saved the first time and subsequently imported for other swing videos for the load phase of the swing which would most likely occur on different frames numbers in different videos.  So you would have a Save Template button and a Open Template button on each player and it apply to the current frame in the viewer.

Joan, thanks for your feedback.  I do think that implementing the "Project" File concept is actually simplifying the process of using the software.  Instead of having to remember which specific videos partner with specific kva files to get a session restarted you simply have to open up your project file.  Having to always keep track of specific kva files and video files and import them repeatedly to continue with a specific analysis sessions adds a layer of complexity or at least administration for the user that is totally removed by having an all inclusive project file.  The software becomes very straightforward, you import or record videos, you perform analysis work on the player windows, you generate output from the player windows, and you save your session as a project file.

Adding the ability to save a "Project" file that would include all imported or captured video files, key images files, and all user selections including interface orientation, video annotations and settings would be hugely helpful from both a user and a developer standpoint.  This file would not include any settings under "Options" as these are already stored as application settings.

It would save a huge amount of time for the user as they could simply open a project file and the last session as saved would appear and they could continue their work from where they left off. 

From the developer standpoint it would allow problems to be more quickly identified through the forwarding of a problem "Project" file.

Your File Menu could then have the following options:

Open Project... - Opens Kinovea Project

Open Video File... - Opens video file into active window (currently can't replace first video in two playback window mode even if first window is active)

Recent Video Files... - Shows recently opened video files and opens selected video file into active window (currently can't replace first video in two playback window mode)

Close xxxxx.mov window
Close yyyyy.mov window

Save... - No longer needed as opened video files are stored in project file.  Saving modified videos with annotation data is already offered on the playback window where all other output options are offered.  There may not be the need for saving the annotation and drawing objects and key images separately as they are stored in the "Project" file.  You could have the save video function on the playback windows give the user the option to save the modified video with or without annotations and drawings.

Save Project... - Saves Kinovera Project, would eliminate the old save function as key videos and kva data stored in project file

Export to Spreadsheet

Load Key Images Data...  No longer needed as kva data included in the "Project" file

Quit... - Ends program and asks user to save "Project" file if changes have been made

13

(4 replies, posted in Ideas and feature requests)

Yes I agree that having a tool button to rotate the video image by 90 degrees at a time would allow the image to be rotated to the correct orientation.  I have had a number of videos opened and they need to be rotated by 90, 180, or 270 degrees to be viewed and analyzed.