Video stabilization using gyroscope data
Homepage •
Download •
Documentation •
Discord •
Report bug •
Request feature
Gyroflow is an application that can stabilize your video by using motion data from a gyroscope and optionally an accelerometer. Modern cameras record that data internally (GoPro, Sony, Insta360 etc), and this application stabilizes the captured footage precisely by using them. It can also use gyro data from an external source (eg. from Betaflight blackbox).
Sensor Logger
, G-Field Recorder
, Gyro
, GyroCam
Sensor Logger
, Sensor Record
, OpenCamera Sensors
, MotionCam Pro
Gyroflow-windows64.zip
from the Releases page, extract the files somewhere and run Gyroflow.exe
VCRUNTIME140.dll
, install VC redist
Gyroflow-mac-universal.dmg
from the Releases page, run the downloaded file, and drag & drop Gyroflow
app to the Applications folder (or anywhere you want, like on Desktop)brew install gyroflow
. To upgrade Gyroflow, run brew update
then brew upgrade gyroflow
Gyroflow-linux64.tar.gz
from the Releases page, extract the files somewhere and run ./Gyroflow
in the terminal.Gyroflow-linux64.AppImage
, but the .tar.gz one is preferred.sudo apt install libva2 libvdpau1 libasound2 libxkbcommon0 libpulse0 libc++-dev libvulkan1
nvidia-opencl-icd nvidia-vaapi-driver nvidia-vdpau-driver nvidia-egl-icd nvidia-vulkan-icd libnvcuvid1 libnvidia-encode1
intel-media-va-driver i965-va-driver beignet-opencl-icd intel-opencl-icd
mesa-vdpau-drivers mesa-va-drivers mesa-opencl-icd libegl-mesa0 mesa-vulkan-drivers
Latest development version is always available here: https://gyroflow.xyz/devbuild/.
Settings
-> Apps
-> Optional features
-> Add a feature
-> enable Media Feature Pack
.tar.gz
package (recommended): Debian 10+, Ubuntu 18.10+, CentOS 8.2+, openSUSE 15.3+. Other distros require glibc 2.28+ (ldd --version
to check).AppImage
should work everywhereFor general support and discussion, you can find the developers and other users on the Gyroflow Discord server.
For companies or people wishing to get in touch with the team privately for collaborative purposes: [email protected].
You can download some clips with gyro data from here: https://drive.google.com/drive/folders/1sbZiLN5-sv_sGul1E_DUOluB5OMHfySh?usp=sharing
See the open issues for a list of proposed features and known issues. There's also a ton of TODO comments throughout the code.
Gyroflow OpenFX plugin is available here. OpenFX plugin was tested in DaVinci Resolve
Gyroflow Toolbox allows you to import Gyroflow Projects into a Final Cut Pro effect.
Adobe After Effects plugin is planned, but not ready yet
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributors are greatly appreciated.
Currently Gyroflow is available in:
Help us translate Gyroflow to your language! We use crowdin to manage translations and you can contribute there: https://crowdin.com/project/gyroflow
Gyroflow is written in Rust, with UI written in QML. It uses Qt, ffmpeg, OpenCV and mdk-sdk external dependencies for the main program, but the core library is written in pure Rust without any external dependencies.
OpenCV usage is kept to a minimum, used only for lens calibration and optical flow (src/core/calibration/mod.rs
and src/core/synchronization/opencv.rs
). Core algorithms and undistortion don't use OpenCV.
GPU stuff supports DirectX, OpenGL, Metal and Vulkan thanks to Qt RHI and wgpu. For GPU processing we use OpenCL or wgpu, with highly parallelized CPU implementation as a fallback.
src/ui
directorysrc/controller.rs
is a bridge between UI and core, it takes all commands from QML and calls functions in coresrc/core
contains the whole gyroflow engine and doesn't depend on Qt or ffmpeg, and OpenCV is optionalsrc/rendering
contains all FFmpeg related code for rendering final video and processing for synchronizationsrc/core/gpu
contains GPU implementations of the undistortionsrc/qt_gpu
contains zero-copy GPU undistortion path, using Qt RHI and GLSL compute shadersrc/gyroflow.rs
is the main entry pointmod.rs
or lib.rs
in each directory act as a main entry of the module (directory name is the module name and mod.rs
is kind of an entry point)Visual Studio Code
with rust-analyzer
extension.
For working with QML I recommend to use Qt Creator and load all QML files there, as it has auto-complete and syntax highlighting.
The project also supports UI live reload, it's a super quick way of working with the UI. Just change live_reload = true
in gyroflow.rs
and it should work right away. Now every time you change any QML file, the app should reload it immediately.
git
, 7z
and working powershell
. If you never ran powershell scripts before, run set-executionpolicy remotesigned
in powershell as adminJust
by running cargo install --force just
git clone https://github.com/gyroflow/gyroflow.git
just install-deps
just run
git
, brew
Just
by running cargo install --force just
git clone https://github.com/gyroflow/gyroflow.git
just install-deps
just run
just deploy
once and then just run
will workgit
, 7z
, python
, apt
package manager (or adjust commands inside scripts if on different distro)Just
by running cargo install --force just
git clone https://github.com/gyroflow/gyroflow.git
just install-deps
just run
git
, 7z
, working powershell
, Android SDK and NDK. Android is not well supported yet, but the app can be built and somewhat works. Building is supported only on WindowsJust
by running cargo install --force just
git clone https://github.com/gyroflow/gyroflow.git
_scripts/android.just
just android install-deps
just android deploy
git
, brew
Just
by running cargo install --force just
git clone https://github.com/gyroflow/gyroflow.git
just ios install-deps
_scripts/ios.just
just ios run
Visual Studio Community Edition
profile
profile: cargo run --profile profile
Debug -> Performance Profiler...
Target
, open Change Target
and select Running Process...
, select the running gyroflow.exe
processconfig.define("QT_QML_DEBUG", None);
in build.rs
cli::run()
in gyroflow.rs
cargo run -- "-qmljsdebugger=port:1234,block,services:CanvasFrameRate,EngineControl,DebugMessages"
Analyze
-> QML Profiler (Attach to Waiting Application)
and enter port 1234Distributed under the GPLv3 License with App Store Exception. See LICENSE for more information.
As additional permission under section 7, you are allowed to distribute gyroflow_core
through an app store, even if that store has restrictive terms and conditions that are incompatible with the GPL, provided that the source is also available under the GPL with or without this permission through a channel without those restrictive terms and conditions.