# Table of Contents - [Welcome to Gyroflow | Gyroflow documentation](#welcome-to-gyroflow-gyroflow-documentation) - [Features | Gyroflow documentation](#features-gyroflow-documentation) - [Examples | Gyroflow documentation](#examples-gyroflow-documentation) - [Test Files | Gyroflow documentation](#test-files-gyroflow-documentation) - [Installation | Gyroflow documentation](#installation-gyroflow-documentation) - [GoPro | Gyroflow documentation](#gopro-gyroflow-documentation) - [Common Filming Tips & Issues | Gyroflow documentation](#common-filming-tips-issues-gyroflow-documentation) - [Supported Cameras | Gyroflow documentation](#supported-cameras-gyroflow-documentation) - [Stabilization | Gyroflow documentation](#stabilization-gyroflow-documentation) - [Flight controllers | Gyroflow documentation](#flight-controllers-gyroflow-documentation) - [Synchronization | Gyroflow documentation](#synchronization-gyroflow-documentation) - [File Joiner | Gyroflow documentation](#file-joiner-gyroflow-documentation) - [Lens Profiles | Gyroflow documentation](#lens-profiles-gyroflow-documentation) - [Sony | Gyroflow documentation](#sony-gyroflow-documentation) - [Input Data | Gyroflow documentation](#input-data-gyroflow-documentation) - [Color Differences | Gyroflow documentation](#color-differences-gyroflow-documentation) - [Troubleshooting | Gyroflow documentation](#troubleshooting-gyroflow-documentation) - [Synchronization | Gyroflow documentation](#synchronization-gyroflow-documentation) - [Xtra | Gyroflow documentation](#xtra-gyroflow-documentation) - [Settings Presets | Gyroflow documentation](#settings-presets-gyroflow-documentation) - [Timeline & Gyro Chart | Gyroflow documentation](#timeline-gyro-chart-gyroflow-documentation) - [Stabilization | Gyroflow documentation](#stabilization-gyroflow-documentation) - [Caddx | Gyroflow documentation](#caddx-gyroflow-documentation) - [Canon | Gyroflow documentation](#canon-gyroflow-documentation) - [Other | Gyroflow documentation](#other-gyroflow-documentation) - [Hawkeye | Gyroflow documentation](#hawkeye-gyroflow-documentation) - [Basic Usage | Gyroflow documentation](#basic-usage-gyroflow-documentation) - [Live Feed Stabilization | Gyroflow documentation](#live-feed-stabilization-gyroflow-documentation) - [Render Queue | Gyroflow documentation](#render-queue-gyroflow-documentation) - [Keyboard Shortcuts | Gyroflow documentation](#keyboard-shortcuts-gyroflow-documentation) - [Other Cameras | Gyroflow documentation](#other-cameras-gyroflow-documentation) - [Exporting | Gyroflow documentation](#exporting-gyroflow-documentation) - [IMU Orientation and rotation | Gyroflow documentation](#imu-orientation-and-rotation-gyroflow-documentation) - [Exporting | Gyroflow documentation](#exporting-gyroflow-documentation) - [Lens Calibration | Gyroflow documentation](#lens-calibration-gyroflow-documentation) - [Keyframes | Gyroflow documentation](#keyframes-gyroflow-documentation) - [Apple | Gyroflow documentation](#apple-gyroflow-documentation) - [Intel | Gyroflow documentation](#intel-gyroflow-documentation) - [Android | Gyroflow documentation](#android-gyroflow-documentation) - [Using External Gyro Source | Gyroflow documentation](#using-external-gyro-source-gyroflow-documentation) - [360° Cameras | Gyroflow documentation](#360-cameras-gyroflow-documentation) - [RunCam | Gyroflow documentation](#runcam-gyroflow-documentation) - [Action Camera as a Logger | Gyroflow documentation](#action-camera-as-a-logger-gyroflow-documentation) - [Command Line (CLI) | Gyroflow documentation](#command-line-cli-gyroflow-documentation) - [NVIDIA | Gyroflow documentation](#nvidia-gyroflow-documentation) - [ESP-gyrologger | Gyroflow documentation](#esp-gyrologger-gyroflow-documentation) - [Mobile Phones | Gyroflow documentation](#mobile-phones-gyroflow-documentation) - [Insta360 | Gyroflow documentation](#insta360-gyroflow-documentation) - [Flowshutter | Gyroflow documentation](#flowshutter-gyroflow-documentation) - [CSV Export | Gyroflow documentation](#csv-export-gyroflow-documentation) - [AMD | Gyroflow documentation](#amd-gyroflow-documentation) - [DJI | Gyroflow documentation](#dji-gyroflow-documentation) - [Blackmagic | Gyroflow documentation](#blackmagic-gyroflow-documentation) - [frei0r | Gyroflow documentation](#frei0r-gyroflow-documentation) - [RED | Gyroflow documentation](#red-gyroflow-documentation) - [Adobe Premiere / After Effects | Gyroflow documentation](#adobe-premiere-after-effects-gyroflow-documentation) - [General Plugin Workflow | Gyroflow documentation](#general-plugin-workflow-gyroflow-documentation) - [Parsing Gyro Data | Gyroflow documentation](#parsing-gyro-data-gyroflow-documentation) - [FAQ | Gyroflow documentation](#faq-gyroflow-documentation) - [Gyroflow Core | Gyroflow documentation](#gyroflow-core-gyroflow-documentation) - [Flight Controller | Gyroflow documentation](#flight-controller-gyroflow-documentation) - [Final Cut Pro X | Gyroflow documentation](#final-cut-pro-x-gyroflow-documentation) - [Used Technologies | Gyroflow documentation](#used-technologies-gyroflow-documentation) - [Building from Source | Gyroflow documentation](#building-from-source-gyroflow-documentation) - [Authors | Gyroflow documentation](#authors-gyroflow-documentation) - [NiYien-A1 | Gyroflow documentation](#niyien-a1-gyroflow-documentation) - [GCSV Format | Gyroflow documentation](#gcsv-format-gyroflow-documentation) - [Gyroflow protobuf | Gyroflow documentation](#gyroflow-protobuf-gyroflow-documentation) - [DaVinci Resolve (OpenFX) | Gyroflow documentation](#davinci-resolve-openfx-gyroflow-documentation) - [Email Protection | Cloudflare](#email-protection-cloudflare) --- # Welcome to Gyroflow | Gyroflow documentation ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgyroflow%2Fgyroflow%2Fmaster%2Fresources%2Fscreenshot.jpg&width=768&dpr=4&quality=100&sign=d37822a6&sv=2) [](https://docs.gyroflow.xyz/app/#what-is-gyroflow) What is Gyroflow? -------------------------------------------------------------------------- In order to achieve smooth, cinematic footage, video stabilization is often essential. For cinema cameras, this is often achieved using motorized gimbals or other bulky camera stabilizers. Phone cameras and compact action cameras on the other hand use Electronic Image Stabilization (EIS) applied in real-time based on gyro sensor data. Finally, video editing packages can often stabilize video based on estimated camera motion, which may be unreliable. This is where Gyroflow comes into play. Gyroflow is a post-processing video stabilization software based on logged motion data. With the help of precise lens calibrations, rolling shutter correction, and tweakable stabilization algorithms (including horizon levelling), Gyroflow can produce gimbal-like stabilization with no or minimal weight penalty. It also works regardless of lighting conditions or moving subjects. This is especially suited for aerial videography, where the beta version has been extensively evaluated for large and small productions alike. With many cameras from GoPro, Sony, insta360 etc. supporting built-in motion data recording, additional hardware might not even be required. You can even use a GoPro as a logger for a cinema camera. Gyroflow is cross-platform and uses hardware acceleration for blazingly fast processing combined with a modern multilingual user interface. [](https://docs.gyroflow.xyz/app/#examples) Examples --------------------------------------------------------- ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Fgyroflow%2Fgyroflow%2Fraw%2Fmaster%2Fresources%2Fcomparison1.gif&width=300&dpr=4&quality=100&sign=d4dd1986&sv=2)![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Fgyroflow%2Fgyroflow%2Fraw%2Fmaster%2Fresources%2Fcomparison2.gif&width=300&dpr=4&quality=100&sign=c564021d&sv=2) [✨Examples](https://docs.gyroflow.xyz/app/readme/examples) [](https://docs.gyroflow.xyz/app/#quick-links) Quick links --------------------------------------------------------------- [💎Features](https://docs.gyroflow.xyz/app/readme/features) [🎥Supported Cameras](https://docs.gyroflow.xyz/app/getting-started/supported-cameras) [🔧Basic Usage](https://docs.gyroflow.xyz/app/getting-started/basic-usage) Last updated 2 days ago * [What is Gyroflow?](https://docs.gyroflow.xyz/app/#what-is-gyroflow) * [Examples](https://docs.gyroflow.xyz/app/#examples) * [Quick links](https://docs.gyroflow.xyz/app/#quick-links) --- # Features | Gyroflow documentation * Real-time preview, parameter adjustments and all calculations * GPU processing and rendering, all algorithms fully multi-threaded * Rolling shutter correction * [Video editor plugins](https://github.com/gyroflow/gyroflow-plugins) (Adobe Premiere/Ae, DaVinci Resolve, Final Cut Pro and more), allowing you to apply stabilization directly in a video editor without transcoding * Supports full Sony metadata (recording params, automatic lens, support for IBIS, OIS, EIS - you can have IBIS enabled in camera and still apply Gyroflow on top) * Supports already stabilized GoPro videos (captured with Hypersmooth enabled) (Hero 8 and up) * Supports and renders 10-bit videos (up to 16-bit 4:4:4:4 for regular codecs and 32-bit float for OpenEXR - working directly on YUV data to maintain maximum quality) * Customizable lens correction strength * Render queue * Keyframes * Ability to create custom settings presets * Visual chart with gyro data (displays gyro, accelerometer, magnetometer, and quaternions, including smoothed quaternions) * Supports underwater footage (corrects underwater distortions) * Modern responsive user interface with Dark and Light theme * Adaptive zoom (dynamic cropping) * Zoom limit * Supports image sequences (PNG, OpenEXR, CinemaDNG) * Based on [telemetry-parser](https://github.com/AdrianEddy/telemetry-parser) - supports all gyro sources out of the box * Gyro low pass filter, arbitrary rotation (pitch, roll, yaw angles) and orientation * Multiple gyro integration methods for orientation determination * Multiple video orientation smoothing algorithms, including horizon levelling and per-axis smoothness adjustment. * Cross-platform - works on Windows/Linux/Mac/Android/iOS * Multiple UI languages * Supports variable and high frame rate videos - all calculations are done on timestamps * H.264/AVC, H.265/HEVC, ProRes, DNxHD, CineForm, PNG and OpenEXR outputs, with H.264 and H.265 fully GPU accelerated (ProRes also accelerated on Apple Silicon) * Easy lens calibration process * Fully zero-copy GPU preview rendering * Core engine is a separate library without external dependencies (no Qt, no ffmpeg, no OpenCV), and can be used to create OpenFX and Adobe plugins (on the TODO list) * Automatic updates of lens profile database * Built-in official lens profiles for GoPro HERO 6-13; Sony; DJI; Insta360 action cameras; RunCam: Thumb series, 5 Orange * Easy management of the video editor plugins from within the app * Ability to add an additional 3D rotation (useful for framing vertical videos) ### [](https://docs.gyroflow.xyz/app/readme/features#supported-gyro-sources) Supported gyro sources * GoPro (HERO 5 and later) * Sony (a1, a7c, a7r V, a7 IV, a7s III, a9 II, a9 III, FX3, FX6, FX9, RX0 II, RX100 VII, ZV1, ZV-E10, ZV-E10 II, ZV-E1, a6700) * Insta360 (OneR, OneRS, SMO 4k, Go, GO2, GO3, GO3S, GOUltra, Caddx Peanut, Ace, Ace Pro) * DJI (Avata, Avata 2, O3/O4 Air Unit, Action 2/4/5/6/Nano, Neo, Neo2) * Xtra (Edge, Edge Pro) * Blackmagic RAW (\*.braw) * RED RAW (V-Raptor, KOMODO) (\*.r3d) * Canon (C50, C80, C400, R6 Mk3, R5 Mk2) (\*.mp4, \*.mov, \*.mxf) * Freefly (Ember) * Betaflight blackbox (\*.bfl, \*.bbl, \*.csv) * ArduPilot logs (\*.bin, \*.log) * Gyroflow [.gcsv log](https://docs.gyroflow.xyz/app/technical-details/gcsv-format) * iOS apps: [`Sensor Logger`](https://apps.apple.com/us/app/sensor-logger/id1531582925) , [`G-Field Recorder`](https://apps.apple.com/at/app/g-field-recorder/id1154585693) , [`Gyro`](https://apps.apple.com/us/app/gyro-record-device-motion-data/id1161532981) * Android apps: [`Sensor Logger`](https://play.google.com/store/apps/details?id=com.kelvin.sensorapp&hl=de_AT&gl=US) , [`Sensor Record`](https://play.google.com/store/apps/details?id=de.martingolpashin.sensor_record) , [`OpenCamera Sensors`](https://github.com/MobileRoboticsSkoltech/OpenCamera-Sensors) , [`MotionCam Pro`](https://play.google.com/store/apps/details?id=com.motioncam.pro) * Runcam CSV (Runcam 5 Orange, iFlight GOCam GR, Runcam Thumb, Mobius Maxi 4K) * Hawkeye Firefly X Lite CSV * XTU (S2Pro, S3Pro) * WitMotion (WT901SDCL binary and \*.txt) * Vuze (VuzeXR) * KanDao (Obisidian Pro, Qoocam EGO) * [CAMM format](https://developers.google.com/streetview/publish/camm-spec) Last updated 2 days ago --- # Examples | Gyroflow documentation GoPro Hero 6 GoPro Hero 5 Session GoPro Hero 8 GoPro Hero 8 GoPro Hero 10 + Horizon Lock Blackmagic Pocket Cinema Camera 4k + Laowa 9mm Last updated 2 years ago --- # Test Files | Gyroflow documentation [![Logo](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2Fssl.gstatic.com%2Fdocs%2Fdoclist%2Fimages%2Fdrive_2022q3_32dp.png&width=20&dpr=4&quality=100&sign=c4133776&sv=2)Gyroflow test data - Google DriveGoogle Drive](https://drive.google.com/drive/u/1/folders/1sbZiLN5-sv_sGul1E_DUOluB5OMHfySh) Google Drive link: [https://drive.google.com/drive/u/1/folders/1sbZiLN5-sv\_sGul1E\_DUOluB5OMHfySh](https://drive.google.com/drive/u/1/folders/1sbZiLN5-sv_sGul1E_DUOluB5OMHfySh) Last updated 2 years ago --- # Installation | Gyroflow documentation Windows macOS Linux Android iOS [](https://docs.gyroflow.xyz/app/getting-started/installation#install-from-the-microsoft-store) Install from the Microsoft Store: -------------------------------------------------------------------------------------------------------------------------------------- [![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FceDhtNVg4tP0nWnVTe9U%252Fbadge_microsoft_store.png%3Falt%3Dmedia%26token%3D95557b6f-516f-422b-8261-ff5a50decee0&width=300&dpr=4&quality=100&sign=a3c574ac&sv=2)](https://apps.microsoft.com/store/detail/gyroflow/9NZG7T0JCG9H) [](https://docs.gyroflow.xyz/app/getting-started/installation#manual-install) Manual install: -------------------------------------------------------------------------------------------------- 1. Download the latest version from [https://gyroflow.xyz/download](https://gyroflow.xyz/download) 2. Extract `Gyroflow-windows64.zip` somewhere 3. Open the extracted folder and run `Gyroflow.exe` 4. If it shows an error about `VCRUNTIME140.dll`, [install VC redist](https://aka.ms/vs/17/release/vc_redist.x64.exe) [](https://docs.gyroflow.xyz/app/getting-started/installation#minimum-system-requirements) Minimum system requirements --------------------------------------------------------------------------------------------------------------------------- Windows 10 64-bit (1809 or later) * If you have Windows "N" install, go to `Settings` -> `Apps` -> `Optional features` -> `Add a feature` -> enable `Media Feature Pack` Windows 7 is not supported, because of Qt 6 requirements [](https://docs.gyroflow.xyz/app/getting-started/installation#install-from-the-app-store) Install from the App Store: -------------------------------------------------------------------------------------------------------------------------- [![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FMNVnVzjJCqtuZYWs2Awv%252Fbadge_apple_store.png%3Falt%3Dmedia%26token%3Da9160486-ea9a-4564-88d3-313dabef3f17&width=300&dpr=4&quality=100&sign=c6912706&sv=2)](https://apps.apple.com/us/app/gyroflow/id6447994244) [](https://docs.gyroflow.xyz/app/getting-started/installation#beta-channel) Beta channel: ---------------------------------------------------------------------------------------------- Updates are pushed more often to TestFlight. Use this link to join as tester and get most recent updates first: [https://testflight.apple.com/join/e0RI1n5i](https://testflight.apple.com/join/e0RI1n5i) [](https://docs.gyroflow.xyz/app/getting-started/installation#manual-install-1) Manual install: ---------------------------------------------------------------------------------------------------- 1. Download the latest version from [https://gyroflow.xyz/download](https://gyroflow.xyz/download) 2. Run`Gyroflow-mac-universal.dmg` 3. Drag & drop `Gyroflow` app to the Applications folder (or anywhere you want, like on Desktop) You can also install using brew: `**brew install gyroflow**`. To upgrade Gyroflow, run `**brew update**` then `**brew upgrade gyroflow**` [](https://docs.gyroflow.xyz/app/getting-started/installation#minimum-system-requirements-1) Minimum system requirements ----------------------------------------------------------------------------------------------------------------------------- * macOS 10.15 or later Both Intel and Apple Silicon are supported natively. ### [](https://docs.gyroflow.xyz/app/getting-started/installation#hardware-acceleration-support) Hardware acceleration support: Processor H.264 H.265 ProRes Intel ✅ ✅ ❌ M1 Air ✅ ✅ ❌ M1 Pro/Max/Ultra ✅ ✅ ✅ M2 and newer ✅ ✅ ✅ [](https://docs.gyroflow.xyz/app/getting-started/installation#installing-gyroflow) Installing Gyroflow ----------------------------------------------------------------------------------------------------------- 1. Make sure you have latest GPU drivers installed 2. Download `Gyroflow-linux64.tar.gz` from [https://gyroflow.xyz/download](https://gyroflow.xyz/download) 3. Extract the files somewhere and run `./Gyroflow` in the terminal. 4. If it doesn't work, you probably need to install additional dependencies: `sudo apt install libc++-dev libva2 libvdpau1 libasound2 libxkbcommon0 libpulse0 libvulkan1` GPU specific packages: * NVIDIA: `nvidia-opencl-icd nvidia-vaapi-driver nvidia-vdpau-driver nvidia-egl-icd nvidia-vulkan-icd libnvcuvid1 libnvidia-encode1` * Intel: `intel-media-va-driver i965-va-driver beignet-opencl-icd intel-opencl-icd` * AMD: `mesa-vdpau-drivers mesa-va-drivers mesa-opencl-icd libegl-mesa0 mesa-vulkan-drivers` `.AppImage`is also available, but it's recommended to run the `.tar.gz` package [](https://docs.gyroflow.xyz/app/getting-started/installation#minimum-system-requirements-2) Minimum system requirements ----------------------------------------------------------------------------------------------------------------------------- * Debian 10+ * Ubuntu 18.10+ * CentOS 8.2+ * openSUSE 15.3+ Other distros require glibc 2.28+ (`**ldd --version**` to check) [](https://docs.gyroflow.xyz/app/getting-started/installation#install-from-the-google-play-store) Install from the Google Play Store: ------------------------------------------------------------------------------------------------------------------------------------------ [![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FDelQCteFrnjbCjjpovP8%252Fbadge_google_play.png%3Falt%3Dmedia%26token%3D4e31665e-efdd-4d08-82d9-baf80d890389&width=300&dpr=4&quality=100&sign=d69f1f15&sv=2)](https://play.google.com/store/apps/details?id=xyz.gyroflow) [](https://docs.gyroflow.xyz/app/getting-started/installation#manual-install-2) Manual install: ---------------------------------------------------------------------------------------------------- Nightly .apk can be downloaded from [https://nightly.link/gyroflow/gyroflow/workflows/release/master/Gyroflow-android.zip](https://nightly.link/gyroflow/gyroflow/workflows/release/master/Gyroflow-android.zip) [](https://docs.gyroflow.xyz/app/getting-started/installation#minimum-system-requirements-3) Minimum system requirements ----------------------------------------------------------------------------------------------------------------------------- * Android 8 [](https://docs.gyroflow.xyz/app/getting-started/installation#install-from-the-app-store-1) Install from the App Store: ---------------------------------------------------------------------------------------------------------------------------- [![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FMNVnVzjJCqtuZYWs2Awv%252Fbadge_apple_store.png%3Falt%3Dmedia%26token%3Da9160486-ea9a-4564-88d3-313dabef3f17&width=300&dpr=4&quality=100&sign=c6912706&sv=2)](https://apps.apple.com/us/app/gyroflow/id6447994244) [](https://docs.gyroflow.xyz/app/getting-started/installation#beta-channel-1) Beta channel: ------------------------------------------------------------------------------------------------ Updates are pushed more often to TestFlight. Use this link to join as tester and get most recent updates first: [https://testflight.apple.com/join/e0RI1n5i](https://testflight.apple.com/join/e0RI1n5i) [](https://docs.gyroflow.xyz/app/getting-started/installation#manual-install-3) Manual install: ---------------------------------------------------------------------------------------------------- Installing from outside of Apple Store is possible only on jailbroken devices or if you have a developer account and know how to re-sign an .ipa. Nightly .ipa can be downloaded from [https://nightly.link/gyroflow/gyroflow/workflows/release/master/Gyroflow-ios.zip](https://nightly.link/gyroflow/gyroflow/workflows/release/master/Gyroflow-ios.zip) [](https://docs.gyroflow.xyz/app/getting-started/installation#minimum-system-requirements-4) Minimum system requirements ----------------------------------------------------------------------------------------------------------------------------- * iOS 14 [](https://docs.gyroflow.xyz/app/getting-started/installation#latest-development-build) Latest development build --------------------------------------------------------------------------------------------------------------------- Development moves fast and there are new features added very often, check them out by downloading the nightly build You can always download the latest build from [https://gyroflow.xyz/devbuild/](https://gyroflow.xyz/devbuild/) The list of all nightly builds is available on [GitHub actions](https://github.com/gyroflow/gyroflow/actions) Last updated 2 days ago --- # GoPro | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#supported-models) Supported models ---------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Remarks Hero 4 or older ❌ ❌ ❌ Hero 5 Black Hero 5 Session ✅ ✅ Official ❗Needed ❌ Bad on FPV drone 🚧 Superview Hero 6 Black ✅ ✅ Official ❗Needed [Firmware v1.6](http://everythingfpv.com/how-to-downgrade-your-gopro-hero6-to-1-6/) recommended. 🚧 Superview Hero 7 White Hero 7 Silver ❌ ❌ ❌ Hero 7 Black ✅ ✅ Official ❗Needed ❌ Bad on FPV drone ❌ Hypersmooth 🚧 Superview Hero 8 Black Hero 9 Black Hero 10 Black ✅ ✅ Official ✅ Not needed ✅ Hypersmooth 🚧 Superview Hero 11 Black Hero 11 Mini Hero 12 Black Hero 13 Black ✅ ✅ Official ✅ Not needed ✅ Hypersmooth ✅ Autoboost ✅ Superview ✅ Hyperview [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#sensor-and-aspect-ratio) Sensor and aspect ratio ------------------------------------------------------------------------------------------------------------------------------ All GoPros until 11 use a 4:3 sensor, and Hero 11 uses 8:7 sensor. For Gyroflow stabilization, it's best to capture full sensor information, thus 4:3 or 8:7. However, these modes have less frame rate options than 16:9 resolutions, so if you want to shoot at maximum fps, it's better to choose 16:9 mode. Otherwise choose 4:3 or 8:7. Gyroflow will output 16:9 aspect ratio by default after stabilization. This can be changed to anything you like in Export settings. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#lens-and-field-of-view) Lens and field of view ---------------------------------------------------------------------------------------------------------------------------- All lens modes are supported, but it's best to choose `Wide`. Superview and Hyperview modes are supported, but not recommended. They capture full sensor information (4:3 and 8:7 respectively) and digitally stretch that video to 16:9 in camera, in a non-linear way (center is less stretched and sides are more stretched). These modes use proprietary stretching equation which is not exactly mapped in Gyroflow, so stabilization will not be as accurate in these modes. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#split-recording) Split recording -------------------------------------------------------------------------------------------------------------- By default, GoPro files are limited to 4 GB in size. This can be increased by using [GoPro Labs](https://gopro.github.io/labs/) firmware and enabling the [Large chapters](https://gopro.github.io/labs/control/chapters/) feature. If you already have your recording split at 4 GB file size limit, you can merge them losslessly in Gyroflow. If you open the first file, Gyroflow should detect the sequence automatically and ask you to merge. Otherwise you can just drag & drop all your files in the sequence to Gyroflow to merge. You can find more information on the [**🎞 File joiner**](https://docs.gyroflow.xyz/app/getting-started/file-joiner) page. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#in-camera-stabilization) In-camera stabilization ------------------------------------------------------------------------------------------------------------------------------ Since Hero 8, in-camera stabilization (Hypersmooth) can be enabled and is supported in Gyroflow. All previous models need to have all internal stabilization (EIS) disabled during recording. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ----------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#hero-5-black-hero-5-session-hero-7-on-an-fpv-drone) Hero 5 Black, Hero 5 Session, Hero 7 on an FPV drone -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For drone footage, the gyro data from the Hero 5 and 7 is unusable, due to bad noise filtering and aliasing. For this reason, Hero 5 Session, Hero 5 Black and Hero 7 **are not recommended** for cinematic FPV footage. One workaround is to use external gyro logging, for instance using the drone blackbox. Another workaround is the use of vibration-dampening mount, which can be a hassle compared to other GoPros. Some users have reported that using intense low pass filtering of the gyro data (e.g. cutoff of 4 Hz or less) can yield acceptable results for some drone footage. This cannot correct for e.g. higher frequency propwash oscillations or vibrations, but can smooth out the general movement. In general try to avoid these cameras if possible. If you want a budget-friendly camera, the **Hero 6 Black** is an great choice and doesn't have these issues. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#using-gopro-as-external-logger) Using GoPro as external logger -------------------------------------------------------------------------------------------------------------------------------------------- [Action Camera as a Logger](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/action-camera-as-a-logger) Last updated 8 months ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#supported-models) * [Sensor and aspect ratio](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#sensor-and-aspect-ratio) * [Lens and field of view](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#lens-and-field-of-view) * [Split recording](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#split-recording) * [In-camera stabilization](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#in-camera-stabilization) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#shutter-speed-nd-filters-and-motion-blur) * [Hero 5 Black, Hero 5 Session, Hero 7 on an FPV drone](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#hero-5-black-hero-5-session-hero-7-on-an-fpv-drone) * [Using GoPro as external logger](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro#using-gopro-as-external-logger) --- # Common Filming Tips & Issues | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ For any electronic stabilization it's best to avoid motion blur. This means that you have to use high shutter speed and avoid ND filters if the lighting conditions allow it. Motion blur can't be removed in post, so if you capture it in camera, then you stabilize it later, that "motion" will remain in the original direction, while your video will have a different (stabilized) motion. This creates an ugly-looking effect and in some cases ruins the footage. This also applies to the internal Hypersmooth stabilization. Here's an example of bad motion blur after stabilization: You might not notice this effect in your original footage, because motion blur follows the motion you're seeing so it looks natural. Once you stabilize the footage, the frame motion is changed (stabilized) but the motion blur remains in the original direction, and this creates a dissonance in your brain (because it no longer matches the motion) If you use high shutter speed to capture sharp frames, you can the freely move them around to stabilize without risking these artifacts. You can then add motion blur in post, after stabilization, in your video editor. A great plugin for motion blur is [ReelSmart Motion Blur](https://revisionfx.com/products/rsmb/) . You can also use built-in tools eg. in DaVinci Resolve or in Adobe After Effects (Pixel Motion Blur) ### [](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues#id-180-shutter-speed-rule) 180° shutter speed rule A common rule in filmmaking is to use 180° shutter speed (i.e. twice the frame rate, e.g. 1/60 when shooting 30 fps). However **that rule doesn't work when using any kind of digital stabilization.** Shooting with 180° shutter speed is good when your camera is physically stabilized, on a 3-axis gimbal, a crane, slider etc. This is commonly used in filmmaking because movie sets do have the cameras physically stabilized, the shots are planned and the camera motion is predictable. This rule doesn't work for scenarios like FPV drones, mountain biking, running or basically any action-camera type of shots, where the camera is shaking a lot. It can only work if you fly very smoothly and the stabilization is needed only to correct minor movements and not big shakes. A great example of an FPV video with motion blur where strong stabilization is not needed is [here](https://www.youtube.com/watch?v=VjvmY-0mk5s) . Using 90° or even 45° shutter will be much better choice if you want to use any post-stabilization. Last updated 2 years ago * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues#shutter-speed-nd-filters-and-motion-blur) * [180° shutter speed rule](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues#id-180-shutter-speed-rule) --- # Supported Cameras | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FzsAoouJeMHSy2GCdw2rw%252Fgopro-logo-transparent.png%3Falt%3Dmedia%26token%3Ddd357bb3-0c25-49cc-ba5e-74ae3dc1bfa0&width=490&dpr=4&quality=100&sign=5a0bc8d0&sv=2) [GoPro](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/gopro) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fe5ur5FNZtIe4AsIgVNHe%252Fdji-logo-transparent.png%3Falt%3Dmedia%26token%3Dbd954a65-4ad4-4371-b621-271828febf1f&width=490&dpr=4&quality=100&sign=54ad3dfc&sv=2) [DJI](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FHyPXtTGmAHGa5DNFUys7%252Fsony-logo-transparent.png%3Falt%3Dmedia%26token%3D273ecd79-70f5-48f4-bd87-fa342747204f&width=490&dpr=4&quality=100&sign=37c36ed4&sv=2) [Sony](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FPT5iBwmzllGugDH03lhS%252Finsta360-logo.png%3Falt%3Dmedia%26token%3D2e315e32-a3c4-4bad-beda-a58e1a2b18b4&width=490&dpr=4&quality=100&sign=3ef8fdfd&sv=2) [Insta360](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fb7lbbNMQR0DmcgMyjEZu%252Fblackmagic-logo.png%3Falt%3Dmedia%26token%3D15e28859-336e-41b0-a79b-8d65c439c164&width=490&dpr=4&quality=100&sign=daf53bfc&sv=2) [Blackmagic](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FlK7OPbryMIJHW2LKT6VQ%252Fred-logo-transparent.png%3Falt%3Dmedia%26token%3D02e01240-0435-43e1-820f-efeb6f26363a&width=490&dpr=4&quality=100&sign=12e27169&sv=2) [RED](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F1000logos.net%2Fwp-content%2Fuploads%2F2016%2F10%2FCanon-Logo-1024x640.png&width=490&dpr=4&quality=100&sign=a950ffef&sv=2) [Canon](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FcwUeXCtiVPQ3dXIpo0ej%252Fxtra.svg%3Falt%3Dmedia%26token%3Df1817298-95d7-4677-bb41-b4a3c343eb8d&width=490&dpr=4&quality=100&sign=31dd3af&sv=2) [Xtra](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FI7Pa24yO7e2xnVd9ssS0%252Fbf-arudpilot-logo-transparent.png%3Falt%3Dmedia%26token%3Dfe065fbf-5e7e-4d79-8393-882f3d604597&width=490&dpr=4&quality=100&sign=8c53f732&sv=2) [Flight controllers](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FDydxokoMJPIf8pcKIAfi%252Fruncam-logo-transparent.png%3Falt%3Dmedia%26token%3Dc6f07e57-b2f7-49a2-a008-ec45a376b9ae&width=490&dpr=4&quality=100&sign=da7d238c&sv=2) [RunCam](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/caddx) ![Cover](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FTyoDOvcuF0owsbYc8ySc%252Fcaddx-logo-transparent.png%3Falt%3Dmedia%26token%3Dfd5d6cb0-4d65-404b-af0e-1e5c8fa5b437&width=490&dpr=4&quality=100&sign=7dd78d2b&sv=2) [Caddx](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/caddx) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/hawkeye) [Hawkeye](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/hawkeye) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones) [Mobile Phones](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other) [Other Cameras](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other) **What about Nikon, Panasonic, Fujifilm, Pentax, etc.?** Gyroflow supports all cameras that record gyroscope data. Consumer cameras such as those from Nikon, Panasonic, Fujifilm, Pentax, etc. don't record gyro data internally, and therefore cannot be used with Gyroflow. Gyroflow requires the camera to have a hardware gyroscope and to record it together with the video file - so there's nothing we can do on the software side, if the camera didn't provide the gyro data. This is not something Gyroflow developers can fix. You can try to reach the camera manufacturer and express interest in adding gyro data. If they see enough interest, they may add that functionality to the camera. However, it is possible to use an external gyro source with cameras that don't record gyro data internally. You can learn more [here](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source) . Last updated 2 days ago --- # Stabilization | Gyroflow documentation TODO ### [](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#advanced-greater-than-zooming-method) Advanced -> Zooming method TODO ### [](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#advanced-greater-than-zooming-center-offset) Advanced -> Zooming center offset TODO [](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#lens-correction-strength) Lens correction strength --------------------------------------------------------------------------------------------------------------------- TODO [](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#video-speed) Video speed ------------------------------------------------------------------------------------------- TODO Copy - Other smoothing methods - Per-axis smoothing - Max smoothness and max smoothness at high velocity - Second smoothing pass - Only within trim range - Zooming method - Zooming offset - Lens correction strength - Video speed - Gravity vectors Last updated 2 years ago * [Advanced -> Zooming method](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#advanced-greater-than-zooming-method) * [Advanced -> Zooming center offset](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#advanced-greater-than-zooming-center-offset) * [Lens correction strength](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#lens-correction-strength) * [Video speed](https://docs.gyroflow.xyz/app/advanced-usage/stabilization#video-speed) --- # Flight controllers | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#undefined) ---------------------------------------------------------------------------------------------------- [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#betaflight) Betaflight ----------------------------------------------------------------------------------------------------------------- TODO [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#ardupilot) ArduPilot --------------------------------------------------------------------------------------------------------------- TODO Copy - Link to docs - Camera angle - Wobble in planes Copy - Gyro logging presets - Camera angle - ability to select which flight log from BlackBox file to use Last updated 2 years ago * [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#undefined) * [Betaflight](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#betaflight) * [ArduPilot](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/flight-controllers#ardupilot) --- # Synchronization | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#what-is-synchronization) What is synchronization? ----------------------------------------------------------------------------------------------------------------------------------- Synchronization in Gyroflow is the process of adding sync points - the time offset between motion data and video data. Most cameras record the motion data outside of the video pipeline and this causes time difference between capturing actual pixels and capturing camera position. In order to compensate for that, we have to figure out that time offset so Gyroflow can know exactly where the camera was at a particular pixel of the video. Synchronization is needed for all cameras except **GoPro Hero 8+, DJI, Insta360, Sony and Blackmagic RAW**. When using internal gyro data, the time offset will never be larger than 1 second (1000 ms). Usually even less than ±200 ms. When using external gyro data, the offset can be arbitrary and it's the time between starting recording of the motion data and video file. Synchronization works by analyzing the video visually, using an optical flow algorithm to recreate the camera motion from pixels. Once that motion is calculated, it tries to match the motion data from file with the motion data from optical flow. It then adds a sync point with the value (time offset) that makes these two motions overlap. Estimating motion from optical flow is not accurate and depends on a lot of factors, so sometimes this algorithm will fail and produce bad sync point. It is therefore important for you to learn how to detect that and correct it. Before you attempt to sync, you also need to have proper [**🔀 IMU orientation and rotation**](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation) set. It is usually correct by default, but keep that in mind. Autosync can't work if your motion data doesn't correspond to the video motion. Sometimes you can determine the IMU orientation during the syncing (an example of that is in the Examples section on this page). [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#sync-points) Sync points ---------------------------------------------------------------------------------------------------------- A sync point is a time offset by which the motion data should be shifted in either positive or negative direction, to align properly with the video data. Each sync point has a value (time offset in milliseconds). If you have multiple sync points on the timeline, the time offset is interpolated between them. **Very important!** All sync points should have similar values. Sometimes the values will be linearly increasing or decreasing, and sometimes they will be very similar, but in general you can't have multiple sync points with contradicting values. For example, 3 sync points with values 10, -50, 70 is definitely wrong, but 3 sync points with values 10, 12, 16 is plausible. 10.5, 11, 10.7 is also plausible because they are very close to each other. More examples: **BAD:** 0.5ms, -100ms, -150ms, 20ms **BAD:** -120ms, -130ms, 25ms, -150ms _(the 25ms is the contradicting one)_ **BAD:** 1500ms, 120ms, 45ms, 5ms **GOOD:** -1400ms, -1405ms, -1407ms, -1408ms **GOOD:** 49.5ms, 50ms, 50.5ms, 51ms **GOOD:** 20.4ms, 20.4ms, 20.2ms, 20.0ms ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#sync-point-colors) Sync point colors All sync points have a color ranging from green to red. In general, green means a good sync point, and red means bad sync point. If you have multiple green points and one red - delete the red one. It may also happen that the red sync point is actually correct, because you have one correct point and 4 bad points. The color is based on line fit on the time offsets, so it indicates how linear all the points are. **This is not a definitive indicator!** It may help troubleshoot but if your video plays correctly, even red sync point can be actually fine. This is especially important with RunCam cameras where this indicator doesn't work at all and should be ignored. The most common usage will be to use "**Auto sync here**" to create a sync point, and right click + "**Delete sync point**" to remove it. Adjusting sync point value manually can be done by clicking on it and using the slider that appears below it (or the value field next to the slider), but should generally be avoided and autosync should be used instead. You can also right click on the sync point and choose "Zoom in and loop", to create a trim range around the sync point and zoom in the chart. You can then adjust its value and watch the video until it's synchronized correctly. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#getting-good-sync-points) Getting good sync points ------------------------------------------------------------------------------------------------------------------------------------ The synchronization algorithm works best in places where there is significant motion in all directions. If you have these places in the video, they are preferred to pick. The algorithm doesn't work in places where there is no motion, or very little, because it doesn't have enough information to estimate camera movement visually at these places. If you're not getting good sync points, make sure the **Sync search size** parameter covers possible offset range. Like mentioned before for internal gyro data it should be within 1s, and for external gyro data it will be the time you waited between recording gyro and video. Usually 2-3 sync points are enough and the recommended amount for good quality cameras is 3. In certain challenging situations you will need more sync points, maybe 10 or even more. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#how-to-check-if-my-synchronization-is-accurate) How to check if my synchronization is accurate? --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The best way to check if a sync point is accurate it to just play the video at that time. You can create a trim range around the sync point to loop the video on it. If the video is stabilized then you're good. If not, then zoom in on the chart and make sure the lighter lines overlap the darker lines. If they don't, remove that sync point. If you don't see lighter lines, right click there and choose "Auto sync here". Keep in mind that other sync points can affect this sync point. For example, if your video is 10s long and you have a correct sync point of 5 ms in the middle, but then have a sync point with -7000 ms, then the entire data will be stretched and won't be correct even at that one 5 ms sync point. If you want to rely on the sync point colors, you'll need to have more than 2, because 2 sync points are always linear, and the colors show how linear all the offsets are. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#examples) Examples ---------------------------------------------------------------------------------------------------- `**TODO:**` ` ``Add examples ` [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#figuring-out-the-offset-manually) Figuring out the offset manually ---------------------------------------------------------------------------------------------------------------------------------------------------- If everything else fails, there's also an option to figure out the offset manually. You can right click on the timeline and **Add manual sync point here**, and then you can click on the point and adjust the value using the slider below it, or the value field on the right of the slider. By moving the slider or entering a different value, you'll see the gyro data moving left or right on the chart. You can then try to match it with the optical flow, or (if optical flow failed) you can change the value in intervals and observe the video visually until it's stable. The default range of the slider is -VALUE to +VALUE, so the more value (time offset) the point has, the slider will have greater range. By default it starts with 15ms, but you can enter any higher value in the value field, and the range of the slider will adjust. `**TODO:**` ` ``example with optical flow ` `**TODO:**` ` ``example video without optical flow ` [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#settings-that-affect-the-synchronization-algorithm) Settings that affect the synchronization algorithm ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you edit any of the following settings, you have to run the autosync again, because it depends on these values: **Motion data low pass filter, rotation, bias, IMU orientation, integration method and rolling shutter correction**. Remove all sync points after changing these settings and run the autosync again. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#synchronizing-external-gyro-source) Synchronizing external gyro source -------------------------------------------------------------------------------------------------------------------------------------------------------- When using external gyro source, the most important parameter is the **Sync search size.** It is the possible range of a sync point, i.e. no sync point can be larger than this value. The second parameter is **Rough gyro offset.** It's an initial guess (by you) of the offset. For example, if you know that you started recording gyro data, waited 30 seconds and then you started recording video, the rough gyro offset would be 30s. If you know that you started recording both at the same time, leave **Rough gyro offset** at 0s. These two parameters work together. The scanned range is from `rough_offset - search_size` to `rough_offset + search_size`. For example: Rough gyro offset Sync search size Scanned range 0s 5s \-5s to 5s 15s 2s 13s to 17s \-30s 10s \-40s to -20s Read more on the [**🌀 Using external gyro source**](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source) page. Last updated 1 year ago * [What is synchronization?](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#what-is-synchronization) * [Sync points](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#sync-points) * [Sync point colors](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#sync-point-colors) * [Getting good sync points](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#getting-good-sync-points) * [How to check if my synchronization is accurate?](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#how-to-check-if-my-synchronization-is-accurate) * [Examples](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#examples) * [Figuring out the offset manually](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#figuring-out-the-offset-manually) * [Settings that affect the synchronization algorithm](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#settings-that-affect-the-synchronization-algorithm) * [Synchronizing external gyro source](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization#synchronizing-external-gyro-source) --- # File Joiner | Gyroflow documentation Most consumer cameras have a file size limit of 4 GB. If the recording is longer, it will be split into multiple parts. If you want to stabilize such split video, you'll have to merge the parts before stabilization. Gyroflow has a built-in tool to do that for you. ### [](https://docs.gyroflow.xyz/app/getting-started/file-joiner#gopro) GoPro In case of GoPro files, it should detect the sequence automatically and ask you to merge the videos, when you load the first file from the sequence: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FUtrMXRUbSAVuVJII3d6o%252Fjoin1.png%3Falt%3Dmedia%26token%3D0d953653-2b9e-4727-86df-26bf63d13da6&width=768&dpr=4&quality=100&sign=dda1bdf6&sv=2) You can also use [**ReelSteady-Joiner**](https://github.com/rubegartor/ReelSteady-Joiner) to merge GoPro files, or follow the guide [here](https://gopro.github.io/labs/control/chapters/) . You can prevent this from happening by using [GoPro Labs](https://gopro.github.io/labs/) . It has a feature called [Large Chapters](https://gopro.github.io/labs/control/chapters/) , and enabling it will make the camera record big video files over 4 GB, up to 12 GB. ### [](https://docs.gyroflow.xyz/app/getting-started/file-joiner#all-other-cameras) All other cameras In case of all other cameras, you can simply drag & drop all files in your sequence to Gyroflow, and it will ask you if you want to merge them: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FSW9naBI6I4bze3KYZruD%252Fjoin2.png%3Falt%3Dmedia%26token%3D2052b9f1-52d8-4900-b331-fb6c927658af&width=768&dpr=4&quality=100&sign=cf04ad5e&sv=2) When joining video files from RunCam cameras, which have corresponding `.gcsv` files, the `.gcsv` files with gyro data will also be automatically merged. ### [](https://docs.gyroflow.xyz/app/getting-started/file-joiner#standalone-tool) Standalone tool The Gyroflow file merger is also available as a standalone CLI tool: [**mp4-merge**](https://github.com/gyroflow/mp4-merge) Last updated 2 years ago * [GoPro](https://docs.gyroflow.xyz/app/getting-started/file-joiner#gopro) * [All other cameras](https://docs.gyroflow.xyz/app/getting-started/file-joiner#all-other-cameras) * [Standalone tool](https://docs.gyroflow.xyz/app/getting-started/file-joiner#standalone-tool) --- # Lens Profiles | Gyroflow documentation [](https://docs.gyroflow.xyz/app/advanced-usage/lens-profiles#todo) TODO ----------------------------------------------------------------------------- Copy - custom autosync settings in lens profiles, and ability to run autosync on load - custom sync points timestamps - interpolations - crop - underwater adjustment - asymmetrical lens - Other lens models - zoom lenses Last updated 1 year ago --- # Sony | Gyroflow documentation Most newer Sony mirrorless cameras record the motion data internally. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-models) Supported models --------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Sony α1 ✅ ✅ Automatic Sony α7 IV ✅ ✅ Automatic Sony α7C Sony α7C II Sony α7CR ✅ ✅ Automatic Sony α7R IV Sony α7R V ❌ ✅ ❌ ✅ Automatic Sony α7S III ✅ ✅ Automatic Sony α9 II Sony α9 III ❌ ✅ ❌ ✅ Automatic Sony FX3 Sony FX6 Sony FX9 Sony FX30 ✅ ✅ Automatic Sony RX0 Sony RX0 II ❌ ✅ ❌ ✅ Automatic Sony RX100 VI Sony RX100 VII ❌ ✅ ❌ ✅ Automatic Sony ZV-1 Sony ZV-1 II Sony ZV-1F Sony ZV-E1 Sony ZV-E10 Sony ZV-E10 II ✅ ✅ Automatic Sony α6500 Sony α6600 Sony a6700 ❌ ❌ ✅ ❌ ❌ ✅ Automatic Sony HXR-NX800 Sony PXW-Z200 ✅ ❓ ✅ Automatic ❓Probable, not confirmed That list might not be exhaustive as Sony will probably add the motion data to all their new cameras. In general if the stabilization is available in Sony's _Catalyst Browse_ software, Gyroflow should support it too. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-modes) Supported modes ------------------------------------------------------------------------------------------------------------- Some recording modes will not store the motion data in files, for example Sony α7S III in 4k/120fps mode doesn't include the motion data. Currently Gyroflow supports reading most of the recorded metadata, which includes IBIS and OIS data. Therefore, you **can record with IBIS and OIS enabled.** Most newer or high-end lenses with OIS are supported, but there are some lenses where enabling OIS prevents proper stabilization, so check your setup first before enabling OIS. **Dynamic Active** mode is also not supported, but the regular **Active** is. The best option is to use **Standard** stabilization in camera (if your model has IBIS) and add Gyroflow on top of that. List of current issues with Sony metadata is [here](https://github.com/gyroflow/gyroflow/issues/849) . If your file doesn't work properly, but does work in Catalyst Browse, submit it in that [GitHub issue](https://github.com/gyroflow/gyroflow/issues/849) . ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-oss-lenses) Supported OSS Lenses The list of supported lenses with OSS enabled is available on the [Sony website](https://support.d-imaging.sony.co.jp/www/cscs/function/compatibility.php?fnc=1002&area=gb&lang=en&ref=1) . If the link ever stops working, here's the current list as of Oct 2025: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FnzF7LZ7oVwZcrKqMm4cS%252Flenslist.png%3Falt%3Dmedia%26token%3Debdb16ec-a277-4729-b313-c8e3f76a6a46&width=768&dpr=4&quality=100&sign=fb967639&sv=2) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#zoom-lenses) Zoom lenses ----------------------------------------------------------------------------------------------------- Zoom lenses are supported automatically, and you can zoom in and out throughout the video. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ---------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 1 month ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-models) * [Supported modes](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-modes) * [Supported OSS Lenses](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#supported-oss-lenses) * [Zoom lenses](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#zoom-lenses) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/sony#shutter-speed-nd-filters-and-motion-blur) --- # Input Data | Gyroflow documentation [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-information) Video information ---------------------------------------------------------------------------------------------------- ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-frame-rate) Video frame rate If you have your video recorded in VFR mode (project fps different than real-time recording fps, e.g. 120 fps recorded as 30 fps slowed down), then the video playback will not match your motion data, as motion data is always recorded in real time. You can let Gyroflow know what was the real-time frame rate used (e.g. 120fps) and it will stretch the motion data to match the playback rate of the video. In some cases, this value will be read from the file metadata, but if it's not, you can click on the ✏️**Edit** icon and enter the **real time fps** in **Video information -> Frame rate** field. This value only affects the motion data, so it will not make the video playback faster. Remember to put exact frame rate, for NTSC it's 23.976, 29.97, 47.952, 59.94, 119.88 etc. For PAL it's 25, 50, 100 etc.) ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-rotation) Video rotation If you captured the video on the side or upside down, you can edit that field and enter rotation in degrees. [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#motion-data) Motion data ---------------------------------------------------------------------------------------- ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#low-pass-filter) Low pass filter Low pass filter is useful to filter out high frequency vibrations or oscillations picked up by the IMU sensor. If you're using the camera on a drone, and the camera mount is not filtering the vibrations from the motors, then your motion data can be noisy and it will affect the stabilization. In this case, you can apply Low pass filter to filter out the high frequency vibrations while keeping the lower frequency camera motion intact. The usual values range from 30 Hz to 70 Hz. In some extreme cases, very low low pass filter can be useful if the motion data is very bad (e.g. GoPro Hero 7), but it will not magically fix all issues. You have to play with this value and find one that works for your case. Try to find a value which filters out the vibrations but doesn't filter the general motion too much. The low pass filter is applied to gyroscope and accelerometer readings. If the Integration method is None, then it applies it to the Quaternions as well. `**TODO:**` ` ``example video of this in action ` ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#gyro-rotation) Gyro rotation To achieve correct stabilization, the rotation of the motion data needs to match the video. If the IMU sensor is not pointing in the same direction as the camera sensor, then you'll have to rotate the motion data to match. All cameras with internal gyro data already have the correct rotation, but when using external gyro source, chances are you may have to enter the rotation values here. A common example is using blackbox gyro data with camera tilted upwards, or a naked BMPCC, where the IMU sensor is on the main board, and the camera sensor is separated. You can use optical flow data to determine the rotation values. When you change the rotation here, the lines on chart will move as well. Optical flow never moves, so you can change the rotation values by a few degrees and observe how it's changing on the chart, and when they match/align with the optical flow lines. `**TODO:**` ` ``Video example of that ` ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#accelerometer-rotation) Accelerometer rotation In some rare cases, the gyroscope and accelerometer are actually two separate chips, in two different places. If you **right click on the Rotation label** you'll be able to enable **Separate accelerometer rotation.** You can then control gyroscope and accelerometer rotation separately. One example of such setup is the naked GoPro in [Umma95](https://ummagawd.com/products/umma95-beta95x-naked-gopro-cinewhoop-kit) design (you can try accelerometer pitch: 90°). ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#imu-orientation) IMU orientation Similar to **gyro rotation**, the IMU orientation field describes the direction of the IMU chip. IMU orientation however, describes the general direction of the IMU chip. The default value, indicating no direction changes is `XYZ`. This means that the X, Y and Z axes correspond directly to the expected X, Y and Z axes. If we need to invert an axis, the letter will be lowercased, so `xYZ` will mean the X axis corresponds to the inverted expected X axis, and Y and Z are not changed. If we need to swap the axes, we can put another axis on the expcted position, for example `ZYX` will mean that the X axis corresponds to the Z axis, and Z axis corresponds to the X axis, and Y axis is not changed. The first letter describes what axis is expected at the X axis, the second letter at the Y axis, and third at the Z axis. You can use the same technique as described in the **Gyro rotation** section to determine the IMU orientation: Adjust the value and observe the lines on the chart until the light lines (optical flow) and dark lines (motion data) align up. You can also right click on the timeline and choose **Guess IMU orientation here** to attempt to determine the IMU orientation automatically. Note that this function needs large enough **Sync search size**, same as used for the [**⌛Synchronization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) . `**TODO:**` ` ``add video example ` ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#gyro-bias) Gyro bias `**TODO:**` ` ``add information about gyro bias ` ### [](https://docs.gyroflow.xyz/app/advanced-usage/input-data#integration-method) Integration method IMU integration (or sensor fusion) is the process of calculating the final camera position in space, using readings from the gyroscope and an accelerometer. Raw IMU sensor readings indicate velocity (change in position or rotation over time), and not the actual position of the device. Gyroflow needs to know the actual position in space, so it needs to convert these raw readings to final position. It does that by using the integration algorithm. There are a few IMU integration algorithms available in Gyroflow: * **None** - This option is available when the camera already has the actual device position in the metadata, because it calculated it on-board. For example GoPro and DJI cameras calculate it in-camera, so Gyroflow doesn't have to do that. When using this option, Gyroflow will simply use the integrated quaternions provided by the camera. * **VQF** - modern and robust integration algorithm. It is the default algorithm and works well for most cases. It's based on [this paper](https://arxiv.org/pdf/2203.17024.pdf) if you want to read more about it. * **Complementary** - a very good integration algorithm, works well in most cases. You can try this one when the VQF doesn't deliver good results. It's based on [this paper](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4570372/pdf/sensors-15-19302.pdf) if you want to read more about it. * **Simple gyro** - simplest gyroscope integration method. This is a very simple algorithm without without using the accelerometer or any bias estimations. Therefore horizon lock won't work with this method. In practice, it's rarely useful, unless you have somehow damaged accelerometer data and want to skip it. * **Simple gyro with accel** - Similar to the previous one, but also includes accelerometer, so the horizon lock can work. In practice, it's rarely useful. * **Madgwick** - An integration algorithm based on [this paper](https://courses.cs.washington.edu/courses/cse466/14au/labs/l4/madgwick_internal_report.pdf) . Works well in most cases. * **Mahony** - An integration algorithm based on [this paper](https://hal.science/hal-00488376/document) . Last updated 2 years ago * [Video information](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-information) * [Video frame rate](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-frame-rate) * [Video rotation](https://docs.gyroflow.xyz/app/advanced-usage/input-data#video-rotation) * [Motion data](https://docs.gyroflow.xyz/app/advanced-usage/input-data#motion-data) * [Low pass filter](https://docs.gyroflow.xyz/app/advanced-usage/input-data#low-pass-filter) * [Gyro rotation](https://docs.gyroflow.xyz/app/advanced-usage/input-data#gyro-rotation) * [Accelerometer rotation](https://docs.gyroflow.xyz/app/advanced-usage/input-data#accelerometer-rotation) * [IMU orientation](https://docs.gyroflow.xyz/app/advanced-usage/input-data#imu-orientation) * [Gyro bias](https://docs.gyroflow.xyz/app/advanced-usage/input-data#gyro-bias) * [Integration method](https://docs.gyroflow.xyz/app/advanced-usage/input-data#integration-method) --- # Color Differences | Gyroflow documentation `**TODO:**` ` ``Cleanup this page ` color range is either Full/JPEG (0-255) or Limited/MPEG (16-235), and is generally in metadata Gyroflow tries really hard to maintain all original video parameters, but there is a huge mess with color range metadata across video players, editors, and tools in Resolve, you can go to clip attributes and change Color range to Full or Video and it may look different in different players or video editors, you can search online about color range issues it will depend on your exact case and environment so you'll have to figure out a workflow that works for you you have to test the colors on all stages of your editing and make the changes as necessary your original file from gopro can also be interpreted in 2 different ways there is no rule to this, your file may look the same or different at all stages: original file, processed in gyroflow, playing in VLC, playing in resolve, exported from resolve and played in VLC, uploaded to youtube etc in addition to the color range, there's also a gamma curve, which also makes a difference at different stages and for example on youtube google a common problem with colors looking different on the exported file, and in the uploaded video on youtube (not related to gyroflow) but there is such a mess that there are multiple workarounds and different rules that it's impossible to be certain across applications [https://cinelerra-gg.org/download/CinelerraGG\_Manual/Color\_Space\_Color\_Range\_Aff.html](https://cinelerra-gg.org/download/CinelerraGG_Manual/Color_Space_Color_Range_Aff.html) also there are bugs, eg video encoder on Intel macOS basically ignores the requested color range [https://referencehometheater.com/2014/commentary/rgb-full-vs-limited/](https://referencehometheater.com/2014/commentary/rgb-full-vs-limited/) [https://coloraggio.github.io/davinci-resolve-manuals/12.5\_Manual/6.pdf](https://coloraggio.github.io/davinci-resolve-manuals/12.5_Manual/6.pdf) "Data Levels Settings and Conversions" it's best to use the OpenFX plugin to avoid this issue Last updated 2 years ago --- # Troubleshooting | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#failed-to-start-on-windows) Failed to start on Windows ---------------------------------------------------------------------------------------------------------------------------- ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F8BDW7xDmz1ainGmXW83A%252Fimage.png%3Falt%3Dmedia%26token%3D69058501-832d-4d17-9168-aed06fd63bbd&width=768&dpr=4&quality=100&sign=49467186&sv=2) If you see the following message or similar mentioning `VCRUNTIME140.dll`, install [**VC redist**](https://aka.ms/vs/17/release/vc_redist.x64.exe) [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#failed-to-export-hevc) Failed to export HEVC ------------------------------------------------------------------------------------------------------------------ If you see an error message like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F3GZLsMN4JthqKgsky74l%252Fffmpeg-error-558323010.png%3Falt%3Dmedia%26token%3Da4366897-abbb-42c2-ae8e-664743c509fc&width=768&dpr=4&quality=100&sign=fc3ff602&sv=2) ...then: * If you're on Windows or Linux, make sure you're using the latest drivers for your GPU. * If you're using an older GPU, it may not support hardware HEVC encoding, in which case, you should try H.264 instead. * If H.264 also fails, try disable GPU encoding completely. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#application-failed-to-start) Application failed to start ------------------------------------------------------------------------------------------------------------------------------ If you see an error message like this on Windows: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F3Yuobisn6Pj1Z1UW7NRC%252Fapp-failed-to-start.png%3Falt%3Dmedia%26token%3Dee952624-8e3b-434d-a7f4-dbee7a02e61a&width=768&dpr=4&quality=100&sign=bc8fbb84&sv=2) Please try downloading Gyroflow again. Everything you need is in the ZIP file that you download - you don't need to install any other dependancies manually. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#no-space-left-on-device) No space left on device ---------------------------------------------------------------------------------------------------------------------- If you see an error message like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FfEqMw18QBLiHmckOn5Bb%252Fno-space.png%3Falt%3Dmedia%26token%3Df8e11088-6125-4486-89f3-03e5971d5846&width=768&dpr=4&quality=100&sign=996e02ce&sv=2) It means your hard drive doesn't have enough space for `ffmpeg` to render to. Please make some room and try again. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#doesnt-support-this-pixel-format) Doesn't support this pixel format ----------------------------------------------------------------------------------------------------------------------------------------- If you see an popup like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F6iTsUIFmvpWnRvysm0p4%252Fgpu-not-supported.png%3Falt%3Dmedia%26token%3De695919c-243d-4eac-a3ed-a3823d4cc004&width=768&dpr=4&quality=100&sign=16b20bdf&sv=2) It means your physical GPU hardware doesn't support the pixel format you're attempting to render to (i.e. normally it means your GPU hardware doesn't support 4:2:2 10-bit). You can click **Render using CPU**, to render using the CPU instead of the GPU to maintain full quality, or you can pick another pixel format. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#unknown-error-occurred) Unknown Error Occurred -------------------------------------------------------------------------------------------------------------------- If you see an error message like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FXVDRPlBYYzF8XNPfPjSq%252Fffmpeg-error.jpg%3Falt%3Dmedia%26token%3D1c749c6a-e08a-445d-8e96-9de2aab93896&width=768&dpr=4&quality=100&sign=9eb10f68&sv=2) ...then: * If you're on Windows or Linux, make sure you're using the latest drivers for your GPU. * If you're using an older GPU, it may not support hardware HEVC encoding, in which case, you should try H.264 instead. * If H.264 also fails, try disable GPU encoding completely. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#read-only-file-system) Read Only File System ------------------------------------------------------------------------------------------------------------------ If you see an error message like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FHUOFyNBLxui0vUJZQKZy%252Fdont-run-from-bundle.png%3Falt%3Dmedia%26token%3D33ca1f96-9550-4408-a22c-0c20e9eb9bd4&width=768&dpr=4&quality=100&sign=3ddac3c0&sv=2) ...and you're on Mac, make sure you install **Gyroflow** in your **Applications** folder and do NOT run it from the downloaded DMG package. Due to macOS sandboxing, Gyroflow isn't allowed to write to inside the package. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#invalid-data-found-when-processing-input) Invalid data found when processing input -------------------------------------------------------------------------------------------------------------------------------------------------------- If you see an error message like this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FcA5I3TTmN9u4NmmocyPm%252Fexisting-red-transcode.png%3Falt%3Dmedia%26token%3Df2aea2c2-872e-44b1-bf13-b8cf16e62bf7&width=768&dpr=4&quality=100&sign=54e13442&sv=2) ...and you're working with RED `R3D` files, try deleting the `MOV` file that Gyroflow created next to the `R3D` file, and try again. [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#undefined) ------------------------------------------------------------------------------- Last updated 1 year ago * [Failed to start on Windows](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#failed-to-start-on-windows) * [Failed to export HEVC](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#failed-to-export-hevc) * [Application failed to start](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#application-failed-to-start) * [No space left on device](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#no-space-left-on-device) * [Doesn't support this pixel format](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#doesnt-support-this-pixel-format) * [Unknown Error Occurred](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#unknown-error-occurred) * [Read Only File System](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#read-only-file-system) * [Invalid data found when processing input](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#invalid-data-found-when-processing-input) * [](https://docs.gyroflow.xyz/app/getting-started/troubleshooting#undefined) --- # Synchronization | Gyroflow documentation TODO Copy - Every n-th frame - Time to analyze per sync point - Figuring out the offset manually - Trying different optical flow methods - Different pose methods - Offset methods - Low pass filter - Show features/optical flow Last updated 2 years ago --- # Xtra | Gyroflow documentation Xtra cameras contain the gyro data embedded in the video file. **Important!** In-camera stabilization (EIS/MotionMaster) needs to be **disabled**, and FOV needs to be set to **Wide.** Otherwise your camera **will not** record gyro data and won't be usable in Gyroflow. Ultrawide, Normal or "Natural Wide" lens modes are **not supported.** [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#supported-models) Supported models ---------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Remarks Edge Edge Pro ✅ ✅ Official ✅ Not needed Muse ❌ ❌ ❌ Sphra360 \- \- \- 360 cameras are not supported [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#split-recording) Split recording -------------------------------------------------------------------------------------------------------------- Xtra cameras have a file size limit of 4 GB. If the recording is longer, it will be split into multiple parts. If you want to stabilize such split video, you'll have to merge the parts before stabilization. Gyroflow can do that for you. Just drag & drop all your files in the sequence to Gyroflow to merge. You can find more information on the [**🎞 File joiner**](https://docs.gyroflow.xyz/app/getting-started/file-joiner) page. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ----------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 2 days ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#supported-models) * [Split recording](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#split-recording) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji-1#shutter-speed-nd-filters-and-motion-blur) --- # Settings Presets | Gyroflow documentation Presets can be used to store your common preferred settings in the UI. You can then have them in the Lens profile search box, or you can drag & drop them in the UI or in the [render queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue) , or use in the [CLI](https://docs.gyroflow.xyz/app/advanced-usage/command-line-cli) . [](https://docs.gyroflow.xyz/app/advanced-usage/settings-presets#creating-presets) Creating presets -------------------------------------------------------------------------------------------------------- In order to create a preset, set any settings you want in the UI, then click on the arrow on the **Export** button and choose **Create settings preset.** ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FCQADHyWIk3UZYQEJHZgJ%252Fimage.png%3Falt%3Dmedia%26token%3Dbe05ad90-a4c6-4a6e-9cfb-398ff6be61a8&width=768&dpr=4&quality=100&sign=f34de8b7&sv=2) Then simply select settings you want to include in the preset: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FeX6JeD2gCRvU12yyO0he%252Fimage.png%3Falt%3Dmedia%26token%3D195326c4-31f8-4b11-9e30-7d54d33ec20a&width=768&dpr=4&quality=100&sign=42a8b466&sv=2) If you save the preset in `camera_presets` directory, it will show up in the Lens profile search box. It can be favorited and searched. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FfXyBvARMZGxwaPyrf3em%252Fimage.png%3Falt%3Dmedia%26token%3D657b5396-05ac-4ef8-b1c8-bee587ee0a0e&width=768&dpr=4&quality=100&sign=c611ab3c&sv=2) Preset in the lens profile search box [](https://docs.gyroflow.xyz/app/advanced-usage/settings-presets#default-preset) Default preset ---------------------------------------------------------------------------------------------------- If you save your preset as `default.gyroflow` in the `camera_presets` directory, it will be loaded automatically with every video. `default.gyroflow` loads in the main window, as well as in the render queue. On macOS, the `camera_presets` directory is located by right-clicking on the Gyroflow app -> Show package contents -> Contents -> Resources -> camera\_presets Last updated 2 years ago * [Creating presets](https://docs.gyroflow.xyz/app/advanced-usage/settings-presets#creating-presets) * [Default preset](https://docs.gyroflow.xyz/app/advanced-usage/settings-presets#default-preset) --- # Timeline & Gyro Chart | Gyroflow documentation In the bottom section of Gyroflow, you can see the timeline, which shows the loaded motion data. This is a very important tool to determine correct synchronization, so make sure you learn how to use it. It contains 4 layers of data: 1. Darker lines, filling entire chart - this is the motion data as recorded by the camera. 2. Lighter lines, they show up only after running autosync, and only at specified points - this is the motion data calculated from optical flow by analyzing the video pixels visually. This data always corresponds to the video and is not affected by sync points. 3. Sync points - vertical lines with time values below them. This is the time offset by which the motion data is shifted to match the video movement. 4. Dynamic zooming percentage - the bottom half of the chart shows a very light, filled overlay - this is the amount of zoom at a particular video time. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FRGqCIRmm4UiMeY3dAP7H%252Ftimeline3.png%3Falt%3Dmedia%26token%3D51de373f-eaa9-47bc-b708-ad281f160a3c&width=768&dpr=4&quality=100&sign=697d6883&sv=2) Timeline elements overview When using **sync-less video files (GoPro Hero 8+, DJI, Sony, Blackmagic RAW & Insta360)** you can skip this part entirely, as the synchronization is already correct and accurate, and no additional sync points should be added. **The goal is to have the lighter lines lined up with the darker lines.** In order to do that, synchronization points need to be added, which shift the darker lines in time (left or right on the chart). [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#zooming-and-panning) Zooming and panning ---------------------------------------------------------------------------------------------------------------------------------- To see what's actually going on on the chart, you'll need to zoom it in. Use: * **mouse wheel** to zoom in and out horizontally * **Alt + mouse wheel** (on macOS: Control + Shift + mouse wheel) to zoom in and out vertically * **middle mouse button** or **Ctrl + mouse wheel** (on macOS: Command + mouse wheel) - to pan the view left and right Example of zooming in to inspect the sync points If you see minor shift of the lighter lines, but it roughly matches (like on the above example), this is usually fine and expected - trying to align it manually to perfectly cover the lines may actually make it worse. You should mostly rely on the autosync. Because of rolling shutter effects, the lines won't be perfectly aligned on chart when the sync is perfect, so first of all you should check if your video is stabilized by playing it, instead of aligning the lines with each other at all costs. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#context-menu) Context menu -------------------------------------------------------------------------------------------------------------------- #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#auto-sync-here) Auto sync here Analyze the video visually here and produce optical flow motion data and a sync point. The amount of time to analyze is specified by _Synchronization -> Advanced -> Time to analyze per sync point_. This option will run the optical flow algorithm and show the resulting motion data as lighter lines on the chart. It will then try to calculate the correct sync point using that data. You will usually use this option to add new optical flow data to the chart and produce a new sync point. This may also produce a bad sync point. You can then remove the bad sync point and use other techniques to align the chart or assess the correctness of the sync using the produced lighter lines, which will remain on the chart. The main **Auto sync** button in the Synchronization section (on the right) just picks a few points in the video and calls "Auto sync here" at these points, so these functions are equivalent. Keyboard shortcut: `a` #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#add-manual-sync-point-here) Add manual sync point here This option can be used to add a new sync point without running autosync or optical analysis - it can be used to shift the motion data manually by using the slider below the sync point. It's usually not recommended to use this option. Keyboard shortcut: `p` #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#guess-imu-orientation-here) Guess IMU orientation here If your motion data is facing a different direction than the video and lines on the chart don't align (or have different colors when aligned) - you'll need to determine correct IMU orientation. You can use this option to attempt to guess the correct IMU orientation. Read [**🔀 IMU orientation and rotation**](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation) to learn the exact process. After changing IMU orientation, remove all sync points and do the synchronization again. #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#estimate-gyro-bias-here) Estimate gyro bias here Estimating gyro bias can help achieve better stabilization results. To estimate the bias, you'll need to have a moment in your video where the camera is not moving at all. In the FPV case it can be before take off. After estimating bias, remove all sync points and do the synchronization again. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FPmilXgfcMcpjn2S1CLuq%252F20230218023727_1.gif%3Falt%3Dmedia%26token%3De577a467-2871-495d-8721-7a18bc164b26&width=768&dpr=4&quality=100&sign=f8b9127a&sv=2) Gyro bias estimation #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#estimate-rolling-shutter-here) Estimate rolling shutter here This function was created to help estimating the rolling shutter value, but in practice it's rarely accurate and its use is discouraged. Read more about figuring out the rolling shutter time on the [**🔥Stabilization -> Rolling shutter correction**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#rolling-shutter-correction) page. #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#chart-display-mode) Chart display mode The motion data chart can show 4 different data sources: Gyroscope, Accelerometer, Magnetometer and Quaternions Quaternions are always available because they are either provided by the camera, or created from Gyroscope and Accelerometer by using a _sensor fusion_ algorithm. For example DJI cameras contain only Quaternions without gyro data, because the _sensor fusion_ is ran inside the camera. Gyroscope readings represent a speed of rotation (rotating up/down/right/left) and Accelerometer readings represent a speed of translation (moving up/down/right/left). By using these values over time, we can calculate the quaternion - a 3d camera orientation in space, and that is used for all stabilization algorithms in Gyroflow. In the quaternion chart mode, lighter lines represent **smoothed orientation**, instead of optical flow data. Buttons on the left and right can be used to show or hide the display of axis or zooming data. This does not affect any stabilization settings. ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#sync-points-debug-layer) Sync points debug layer The fourth button on the right \[`S`\] can be used to show the sync points line fit that is used to calculate sync point colors. It will also show the offset value visually on the chart. It can be useful for debugging the synchronization. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#zooming-information) Zooming information ---------------------------------------------------------------------------------------------------------------------------------- The bottom half of the chart contains dynamic zooming information - it's the light filled overlay on the chart, and it indicates how much a video is zoomed in at that time. It can be enabled or disabled by clicking the "Z" button on the left side of the chart. If you increase FOV value to more than 1 or disable dynamic zooming, the chart will also show a red overlay. This indicates that the video is showing the background at that time, i.e. source video pixels don't cover the entire output frame at that time. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#sync-points) Sync points ------------------------------------------------------------------------------------------------------------------ Read about sync points on the [**⌛ Synchronization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) page. Last updated 1 year ago * [Zooming and panning](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#zooming-and-panning) * [Context menu](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#context-menu) * [Sync points debug layer](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#sync-points-debug-layer) * [Zooming information](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#zooming-information) * [Sync points](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart#sync-points) --- # Stabilization | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#fov) FOV ---------------------------------------------------------------------------------------- Field Of View - this value can be though of as a zoom slider. For most use cases, it should stay at 1.0. With Dynamic Zooming enabled, the value of 1.0 will ensure that the stabilization uses the maximum possible pixels while not showing any black bars/sides. If you increase it over 1, you'll zoom out the video and show the outer frame, you can use that to see what stabilization is doing. If you decrease it below 1, you'll zoom in the footage. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#smoothing-algorithm) Smoothing algorithm ------------------------------------------------------------------------------------------------------------------------ Gyroflow ships with 3 smoothing algorithms, but for 99.5% use cases the **Default** algorithm should be used. There are two common issues related to the selected algorithm: 1. Video turns black when stabilization is enabled - most likely you have **Fixed camera** selected. Change to **Default**. 2. Video zooms in too much - most likely you have **Plain 3D** selected. Change to **Default**. You can learn more about other algorithms and when they are useful in the [**🔥Advanced usage -> Stabilization**](https://docs.gyroflow.xyz/app/advanced-usage/stabilization) section. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#smoothness-amount) Smoothness amount -------------------------------------------------------------------------------------------------------------------- This is the main slider to control amount of camera movement smoothing. Setting it to 0 will essentially disable any smoothing and setting it to 1 or more, will make your footage more smooth. Remember that more smoothing requires more zooming, so you have to find a good balance between smoothness and zooming. The default of **0.5** works well for most cases. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#horizon-lock) Horizon Lock ---------------------------------------------------------------------------------------------------------- You can activate the horizon locking function here. The resulting video will keep the horizon level, while stabilizing other axes. This will cause the video to zoom in more, because Gyroflow will have less pixels to work with when the frame is rotated to keep the horizon level. The effectiveness of this function is depending on the camera motion data. Some cameras have accurate orientation information, and some have worse. It will also depend on the selected **Integration method**, so if you're not getting good results, you can try to change the **Integration method** to something else. Note that in some cases, accurate horizon lock will not work, due to not enough, or bad data provided by the camera. In some cases, you will be able to adjust the roll value using **Horizon lock roll** slider to keep your horizon levelled, and if you're still not getting good results, you can also [**🔑 keyframe**](https://docs.gyroflow.xyz/app/advanced-usage/keyframes) the roll adjustment over time. Some cameras also contain gravity vectors, which is additional data useful to lock the horizon. In that case there will be a checkbox to **Use gravity vectors**. Note that this will not always be better option, so you have to test your case. Some people like to keyframe the horizon locking amount to only apply to some parts of the video, so you can use keyframes to do that too. Read more about keyframes in the [🔑 **Advanced -> Keyframes**](https://docs.gyroflow.xyz/app/advanced-usage/keyframes) section. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#zooming) Zooming ------------------------------------------------------------------------------------------------ With post-stabilization, we only have as much information as the sensor captured. If we move these pixels around, we'll end up missing some information on the sides. Because of that, applying the stabilization only will result in moving empty sides around the video. To compensate for that, we need to zoom in the image to show the available pixels only. This is also referred to as cropping. Gyroflow has 3 available zooming modes: 1. **No zooming** - This mode simply disables all zooming and applies only the stabilization. 2. **Dynamic zooming** - In this mode, the zoom amount will be dynamically changing throughout the video to use as much pixels as we have available. Some parts of the video will need to be zoomed in more and some less, and this mode creates smooth transition between these zoom levels. 3. **Static zoom** - this mode will apply one, static crop for the entire duration of the video. This will remove the zooming in-and-out effect, but it will use the maximum needed zoom level, thus cropping the video a lot. It may work in some cases if there is not much movement, but it's generally recommended the use the _Dynamic zooming_ mode instead (and if you want to avoid the visible zooming in-and-out effect, use high zooming speed, like 20-30s). ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#zooming-speed) Zooming speed This is the amount of time it takes to transition from one zoom level to another, meaning the the shorter the time, the faster the zooming will be. You can see that by setting this value to 0.1s. The usual values are ranging from 2s to 5s. Setting longer value will make your zooming changes throughout the video slower, but that also means it will stay zoomed in for longer period of time. Adjust this value to your taste. You can also switch the zooming method to **Envelope follower** to use a different zooming algorithm. It may look more natural, but you'll have to test for yourself. You can see how the zooming level changes on the chart by observing the zooming level graph (light overlay as described in the [📈 **Timeline and gyro chart**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart) section). Read more about advanced zooming options in [**🔥Advanced -> Stabilization**](https://docs.gyroflow.xyz/app/advanced-usage/stabilization) . [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#rolling-shutter-correction) Rolling shutter correction -------------------------------------------------------------------------------------------------------------------------------------- Rolling shutter correction is a very important part of accurate stabilization process. Most digital cameras have rolling shutter sensors, meaning that the image is not captured all at once, but it is read sequentially from top to bottom. This makes the captured video prone to skews and wobbles when the side-to-side motion is significant. You can observe this effect by quickly panning left-right with your camera and looking at straight lines - they will be bent. You can learn more about rolling shutter here. (`**TODO:**` `add link`) To compensate for that, Gyroflow needs to know the **Frame readout time** which is the time it took the sensor to capture the entire image. Some cameras have this value built-in, and some cameras have rolling shutter already corrected in the camera (e.g. GoPro). There are also cameras with global shutter which don't create this effect, but they are rare (one example is RED KOMODO). All other cameras need to have this option enabled and the **Frame readout time** correctly filled in. #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#example-of-rolling-shutter-distortions) Example of rolling shutter distortions `**TODO:**` `add video` #### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#how-to-determine-the-frame-readout-time) How to determine the frame readout time? It's best to determine the value when doing lens calibration and save that value with the lens profile. You can read how to do that on the [🏁 **Lens Calibration**](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) page. Otherwise, you can google the camera lab test, which usually have the frame readout time tested and provided. It is sometimes (but rarely) also provided by the camera manufacturer. You can also try to simply eyeball it. Due to it's nature, the value can only have limited range, so you can move the slider from 0 to max and see if your footage looks better. It's best to have the footage synchronized already (more or less) to observe just the rolling shutter correction. Frame readout time affects synchronization, so make sure you synchronize your footage again if you change this value. Frame readout time will also be different depending on the camera shooting mode (e.g. in 4k vs 1080p). If you're using **Sony, GoPro, Insta360, DJI or Blackmagic RAW**, then you don't have to worry about it as it's handled automatically. ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#for-more-control-over-stabilization-settings-see-the-advanced-section) For more control over stabilization settings, see the Advanced section: [🔥Stabilization](https://docs.gyroflow.xyz/app/advanced-usage/stabilization) Last updated 2 years ago * [FOV](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#fov) * [Smoothing algorithm](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#smoothing-algorithm) * [Smoothness amount](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#smoothness-amount) * [Horizon Lock](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#horizon-lock) * [Zooming](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#zooming) * [Zooming speed](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#zooming-speed) * [Rolling shutter correction](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#rolling-shutter-correction) * [For more control over stabilization settings, see the Advanced section:](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#for-more-control-over-stabilization-settings-see-the-advanced-section) --- # Caddx | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/caddx#supported-models) Supported models ---------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Remarks Peanut ✅ ✅ Official ❗Needed It's [Insta360 GO 2](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360) Walnut ✅ ✅ Official ❗Needed Uses .gcsv Disable the internal Lens Distortion Correction. Stabilization doesn't work properly when that mode is enabled. Last updated 1 year ago --- # Canon | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-models) Supported models ---------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile EOS C50 EOS C80 EOS C400 ✅ ✅ Automatic (see [Supported Lenses](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-lenses-for-automatic-lens-profile) ) EOS R6 Mark II EOS R6 Mark III ❌ ✅ ❌ ⚠️ Manual (see [Lens Calibration](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) ) EOS R5 EOS R5 Mark II ❌ ✅ ❌ ⚠️ Manual (see [Lens Calibration](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) ) That list might not be exhaustive as Canon will probably add the motion data to all their new cameras. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-modes) Supported modes -------------------------------------------------------------------------------------------------------------- In order to stabilize the videos correctly in Gyroflow, all internal stabilization in camera **must be disabled.** This includes Lens IS, Digital IS and IBIS. At this point, Canon's gyro data timing is not always 100% accurate. You may have to do an [Auto Sync](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) on some clips. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-lenses-for-automatic-lens-profile) Supported Lenses for automatic lens profile ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- The list of supported lenses which work automatically in Gyroflow: #### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#rf-lenses) RF Lenses * RF 20mm F1.4L VCM * RF 24mm F1.4L VCM * RF 35mm F1.4L VCM * RF 50mm F1.4L VCM * RF 85mm F1.4L VCM * RF 24-105mm F2.8L IS USM Z (RF 1.4x or 2x Extender are also compatible) * RF 70-200mm F2.8L IS USM Z (RF 1.4x or 2x Extender are also compatible) #### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#rf-cinema-lenses) RF Cinema Lenses * RF CN7x17 KAS T/R1 * RF CN5x11 IAS T/R1 * RF CN-R 14mm T3.1L F * RF CN-R 20mm T1.5L F * RF CN-R 24mm T1.5L F * RF CN-R 35mm T1.5L F * RF CN-R 50mm T1.3L F * RF CN-R 85mm T1.3L F * RF CN-R 135mm T2.2L F #### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#ef-mount-requires-an-ef-to-eos-r-mount-adapter) EF Mount: (Requires an EF to EOS R Mount Adapter) * EF CN8x15 IAS S/E1 * EF CN-E 20-50mm T2.4L F * EF CN-E 45-135mm T2.4L F * EF CN-E 14-35mm T1.7L F * EF CN-E 31.5-95mm T1.7L F Make sure your camera and the lens are updated to latest firmware version. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#zoom-lenses) Zoom lenses ------------------------------------------------------------------------------------------------------ Zoom lenses are supported automatically, and you can zoom in and out throughout the video, if your lens is on the list provided above. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#my-lens-is-not-on-that-list) My lens is not on that list -------------------------------------------------------------------------------------------------------------------------------------- If your lens is not supported, you have to provide a lens profile manually. You can either find it in the list of community-provided lens profiles, or calibrate yourself by following [🏁this guide](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) . [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ----------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 13 days ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-models) * [Supported modes](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-modes) * [Supported Lenses for automatic lens profile](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#supported-lenses-for-automatic-lens-profile) * [Zoom lenses](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#zoom-lenses) * [My lens is not on that list](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#my-lens-is-not-on-that-list) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/canon#shutter-speed-nd-filters-and-motion-blur) --- # Other | Gyroflow documentation TODO Copy - Full screen mode - Background mode - Stabilization overview split view - Safe area guide - Use GPU decoding - Format for R3D conversion - Colors for R3D conversion - Preview pipeline - Device for video processing - Default file suffix - Notification sounds - Always save render queue (so it's preserved after Gyroflow restart) - support for transparent videos - Prevent system from going to sleep while rendering Last updated 1 year ago --- # Hawkeye | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/hawkeye#supported-models) Supported models ------------------------------------------------------------------------------------------------------------------ Model Gyro data Lens profile Synchronization Firefly X-Lite ✅ ✅ Official ❗Needed Naked/Split ✅ ✅ Official ❗Needed Last updated 1 year ago --- # Basic Usage | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#how-does-it-work) How does it work? ----------------------------------------------------------------------------------------------------- Gyroflow works by using motion data recorded by the camera to recreate camera motion in real world and compensate for the camera movements, therefore creating a new, stabilized world view. In order to do that, Gyroflow must know exactly how the camera was oriented in space when the video frame was captured. It is **very important** for the motion data to be accurately representing the video frames. Most cameras record the motion data outside of the video pipeline and this causes time difference between capturing actual pixels and capturing camera position. In order to compensate for that, we have to figure out that time offset so Gyroflow can know exactly where the camera was at a particular pixel of the video. This is done by the **Synchronization** step in Gyroflow and it's very important to do it accurately. Otherwise Gyroflow can't know how the camera was moving and will create bad results. **Remember!** If you're not getting a good stabilization, the most important questions you should ask yourself are: 1. Is my synchronization (time offset) accurate? 2. Is my lens profile accurate? 3. Is my [rolling shutter correction](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization#rolling-shutter-correction) value accurate? In order to move the video around for stabilization, we also have to remove the lens from the equation. All camera lenses create some distortions and when we attempt to move the view, we'll move it with these distortions and it will look bad. Gyroflow needs to know the real world view that is not skewed by the lens distortions, so we can move sort of a "flat" plane around and avoid warping caused by the lens optics. This is done by calibrating the camera lens and using the lens profile in Gyroflow. Once you have accurate lens profile and accurate motion data, Gyroflow can take your video, undistort the lens optics, move the world view around according to the motion data, and then optionally add the lens distortion back. If your synchronization or lens profile is not accurate, that whole process falls apart and produces bad results. Some cameras (e.g. GoPro 8+, DJI) have official lens profile and accurate timing data built-in, so they just work out of the box. All other cameras need the lens profile and synchronization done by the user. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#general-ui-overview) General UI overview ---------------------------------------------------------------------------------------------------------- Gyroflow's user interface is divided into 3 sections: 1. **Left:** Inputs - all input files and input parameters are on the left side 2. **Center:** Timeline and gyro data - below the video you have the main timeline with the gyro data. This is a very important tool, so make sure you learn how to use it. 3. **Right:** Stabilization parameters and outputs All sliders in Gyroflow can be reset to the default value by double clicking on the label, or right clicking and selecting **Reset value**. All sliders also have [**🔑 Keyframing**](https://docs.gyroflow.xyz/app/advanced-usage/keyframes) available when you right click and select **Enable keyframing.** All value fields can be adjusted by using _Up_ and _Down_ keys on your keyboard, with Ctrl/Alt/Shift modifiers for different step amount. ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#video-information) Video information This section contains the input file and the detected information about it. You can see the detected camera and lens info, resolution, duration, frame rate, codec, pixel format, audio, rotation and whether the gyro data was detected in that video file. There are 2 editable fields here: Frame rate and rotation 1. Frame rate - this is the frame rate used for the **motion data** and this should be the real-time frame rate. For most videos, you don't need to change it. However if you record in a VFR mode, where the video is captured at e.g. 120 fps but the file is slowed down to 30 fps - this is where you should edit that field and enter **119.88 fps** (remember to put exact frame rate, for NTSC it's 23.976, 29.97, 47.952, 59.94, 119.88 etc. For PAL it's 25, 50, 100 etc.) 2. Rotation - if you captured the video on the side or upside down, you can edit that field and enter rotation in degrees. ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#lens-profile) Lens profile This section contains the lens profile for your video. Lens profile is very important as it's the base for the stabilization algorithm. You can either pick one of built-in lens profiles, or create your own. In general fps doesn't matter for lens profile, as long as it uses the same sensor area. Some cameras have the lens profile built-in and loaded automatically. You can also mark lens profile as a favorite by clicking the star icon. Lens profiles can be scaled, i.e. it's OK to load a lens profile created for 4k video, to a 1080p video, as long as the aspect ratio is the same and the camera uses the same sensor area. For this reason, search box validates the aspect ratio and fades out lens profiles which don't match the aspect ratio of your video. In some cameras (like RED), different resolutions always use different part of the sensor, so the lens profile can't be scaled and you need to use one created for the same exact resolution. Have this in mind when troubleshooting stabilization issues. The search box here can also hold your [⚙ **settings presets**](https://docs.gyroflow.xyz/app/advanced-usage/settings-presets) if you place your preset in the `camera_presets` directory. Presets can also be favorited and are searchable. The search box also understands shortcuts for some common camera names: `bmpcc4k, bmpcc6k, bmpcc, gopro5, gopro6, gopro7, gopro8, gopro9, gopro10, gopro11, session5, a73, a74, a7r3, a7r4, a7s2, a7s3` To learn how to calibrate your own lens, go to [🏁 **Lens calibration**](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) To learn more about advanced lens profile features, see [🔭 **Advanced usage -> Lens profile**](https://docs.gyroflow.xyz/app/advanced-usage/lens-profiles) . ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#motion-data) Motion data This section contains the motion data for the actual stabilization. For most common use cases, it will be automatically loaded from the video file. If you want to use a different motion data source (like external gyro logger, drone blackbox or a different camera), you can load the motion data file here. For more details about using external motion data file, go to [🌀 **Using external gyro source**](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source) . ### [](https://docs.gyroflow.xyz/app/getting-started/basic-usage#once-you-have-all-the-input-files-loaded-proceed-to-the-timeline-and-gyro-chart) Once you have all the input files loaded, proceed to the [📈 Timeline and gyro chart](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart) Last updated 1 year ago * [How does it work?](https://docs.gyroflow.xyz/app/getting-started/basic-usage#how-does-it-work) * [General UI overview](https://docs.gyroflow.xyz/app/getting-started/basic-usage#general-ui-overview) * [Video information](https://docs.gyroflow.xyz/app/getting-started/basic-usage#video-information) * [Lens profile](https://docs.gyroflow.xyz/app/getting-started/basic-usage#lens-profile) * [Motion data](https://docs.gyroflow.xyz/app/getting-started/basic-usage#motion-data) * [Once you have all the input files loaded, proceed to the 📈 Timeline and gyro chart](https://docs.gyroflow.xyz/app/getting-started/basic-usage#once-you-have-all-the-input-files-loaded-proceed-to-the-timeline-and-gyro-chart) --- # Live Feed Stabilization | Gyroflow documentation Stabilization of a live (real-time) feed is something Gyroflow would like to support eventually. It's not available yet, mostly due to lack of standards for sending gyro data. Some discussion about live stabilization is available at [#dev-live-stabilization](https://discord.com/channels/797044698682228736/1055194134622765077) channel on [Discord](https://discord.com/invite/BBJ2UVAr2D) . 1. Currently Gyroflow is not designed to do live stabilization 2. There is no standard IMU data transmission, so that is most important part to figure out or standardize or have any examples if you want to push this topic further 3. For testing, we can try with synthetic "live" data, ie. take a standard GoPro file with gyro data, and stream it from another app, stream the IMU data and pretend it's live. Then work on supporting that in Gyroflow 4. There is no timeline on when that would be supported, mainly due to not enough concrete data. Everyone's setup is different so I don't have anything to work on at this moment. This has to be figured out 5. One potential solution is to create an OBS plugin which does the stabilization using [`gyroflow_core`](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core) 6. Another one is to open RTSP stream in the Gyroflow app (`mdk-sdk` already supports that) and render it in the UI with zero-copy Qt-RHI, and use the true full screen mode (F11 key twice) - this way it could be streamed further over HDMI (acting like a monitor but connected to HDMI capture card) ### [](https://docs.gyroflow.xyz/app/advanced-usage/live-feed-stabilization#contributions-are-welcome) Contributions are welcome! Last updated 2 years ago --- # Render Queue | Gyroflow documentation ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#where-is-render-queue) Where is render queue? Render queue can be accessed by clicking the queue icon, next to the **Export** button. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FFIxuuB30esLCGyZTd7kp%252Fimage.png%3Falt%3Dmedia%26token%3D2d61f3e9-48b1-48fa-9d41-2deaf2110616&width=768&dpr=4&quality=100&sign=657deb7&sv=2) Render queue icon You can also toggle the render queue by using the `q` keyboard shortcut. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#adding-to-the-render-queue) Adding to the render queue There are 2 ways to add a file to the render queue: 1. Open a video file in Gyroflow, adjust your settings, then click on the arrow icon on the **Export** button and choose **Add to render queue** 2. Drag & drop your video file directly to the render queue. You can also drag & drop the .gyroflow project file to the render queue. When you add a video file directly to the render queue, it will use the settings that are currently set in the main window. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#settings-presets) Settings presets Instead of using the current GUI settings, you can also apply your **settings preset** to all items in the render queue. Simply drag & drop the preset (.gyroflow file) into the render queue and it will apply it to all items. Note that the preset is only applied to items in the queue. Once you add new files, you have to use the preset again to apply for new files. You can also use the `default.gyroflow` preset to automatically apply for all new items. Read more in the [**⚙ Settings presets**](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#settings-presets) section. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#automatic-synchronization-in-the-render-queue) Automatic synchronization in the render queue If your file requires [**⌛synchronization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) (anything other than GoPro 8+ or DJI), it can also be done in the render queue. For that, the lens profile needs to have the synchronization parameters included (read more on [**Advanced usage -> 🔭 Lens profiles**](https://docs.gyroflow.xyz/app/advanced-usage/lens-profiles) ), or your settings preset needs to have synchronization parameters and **Do autosync** checked. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#apply-specific-settings-to-all-items-in-the-queue) Apply specific settings to all items in the queue If you want to change just one or a few parameters in all items of the queue, you can set the desired values in the main Gyroflow window, and then use the arrow icon on the **Export** button, and choose **Apply selected settings to all items in the render queue**. Then select which setting you want to apply. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#queue-settings) Queue settings ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F2VMH5Ds6m4QF4W1VqPZX%252Fimage.png%3Falt%3Dmedia%26token%3Dbe543a59-6a9f-4cac-8dff-a3e77ffdb221&width=768&dpr=4&quality=100&sign=7bb75458&sv=2) Render queue settings menu #### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#number-of-parallel-renders) Number of parallel renders You can choose how many files you want to render in parallel. Gyroflow is designed to use maximum possible resources when rendering so rendering just one file at a time should be enough. In some cases, 2 or 3 files in parallel can render faster, but in general anything more than 2 will probably not render any faster. #### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#default-overwrite-action) Default overwrite action You can choose default action to take when the output file already exists on disk. **Export mode** Render queue can also be used to export project files, instead of rendering a stabilized video file. This can be useful if you have a lot of videos you want to use with the [**Video editor plugin**](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) . You can add all your video files to the render queue as usual and then click on the **Queue settings -> Export mode -> Project file (with gyro data)**. This mode will create a `.gyroflow` project file for each video in the queue, instead of rendering stabilized video. #### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#action-when-done) Action when done Once your render queue is finished, you can choose what Gyroflow should do, by setting **When rendering is finished** option on the left bottom corner of the render queue. Possible actions include: Close the program, shutdown the computer, restart computer, hibernate or put the computer to sleep etc. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#output-directory) Output directory Default output directory for files dropped into the render queue is the same folder as the video file. However, if the **Output path** field on the bottom of Gyroflow contains a path, then all files dropped to the render queue will be rendered to that folder. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#preserving-the-render-queue) Preserving the render queue If you have some items in the render queue and you close the program (or it crashes), then all items should be restored when you start Gyroflow again. ### [](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#reordering-items-in-the-render-queue) Reordering items in the render queue Items can be reordered by right-clicking an item and choosing "Move up" or "Move down" Drag & drop is also supported, if you hold Ctrl (Command on Mac) key and drag the item Last updated 1 year ago * [Where is render queue?](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#where-is-render-queue) * [Adding to the render queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#adding-to-the-render-queue) * [Settings presets](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#settings-presets) * [Automatic synchronization in the render queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#automatic-synchronization-in-the-render-queue) * [Apply specific settings to all items in the queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#apply-specific-settings-to-all-items-in-the-queue) * [Queue settings](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#queue-settings) * [Output directory](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#output-directory) * [Preserving the render queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#preserving-the-render-queue) * [Reordering items in the render queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue#reordering-items-in-the-render-queue) --- # Keyboard Shortcuts | Gyroflow documentation Shortcut Action **Space** **F3** Play / Pause **Left** **Page Up** **,** **F2** Previous frame **Ctrl+Left** **Ctrl+Page Up** **Ctrl+,** **F5** Previous 10 frames **Right** **Page Down** **.** **F4** Next frame **Ctrl+Right** **Ctrl+Page Down** **Ctrl+.** **F6** Next 10 frames **Home H** Go to trim start **End ;** Go to trim end **I** **\[**\ \ Set trim start here\ \ **O** **\]** Set trim end here **Ctrl+I Ctrl+\[**\ \ Add new trim range starting here\ \ **Ctrl+O Ctrl+\]** Add new trim range ending here **C** Clear trim range **J** Seek back 500 frames and play **K** Play/Pause and reset playback rate **L** Play forward, press multiple times to increase playback rate **M** Toggle mute **S** Toggle stabilization **D** Toggle stabilization overview **A** Auto sync here **P** Add manual sync point here **Q** Toggle render queue **G** Toggle grid guide **Ctrl+G** Toggle grid color (white/black) **F11 F** Enter full screen mode. Press twice for a different mode **Ctrl+Q** Add to render queue **Ctrl+W** Render now **Esc** Exit full screen mode **Ctrl+S** Save project file (with gyro data) **Shift+Right** Next keyframe **Shift+Left** Previous keyframe **X** Hide chart axis X **Y** Hide chart axis Y **Z** Hide chart axis Z **W** Hide chart axis W **Shift+X** Show chart axis X **Shift+Y** Show chart axis Y **Shift+Z** Show chart axis Z **Shift+W** Show chart axis W **Shift+G** Chart display mode: Gyroscope **Shift+A** Chart display mode: Accelerometer **Shift+M** Chart display mode: Magnetometer **Shift+Q** Chart display mode: Quaternions **Ctrl+D** Load next file in folder **Ctrl+A** Load previous file in folder **Ctrl+Shift+D** Save and open next item from render queue **Ctrl+Shift+A** Save and open previous item from render queue **E Ctrl+E Alt+E Shift+E** Horizon lock roll adjustment + **R Ctrl+R Alt+R Shift+R** Horizon lock roll adjustment - **Ctrl+drag** in render queue Reorder items in the render queue **Ctrl +** click on the stabilization overview icon Toggle stabilization overview **split view** Shortcuts are defined in this file: [https://github.com/gyroflow/gyroflow/blob/master/src/ui/Shortcuts.qml](https://github.com/gyroflow/gyroflow/blob/master/src/ui/Shortcuts.qml) Last updated 1 year ago --- # Other Cameras | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#witmotion) WitMotion -------------------------------------------------------------------------------------------------- Gyroflow supports motion data recorded with [WT901](https://www.wit-motion.com/BLE/52.html) device from WitMotion. While it works, users reported some inaccuracies when recording with faster sample rate, so that device is generally not recommended [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#vuzexr) VuzeXR -------------------------------------------------------------------------------------------- VuzeXR is a 360° camera, and while stabilizing 360° cameras is not supported, Gyroflow can read gyro data recorded by this camera. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#kandao) KanDao -------------------------------------------------------------------------------------------- Gyroflow can read gyro data from KanDao Obsidian Pro camera, but similarly to VuzeXR - can't stabilize 360° videos [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#camm-format) CAMM format ------------------------------------------------------------------------------------------------------ Lenovo VR180 camera records gyro data in the [CAMM](https://developers.google.com/streetview/publish/camm-spec) format, and Gyroflow supports reading that format. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#xtu) XTU -------------------------------------------------------------------------------------- Some XTU action cameras record gyro data in .gcsv files and the videos can be stabilized in Gyroflow Last updated 1 year ago * [WitMotion](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#witmotion) * [VuzeXR](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#vuzexr) * [KanDao](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#kandao) * [CAMM format](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#camm-format) * [XTU](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/other#xtu) --- # Exporting | Gyroflow documentation [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#render-range) Render range ------------------------------------------------------------------------------------------------------ You can set the desired section of your video to be renderred by setting the Trim range on the timeline. You can use `[` and `]` buttons or `i` and `o` keys to set the start and end of the range you want to export. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FEyxhQtjYMmHnu77LtWuf%252Fimage.png%3Falt%3Dmedia%26token%3Ddcc73503-f4c4-4c2d-bd17-ccfd279111f4&width=768&dpr=4&quality=100&sign=20dca567&sv=2) Trim range [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#output-path) Output path ---------------------------------------------------------------------------------------------------- You can enter the desired location and file name for the output file at the bottom of Gyroflow, in the `Output path` area [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#export-codec) Export codec ------------------------------------------------------------------------------------------------------ Codec Description **H.264/AVC** Most widely supported codec. It should work on all computers, mobile phones and on the web. Faster to render than H.265 but less efficient. Hardware accelerated encoder supports only 8-bit files with this codec. **H.265/HEVC** Newer and more efficient codec than H.264/AVC. Requires more processing power to encode and to decode. If you have older hardware, it's possible HEVC file will be hard to playback. In this case choose H.264. If your hardware supports it well, you can prefer it over H.264, as it delivers better quality at the same bitrate. Supports 10-bit encoding with hardware (depending on the GPU). **ProRes** Professional video codec, especially good for working on the files later in a video editor (it's fast to decode). Good for maintaining maximum video quality. Hardware acceleration for ProRes is available only on macOS with M1 Pro/Max/Ultra (but not M1 Air) and M2 chips (including M2 Air). **DNxHD** Similar to ProRes. No hardware acceleration is available. **CineForm** Similar to ProRes and DNxHD. No hardware acceleration is available. **EXR sequence** Image sequence in the `.exr` format. Data is stored as 32-bit float. Compression is lossless. **PNG sequence** Image sequence in the `.png` format. Data is stored either as 8-bit or 16-bit. Compression is lossless. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#output-size) Output size ---------------------------------------------------------------------------------------------------- You can control the exported resolution here. If you want to output a different size or aspect ratio, you can enter it here. If you want to change the aspect ratio (e.g. 4:3 source rendered as 16:9 video), you can also do that here. The resulting resolution is the rectangle that the stabilized video can move around in. Therefore it also affects the stabilization, it's not a static crop. If you have a horizontal video and want to output 9:16 for social media, you can set 9:16 resolution here. It's also common to keyframe the center offset (`Stabilization -> Zooming -> Advanced -> Zooming center offset`) and move the video right-left to keep the subject in frame. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#bitrate) Bitrate -------------------------------------------------------------------------------------------- Bitrate is the amount of data stored in a second of the video. Bigger bitrate will produce better quality and bigger file size. By default Gyroflow sets the same bitrate as the input file. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#gpu-encoding) GPU encoding ------------------------------------------------------------------------------------------------------ Video encoding is a very compute-intensive task. Rendering on the CPU is very slow. Modern graphic cards implement hardware accelerated video encoders and is generally preferrable to have GPU encoding enabled. Support for codecs and modes varies greatly between GPU brands and models, for more information refer to specific guides for [NVIDIA](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia) , [AMD](https://docs.gyroflow.xyz/app/hardware-acceleration/amd) , [Intel](https://docs.gyroflow.xyz/app/hardware-acceleration/intel) , [macOS](https://docs.gyroflow.xyz/app/hardware-acceleration/apple-macos) or [Android](https://docs.gyroflow.xyz/app/hardware-acceleration/android) . If you don't know what GPU you have, refer to your computer specifications. If your computer is older than 2016, chances are H.265/HEVC will not be available, and if it's older than 2012, H.264 may also not be available. If you want maximum possible encoding quality and don't mind waiting, you can disable GPU encoding. Rendering on the CPU in general provides better results, but it's much slower. For most use cases the difference will be negligible and enabling GPU encoding is preferred. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#audio) Audio ---------------------------------------------------------------------------------------- Audio can be exported as well, and it will be transcoded to AAC or PCM format. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#advanced) Advanced ---------------------------------------------------------------------------------------------- For advanced options, see the `Advanced usage -> Exporting` section [🎬Exporting](https://docs.gyroflow.xyz/app/advanced-usage/exporting) [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#exporting) Exporting ------------------------------------------------------------------------------------------------ Once you have all settings dialed in, you can proceed to render by just clicking the blue `Export` button. Render queue is available by clicking the icon on the right of the `Export` button. You can add your render task to the queue by clicking the arrow on the `Export` button and choosing `Add to render queue` ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FFIxuuB30esLCGyZTd7kp%252Fimage.png%3Falt%3Dmedia%26token%3D2d61f3e9-48b1-48fa-9d41-2deaf2110616&width=768&dpr=4&quality=100&sign=657deb7&sv=2) Render queue icon For more information about the render queue, see the `Advanced usage -> Render queue` section [⏩Render Queue](https://docs.gyroflow.xyz/app/advanced-usage/render-queue) [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#saving-the-project-file) Saving the project file ---------------------------------------------------------------------------------------------------------------------------- You can export a project file which will contain all your settings, lens profile and optionally the gyro data. You can then load that project file later if you want to adjust any settings and re-render. There's a `Ctrl + S` keyboard shortcut available to quickly save the project file with gyro data included. The resulting file also works with the video editor plugins. [](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#exporting-data-for-the-plugins) Exporting data for the plugins ------------------------------------------------------------------------------------------------------------------------------------------ You don't have to render out the file from Gyroflow, you can also use the [video editor plugins](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) and apply the stabilization directly in your video editor. For more information see the `Video editor plugins` section [💡General Plugin Workflow](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) Last updated 2 years ago * [Render range](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#render-range) * [Output path](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#output-path) * [Export codec](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#export-codec) * [Output size](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#output-size) * [Bitrate](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#bitrate) * [GPU encoding](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#gpu-encoding) * [Audio](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#audio) * [Advanced](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#advanced) * [Exporting](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#exporting) * [Saving the project file](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#saving-the-project-file) * [Exporting data for the plugins](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#exporting-data-for-the-plugins) --- # IMU Orientation and rotation | Gyroflow documentation ### [](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#gyro-rotation) Gyro rotation To achieve correct stabilization, the rotation of the motion data needs to match the video. If the IMU sensor is not pointing in the same direction as the camera sensor, then you'll have to rotate the motion data to match. All cameras with internal gyro data already have the correct rotation, but when using external gyro source, chances are you may have to enter the rotation values here. A common example is using blackbox gyro data with camera tilted upwards, or a naked BMPCC, where the IMU sensor is on the main board, and the camera sensor is separated. You can use optical flow data to determine the rotation values. When you change the rotation here, the lines on chart will move as well. Optical flow never moves, so you can change the rotation values by a few degrees and observe how it's changing on the chart, and when they match/align with the optical flow lines. `**TODO:**` ` ``Video example of that ` ### [](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#accelerometer-rotation) Accelerometer rotation In some rare cases, the gyroscope and accelerometer are actually two separate chips, in two different places. If you **right click on the Rotation label** you'll be able to enable **Separate accelerometer rotation.** You can then control gyroscope and accelerometer rotation separately. One example of such setup is the naked GoPro in [Umma95](https://ummagawd.com/products/umma95-beta95x-naked-gopro-cinewhoop-kit) design (you can try accelerometer pitch: 90°). ### [](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#imu-orientation) IMU orientation Similar to **gyro rotation**, the IMU orientation field describes the direction of the IMU chip. IMU orientation however, describes the general direction of the IMU chip. The default value, indicating no direction changes is `XYZ`. This means that the X, Y and Z axes correspond directly to the expected X, Y and Z axes. If we need to invert an axis, the letter will be lowercased, so `xYZ` will mean the X axis corresponds to the inverted expected X axis, and Y and Z are not changed. If we need to swap the axes, we can put another axis on the expcted position, for example `ZYX` will mean that the X axis corresponds to the Z axis, and Z axis corresponds to the X axis, and Y axis is not changed. The first letter describes what axis is expected at the X axis, the second letter at the Y axis, and third at the Z axis. You can use the same technique as described in the **Gyro rotation** section to determine the IMU orientation: Adjust the value and observe the lines on the chart until the light lines (optical flow) and dark lines (motion data) align up. You can also right click on the timeline and choose **Guess IMU orientation here** to attempt to determine the IMU orientation automatically. Note that this function needs large enough **Sync search size**, same as used for the [**⌛Synchronization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) . `**TODO:**` ` ``add video example ` Last updated 1 year ago * [Gyro rotation](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#gyro-rotation) * [Accelerometer rotation](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#accelerometer-rotation) * [IMU orientation](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation#imu-orientation) --- # Exporting | Gyroflow documentation ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#custom-encoder-options) Custom encoder options Gyroflow uses **ffmpeg** for the rendering process. There are a lot of different encoders, parameters and cases, depending on the file type, operating system and your graphic card. For most cases, the defaults are fine, but if you want to pass an additional setting to the encoder, you can use the **Custom encoder options** field and enter the parameters as you would to the **ffmpeg** command line. For example: `-preset hq -profile rext`. The list of accepted parameters is available by clicking the **Info** icon, next to the text field. You can google the parameter names + ffmpeg for specific explanations. Note that Gyroflow doesn't use the ffmpeg command line (CLI), but rather the C API directly, so not all options that can be passed to the ffmpeg CLI, can be used here. This field is for the **video encoder parameters only**. Additional supported options are: **\-hwaccel\_device**, **\-qscale** and **\-pix\_fmt**. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#keyframe-distance) Keyframe distance When using H.264 or H.265, you can specify the keyframe distance - it's the interval for every **I-frame** (a fully encoded frame independent of other frames). For detailed explanation what it is read [**this Wikipedia article**](https://en.wikipedia.org/wiki/Video_compression_picture_types) . It has nothing to do with parameter keyframing in Gyroflow, it's a video encoder parameter. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#preserve-other-tracks) Preserve other tracks Some video files contain additional tracks, like timecode, subtitles, motion data etc. By default, Gyroflow discards these tracks and only renders one video and one audio track. In order to preserve them and copy directly to the stabilized file, you can check this option and use the **.mov** file extension. You can't use the trim range with this option (i.e. you need to render the full file), because Gyroflow doesn't know how to cut arbitrary binary tracks. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#use-black-frames-outside-trim-range) Use black frames outside trim range When using the trim range, the rendered file will only be the selected trim section of the original file. However in some cases, it is desirable to render only a fragment of the file, but retain full original length of the file. A common case is when using a video editor and having the edit already done. If you then replace the clip with a shorter one, the edit will fall apart. But if you replace the clip with one with the exact same duration, everything will work fine. When you check this option, Gyroflow will render black frames outside the trim range, and actual stabilized video inside the trim range. This allows the video codec to compress the black frames, so the file size will still be small, while retaining the full original video duration. This can also be useful when combined with the **Preserve other tracks** option. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#export-audio-format) Export audio format Gyroflow renders all audio as AAC with the same bitrate as the input file. There is currently no option to change the audio format. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#export-fps) Export fps Gyroflow always exports the video file with the same frame rate as the original video file. There is currently no option to change the frame rate. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#device-for-rendering) Device for rendering Some computers or laptops have more than one GPU and usually one is more powerful that the other (e.g. integrated GPU vs. the dedicated GPU). You can choose the preferred device used for **video encoding** here. There's also a second selector in the **Advanced** section which controls the device used for the **stabilization process** itself. These processes are separate and you can process on one GPU and render on the other GPU. Some devices support more encoding formats and some devices don't support GPU video encoding at all, so make sure you select the correct (and more powerful) device here. ### [](https://docs.gyroflow.xyz/app/advanced-usage/exporting#project-types) Project types When exporting a project file, you have 3 options: * **Project file** - This is the smallest project file which can be used when your video file contains internal motion data. The motion data will always be in the original video file, so there's no need to save it separately in the project. This project contains all stabilization parameters and the file path of the video. * **Project file (with gyro data)** - If your motion data is from external source or is in a separate file (like .gcsv), then this project file will embed the entire motion data inside the project file, so there's no need to keep the separate gyro file around. This can be useful when you're using a GoPro as a logger, or when you want to export a project file for the video editor plugins. The default shortcut to save project file (**Ctrl+S**) is saving with gyro data, as it's the safe default for all cases. * **Project file (with processed gyro data)** - This option is similar to the previous one, but it also contains additional motion data processed by Gyroflow - it is useful in combination with external scripts like [**Gyroflow-to-CSV**](https://github.com/EmberLightVFX/Gyroflow-to-CSV) . Video editor plugins don't need this option, the `(with gyro data)` one is enough. Last updated 2 years ago * [Custom encoder options](https://docs.gyroflow.xyz/app/advanced-usage/exporting#custom-encoder-options) * [Keyframe distance](https://docs.gyroflow.xyz/app/advanced-usage/exporting#keyframe-distance) * [Preserve other tracks](https://docs.gyroflow.xyz/app/advanced-usage/exporting#preserve-other-tracks) * [Use black frames outside trim range](https://docs.gyroflow.xyz/app/advanced-usage/exporting#use-black-frames-outside-trim-range) * [Export audio format](https://docs.gyroflow.xyz/app/advanced-usage/exporting#export-audio-format) * [Export fps](https://docs.gyroflow.xyz/app/advanced-usage/exporting#export-fps) * [Device for rendering](https://docs.gyroflow.xyz/app/advanced-usage/exporting#device-for-rendering) * [Project types](https://docs.gyroflow.xyz/app/advanced-usage/exporting#project-types) --- # Lens Calibration | Gyroflow documentation The purpose of the lens calibration process is to accurately determine the _intrinsic_ parameters of a camera system. This consists of: * focal length * lens distortions * other misalignments during the imaging process. The lens calibration process is divided into 2 steps: [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#id-1.-recording-the-calibration-footage) 1\. Recording the calibration footage ----------------------------------------------------------------------------------------------------------------------------------------------------- 1. Open Gyroflow, go to **Lens profile** -> **Create new -> Open calibration target** 2. Display the calibration pattern on a **flat** computer monitor (a curved display will **not** work), in full screen. In general, larger calibration patterns are preferred since focus will be closer to the focus during actual use, so use your largest screen/monitor. If you have a large flatscreen TV, it's preferred to display it on the TV (you can use HDMI, or the TV browser to open this page). A bright screen with a slightly darkened room works well. 3. Select the desired camera settings to calibrate for. Most importantly the field of view/focal length and aspect ratio, if applicable. Framerate and resolution doesn't matter, only if the resolution changes the field of view. Use high shutter speed to avoid motion blur, and make sure the calibration target stays in focus. 4. Record the pattern while slowly moving around to different angles and distances in one clip. 60 seconds is typically enough. Try to avoid motion blur and rolling shutter distortion with slow and steady movements, and make sure the full chessboard is in view. The following angles are recommended for getting distortion information from the full frame: 5. Chessboard filling whole frame 6. Chessboard seen from distance. 7. Chessboard seen at an angle. 8. Each edge of video frame aligned with edge of chessboard. 9. Corner of chessboard aligned with corner of video. 10. Finally, get fast motion for rolling shutter reference/estimation by doing a fast side-to-side yaw motions with the camera. This will produce rolling shutter effect where the lines will be bent, instead of straight. Here's an example of a calibration footage that covers all needed angles: The calibration pattern can be displayed from the calibration utility. Alternatively, the default (14x8 radon) calibration pattern is available here: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fis3YxgukkDaS5XCGhENi%252Fcalibration_pattern_radon_14x8.png%3Falt%3Dmedia%26token%3Db43d0ab3-c24c-4bfa-b19e-08beebf71283&width=768&dpr=4&quality=100&sign=bde84665&sv=2) [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#rolling-shutter-correction) Rolling shutter correction ----------------------------------------------------------------------------------------------------------------------------- Related to lens calibration is estimating the rolling shutter frame readout time. Most DSLR's and consumer-grade video cameras use a [rolling shutter](https://en.wikipedia.org/wiki/Rolling_shutter) sensors, which introduce warps and distortions in moving footage. It is highly recommended to get an accurate estimate of the rolling shutter _before_ lens calibration and fill in the value in the calibration utility, but it can be done afterwards as well. Please have a look at [gyroflow/rollingshutter](https://github.com/gyroflow/rollingshutter) for an accurate method of measuring rolling shutter or below for an estimated approach. ### [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#a-simple-method-of-determining-rolling-shutter-value) A simple method of determining rolling shutter value If your calibration video has matching gyro data, the following approach can be used to check the stabilization and estimate the rolling shutter visually. This method only works if the calibration clip had matching gyro data. 1. Load the same clip in main window, load the lens profile you just calibrated, sync the gyro with video. 2. Focus on that fast sideways motion part, go to **Stabilization** -> **Rolling shutter correction**, and move the slider until the rolling shutter effect is fixed, ie. the lines become straight and are not bent anymore. You may need to reverse the rolling shutter direction. 3. Edit your created lens profile json with notepad, and replace `"frame_readout_time": null,`, to e.g. `"frame_readout_time": 15.5,` (15.5ms is an example value). This value will automatically be applied when using this preset. `**TODO:**` ` ``add a video sample ` An alternative and much more accurate method doesn't require gyro data, but instead requires an Arduino+LED or similar to generate a precise blinking frequency at e.g. 1 KHz. If you have the hardware, this is recommended over the visual method since it's an order of magnitude more accurate. Read more at [gyroflow/rollingshutter](https://github.com/gyroflow/rollingshutter) . [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#id-2.-analyzing-the-recorded-calibration-footage) 2\. Analyzing the recorded calibration footage ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- 1. Open Gyroflow, go to **Lens profile** -> **Create new.** 2. Open the previously recorded calibration video file. 3. Either begin auto calibration or manually add frames using `Add calibration point` from the timeline context menu. Note: **Skip the final fast side-to-side motion during this step, by setting the end of trim range just before it.** 4. After all required frames are added and processed, the straight lines should be straight in the undistorted video. `Reprojection error` should typically be under 5 (pixels) with excellent calibrations giving values below 1. The larger the video resolution the bigger this error can be. 5. Fill in the preset information and export the lens profile. Try to add all relevant information about the camera/lens combination including field of view setting and lens focal length if applicable. 6. If rolling shutter information is known in advance, fill in the frame readout time. 7. If a successful calibration was achieved with a low reprojection error and no obvious artefacts, the profile can be submitted with the `Upload lens profile to the database` checkbox. 8. You're now ready to use the new lens preset. These are stored as `.json` files. [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#video-guide) What about anamorphic lenses? ----------------------------------------------------------------------------------------------------------------- Refer to [Input stretch](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#input-stretch) [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#video-guide-1) Video Guide ------------------------------------------------------------------------------------------------- Nurk FPV's tutorial contains a calibration example: [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#additional-calibration-options) Additional calibration options ------------------------------------------------------------------------------------------------------------------------------------- ### [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#default-output-size) Default output size Radial lens undistortion typically results in the image being stretched more in the horizontal axis (use the FOV slider to see this). For instance, undistorted 4:3 GoPro video: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FbpldJIprcw5VWg3Eqs0Q%252Fimage.png%3Falt%3Dmedia%26token%3D760f356b-2050-48af-96a2-ce4440053156&width=768&dpr=4&quality=100&sign=af42dc0d&sv=2) Notice that the area of the valid rectangle is close to a 16:9 aspect ratio as opposed to 4:3. In these cases, the default output size can be modified to a 16:9 one. For cameras with minimal fisheye distortion, or even with pincushion distortion, the resulting valid aspect ratio is close to the original one. For these cameras, just use the input resolution for the default output size. ### [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#sharpness-limit) Sharpness limit Sets the minimum required sharpness for the calibration pattern. If the pattern failed to detect due to focus or blurriness, try increasing this limit. ### [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#input-stretch) Input stretch If the video file is not exact representation of a real world viewed through a physical, spherical lens, the calibration will not work. To fix that, we need to reverse any additional distortions or in-camera digital processing. A common example of that is an anamorphic lens. In this case, you need to set the `Input horizontal stretch` to the squeeze factor of the anamorphic lens, to stretch the video horizontally and reverse the anamorphic distortion. This needs to be set before starting autocalibration process. Another example is a digital processing in camera, like Superview/Hyperview in GoPro cameras, or XV mode in RunCam cameras. In case of GoPro, the stretch is a custom equation and you can set `Digital lens` to `GoPro Superview` In case or RunCam, the XV mode is a simple linear stretch, so to reverse it's effect, enter `1.3333` in the `Input vertical stretch` field. ### [](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#focal-length-and-crop-factor) Focal length and crop factor If you know the focal length of the lens you're calibrating (most DSLR lenses), you should enter the focal length in that field in Advanced. If you also know the crop factor (a factor that describes sensor size relation to full frame size), you can also enter it here Last updated 2 years ago * [1\. Recording the calibration footage](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#id-1.-recording-the-calibration-footage) * [Rolling shutter correction](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#rolling-shutter-correction) * [A simple method of determining rolling shutter value](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#a-simple-method-of-determining-rolling-shutter-value) * [2\. Analyzing the recorded calibration footage](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#id-2.-analyzing-the-recorded-calibration-footage) * [What about anamorphic lenses?](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#video-guide) * [Video Guide](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#video-guide-1) * [Additional calibration options](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#additional-calibration-options) * [Default output size](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#default-output-size) * [Sharpness limit](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#sharpness-limit) * [Input stretch](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#input-stretch) * [Focal length and crop factor](https://docs.gyroflow.xyz/app/getting-started/lens-calibration#focal-length-and-crop-factor) --- # Keyframes | Gyroflow documentation Most parameters in Gyroflow can be keyframed - meaning their value can be changed in different parts of the video (i.e. you can use a different smoothness at the start of the video, compared to the end). [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#how-to-use) How to use? -------------------------------------------------------------------------------------- ### [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#enabling-keyframes) Enabling keyframes Keyframes can be enabled by right-clicking on the slider and choosing **Enable keyframing.** ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F2qZYYYEYlOLp1KOr4WDZ%252Fimage.png%3Falt%3Dmedia%26token%3D2ea9c2cb-4e7c-47cd-b94a-bb40bda53258&width=768&dpr=4&quality=100&sign=169eab4&sv=2) Then, go to a time in the video when you want the value to be different and just change the slider value. This will create a keyframe on the timeline chart. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FwqwHMLNSzNDhmD5I9Mlp%252Fimage.png%3Falt%3Dmedia%26token%3D46d2863e-a3d5-404a-837f-aa846f29aa4c&width=768&dpr=4&quality=100&sign=2440f187&sv=2) Smoothness keyframe ### [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#keyframe-easing) Keyframe easing You can right-click the keyframe point to enable or disable easing (it's enabled by default). ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FOVppWjcYrGVq88SnKCDC%252Fimage.png%3Falt%3Dmedia%26token%3Dd590d65c-28a9-400d-82c9-5a7b5da4b416&width=768&dpr=4&quality=100&sign=8896f227&sv=2) ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FPrElQZfSezKSjnlo3mD3%252Fimage.png%3Falt%3Dmedia%26token%3D54442255-8688-445c-83ca-d6a1b93b90fb&width=768&dpr=4&quality=100&sign=ad2b36bc&sv=2) Ease in + out vs. linear keyframe ### [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#removing-disabling-keyframes) Removing/disabling keyframes You can right-click the keyframe point to delete it, or to disable all keyframing for a slider, right-click on the slider and uncheck **Enable keyframing** \- this will clear all keyframes on that slider. [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#keyframeable-parameters) Keyframeable parameters --------------------------------------------------------------------------------------------------------------- * Smoothness * FOV * Zooming speed * Zooming center offset * Horizon lock amount / roll correction * Lens correction strength * Max smoothness * Max smoothness at high velocity * Pitch/Roll/Yaw smoothness * Video rotation * Background margin / feather * Video speed [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#example) Example ------------------------------------------------------------------------------- [](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#caveat) Caveat ----------------------------------------------------------------------------- When keyframing zooming speed and the speed changes are significant, make sure to switch the zooming algorithm to **Envelope follower.** There is a known bug with the **Gaussian filter** algorithm which may lead to black borders in view when keyframing zooming speed. Last updated 2 years ago * [How to use?](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#how-to-use) * [Enabling keyframes](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#enabling-keyframes) * [Keyframe easing](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#keyframe-easing) * [Removing/disabling keyframes](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#removing-disabling-keyframes) * [Keyframeable parameters](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#keyframeable-parameters) * [Example](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#example) * [Caveat](https://docs.gyroflow.xyz/app/advanced-usage/keyframes#caveat) --- # Apple | Gyroflow documentation Hardware video encoding on macOS uses the _VideoToolbox_ framework from Apple. Most devices are supported. Intel devices support basic H.264 and H.265 modes (8-bit only), while M1 chips and newer added more formats and the ProRes encoder. Apple Silicon (M1-M5) devices are recommended, because they support more video features, including ProRes encoder. It's also highly recommended to update to the newest macOS version, as the video encoding features are evolving pretty quickly. [](https://docs.gyroflow.xyz/app/hardware-acceleration/apple-macos#hardware-acceleration-support) Hardware acceleration support ------------------------------------------------------------------------------------------------------------------------------------ Processor H.264 H.265 ProRes Intel ✅ ✅ ❌ M1 Air ✅ ✅ ❌ M1 Pro/Max/Ultra ✅ ✅ ✅ M2 M3 M4 M5 ✅ ✅ ✅ Last updated 2 days ago --- # Intel | Gyroflow documentation Intel GPUs have the hardware accelerated video encoder called _Intel® Quick Sync Video_. The QSV encoder is well supported in Gyroflow and offers fast video render times on Windows and Linux. **Important!** Always make sure you have the latest driver installed from the official [Intel drivers](https://www.intel.com/content/www/us/en/support/detect.html) page. As long as your GPU has the hardware encoder, most acceleration issues are solved by installing the latest driver. [](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#supported-graphic-cards) Supported graphic cards ------------------------------------------------------------------------------------------------------------------ Refer to the [Wikipedia](https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video) page for a list of supported hardware. `**TODO:**` `CPU support?` [](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#id-10-bit-support) 10-bit support --------------------------------------------------------------------------------------------------- Hardware accelerated encoding of 10-bit videos is supported only by the latest hardware. Refer to the [Wikipedia](https://en.wikipedia.org/wiki/Intel_Quick_Sync_Video) page to check if your GPU supports 10-bit video encoding. [](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#prores-dnxhd-support) ProRes/DNxHD support ------------------------------------------------------------------------------------------------------------ _Intel® Quick Sync Video_ supports only H.264 and H.265. No other codec is hardware accelerated on Intel hardware. [](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#maximum-supported-resolution) Maximum supported resolution ---------------------------------------------------------------------------------------------------------------------------- 8192x8192 is the maximum supported resolution on modern cards. `**TODO:**` `verify this` Last updated 2 years ago * [Supported graphic cards](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#supported-graphic-cards) * [10-bit support](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#id-10-bit-support) * [ProRes/DNxHD support](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#prores-dnxhd-support) * [Maximum supported resolution](https://docs.gyroflow.xyz/app/hardware-acceleration/intel#maximum-supported-resolution) --- # Android | Gyroflow documentation Hardware accelerated video encoding is not yet supported on Android, but it's coming soon. You can track [this](https://github.com/gyroflow/gyroflow/issues/33) issue for updates. Last updated 2 years ago --- # Using External Gyro Source | Gyroflow documentation [NiYien-A1](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1) [Action Camera as a Logger](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/action-camera-as-a-logger) [Flight Controller](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller) [ESP-gyrologger](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/esp-gyrologger) [Flowshutter](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flowshutter) Last updated 2 years ago --- # 360° Cameras | Gyroflow documentation 360° cameras are not supported by Gyroflow and adding support is not planned at the moment. Last updated 2 years ago --- # RunCam | Gyroflow documentation **Important!** Make sure you have the latest firmware installed in your camera. You can download it from [here](https://www.runcam.com/download/actioncameras) . [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#supported-models) Supported models ----------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Quality 5 Orange ✅ ✅ Official ❗Needed ✅ Decent Thumb ✅ ✅ Official ❗Needed ❌ Bad Thumb Pro ✅ ✅ Official ❗Needed ✅ Decent Thumb Pro-W ✅ ✅ Official ❗Needed ✅ Decent Thumb 2 ✅ ✅ Official ❗Needed ✅ Good [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#caveats) Caveats ----------------------------------------------------------------------------------------------- While RunCam cameras save the gyro information, it can be very tricky to stabilize the footage accurately, especially on an FPV drone. RunCam cameras have an issue with duplicated or dropped frames, and this causes synchronization issues. Moreover because they are very lightweight, they are prone to receive a lot of vibrations from the motors. You may have to try different mounts to get acceptable results. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#synchronization) Synchronization --------------------------------------------------------------------------------------------------------------- It may be difficult to correctly sync the RunCam cameras. By default Gyroflow uses a special sync points pattern to try to sync the video when the frames are duplicated or dropped, thus giving you the best chance of correct synchronization. With some videos this may not work by default so you'll need to adjust these sync points, deleting some and adding new ones in different places. Make sure to learn how to use Gyroflow by reading the [🔧 **Basic usage**](https://docs.gyroflow.xyz/app/getting-started/basic-usage) , [📈**Timeline and gyro chart**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart) and [⌛ **Synchronization**](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#synchronization) sections. Correct synchronization of RunCam cameras can be a pain sometimes so if you want to save yourself trouble and frustration, avoid RunCam cameras and get something else instead. Ignore sync point colors with RunCam cameras, some will be red and some will be green, but because of the duplicated/dropped frames, the color indicator is useless. Make sure your video is stabilized by playing it. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#recommended-camera-settings) Recommended camera settings --------------------------------------------------------------------------------------------------------------------------------------- * Video quality: High * Resolution: Either 4K@30FPS(XV) or 1440p@60fps. * The XV resolution is actually the full 4:3 sensor stretched to a 16:9 image. This gives the highest resolution and FOV. * Note that the stretching itself looks bad, so if used without additional processing, linearly squeeze the width to 75% in the video editor to get a 4:3 image. * The 1440p option is natively 4:3, so if you want 60fps use this one. * You can also use one of the 16:9 resolutions, but this significantly reduces the available FOV for stabilization. * Shutter: Aim for 45° to 90° shutter. For 30 fps it will be 1/240 to 1/120 and for 60 fps - 1/480 to 1/240. * ISO: As low as possible. There seems to be some auto gain regardless of settings. * Color style: Normal (Flat squeezes the range and doesn’t actually provide more dynamic range) * Distortion correction: Disabled * Electronic Image Stabilization: Disabled * General settings (there were just found to work decently decently well, but do some testing yourself) * Saturation: Medium * Exposure compensation: 0 * Contrast: Low * Sharpness: Low * Metering: Average * White balance: Sunny (change depending on scenario, _don’t_ use auto) * Low light enhancement: you decide. Last updated 1 year ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#supported-models) * [Caveats](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#caveats) * [Synchronization](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#synchronization) * [Recommended camera settings](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam#recommended-camera-settings) --- # Action Camera as a Logger | Gyroflow documentation Due to the flexibility of Gyroflow, the gyro source and the video source can be "mismatched". This means that an action camera with internal gyro logging (e.g. GoPro) can be mounted to a high-end cinema camera acting as a gyro logger. This setup is illustrated below. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FtK0wKKgyVGGR9uLH3pGB%252Fimage.png%3Falt%3Dmedia%26token%3D47d9ec9c-21cf-429a-a139-7368f4d58d52&width=768&dpr=4&quality=100&sign=8ec0da81&sv=2) The advantages of this setup is the availability of GoPros/Insta360 cameras among filmmakers, meaning no additional hardware other than some fasteners. With this setup, a number of things should be considered: * The cinema camera and logger camera should be rigidly attached to each other to avoid mismatching motion data. * The two should ideally be oriented in the same direction to avoid additional angle corrections. * Starting recording of the two cameras at almost the same time, or with a small fixed offset (e.g. 10 seconds) makes synchronization easier. This setup has successfully been used with GoPro Hero 6/8/9, the Insta360 OneR/Go 2 among others. In general, any camera with gyro logging should work, assuming the gyro data is clean and correct. When using a GoPro hero 8 or newer as a gyro logger, the internally computed orientations (`None` integration method) should not be used, since these orientations only correspond to each frame from the GoPro file. It is important that the gyro rotations correspond to the actual sensor of another camera, so you have to make sure they are aligned. For more information see: [🔀IMU Orientation and rotation](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation) Last updated 2 months ago --- # Command Line (CLI) | Gyroflow documentation You can also use Gyroflow as a command line program, in order to automate some tasks in scripts. Most common usage will be to provide a video file and render the stabilized video. You can simply call `Gyroflow.exe YOUR_FILE.mp4` to do that in case of sync-less files, or also add `--preset YOUR_PRESET.gyroflow` to apply any settings and/or lens profile you want. CLI can also render from a project file. One of more interesting CLI features is a **watch folder**, which can be used to automatically stabilize all new footage copied to that specified folder. You can simply run `Gyroflow.exe --watch C:\MY_FOOTAGE\` and it automatically stabilize any new video files that appear in that folder. All other options are pretty self-explanatory. Copy Usage: gyroflow [] [-f] [-j ] [-d ] [-p ] [-t ] [-s ] [--stdout-progress] [--export-project ] [--export-metadata ] [--export-metadata-fields ] [--export-stmap ] [--preset ] [--open ] [--watch ] [-g ] [-b ] [-r ] [--no-gpu-decoding] [--version] Gyroflow v1.6.2 Video stabilization using gyroscope data Positional Arguments: input input files: videos, project files, lens profiles, presets Options: -f, --overwrite overwrite if output file exists, default: false -j, --parallel-renders number of parallel renders, default: 1 -d, --when-done when done: 1 - shut down; 2 - reboot; 3 - sleep; 4 - hibernate; 5 - logout -p, --out-params output parameters, eg. "{{ 'codec': 'H.265/HEVC', 'bitrate': 150, 'use_gpu': true, 'audio': true }}" -t, --suffix default output suffix, eg. "_stabilized" -s, --sync-params synchronization parameters, eg. "{{ 'search_size': 3, 'processing_resolution': 720 }}" --stdout-progress print progress to stdout in addition to progress bars --export-project export project file instead of rendering: 1 - default project, 2 - with gyro data, 3 - with processed gyro data, 4 - video + project file --export-metadata export metadata instead of rendering. :, where type is 1 - full metadata, 2 - parsed metadata, 3 - camera data. Eg. "3:camera.json" --export-metadata-fields fields to include in the exported camera metadata file. Defaults to all: "{{ 'original': {{ 'gyroscope': true, 'accelerometer': true, 'quaternion': true, 'euler_angles': true }}, 'stabilized': {{ 'quaternion': true, 'euler_angles': true }}, 'zooming': {{ 'minimal_fovs': true, 'fovs': true, 'focal_length': true }} }}" --export-stmap export STmap instead of rendering. :, where type is 1 - single frame, 2 - all frames. Eg. "1:C:/stmaps/" --preset preset (file or content directly), eg. "{{ 'version': 2, 'stabilization': {{ 'fov': 1.5 }} }}" --open open file in the GUI (video or project) --watch watch folder for automated processing -g, --gyro-file gyro file path -b, --processing-device processing device index. By default it uses the one set in the GUI -r, --rendering-device rendering device, specify the GPU type. Eg. "nvidia", "intel", "amd", "apple m" --no-gpu-decoding don't use gpu video decoding, default: false --version print app version --help, help display usage information Last updated 3 months ago --- # NVIDIA | Gyroflow documentation NVIDIA GPUs since GeForce GTX 600 (2012) have the hardware accelerated video encoder called NVENC. At first it was just supporting H.264/AVC, but H.265/HEVC is also supported since GTX 750 (2015). The NVENC encoder is well supported in Gyroflow and offers fast video render times on Windows and Linux. **Important!** Always make sure you have the latest driver installed from the official [NVIDIA Drivers](https://www.nvidia.com/download/index.aspx?lang=en-us) page. As long as your GPU has the hardware encoder, most acceleration issues are solved by installing the latest driver. [](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#supported-graphic-cards) Supported graphic cards ------------------------------------------------------------------------------------------------------------------- Refer to the official [Support Matrix](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new) at nvidia.com. Make sure you are checking the correct codec (H.264 or H.265) and video bit-depth. Read more about NVENC on [Wikipedia](https://en.wikipedia.org/wiki/Nvidia_NVENC) . [](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#id-10-bit-support) 10-bit support ---------------------------------------------------------------------------------------------------- Hardware accelerated encoding of 10-bit videos is supported only by the latest video cards. Refer to the official [Support Matrix](https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new) to check if your GPU supports 10-bit video encoding. [](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#prores-dnxhd-support) ProRes/DNxHD support ------------------------------------------------------------------------------------------------------------- NVIDIA's NVENC supports only H.264 and H.265. No other codec is hardware accelerated on NVIDIA cards. [](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#maximum-supported-resolution) Maximum supported resolution ----------------------------------------------------------------------------------------------------------------------------- 8192x8192 is the maximum supported resolution on modern cards, and 4096x4096 on older. Check the [Wikipedia](https://en.wikipedia.org/wiki/Nvidia_NVENC) article to learn more. Last updated 2 years ago * [Supported graphic cards](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#supported-graphic-cards) * [10-bit support](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#id-10-bit-support) * [ProRes/DNxHD support](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#prores-dnxhd-support) * [Maximum supported resolution](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia#maximum-supported-resolution) --- # ESP-gyrologger | Gyroflow documentation TODO Copy - What it does - How to DIY - How to order PCBA Last updated 2 years ago --- # Mobile Phones | Gyroflow documentation You can also use your **iPhone** or **Android** phone to capture gyroscope data. ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#apple-iphone) Apple iPhone * [Sensor Logger](https://apps.apple.com/us/app/sensor-logger/id1531582925) * [G-Field Recorder](https://apps.apple.com/at/app/g-field-recorder/id1154585693) * [Gyro](https://apps.apple.com/us/app/gyro-record-device-motion-data/id1161532981) ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#android) Android * [Sensor Logger](https://play.google.com/store/apps/details?id=com.kelvin.sensorapp&hl=de_AT&gl=US) * [Sensor Record](https://play.google.com/store/apps/details?id=de.martingolpashin.sensor_record) * [Open Camera Sensors](https://github.com/MobileRoboticsSkoltech/OpenCamera-Sensors) * [MotionCam Pro](https://play.google.com/store/apps/details?id=com.motioncam.pro) * [Film it](https://play.google.com/store/apps/details?id=com.software.illusions.unlimited.filmit&hl=en_US) ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#using-as-a-camera) Using as a camera If you're filming on your phone, it's best to use the app that records video and gyro (GyroCam or MotionCam) at the same time, it will be easier to synchronize. If your phone has OIS (Optical image Stabilization) and it's not possible to disable it - it will interfere with stabilization results. Gyroflow will not work if you had any internal stabilization enabled on your phone. ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#using-as-external-gyro-logger) Using as external gyro logger If you want to record gyro data for use with an external camera, you'll have to figure out the [**🔀 IMU Orientation**](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation) , depending on the way you mounted the phone. Last updated 1 month ago * [Apple iPhone](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#apple-iphone) * [Android](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#android) * [Using as a camera](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#using-as-a-camera) * [Using as external gyro logger](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/mobile-phones#using-as-external-gyro-logger) --- # Insta360 | Gyroflow documentation Insta360 has two types of cameras: action cameras and 360° cameras. Action cameras are supported out of the box in Gyroflow, but 360° cameras [are not](https://docs.gyroflow.xyz/app/advanced-usage/360-cameras) . [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360#supported-models) Supported models ------------------------------------------------------------------------------------------------------------------- Model Type Support Synchronization Insta360 GO Action ✅ Supported ❗Needed Insta360 GO 2 Caddx Peanut Action ✅ Supported ✅ Not needed Insta360 GO 3 Insta360 GO 3S Action ✅ Supported ✅ Not needed Insta360 ONE R Insta360 SMO 4k Action ✅ Supported ✅ Not needed Insta360 ONE RS Action ✅ Supported ✅ Not needed Insta360 Ace Insta360 Ace Pro Action ✅ Supported ✅ Not needed Insta360 ONE RS 1-Inch 360 360° ❌ Not supported ❌ Insta360 ONE X2 360° ❌ Not supported ❌ Insta360 X3 360° ❌ Not supported ❌ Most supported cameras have official lens profiles built-in, except for the older _Insta360 Go_ Some of the cameras require use of FreeFrame video mode, for motion data to be saved. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur -------------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 8 months ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360#supported-models) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/insta360#shutter-speed-nd-filters-and-motion-blur) --- # Flowshutter | Gyroflow documentation You can view the Flowshutter docs here: [https://old-docs.gyroflow.xyz/flowshutter/flowshutter/](https://old-docs.gyroflow.xyz/flowshutter/flowshutter/) Copy - What it does - Copy from current docs - Where to buy - How to DIY Last updated 2 months ago --- # CSV Export | Gyroflow documentation ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/csv-export#gyroflow-to-csv) Exporting from the app You can export the gyro data using the **Motion Data -> Export option** in the app ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FNXEQzhsQz8PEoXlUp7JM%252Fimage.png%3Falt%3Dmedia%26token%3D83a23faa-c06d-4cd4-b6f0-30d95cd7870b&width=768&dpr=4&quality=100&sign=35907ce1&sv=2) \- **Camera data** - contains original gyroscope and accelerometer data + integrated quaternions and euler angles. It can be exported to CSV, JSON, USD or JSX (which can be imported in Adobe After Effects by using File -> Run Script) - **Full metadata** - contains original metadata as parsed from the source file, without any Gyroflow calculations - **Parsed metadata** - contains metadata which is used by Gyroflow, and is already pre-calculated as needed by Gyroflow stabilization algorithms - **Project file (with processed gyro data) -** is a project file + parsed metadata + synced timing info ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/csv-export#gyroflow-to-csv-1) Gyroflow to CSV python script Gyroflow to CSV by [EmberLightVFX](https://github.com/EmberLightVFX) can convert Gyroflow project files to a CSV format containing the camera motion. This can be imported in software such as Blackmagic Fusion, Nuke and Unreal Engine, and may be used for visual effects work. You can learn more [here](https://github.com/EmberLightVFX/GyroFlow-to-CSV) . Last updated 1 year ago * [Exporting from the app](https://docs.gyroflow.xyz/app/video-editor-plugins/csv-export#gyroflow-to-csv) * [Gyroflow to CSV python script](https://docs.gyroflow.xyz/app/video-editor-plugins/csv-export#gyroflow-to-csv-1) --- # AMD | Gyroflow documentation AMD GPUs have the hardware accelerated video encoder called _Advanced Media Framework_. The AMF encoder is well supported in Gyroflow and offers fast video render times on Windows and Linux. **Important!** Always make sure you have the latest driver installed from the official [AMD Drivers](https://www.amd.com/en/support) page. As long as your GPU has the hardware encoder, most acceleration issues are solved by installing the latest driver. However, someone reported a crash in a certain driver with Rx550, so if you're getting [this issue](https://github.com/gyroflow/gyroflow/issues/677) , try a different driver version. [](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#supported-graphic-cards) Supported graphic cards ---------------------------------------------------------------------------------------------------------------- Refer to the official product page on amd.com to find out if it supports hardware video encoding. For example the [AMD Radeon™ RX 6800](https://www.amd.com/en/products/graphics/amd-radeon-rx-6800) supports both H.264 and H.265 encoding, as per the specification: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fb4AVwwirbtojHp41na7H%252Fimage.png%3Falt%3Dmedia%26token%3D2a40cd70-0087-4d36-9f69-c93f1253492c&width=768&dpr=4&quality=100&sign=61bdd5bc&sv=2) Look for H264 Encode and HEVC Encode in the specs [](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#id-10-bit-support) 10-bit support ------------------------------------------------------------------------------------------------- `**TODO:**` `find documentation` [](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#prores-dnxhd-support) ProRes/DNxHD support ---------------------------------------------------------------------------------------------------------- AMD's AMF encoder supports only H.264 and H.265. No other codec is hardware accelerated on AMD cards. [](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#maximum-supported-resolution) Maximum supported resolution -------------------------------------------------------------------------------------------------------------------------- 8192x8192 is the maximum supported resolution on modern cards. `**TODO:**` `find documentation` [](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#known-issues) Known issues ------------------------------------------------------------------------------------------ Some AMD GPU encoders have a bug where it limits the bitrate to 20 Mbps, if the target bitrate is greater than 100 Mbps. Please check the file bitrate after rendering and if you're affected by this bug, you can either: * Set output bitrate to less than 100 Mbps * Use **Custom encoder options**: `-rc cqp -qp_i 28 -qp_p 28` Last updated 2 years ago * [Supported graphic cards](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#supported-graphic-cards) * [10-bit support](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#id-10-bit-support) * [ProRes/DNxHD support](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#prores-dnxhd-support) * [Maximum supported resolution](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#maximum-supported-resolution) * [Known issues](https://docs.gyroflow.xyz/app/hardware-acceleration/amd#known-issues) --- # DJI | Gyroflow documentation DJI started to add gyro data to their products with the release of DJI Avata. DJI gyro data has lens profile built in and doesn't require any synchronization. It therefore works out of the box, just drag & drop the video file, click Export and you're good to go. **Important!** In-camera stabilization (EIS/Rocksteady) needs to be **disabled**, and FOV needs to be set to **Wide.** Otherwise your camera **will not** record gyro data and won't be usable in Gyroflow. Ultrawide, Normal or "Natural Wide" lens modes are **not supported.** [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#supported-models) Supported models -------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Remarks Avata Avata 2 ✅ ✅ Official ✅ Not needed Neo Neo 2 ✅ ✅ Official ✅ Not needed O3 Air Unit O4 Air Unit ✅ ✅ Official ✅ Not needed Needs to be soft-mounted Action 2 ✅ ✅ Official ✅ Not needed Since firmware v01.04.0510 Action 3 ❌ ❌ ❌ ❌ Won't be supported Action 4 Action 5 Action 6 ✅ ✅ Official ✅ Not needed Osmo Nano ✅ ✅ Official ✅ Not needed DJI FPV ❌ ❌ ❌ ❌ Won't be supported Osmo 360 \- \- \- 360 cameras are not supported [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#split-recording) Split recording ------------------------------------------------------------------------------------------------------------ DJI cameras have a file size limit of 4 GB. If the recording is longer, it will be split into multiple parts. If you want to stabilize such split video, you'll have to merge the parts before stabilization. Gyroflow can do that for you. Just drag & drop all your files in the sequence to Gyroflow to merge. You can find more information on the [**🎞 File joiner**](https://docs.gyroflow.xyz/app/getting-started/file-joiner) page. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#dji-o3-o4-air-unit-vibration-issues) DJI O3/O4 Air Unit vibration issues ---------------------------------------------------------------------------------------------------------------------------------------------------- A common issue with the O3 Air Unit is that after stabilization, the video is more shaky than before. This happens because the camera module is very lightweight and is often hard-mounted to the drone frame, which makes it very prone to collect noise from the motors. This can be prevented by applying some or all of these possible solutions: ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-1.-change-the-motor-pwm-frequency-from-24-khz-to-48-khz) 1\. Change the motor PWM frequency from 24 kHz to 48 kHz The default 24 kHz PWM frequency creates interference with the IMU sampling frequency. You can adjust the motor PWM in your ESC to 48 kHz or more, to avoid this interference. For most ESC's you can use [BLHeli Suite or BLHeli Configurator](http://www.multirotorguide.com/guide/blheli-suite-and-blheli-configurator-how-to-download-install-use-blhelisuite/) . ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-2.-soft-mount-the-camera) 2\. Soft mount the camera You should avoid hard mounting the O3 Air Unit camera to the drone frame. It needs some kind of dampening to filter out the noise from the motors. Here's a good example of a soft mounted camera: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FawvMBqWJIDMeHxwcIM7R%252F20230213145359_1.gif%3Falt%3Dmedia%26token%3D8ca8aa10-15cd-4b50-a948-29f0298b16a7&width=768&dpr=4&quality=100&sign=fac7b932&sv=2) Link to thingiverse: [https://www.thingiverse.com/thing:5674654](https://www.thingiverse.com/thing:5674654) TPU or rubber inserts also work fine, here are some other examples: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FDhfI7S1V791fRTaDRU4Q%252Fimage.png%3Falt%3Dmedia%26token%3D6a4a8b33-83d8-4dc8-b156-aeb4ca0d661d&width=768&dpr=4&quality=100&sign=b424a702&sv=2) ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-3.-make-sure-your-lens-is-not-loose) 3\. Make sure your lens is not loose Some people reported that the lens of the camera unit can become loose and needs to be glued. If nothing else helps, chances are you also have this issue. Check out this video for explanation and details: ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-4.-make-sure-your-quad-is-properly-tuned) 4\. Make sure your quad is properly tuned If your quadcopter is well tuned and doesn't vibrate by it's own, it's less likely to create problems for the O3 Air Unit. Make sure you're using fresh, well-balanced propellers, your quad doesn't have resonance issues and you are using [RPM filtering](https://oscarliang.com/rpm-filter/) . ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-5.-read-the-official-o3-air-unit-manual-for-more-details) 5\. Read the official O3 Air Unit manual for more details Check out page 7 in the [DJI O3 Air Unit user manual](https://dl.djicdn.com/downloads/DJI_O3_Air_Unit/20221123/DJI_O3_Air_Unit_User_Manual_v1.0_EN.pdf) . ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-6.-watch-a-video-by-mads-tech-about-this-issue) 6\. Watch a video by Mads Tech about this issue ### [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-7.-make-sure-the-air-unit-power-supply-is-filtered-by-a-low-esr-capacitor) 7\. Make sure the Air Unit power supply is filtered by a Low ESR capacitor Some people reported issues with the O3 Air Units when it was powered directly from the LiPo, without a proper (or big enough) Low ESR capacitor on the power line. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#jello-or-similar-vibrations) Jello or similar vibrations ------------------------------------------------------------------------------------------------------------------------------------ If your stabilization is generally working fine, but it adds jello effect (horizontally wobbling lines/blocks), then you can try enabling `Low-pass filter` for the _Motion data_. The amount will depend on your footage fps and vibration frequency, so you'll have to play around with the filtering value until your footage looks good. In general going lower than 30 Hz is not recommended. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur --------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#using-dji-as-external-logger) Using DJI as external logger -------------------------------------------------------------------------------------------------------------------------------------- DJI doesn't record the IMU data directly. It only contains Quaternions, which is the final computed camera position. In order to use that data to stabilize another camera, you have to set`Integration method` to **None**. Because optical flow data on the chart displays gyroscope information and we don't have it, we can't rely on the charts for synchronizing gyro with video. Instead, **Autosync** should do a good job as long as the **Sync search size** is large enough to cover the time difference between starting the DJI camera and your cinema camera. If you can't get the synchronization working, try increasing **Sync search size** even further To view quaternions on the chart, right click on the timeline and choose **View mode: Quaternions** Last updated 2 days ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#supported-models) * [Split recording](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#split-recording) * [DJI O3/O4 Air Unit vibration issues](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#dji-o3-o4-air-unit-vibration-issues) * [1\. Change the motor PWM frequency from 24 kHz to 48 kHz](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-1.-change-the-motor-pwm-frequency-from-24-khz-to-48-khz) * [2\. Soft mount the camera](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-2.-soft-mount-the-camera) * [3\. Make sure your lens is not loose](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-3.-make-sure-your-lens-is-not-loose) * [4\. Make sure your quad is properly tuned](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-4.-make-sure-your-quad-is-properly-tuned) * [5\. Read the official O3 Air Unit manual for more details](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-5.-read-the-official-o3-air-unit-manual-for-more-details) * [6\. Watch a video by Mads Tech about this issue](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-6.-watch-a-video-by-mads-tech-about-this-issue) * [7\. Make sure the Air Unit power supply is filtered by a Low ESR capacitor](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#id-7.-make-sure-the-air-unit-power-supply-is-filtered-by-a-low-esr-capacitor) * [Jello or similar vibrations](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#jello-or-similar-vibrations) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#shutter-speed-nd-filters-and-motion-blur) * [Using DJI as external logger](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#using-dji-as-external-logger) --- # Blackmagic | Gyroflow documentation Blackmagic has added recording of internal motion data with the firmware **v7.9** available for Blackmagic Pocket Cinema Camera 4k and 6k [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#supported-models) Supported models --------------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization Pocket Cinema Camera 4K ✅ ⚠️ By users ✅ Not needed Pocket Cinema Camera 6K Pocket Cinema Camera 6K G2 Pocket Cinema Camera 6K Pro ✅ ⚠️ By users ✅ Not needed Micro Studio G2 ✅ ⚠️ By users ❗Needed Gyro data is recorded only in the **.braw** file format. ProRes (.mov) doesn't include the gyro data. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#braw-playback) BRAW playback --------------------------------------------------------------------------------------------------------------- Gyroflow supports loading **.braw** files directly in the main app, so there's no need for transcoding. That feature was kindly sponsored by the community. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#project-frame-rate) Project frame rate ------------------------------------------------------------------------------------------------------------------------- If you shoot in a VFR mode (e.g. 120 fps stored as 30 fps file, slowed down), then Gyroflow will detect that and the load correct frame rate from the metadata automatically. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#zoom-lenses) Zoom lenses ----------------------------------------------------------------------------------------------------------- Blackmagic metadata contains lens focal length per frame, but it only contains whole numbers like 14mm, 15mm etc., without e.g. 14.2mm. This means you could create a lens profile for zoom lenses which works for different zoom levels, but changing zoom throughout the video will create "steps", because we don't have the exact focal length information. Such lens profile could work however for scenarios where you use the zoom lens for different scenes, but the zoom is not changing throughout the shot. Learn more about zoom lens profiles in the [🔭 **Advanced usage -> Lens profile**](https://docs.gyroflow.xyz/app/advanced-usage/lens-profiles) section. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#naked-bmpcc) Naked BMPCC ----------------------------------------------------------------------------------------------------------- A common thing in the FPV community is to decase the BMPCC in order to reduce the weight. This separates the sensor and lens from the main board and makes the gyro data rotated in relation to the pixels captured by the sensor, because the IMU chip is on the main board. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FMKldG7Oyc0aMasDnQZTT%252F%255Bremoval.ai%255D_tmp-63eff408df9bd_5DJJZH.png%3Falt%3Dmedia%26token%3D76c707c3-f22b-48dd-a8a2-071d1d634d67&width=768&dpr=4&quality=100&sign=f02c3de3&sv=2) Naked BMPCC 6K from HaloRC In order to use naked BMPCC with internal gyro data in Gyroflow you have to 1. Change IMU orientation to `**zyx**` 2. Enter gyro rotation, mainly the Pitch (uptilt) angle in degrees You can determine the rotation angles in Gyroflow using charts and optical flow data - see [🔀 **IMU orientation and rotation**](https://docs.gyroflow.xyz/app/advanced-usage/imu-orientation-and-rotation) for a detailed guide how to do that. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#exporting) Exporting ------------------------------------------------------------------------------------------------------- Exporting directly from Gyroflow when using a **.braw** file is not supported at the moment. Instead, you should use one of the [video editor plugins](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) to render out from your video editor. The reason is that the encoding pipeline in Gyroflow is tightly tied to _ffmpeg_, and BRAW format uses an external SDK instead. There are plans to rewrite the rendering pipeline to allow exporting ProRes directly from .braw in Gyroflow, but it will take at least several months. Using the plugin is the best option anyway because you then have all RAW color controls without compromises. Learn more here: [💡General Plugin Workflow](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording if you want to stabilize in post, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 1 year ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#supported-models) * [BRAW playback](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#braw-playback) * [Project frame rate](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#project-frame-rate) * [Zoom lenses](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#zoom-lenses) * [Naked BMPCC](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#naked-bmpcc) * [Exporting](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#exporting) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/blackmagic#shutter-speed-nd-filters-and-motion-blur) --- # frei0r | Gyroflow documentation **frei0r** is an effect framework which is supported in the following applications: * [MLT](https://www.mltframework.org/) * [LiquidSoap](https://www.liquidsoap.info/) * [Kdenlive](https://www.kdenlive.org/) * [Shotcut](https://www.shotcut.org/) * [FFMpeg](https://ffmpeg.org/) * [PureData](https://puredata.info/) * [Open Movie Editor](http://www.openmovieeditor.org/) * [Gephex](https://gephex.org/) * [LiVES](http://lives.sf.net/) * [FreeJ](https://freej.dyne.org/) * [VeeJay](http://veejayhq.net/) * [Flowblade](https://jliljebl.github.io/flowblade/) This plugin allows you to apply the stabilization right in your frei0r-capable video editor. ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#more-information-and-download) More information and download: [](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#https-github.com-gyroflow-gyroflow-plugins) [https://github.com/gyroflow/gyroflow-plugins](https://github.com/gyroflow/gyroflow-plugins) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#undefined) --------------------------------------------------------------------------- Last updated 1 year ago * [More information and download:](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#more-information-and-download) * [https://github.com/gyroflow/gyroflow-plugins](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#https-github.com-gyroflow-gyroflow-plugins) * [](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r#undefined) --- # RED | Gyroflow documentation RED cameras record motion data internally in the **.R3D** files and Gyroflow supports these files directly. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#supported-models) Supported models -------------------------------------------------------------------------------------------------------------- Model Gyro data Lens profile Synchronization RED V-Raptor ✅ ⚠️ By users ❗Needed RED KOMODO ✅ ⚠️ By users ❗Needed Gyro data is recorded only in the **.R3D** file format. ProRes (.mov) doesn't include the gyro data. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#red-raw-playback) RED RAW playback -------------------------------------------------------------------------------------------------------------- Gyroflow supports loading **.R3D** files directly in the main app, so there's no need for transcoding. That feature was kindly sponsored by the community. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#project-frame-rate) Project frame rate ------------------------------------------------------------------------------------------------------------------ If you shoot in a VFR mode (e.g. 120 fps stored as 30 fps file, slowed down), then Gyroflow will detect that and the load correct frame rate from the metadata automatically. [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#exporting) Exporting ------------------------------------------------------------------------------------------------ Exporting directly from Gyroflow when using an **.R3D** file is supported, but it uses an intermediate conversion step and needs _REDline_ (available with the REDCINE-X installation) to convert R3D to ProRes before stabilizing. Basically when you click **Export** Gyroflow will call _REDline_ program to convert R3D to ProRes behind the scenes and then it will use that converted ProRes to actually perform the stabilization and final export to desired output format. This also works in the render queue. You can control the format of that intermedia file in the Advanced tab: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FCAQmLoGScSuw0YDVgGmu%252Fimage.png%3Falt%3Dmedia%26token%3D1c507850-6d5c-4031-8d48-0a2e0bd7c0a6&width=768&dpr=4&quality=100&sign=b11bbc69&sv=2) You need REDCINE-X installed to see these settings The ProRes format used for the conversion is not related to the actual Export settings. For example if you use ProRes proxy for the intermediate file and then set ProRes 4444 in the main export settings, your quality will be ruined, because it will take pixels from that Proxy file. Make sure you have set both ProRes formats correctly. You can also export H.264, H.265 or any other format for the stabilized file, but the intermediate file can only be ProRes. The ProRes file is always created next to the original .**R3D** file with the **.mov** extension. If that file already exists, the conversion step is skipped. This is convenient when trying different stabilization settings or different trim range exports, but keep in mind that if you want to change colors (e.g. you converted once with LOG colors and then want to switch to fully graded, you'll have to delete that **.mov** file and let Gyroflow convert it again with your new settings. If that file is corrupted it will also show an error so keep that in mind. Remember to delete the intermediate .mov file when you change the conversion format settings. While that works, it is recommended to use one of the [video editor plugins](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) to render out from your video editor. There are plans to rewrite the rendering pipeline to allow exporting ProRes directly from .R3D in Gyroflow, but it will take at least several months. Using the plugin is the best option anyway because you then have all RAW color controls without compromises. Learn more here: [💡General Plugin Workflow](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow) [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#lens-metadata) Lens metadata -------------------------------------------------------------------------------------------------------- Gyroflow will also read lens name and focal length from the **.R3D** file if it's provided by the camera. This allows it to autofill all the needed settings in the lens calibrator and to uniquely identify the lens profile to load it automatically. If the lens name is not provided by the camera, you can edit the metadata in REDCINE-X and Gyroflow will also read it from there (it is stored in the .RMD file). [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#gyro-bias) Gyro bias ------------------------------------------------------------------------------------------------ Estimating gyro bias can help achieve better stabilization results. To estimate the bias, you'll need to have a moment in your video where the camera is not moving at all. In the FPV case it can be before take off. To estimate gyro bias, go to the moment where the camera is not moving, right click on the timeline and select **Estimate gyro bias here**. Then remove all sync points and do the synchronization again. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FPmilXgfcMcpjn2S1CLuq%252F20230218023727_1.gif%3Falt%3Dmedia%26token%3De577a467-2871-495d-8721-7a18bc164b26&width=768&dpr=4&quality=100&sign=f8b9127a&sv=2) Gyro bias estimation [](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#shutter-speed-nd-filters-and-motion-blur) Shutter speed, ND filters and motion blur --------------------------------------------------------------------------------------------------------------------------------------------------------------- You should avoid motion blur when recording if you want to stabilize in post, read more why in the [📸 **Common filming tips and issues**](https://docs.gyroflow.xyz/app/getting-started/common-filming-tips-and-issues) . Last updated 8 months ago * [Supported models](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#supported-models) * [RED RAW playback](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#red-raw-playback) * [Project frame rate](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#project-frame-rate) * [Exporting](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#exporting) * [Lens metadata](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#lens-metadata) * [Gyro bias](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#gyro-bias) * [Shutter speed, ND filters and motion blur](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/red#shutter-speed-nd-filters-and-motion-blur) --- # Adobe Premiere / After Effects | Gyroflow documentation [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#installation) Installation ------------------------------------------------------------------------------------------------------------------ The Gyroflow Adobe Plugin works on Mac and Windows: Mac Windows ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#installing-the-adobe-plugin) Installing the Adobe plugin 1. Download the latest version from [https://gyroflow.xyz/download#plugins](https://gyroflow.xyz/download#plugins) 2. Run `Gyroflow-Adobe-macos.dmg` 3. Copy `Gyroflow.plugin` folder to `/Library/Application Support/Adobe/Common/Plug-ins/7.0/MediaCore/` ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#installing-the-adobe-plugin-1) Installing the Adobe plugin 1. Download the latest version from [https://gyroflow.xyz/download#plugins](https://gyroflow.xyz/download#plugins) 2. Extract `Gyroflow-Adobe-windows.zip` somewhere 3. Copy `Gyroflow-Adobe-windows.aex` file to `C:\Program Files\Adobe\Common\Plug-ins\7.0\MediaCore\` [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#features) ✨ Features ------------------------------------------------------------------------------------------------------------ * Automatic loading of the project file, or gyro data from video file * Support for speed ramping and time remapping * Support for different aspect ratios and output sizes * In After Effects, you can create a 3D camera based on the gyro data * The plugin uses the clip trim range to calculate stabilization, so it doesn't consider data outside of your clip * Plugin loads the default preset if you created one in the app [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#source-code) Source Code ---------------------------------------------------------------------------------------------------------------- You can find the source code for this Adobe plugin on GitHub [here](https://github.com/gyroflow/gyroflow-plugins) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#nightly-builds) Nightly Builds ---------------------------------------------------------------------------------------------------------------------- Development moves fast and there are new features added very often, check them out by downloading the nightly build: * [Nightly Adobe Build for Mac](https://nightly.link/gyroflow/gyroflow-plugins/workflows/release/main/Gyroflow-Adobe-macos.zip) * [Nightly Adobe Build for Windows](https://nightly.link/gyroflow/gyroflow-plugins/workflows/release/main/Gyroflow-Adobe-windows.zip) * [Nightly Gyroflow Build](https://gyroflow.xyz/devbuild/?autodownload) The list of all nightly builds is available on [GitHub actions](https://github.com/gyroflow/gyroflow-plugins/actions) . Last updated 1 year ago * [Installation](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#installation) * [✨ Features](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#features) * [Source Code](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#source-code) * [Nightly Builds](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects#nightly-builds) --- # General Plugin Workflow | Gyroflow documentation Gyroflow plugin for a video editor allows you to stabilize the video directly inside the video editor, where you work with the original video file, instead of rendering a stabilized video in the app and then importing it to the video editor. If your camera has official lens-profiles and accurate gyro timing (GoPro 8+, Sony, Insta360, DJI), then you should be able to just apply the plugin to your clip. In the Adobe plugin, it should load the gyro data automatically. In Resolve, you should click "Load for current file" or use the "Browse" button to select your video file or the `.gyroflow` project file. Since Gyroflow supports a lot of different cameras and gyro sources, it's practically impossible to recreate all tools it offers (for example synchronization with optical flow) inside the plugin UI. If your camera requires synchronization (RED, RunCam, Hawkeye, phone apps, blackbox, etc.), the workflow starts inside the main Gyroflow app, where you load your video, lens profile, gyro data, you do all synchronization and parameters, but **instead of rendering - you export a project file** which includes all your parameters and gyro data. This can be easily done by **Ctrl + S** shortcut, or using **Export -> Export project file (including gyro data)**. This exported project file is then loaded inside the Gyroflow plugin in your video editor and the plugin will process your pixels directly inside your editor according to the gyro data and all your parameters, but without any transcoding, recompression or additional processing. This is especially important when working with RAW files (like BRAW or R3D), where you retain all your RAW controls like ISO, White Balance etc. ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/general-plugin-workflow#currently-supported-video-editors) Currently supported video editors: * [DaVinci Resolve (OpenFX)](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx) * [MAGIX Vegas (OpenFX)](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx) * [The Foundry Nuke (OpenFX)](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx) * [ASSIMILATE Scratch (OpenFX)](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx) * [Adobe Premiere](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects) * [Adobe After Effects](https://docs.gyroflow.xyz/app/video-editor-plugins/adobe-premiere-after-effects) * [Kdenlive (frei0r)](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r) * [Shotcut (frei0r)](https://docs.gyroflow.xyz/app/video-editor-plugins/frei0r) * [Final Cut Pro X](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x) Last updated 1 year ago --- # Parsing Gyro Data | Gyroflow documentation Parsing of all gyro formats for Gyroflow is done in the [telemetry-parser](https://github.com/AdrianEddy/telemetry-parser) library. It was created specifically for Gyroflow and aims to implement all possible gyro data parsers **natively.** This means that the code is pure Rust, without **any** external dependencies, any SDKs or anything else. This allows it to be extremely portable with the ability to be built as a [python module](https://pypi.org/project/telemetry-parser/) , [WASM module](https://github.com/AdrianEddy/telemetry-parser/tree/master/bin/wasm-module) , for all mobile platforms and basically everywhere else Rust is supported. It also doesn't need filesystem access, so the source data bytes can be provided from anywhere. [](https://docs.gyroflow.xyz/app/technical-details/parsing-gyro-data#cli-tool) CLI tool -------------------------------------------------------------------------------------------- telemetry-parser provides a CLI tool called [gyro2bb](https://github.com/AdrianEddy/telemetry-parser/releases) , which parses the gyro data and outputs a Betaflight blackbox compatible `.csv` file. It can also dump (print) all parsed metadata to the terminal. [](https://docs.gyroflow.xyz/app/technical-details/parsing-gyro-data#gyroflows-gyro-formats) Gyroflow's gyro formats ------------------------------------------------------------------------------------------------------------------------- Gyroflow team has designed two formats in an attempt to standardize writing gyro data by the cameras. 1. [GCSV format](https://docs.gyroflow.xyz/app/technical-details/gcsv-format) is a simple CSV-based .gcsv text file 2. [Gyroflow protobuf](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf) is a binary protobuf description covering all possible camera features Both formats are parsed by the `telemetry-parser` library. Last updated 2 years ago * [CLI tool](https://docs.gyroflow.xyz/app/technical-details/parsing-gyro-data#cli-tool) * [Gyroflow's gyro formats](https://docs.gyroflow.xyz/app/technical-details/parsing-gyro-data#gyroflows-gyro-formats) --- # FAQ | Gyroflow documentation Most issues with settings can be solved by resetting them to defaults. Go to **Advanced** on bottom right and click **Reset all settings to defaults.** [](https://docs.gyroflow.xyz/app/getting-started/faq#where-can-i-ask-questions) Where can I ask questions? --------------------------------------------------------------------------------------------------------------- You can get support and ask all questions on [**Discord**](https://discord.gg/YaUtNpWTUh) . [](https://docs.gyroflow.xyz/app/getting-started/faq#forcefully-reset-settings) Forcefully Reset Settings -------------------------------------------------------------------------------------------------------------- Because Gyroflow development moves fast, and the software is constantly being updated and improved, it's possible that your Settings files can get corrupted, or contain bad data between updates. If Gyroflow fails to open, or you're having crashes on launch, you can try forcefully trashing your settings, to give Gyroflow a fresh slate: Mac Windows Linux Open the `Terminal.app` and enter the following command: `rm -f "$HOME/Library/Application Support/Gyroflow/settings.json"` 1. Open file explorer and enter this address: `%localappdata%/Gyroflow` 2. Delete the `settings.json` file Open Terminal and enter: `rm -f $HOME/.config/Gyroflow/settings.json` [](https://docs.gyroflow.xyz/app/getting-started/faq#gpu-encoding-is-not-available-or-not-working) GPU encoding is not available or not working ---------------------------------------------------------------------------------------------------------------------------------------------------- Support for codecs and modes varies greatly between GPU brands and models, for more information refer to specific guides for [NVIDIA](https://docs.gyroflow.xyz/app/hardware-acceleration/nvidia) , [AMD](https://docs.gyroflow.xyz/app/hardware-acceleration/amd) , [Intel](https://docs.gyroflow.xyz/app/hardware-acceleration/intel) , [macOS](https://docs.gyroflow.xyz/app/hardware-acceleration/apple-macos) or [Android](https://docs.gyroflow.xyz/app/hardware-acceleration/android) . If you don't know what GPU you have, refer to your computer specifications. **Always make sure you have the latest GPU driver.** If your computer is older than 2016, chances are H.265/HEVC will not be available, and if it's older than 2012, H.264 may also not be available. H.264 doesn't support 10-bit GPU encoding, and ProRes is accelerated only on M1/M2 macs. [](https://docs.gyroflow.xyz/app/getting-started/faq#im-using-o3-air-unit-and-i-have-a-lot-of-vibrations-after-stabilizing) I'm using O3 Air Unit and I have a lot of vibrations after stabilizing ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Read more [**in the DJI section**](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/dji#dji-o3-air-unit-vibration-issues) . [](https://docs.gyroflow.xyz/app/getting-started/faq#i-see-only-black-screen-when-stabilization-is-enabled) I see only black screen when stabilization is enabled. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- Most likely you have **Fixed camera** method selected in the Stabilization section. Change to **Default** or use **Advanced -> Reset all settings to defaults** (on the bottom right)**.** [](https://docs.gyroflow.xyz/app/getting-started/faq#im-getting-a-crash-when-trying-to-export-and-im-using-macos-with-intel-processor) I'm getting a crash when trying to export and I'm using macOS with Intel processor ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Go to **Advanced -> Device for video processing** and select one starting with **\[wgpu\]** [](https://docs.gyroflow.xyz/app/getting-started/faq#im-having-trouble-stabilizing-a-runcam-camera) **I'm having trouble stabilizing a RunCam camera** ----------------------------------------------------------------------------------------------------------------------------------------------------------- Refer to the [**RunCam section**](https://docs.gyroflow.xyz/app/getting-started/supported-cameras/runcam) . Make sure to learn the synchronization process by reading [**🔧 Basic usage**](https://docs.gyroflow.xyz/app/getting-started/basic-usage) , [**📈 Timeline and gyro chart**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/timeline-and-gyro-chart) and [**⌛ Synchronization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/synchronization) . [](https://docs.gyroflow.xyz/app/getting-started/faq#colors-are-changed-after-exporting-from-gyroflow) Colors are changed after exporting from Gyroflow ------------------------------------------------------------------------------------------------------------------------------------------------------------ Read about this issue on the [**🎨 Color differences**](https://docs.gyroflow.xyz/app/advanced-usage/color-differences) page. [](https://docs.gyroflow.xyz/app/getting-started/faq#my-video-is-zoomed-in-too-much) My video is zoomed in too much ------------------------------------------------------------------------------------------------------------------------ Make sure to use **Default** algorithm in the Stabilization section. Read more on the [**🔥 Stabilization**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/stabilization) page. [](https://docs.gyroflow.xyz/app/getting-started/faq#im-seeing-black-bars-around-my-video) I'm seeing black bars around my video ------------------------------------------------------------------------------------------------------------------------------------- Enable **Dynamic zooming** in the Stabilization section. [](https://docs.gyroflow.xyz/app/getting-started/faq#how-to-export-vertical-video) How to export vertical video? --------------------------------------------------------------------------------------------------------------------- Go to **Export settings**, uncheck the lock icon and enter 9:16 resolution there, e.g. 1080x1920. Read more on the [**🎬 Exporting**](https://docs.gyroflow.xyz/app/getting-started/basic-usage/exporting#output-size) page. [](https://docs.gyroflow.xyz/app/getting-started/faq#when-i-run-the-program-on-windows-theres-an-icon-on-taskbar-but-no-window-appears) When I run the program on Windows, there's an icon on taskbar but no window appears -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Most likely the window is shown outside of your monitor. You can Shift+Right click on the taskbar icon, and select **Maximize** to bring the window back to the visible area. [](https://docs.gyroflow.xyz/app/getting-started/faq#what-logging-rate-should-i-use) What logging rate should I use? ------------------------------------------------------------------------------------------------------------------------- **50Hz** is the absolute minimum. For reference: * GoPro uses **200Hz** * DJI & Insta360 uses **1000Hz** * Sony uses **2000Hz** [](https://docs.gyroflow.xyz/app/getting-started/faq#is-there-a-way-to-rotate-video-in-gyroflow) Is there a way to rotate video in Gyroflow? ------------------------------------------------------------------------------------------------------------------------------------------------- Yes, you can rotate in the **Video Information** panel. There's an editable field called **Rotation**. Simply click the little blue pencil icon, then adjust the rotation value as required. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FzYmLvkoWlcj6pLOKgjTt%252Fvideo-information.png%3Falt%3Dmedia%26token%3Dd9e86f1d-9c5b-416c-8161-917a53410b13&width=768&dpr=4&quality=100&sign=91d94ee8&sv=2) Last updated 2 days ago * [Where can I ask questions?](https://docs.gyroflow.xyz/app/getting-started/faq#where-can-i-ask-questions) * [Forcefully Reset Settings](https://docs.gyroflow.xyz/app/getting-started/faq#forcefully-reset-settings) * [GPU encoding is not available or not working](https://docs.gyroflow.xyz/app/getting-started/faq#gpu-encoding-is-not-available-or-not-working) * [I'm using O3 Air Unit and I have a lot of vibrations after stabilizing](https://docs.gyroflow.xyz/app/getting-started/faq#im-using-o3-air-unit-and-i-have-a-lot-of-vibrations-after-stabilizing) * [I see only black screen when stabilization is enabled.](https://docs.gyroflow.xyz/app/getting-started/faq#i-see-only-black-screen-when-stabilization-is-enabled) * [I'm getting a crash when trying to export and I'm using macOS with Intel processor](https://docs.gyroflow.xyz/app/getting-started/faq#im-getting-a-crash-when-trying-to-export-and-im-using-macos-with-intel-processor) * [I'm having trouble stabilizing a RunCam camera](https://docs.gyroflow.xyz/app/getting-started/faq#im-having-trouble-stabilizing-a-runcam-camera) * [Colors are changed after exporting from Gyroflow](https://docs.gyroflow.xyz/app/getting-started/faq#colors-are-changed-after-exporting-from-gyroflow) * [My video is zoomed in too much](https://docs.gyroflow.xyz/app/getting-started/faq#my-video-is-zoomed-in-too-much) * [I'm seeing black bars around my video](https://docs.gyroflow.xyz/app/getting-started/faq#im-seeing-black-bars-around-my-video) * [How to export vertical video?](https://docs.gyroflow.xyz/app/getting-started/faq#how-to-export-vertical-video) * [When I run the program on Windows, there's an icon on taskbar but no window appears](https://docs.gyroflow.xyz/app/getting-started/faq#when-i-run-the-program-on-windows-theres-an-icon-on-taskbar-but-no-window-appears) * [What logging rate should I use?](https://docs.gyroflow.xyz/app/getting-started/faq#what-logging-rate-should-i-use) * [Is there a way to rotate video in Gyroflow?](https://docs.gyroflow.xyz/app/getting-started/faq#is-there-a-way-to-rotate-video-in-gyroflow) --- # Gyroflow Core | Gyroflow documentation Gyroflow Core is a library that handles all stabilization algorithms and processing of video pixels. You can find the **source code** on GitHub [here](https://github.com/gyroflow/gyroflow/tree/master/src/core) . Gyroflow Core purposely excludes **ffmpeg** and thus the decoding and encoding of data. This also includes render queue, as render queue without a decoder and encoder doesn't make sense. Whilst the [Command Line Interface (CLI)](https://docs.gyroflow.xyz/app/advanced-usage/command-line-cli) uses Gyroflow Core, it also includes **Qt** and **ffmpeg.** The Command Line Interface is useful when you need to automate Gyroflow, or do things in a programatic or batch way. Coding using Gyroflow Core is useful if you're building things like: * Video Editor Plugins (i.e. OpenFX, FxPlug4) * OBS Plugin for Real-time Stabilisation * A web version of Gyroflow (compiled to WASM + processing with browser-provided video/canvas functions) * A fork of Gyroflow, with the intention to use a different GUI than **Qt**, or different video processing API than **ffmpeg** (for example C# + MFT for a pure Windows use case). `StabilizationManager` is the core struct of Gyroflow Core - it's the main interface. Whilst there isn't yet any official documentation for this, by referring to the existing OpenFX and FxPlug4 plugins, it should be easy enough to understand - especially if you're familiar with Rust. Gyroflow Core has been designed with a few assumptions in mind: ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#portability) **Portability** Gyroflow core doesn't make any assumptions about video data source, motion data source, user interface, video decoding, encoding or playback. It is designed to be free of any large external dependencies and this makes it possible to compile for any system, any environment and any purpose. It doesn't need **Qt**, **ffmpeg**, **OpenCV** or **mdk-sdk**, and yet it still handles everything needed for video stabilization. ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#comprehensiveness) Comprehensiveness It handles as much as it can, so the outer layers (e.g. the GUI) can be as thin as possible. This includes parsing of all gyro sources, GPU processing on all graphic APIs, drawing on the pixels, running the optical flow and synchronization algorithms, keyframes, lens profiles and of course the main stabilization algorithms. ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#performance) Performance All hardware accelerated processing is handled inside the core so the outer layers don't need to know anything about it. Calculations of the motion data, stabilization and zooming are also multithreaded inside the core. [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#design) Design ------------------------------------------------------------------------------------ The library is designed to take the following **inputs**: * Gyro data file path (or the contents in memory) * Video information like resolution, frame rate, duration * Either: * `.gyroflow` project file, to load all parameters in one go or * Parameters available in the GUI as function calls (eg. `set_smoothing_param, set_horizon_lock, set_imu_orientation` etc * Video pixels with a timestamp And the **output** is stabilized video pixels. Video pixels can be passed as: * Byte array in memory `&[u8]` * OpenCL `cl_mem` * DirectX11 `ID3D11Texture2D *` * Vulkan `VkImage` * Metal texture `MTLTexture` * Metal buffer `MTLBuffer` * CUDA buffer `Cudeviceptr` It's also able to handle hybrid solutions, like providing a Metal texture and returning `&[u8]` array in memory. Currently there's no documentation of the API, but the entire code is available so you should able to figure out all needed calls by looking at the [current implementations](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#examples) . Feel free to [contact Adrian](https://docs.gyroflow.xyz/cdn-cgi/l/email-protection#345550465d555a74534d465b52585b431a4c4d4e) if you have questions about it, or join the [Discord](https://discord.com/invite/BBJ2UVAr2D) . The main app implements GUI in **QML** on top of Gyroflow Core, and uses **ffmpeg** to decode and encode the video files. The **OpenFX** plugin uses pixels provided by the host (e.g. DaVinci Resolve), and settings loaded from `.gyroflow` project file **Gyroflow Toolbox**, the **Final Cut Pro X** plugin, uses a `MTLTexture` provided by Final Cut Pro via the [FxPlug4 API](https://developer.apple.com/documentation/professional_video_applications/fxplug) . It has the ability to import a `.gyroflow` project file, or it can programatically create a new internal Gyroflow Project if you're using a camera format that doesn't require synchronisation within the main Gyroflow application. Gyroflow Toolbox is primarily written in Objective-C, with a C interface to some Rust functions. Optionally, **OpenCV** is used in Gyroflow Core for one of the optical flow algorithms (**DISOpticalFlow**) and the main app uses it as the default. However, if you're just loading a `.gyroflow` project file, then the optical flow is not needed, as it's only used to determine the offsets and not for the actual stabilization process. Main app also uses **OpenCV** in the lens calibrator. [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#examples) Examples ---------------------------------------------------------------------------------------- * [The hero Gyroflow Application & GUI (Rust & QML)](https://github.com/gyroflow/gyroflow/blob/master/src/controller.rs) * [The OpenFX Plugin for DaVinci Resolve (Rust)](https://github.com/gyroflow/gyroflow-ofx/blob/main/src/gyroflow.rs) * [Gyroflow Toolbox - FxPlug4 Plugin for Final Cut Pro (Rust & Objective-C)](https://github.com/latenitefilms/GyroflowToolbox/blob/main/Source/Frameworks/gyroflow/src/lib.rs) Last updated 2 years ago * [Portability](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#portability) * [Comprehensiveness](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#comprehensiveness) * [Performance](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#performance) * [Design](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#design) * [Examples](https://docs.gyroflow.xyz/app/technical-details/gyroflow-core#examples) --- # Flight Controller | Gyroflow documentation Betaflight/Cleanflight/Inav/Emuflight/etc form a popular family of flight control firmware for high-performance multicopters. By using the built-in blackbox logging feature, gyro data for use with Gyroflow video stabilization can be collected. This was in fact one of the initial goals of the project! Betaflight, Cleanflight, Inav, Emuflight etc. all use more or less the same structure for handling blackbox data logging, so this page covers all of these. ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#hardware) Hardware As you may already know, the above mentioned flight firmwares can all run on the same type of hardware. A flight controller supporting this family of flight firmwares typically contain: * STMicroelectronics 32 bit microcontroller (F4, F7, G4, H7) * MEMS inertial measurement unit (MPU6000, BMI270, ICM2xxxx, ICM4xxxx etc.) Some flight controllers have an onboard magnetometer. In general, this is not required for video stabilization purposes unless absolute orientation is desired. Different gyros exhibit different behaviors in terms of data quality, noise, etc. In general, if the IMU is capable of providing clean data for the drone control loop, the same data is suitable for video stabilization purposes. For blackbox data logging, the hardware typically either contains an onboard SPI Flash chip, or a slot for an SD card. If neither of these are available, additional hardware solutions can be connected to the flight controller in order to enable blackbox logging. This can be using: * [The Openlager](https://github.com/d-ronin/openlager) - A open source and commercially available board containing an STM32f4 and a MicroSD slot for logging high rate data through a spare serial port. * [Tiny Blackbox](https://github.com/alexeystn/tiny-blackbox) - An open source ultra-light logger containing a 16 MB flash chip. * [~SparkFun OpenLog~](https://github.com/sparkfun/OpenLog) - A serial-based logger similar to the Openlager. This is no longer officially supported by Betaflight etc. due to data rate limitations. ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#betaflightcleanflightemuflight) Betaflight/(Cleanflight/Emuflight?) Required software: * Betaflight/Cleanflight/Emuflight configurator * Betaflight blackbox explorer The following should be a decent starting point for the blackbox configuration * 250 Hz logging rate * Debug mode: `None` If you're running Betaflight 4.3 or newer, it is possible to deselect specific elements of the data logging in order to save precious recording space. ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#gyroflow-logger-preset) Gyroflow logger preset We have a gyroflow-betaflight presets source for your convenience. You can easily set it up like the picture shown below: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FTFq2RbEAAvQzNKuA3p8a%252Fimage.png%3Falt%3Dmedia%26token%3Da2a792de-b613-4996-85db-ace56095fa97&width=768&dpr=4&quality=100&sign=e7530d28&sv=2) Once the gyroflow logger preset is actived, you'll see some special gyroflow presets: * **Gyroflow minimal settings**: for users who wanna use the blackbox data from main FC as motion data for video stabilization. * **Sencondary FC as Gyroflow motion logger**: for users who use a secondary FC as a gyroflow motion logger. * **Gyroflow BMI270 Filter sttings**: for users whose FC has a BMI270 sensor and want to use it as a gyroflow motion logger. * **Flowbox target settings**: preset for flowbox and flowbox+flowshutter #### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#cli-commands) CLI commands Or you might prefer the "old fashion", from the CLI: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FguJa7yg2mZXwHmqpdmP4%252Fimage.png%3Falt%3Dmedia%26token%3Df40c9dd2-c1e1-49ef-9b1b-4548dda1b611&width=768&dpr=4&quality=100&sign=dcb4c587&sv=2) ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#acknowledgements) Acknowledgements * [logger-presets](https://github.com/gyroflow/logger-presets) : Forked from betaflight/firmware-persets Last updated 2 years ago * [Hardware](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#hardware) * [Betaflight/(Cleanflight/Emuflight?)](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#betaflightcleanflightemuflight) * [Gyroflow logger preset](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#gyroflow-logger-preset) * [Acknowledgements](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/flight-controller#acknowledgements) Copy set blackbox_disable_pids = ON set blackbox_disable_rc = ON set blackbox_disable_setpoint = ON set blackbox_disable_bat = ON set blackbox_disable_mag = ON set blackbox_disable_alt = ON set blackbox_disable_rssi = ON set blackbox_disable_debug = ON set blackbox_disable_motors = ON set blackbox_disable_gps = ON Copy TODO - logger from fpvframe.ch - Camera angle --- # Final Cut Pro X | Gyroflow documentation [](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#about-gyroflow-toolbox) About Gyroflow Toolbox ------------------------------------------------------------------------------------------------------------------------- **Gyroflow Toolbox** allows you to import Gyroflow Projects directly into Apple's Final Cut Pro. This allows you to take the stablised data from Gyroflow and use it within Final Cut Pro as an effect, so that you don't have to export a ProRes file (for example), from Gyroflow - avoiding any round-tripping, and unnessary render files. It also allows you to manipulate and keyframe parameters such as FOV, Smoothness, Lens Correction, Horizon Lock/Roll, Position Offset and Rotation directly within Final Cut Pro. Gyroflow Toolbox is powered by the same Gyroflow Core Engine that the hero Gyroflow application uses, so you get the same awesome performance in Final Cut Pro as you do in the hero Gyroflow application. You can even use this in conjunction with [BRAW Toolbox](https://brawtoolbox.io/) (also on the App Store), to stabilise **Blackmagic RAW files**! To get started, simply drop your video clip from the Final Cut Pro Browser or Finder to the drop zone in the Final Cut Pro Inspector. You can also drop a Gyroflow Project. **Sony**, **GoPro (Hero 8+)**, **DJI**, **Blackmagic RAW** and **Insta360** will be automatically synced when imported. Other cameras, such as **RED**, will require launching Gyroflow to synchronise. **GoPro**, **DJI** and **Insta360** will automatically select a Lens Profile. For all other cameras, you may need to manually select a Lens Profile, however, we'll try and GUESS a good match. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FioXld0c93ZFaNgihu99T%252FApp%2520Store%2520Image%25202%2520-%2520v2.png%3Falt%3Dmedia%26token%3Dbcec4944-b314-4fbf-8030-52241c02e0bd&width=768&dpr=4&quality=100&sign=18e76c1b&sv=2) [](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#download) Download --------------------------------------------------------------------------------------------- **Gyroflow Toolbox** is a one-time payment of **USD$9.99**. There is currently no free trial, and it is only be available on the Mac App Store as a **one-time payment**. Alternatively, as Gyroflow Toolbox is **open source**, you can also [build it yourself via GitHub](https://github.com/latenitefilms/GyroflowToolbox) . You can learn more and purchase on the Mac App Store [here](https://apps.apple.com/au/app/gyroflow-toolbox/id1667462993?mt=12) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#limitations) Limitations --------------------------------------------------------------------------------------------------- **You should always put the Gyroflow Toolbox effect on a clip inside a Compound Clip.** This is because you should only ever apply the Gyroflow Toolbox effect to an **entire clip** - the clip cannot be trimmed. Due to limitations in Final Cut Pro's FxPlug4 API - we currently can't determine the source start timecode of a clip. Because of this, the Gyroflow Toolbox effect should only be applied to a clip where the start of the clip hasn't been trimmed in the timeline (i.e. the clip you have in the timeline should show the first frame of the source clip). If you need to trim the start of this clip, you can use the full clip within a Compound Clip, then trim the Compound Clip as required. We have been in contact with the Final Cut Pro team about this, and there's currently no other better workaround or solution. Discussed in [issue 8](https://github.com/latenitefilms/GyroflowToolbox/issues/8) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#documentation-and-support) Documentation & Support ----------------------------------------------------------------------------------------------------------------------------- You can find the official Gyroflow Toolbox website here: [https://gyroflowtoolbox.io](https://gyroflowtoolbox.io/) Last updated 1 year ago * [About Gyroflow Toolbox](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#about-gyroflow-toolbox) * [Download](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#download) * [Limitations](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#limitations) * [Documentation & Support](https://docs.gyroflow.xyz/app/video-editor-plugins/final-cut-pro-x#documentation-and-support) --- # Used Technologies | Gyroflow documentation [](https://docs.gyroflow.xyz/app/technical-details/used-technologies#used-languages-and-technologies) Used languages and technologies ------------------------------------------------------------------------------------------------------------------------------------------ _Gyroflow_ is written in [Rust](https://www.rust-lang.org/) , with UI written in [QML](https://doc.qt.io/qt-6/qmlfirststeps.html) . 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. Zero-copy preview in the UI is implemented using Qt RHI and everything from video decoding, through processing to UI display is done on the GPU without the image data ever reaching CPU. Zero-copy processing for video editor plugins supports: OpenCL buffers, CUDA buffers, Metal buffers and textures, Vulkan textures and DirectX11 textures. The OpenCL and wgpu interop is implemented [here](https://github.com/gyroflow/gyroflow/tree/master/src/core/gpu) , was very challenging to do and resulted in multiple contributions to other Rust packages ([#1](https://github.com/cogciprocate/ocl/pull/212) , [#2](https://github.com/gfx-rs/wgpu/pull/3338) , [#3](https://github.com/gfx-rs/wgpu/pull/3355) ) [](https://docs.gyroflow.xyz/app/technical-details/used-technologies#why-rust) Why Rust? --------------------------------------------------------------------------------------------- Rust is an amazing and performant systems language. Gyroflow's nature requires a language that allows to achieve the most possible performance and use CPU cores and GPU devices to the maximum. Rust's _fearless concurrency_, _memory safety_ and extremely convenient package system allowed Gyroflow to grow very fast and avoid any memory issues and most crashes. This resulted in Gyroflow being extremely stable while using a lot of threading and supporting all possible graphics APIs. Rust's [`wgpu`](https://github.com/gfx-rs/wgpu) project fits perfectly for Gyroflow's GPU processing requirements. [](https://docs.gyroflow.xyz/app/technical-details/used-technologies#why-qml) Why QML? ------------------------------------------------------------------------------------------- Unfortunately most native Rust GUI frameworks are still not mature enough to implement a fairly complex UI like Gyroflow's, while allowing low-level control for zero-copy rendering on various graphics APIs. QML on the other hand is a very robust and proven UI framework, which provides all necessary features while being implemented in a very efficient way. This ticks all the boxes for Gyroflow's UI requirements and was very easy to work with. It runs natively on DirectX, Vulkan, Metal and OpenGL through Qt RHI. Rust <-> QML interop is also quite easy through the [`qmetaobject-rs`](https://github.com/woboq/qmetaobject-rs) crate. It required to write some C++ code for some low-level Qt interaction, but even in a complex app like Gyroflow, the amount of C++ needed was very low and acceptable. QML supports hot-reloading so the UI development is very fast and easy, it has great support for animations and the UI rendering performance is great. The resulting UIs can run everywhere, not only desktop (Windows/Linux/macOS), but also mobile (Android/iOS) and even web browsers with WASM and WebGL. Other UIs could be written on top of **gyroflow\_core,** but I don't see an use case for that other than for fun. Last updated 2 years ago * [Used languages and technologies](https://docs.gyroflow.xyz/app/technical-details/used-technologies#used-languages-and-technologies) * [Why Rust?](https://docs.gyroflow.xyz/app/technical-details/used-technologies#why-rust) * [Why QML?](https://docs.gyroflow.xyz/app/technical-details/used-technologies#why-qml) --- # Building from Source | Gyroflow documentation [](https://docs.gyroflow.xyz/app/technical-details/building-from-source#dev-environment) Dev environment ------------------------------------------------------------------------------------------------------------- `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. [](https://docs.gyroflow.xyz/app/technical-details/building-from-source#building-steps) Building steps ----------------------------------------------------------------------------------------------------------- Windows macOS Linux Android iOS 1. Prerequisites: `git`, `7z` and working `powershell`. If you never ran powershell scripts before, run `set-executionpolicy remotesigned` in powershell as admin 2. Get latest stable Rust language from: https://rustup.rs/ * Please make sure to check the English language pack option when installing the C++ build tools from Visual Studio Installer 3. Install `Just` by running `cargo install --force just` 4. Clone the repo: `git clone https://github.com/gyroflow/gyroflow.git` 5. Enter the project directory and: * Install dependencies: `just install-deps` * Compile and run: `just run` 1. Prerequisites: `git`, `brew` 2. Get latest stable Rust language from: https://rustup.rs/ 3. Install `Just` by running `cargo install --force just` 4. Clone the repo: `git clone https://github.com/gyroflow/gyroflow.git` 5. Enter the project directory and: * Install dependencies: `just install-deps` * Compile and run: `just run` * The first time you run it won't work, run `just deploy` once and then `just run` will work 1. Prerequisites: `git`, `7z`, `python`, `apt` package manager (or adjust commands inside scripts if on different distro) 2. Get latest stable Rust language from: https://rustup.rs/ 3. Install `Just` by running `cargo install --force just` 4. Clone the repo: `git clone https://github.com/gyroflow/gyroflow.git` 5. Enter the project directory and: * Install dependencies: `just install-deps` * Compile and run: `just run` 1. Prerequisites: `git`, `7z`, working `powershell`, Android SDK and NDK. Building is supported only on Windows 2. Get latest stable Rust language from: https://rustup.rs/ 3. Install `Just` by running `cargo install --force just` 4. Clone the repo: `git clone https://github.com/gyroflow/gyroflow.git` 5. Install Android SDK and NDK r23c and update paths in `_scripts/android.just` 6. Enter the project directory and: * Install dependencies: `just android install-deps` * Compile the apk and install on device: `just android deploy` 1. Prerequisites: `git`, `brew` 2. Get latest stable Rust language from: https://rustup.rs/ 3. Install `Just` by running `cargo install --force just` 4. Clone the repo: `git clone https://github.com/gyroflow/gyroflow.git` 5. Enter the project directory and: * Install dependencies: `just ios install-deps` * Update Team ID, signing keys and provisioning profiles in `_scripts/ios.just` * Compile and run on device: `just ios run` [](https://docs.gyroflow.xyz/app/technical-details/building-from-source#profiling) Profiling ------------------------------------------------------------------------------------------------- Windows QML 1. Install and run `Visual Studio Community Edition` 2. Compile and run Gyroflow with the `profile` profile: `cargo run --profile profile` 3. In Visual Studio, go to `Debug -> Performance Profiler...` * Under `Target`, open `Change Target` and select `Running Process...`, select the running `gyroflow.exe` process 1. Uncomment `config.define("QT_QML_DEBUG", None);` in `build.rs` 2. Comment `cli::run()` in `gyroflow.rs` 3. Run in debug mode with QML debugger args: `cargo run -- "-qmljsdebugger=port:1234,block,services:CanvasFrameRate,EngineControl,DebugMessages"` 4. In Qt Creator go to `Analyze` -> `QML Profiler (Attach to Waiting Application)` and enter port 1234 Last updated 1 year ago * [Dev environment](https://docs.gyroflow.xyz/app/technical-details/building-from-source#dev-environment) * [Building steps](https://docs.gyroflow.xyz/app/technical-details/building-from-source#building-steps) * [Profiling](https://docs.gyroflow.xyz/app/technical-details/building-from-source#profiling) --- # Authors | Gyroflow documentation ### [](https://docs.gyroflow.xyz/app/authors/authors#authors) Authors * [AdrianEddy](https://github.com/AdrianEddy/) - _Author of the Rust implementation (code in this repository), author of the UI, GPU processing, rolling shutter correction and advanced rendering features_ * [Elvin Chen](https://github.com/ElvinC/) - _Author of the first version in Python, laid the groundwork to make all this possible_ #### [](https://docs.gyroflow.xyz/app/authors/authors#notable-contributors) Notable contributors * [Maik Menz](https://github.com/mycosd/) - _Contributed to all areas of Gyroflow with fixes and improvements_ * [Aphobius](https://github.com/Aphobius/) - _Author of the velocity dampened smoothing algorithm_ * [Marc Roeschlin](https://github.com/marcroe/) - _Author of the adaptive zoom algorithm_ * [Ilya Epifanov](https://github.com/ilya-epifanov/) - _Author of the DaVinci Resolve (OpenFX) Plugin_ * [Vladimir Pinchuk](https://github.com/VladimirP1/) - _Author of robust gyro-to-video synchronization algorithm_ * [Chris Hocking](https://github.com/latenitefilms) - _Author of the Gyroflow Toolbox Plugin for Final Cut Pro_ Last updated 2 years ago --- # NiYien-A1 | Gyroflow documentation [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#niyien-a1-camera-stabilizer-box) NiYien A1: Camera Stabilizer Box ----------------------------------------------------------------------------------------------------------------------------------------------------------- _Designed for Gyroflow Video Stabilization_ ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FruzoVS3YiC3zu4WsxUas%252Fniyien_a1.png%3Falt%3Dmedia%26token%3D2dcd21cd-42e4-4135-920b-25a40951fe40&width=768&dpr=4&quality=100&sign=3383e413&sv=2) ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fa32eXu8UFzZEZQG41cPX%252Fniyien_a1_fpv.png%3Falt%3Dmedia%26token%3D9906acd4-8ce2-4f56-b364-41a13dc3e24f&width=768&dpr=4&quality=100&sign=30be877b&sv=2) * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-1.-overview) 1\. Overview The NiYien A1 is a dedicated external gyroscope for **Gyroflow** — the open-source video stabilization tool. It captures high-precision real-time motion data, which Gyroflow uses to eliminate camera shake for ultra-smooth footage. * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-2.-core-advantages) 2\. Core Advantages #### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-2.1-compact-and-durable-build) 2.1 Compact & Durable Build * **Hot & Cold Shoe Compatibility**: Snaps to standard camera hot shoes (no extra adapters). * **Ultra-Lightweight**: Less than 30g — won’t disrupt camera balance or portability. * **Long Battery Life**: Over 35 hours of continuous recording. * **High Sampling Rate**: 1000Hz motion capture for accurate stabilization data. * **Full-Metal Build**: Resists scratches and impacts for long-term use. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FKHHjP5OiLKpkGgg5ZKov%252Fniyien_advantages.png%3Falt%3Dmedia%26token%3D64458f81-a360-4202-a2d1-1782c23de0de&width=768&dpr=4&quality=100&sign=f8db2e17&sv=2) #### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-2.2-hassle-free-operation) 2.2 Hassle-Free Operation * One-time synchronization with your camera, then it records **continuously**. * “Set-and-Forget” workflow: Use your camera as usual — no extra steps during shooting. #### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-2.3-niyien-tool-streamline-gyroflow-see-screenshot-below-for-full-features) 2.3 NiYien Tool: Streamline Gyroflow (See screenshot below for full features) A dedicated desktop tool for batch stabilization: * Preloaded profiles for **100+ camera models** — skip manual lens file creation. * Batch-adjust Gyroflow settings (Smoothness, Horizon Lock, Static Zoom). * **Batch export options**: Export stabilized videos or `.gyroflow` project files for plugins in DaVinci Resolve, Premiere Pro (PR), and other video editors. * Supports vertical shooting, slow-motion, anamorphic lenses, and RAW videos. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F5KMLqEZTtvfoxGJUkihi%252Fniyien_tool.png%3Falt%3Dmedia%26token%3Dc9479679-9670-4fa9-a7eb-95bed4937bf6&width=768&dpr=4&quality=100&sign=ec05c991&sv=2) * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-3.-support-list) 3\. Support List The support list is regularly updated — for the latest version, please refer to the display on the sales platform. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F7Gfb1EzGbejnm6gm3tpB%252Fniyien_support_list.png%3Falt%3Dmedia%26token%3Db2c76e2b-5ea6-4a0d-9a3c-34e5bc3c4dd4&width=768&dpr=4&quality=100&sign=90ab49aa&sv=2) Samples: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Flu0Cs5YDOeebVavP1SyZ%252Fniyien_samples.png%3Falt%3Dmedia%26token%3D6acd09ed-300f-4d26-8bea-e19101057fe4&width=768&dpr=4&quality=100&sign=d61b6571&sv=2) * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-4.-tutorials-and-gallery) 4\. Tutorials & Gallery * 📚 **Video Tutorial**: [https://www.niyien.com/NiYien\_manual\_EN.html](https://www.niyien.com/NiYien_manual_EN.html) * 📚 **Text Tutorial**: [https://www.niyien.com/NiYien\_txt\_manual\_EN.html](https://www.niyien.com/NiYien_txt_manual_EN.html) * 📚 **Video Gallery**: [https://youtube.com/playlist?list=PLojP8A0Y0pejRVO1qT3Jbav6641m4fg9V&si=grJqOwnqD2Rt7YxX](https://youtube.com/playlist?list=PLojP8A0Y0pejRVO1qT3Jbav6641m4fg9V&si=grJqOwnqD2Rt7YxX) * 📚 **Test Files**:[https://drive.google.com/file/d/1Gv2pa0O\_0LAM6vweo7HD8dQ8uZKv2r2K/view?usp=sharing](https://drive.google.com/file/d/1Gv2pa0O_0LAM6vweo7HD8dQ8uZKv2r2K/view?usp=sharing) * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-5.-purchase) 5\. Purchase * 📦 **Amazon (US)**: [https://www.amazon.com/dp/B0FPMLBK45](https://www.amazon.com/dp/B0FPMLBK45) * 📦 **AliExpress**: [https://www.aliexpress.us/item/3256808861378990.html](https://www.aliexpress.us/item/3256808861378990.html) * * * ### [](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-6.-support) 6\. Support * 📧 **Support Email**: Technical help (troubleshooting, setup issues) at [\[email protected\]](https://docs.gyroflow.xyz/cdn-cgi/l/email-protection) . * 📧 **Sales Email**: Inquiries about bulk orders, partnerships, or purchase quotes at [\[email protected\]](https://docs.gyroflow.xyz/cdn-cgi/l/email-protection) . * 💬 **Discord**: Join for real-time support, user discussions, and product update notifications at [https://discord.gg/dyna2DtqEA](https://discord.gg/dyna2DtqEA) Last updated 2 months ago * [NiYien A1: Camera Stabilizer Box](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#niyien-a1-camera-stabilizer-box) * [1\. Overview](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-1.-overview) * [2\. Core Advantages](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-2.-core-advantages) * [3\. Support List](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-3.-support-list) * [4\. Tutorials & Gallery](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-4.-tutorials-and-gallery) * [5\. Purchase](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-5.-purchase) * [6\. Support](https://docs.gyroflow.xyz/app/advanced-usage/using-external-gyro-source/niyien-a1#id-6.-support) --- # GCSV Format | Gyroflow documentation What follows is a text-based gyro log format that can be implemented in custom hardware/firmware called `.gcsv` (short for gyro csv or Gyroflow csv). As a text-based format this is meant to be easily implementable and inspectable (compatible with standard CSV reading software) at the cost of space efficiency. Firstly, for a video file called `videofilename.mp4`, the corresponding gyro log file is `videofilename.gcsv`, this is a case of the `.gcsv` acting as [sidecar files](https://en.wikipedia.org/wiki/Sidecar_file) . This allows for automatic log detection. The `.gcsv` file contains information about the gyro orientation, scaling, and a unique identifier. The following is an example of a .gcsv file from a logger supporting logging of gyro and accelerometer: Copy GYROFLOW IMU LOG version,1.3 id,custom_logger_name orientation,YxZ note,development_test fwversion,FIRMWARE_0.1.0 timestamp,1644159993 vendor,potatocam videofilename,videofilename.mp4 lensprofile,potatocam/potatocam_mark1_prime_7_5mm_4k lens_info,wide frame_readout_time,15.23 frame_readout_direction,0 tscale,0.001 gscale,0.00122173047 ascale,0.00048828125 t,gx,gy,gz,ax,ay,az 0,39,86,183,-1137,-15689,-2986 1,56,100,202,-1179,-15694,-2887 2,63,108,218,-1247,-15702,-2794 3,71,108,243,-1308,-15675,-2727 4,83,101,268,-1420,-15662,-2661 5,101,93,294,-1575,-15661,-2629 6,121,95,319,-1677,-15654,-2639 7,143,97,348,-1709,-15673,-2654 8,163,98,362,-1704,-15691,-2685 9,173,93,371,-1678,-15698,-2736 10,181,98,375,-1623,-15697,-2810 11,173,105,365,-1578,-15693,-2929 12,159,111,363,-1555,-15711,-3057 13,157,113,348,-1540,-15747,-3159 14,157,118,327,-1542,-15780,-3246 15,153,123,310,-1595,-15812,-3319 ... If a magnetometer is present, some additional fields are present, e.g.: ### [](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#mandatory-fields) Mandatory fields: 1. The very first line identifies the file as an IMU log. This line should either be `GYROFLOW IMU LOG` or the more neutral `CAMERA IMU LOG`. 2. The second line `version,1.3` describes the "version" of the .gcsv file format. This is equal to `1.3` for now. The versions are backwards compatible, but changes with the addition of new metadata fields. 3. The third line contains a unique ID associated with the logger/camera. For instance a high-end camera with internal logging may use `id,potatocam_deluxe_4k_grey_edition`. 4. The fourth line contains the orientation string. This corresponds to the `IMU Orientation` field in Gyroflow (see the implementation notes below for further details). 5. The next few lines contain optional metadata. These are not strictly required, but may improve workflow and stabilization. Developers are thus encouraged to include all known fields. 6. The subsequent lines with `tscale`, `ascale` and `gscale` describe constants used to scale the raw sensor values. * Multiplying `tscale` by the raw `t` values should give the time in **seconds**. It can thus be deduced that the file above is logging at 1000 Hz since each line increments by `1*0.001=0.001 s`, corresponding to a frequency of 1 KHz. The resolution of the timestamps should be 1 ms or better. * Multiplying `gscale` by the raw `gx/gy/gz` values should give the angular rate in **rad/s** * (If accelerometer data present) Multiplying `ascale` by the raw `ax/ay/az` values should give the acceleration in **g** * (If magnetometer data present) Multiplying `mscale` by `mx/my/mz` gives the measurements in **gauss** (Note that `1 tesla = 10000 gauss`). 7. The rest of the file simply consists of a standard CSV header and the raw values. The header and data order should be one of the following: `t,gx,gy,gz`, `t,gx,gy,gz,ax,ay,az`, or `t,gx,gy,gz,ax,ay,az,mx,my,mz`. Gyroscope data is the minimum requirement. Acceleration data is required for horizon lock, while magnetometer data improves drift in orientation determination (Not currently of significant importance). 8. For the data itself, fixed-point integers are recommended with a scalar (point 6) in order to avoid excessively large text files. Using floating points here is still valid though. ### [](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#optional-fields) Optional fields: The following are all optional fields for the metadata block, but developers should include as many known fields as possible. * `note` is for other misc. information. * `fwversion` is the firmware of the logger/camera. * `timestamp` is the UNIX timestamp when logging began. * `vendor` can contain the vendor or developer * `videofilename` is the name of the corresponding video file. Normally the `.gcsv` file name already matches, but this insures the information is kept if the filename changes. * `lensprofile` is the unique name of the lens preset and vendor folder. If it matches a lens profile in the [database](https://github.com/gyroflow/gyroflow/tree/master/resources/camera_presets) it is automatically selected during loading. * `lens_info` is additional information about the lens/field of view not available in the metadata. This could be `wide`, `normal`, `narrow` for different FOV settings, `linear` for lens distortion correction. Most relevant for action cameras with different crop settings. * `frame_readout_time` is the time in milliseconds it takes to capture a full video frame using rolling shutter. This is used for rolling shutter correction. * `frame_readout_direction` is the direction of the readout. Most cameras with rolling shutter capture the top of the frame first. Note that Gyroflow currently only supports correcting 0 and 1. * 0: Top to bottom * 1: Bottom to top * 2: Left to right * 3: Right to left ### [](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#implementation-notes) Implementation notes The required parts of the header of the `.gcsv` file remains static for a given camera/setup, and can thus be written as a constant string to the file. Raw sensor values are often represented as 16-bit signed integers, meaning a range between of `+/- 2^15`. If the acceleration range is known to be +/- 4 g as was the case in the example above. Then `ascale = 4/2^15 = 0.00012207031`. Refer to the datasheet for conversion information. Similarly, a gyroscope with a range of `+/- 1000 deg/s` gives `gscale = (1000 * pi / 180)/2^15 = 0.00053263221`. Note that even when configured to a setting such as `+/- 1000 deg/s`, the actual calibration of the sensor may lead to a maximum slightly above or below this value. As always, consult the datasheet. For a logger/camera implementation, some other things to think about: * For a camera, the timestamps should be based on the same time source as the video capture. This prevents drift between the two. * Consider using microseconds for the timestamp if a faster sampling rate if the time source allows. This may improve the timing during the sync process. * Consider using the data ready interrupts of IMU's instead of polling for more consistent timings. * Ensure proper filtering of the data to meet the Nyquist criteria for the sampling frequency. Even more filtering is usually recommended, e.g. setting the built-in hardware low pass filter cutoff at 50 Hz to 100 Hz is a good starting point, even for higher sampling frequencies. For the IMU Orientation string, the following figure corresponds to `YxZ`. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FujkewHJe6NljZ28qwBaQ%252Fimage.png%3Falt%3Dmedia%26token%3Df54c4947-0ae6-4102-b50e-a0e95e33023c&width=768&dpr=4&quality=100&sign=dc55d342&sv=2) * For the gyroscope, data for an axis correspond to the right-handed rotation rate of the camera body about that axis. * The accelerometer data correspond to linear acceleration applied in the given direction. Due to the nature of gravity, a stationary object will experience an _upwards_ acceleration of 9.81 m/s2, while an object in freefall will experience _zero_ acceleration. * The magnetometer data corresponds to the measured magnetic field vector. In order for orientation determination to work correctly, the data must have the same/aligned coordinate axes. For combined IMU sensors, this is already the case for the raw data. If a rotation is applied to the gyro data before being written, the same rotation should be applied to the accelerometer (and magnetometer). This ensures that the axes stay aligned. If the gyroscope and accelerometer data come from separate sensors, their axes must similarly be aligned, either physically or by applying a rotation in software. ### [](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#version-changelog) Version changelog * 1.0: Initial version * 1.1: Add lens profile field * 1.2: Add rolling shutter information * 1.3: Add `lens_info` field Last updated 2 years ago * [Mandatory fields:](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#mandatory-fields) * [Optional fields:](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#optional-fields) * [Implementation notes](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#implementation-notes) * [Version changelog](https://docs.gyroflow.xyz/app/technical-details/gcsv-format#version-changelog) Copy GYROFLOW IMU LOG version,1.3 id,custom_logger_name orientation,YxZ note,development_test fwversion,FIRMWARE_0.1.0 timestamp,1644159993 vendor,potatocam videofilename,videofilename.mp4 lensprofile,potatocam_mark1_prime_7_5mm_4k tscale,0.001 gscale,0.00122173047 ascale,0.00048828125 mscale,0.00059875488 t,gx,gy,gz,ax,ay,az,mx,my,mz 0,39,86,183,-1137,-15689,-2986,123,345,546 1,56,100,202,-1179,-15694,-2887,124,344,560 ... --- # Gyroflow protobuf | Gyroflow documentation [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#download-the-.proto-definition) Download the .proto definition ---------------------------------------------------------------------------------------------------------------------------------------- You can download the latest protobuf definition from telemetry-parser's git repository. `**TODO:**` `add info` [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#supported-features) Supported features ---------------------------------------------------------------------------------------------------------------- * Camera and lens metadata: Brand, model, focal length, f-number, focus distance etc. * Lens distortion model and coefficients * Frame readout time for rolling shutter correction * Frame capture metadata - ISO, shutter speed, white balance, etc. * Raw IMU samples - gyroscope, accelerometer, magnetometer readings * Quaternions - final camera orientation after sensor fusion * Lens OIS data - detailed information about lens OIS movements so we can stabilization when Lens OIS was enabled * IBIS data - detailed information about the in-body image stabilization, so we can support stabilization when IBIS was enabled * EIS data - if the camera contains any form of electronic stabilization, the protobuf can contain what exactly it did to the image so we can account for it. [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#transport-format) Transport format ------------------------------------------------------------------------------------------------------------ Typically the protobuf will be stored as binary data in a separate MP4 track of the video file. This makes it easy to read and write and it's the standard way to embed additional data in video files. `**TODO:**` `examples and screenshots` [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#sample-files) Sample files ---------------------------------------------------------------------------------------------------- `**TODO:**` `add sample files` [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#technical-details) Technical details -------------------------------------------------------------------------------------------------------------- Most fields in the **gyroflow.proto** have comments so the file should be self-explanatory. However, here are some additional details about more advanced features: ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#frame-capture-pipeline) Frame capture pipeline `**TODO:**` `diagram and description` `**TODO:**` `timestamp_offset_us` ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#lens-ois) Lens OIS `**TODO:**` `diagram with the typical design and the values we can use` ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#ibis) IBIS `**TODO:**` `diagram with the typical design and the values we can use` ### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#eis) EIS `**TODO:**` `possible types and diagrams with examples` #### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#quaternion-based-eis) Quaternion-based EIS `**TODO:**` `add info` #### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#mesh-warp-based-eis) Mesh warp-based EIS `**TODO:**` `add info` #### [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#id-4x4-matrix-based-eis) 4x4 matrix based EIS `**TODO:**` `add info` [](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#protobuf) Protobuf -------------------------------------------------------------------------------------------- Last updated 2 months ago * [Download the .proto definition](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#download-the-.proto-definition) * [Supported features](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#supported-features) * [Transport format](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#transport-format) * [Sample files](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#sample-files) * [Technical details](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#technical-details) * [Frame capture pipeline](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#frame-capture-pipeline) * [Lens OIS](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#lens-ois) * [IBIS](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#ibis) * [EIS](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#eis) * [Protobuf](https://docs.gyroflow.xyz/app/technical-details/gyroflow-protobuf#protobuf) gyroflow.proto Copy syntax = "proto3"; // Main entry point of the data // The first message will contain the Header with CameraMetadata and ClipMetadata // All subsequent per-frame samples will contain the FrameMetadata, without Header message Main { string magic_string = 1; // Magic string useful for format detection in binary data. Always "GyroflowProtobuf" uint32 protocol_version = 2; // Version of the protocol, currently 1. Header header = 3; FrameMetadata frame = 4; } // One-time metadata containing information about the camera, lens and this particular video clip message Header { message CameraMetadata { string camera_brand = 1; // Camera manufacturer string camera_model = 2; // Camera model optional string camera_serial_number = 3; // Camera serial number optional string firmware_version = 4; // Camera firmware version string lens_brand = 5; // Lens manufacturer string lens_model = 6; // Lens model uint32 pixel_pitch_nm = 7; // Sensor pixel pitch in nanometers uint32 sensor_pixel_width = 8; // Full sensor width in pixels uint32 sensor_pixel_height = 9; // Full sensor height in pixels optional float crop_factor = 10; // Crop factor in relation to full frame sensor size. e.g. 1.6x for APS-C optional string lens_profile = 11; // The Gyroflow lens identifier, or a path to lens profile json file (relative to the `camera_presets` directory), or the json contents directly optional string imu_orientation = 12; // IMU orientation used by Gyroflow as XYZ, Xyz, Zyx etc. Defaults to "XYZ". Read more in the Gyroflow documentation about this orientation convention. optional Quaternion imu_rotation = 13; // Arbitrary IMU rotation. Applies to the raw IMU samples (FrameMetadata.imu field). optional Quaternion quats_rotation = 14; // Arbitrary IMU rotation. Applies to the quaternions after sensor fusion (FrameMetadata.quaternions field). optional string additional_data = 15; // Optional note or additional data. If it starts with {, it will be parsed as JSON } message ClipMetadata { enum ReadoutDirection { TopToBottom = 0; // Sensor reads pixels from top to bottom. BottomToTop = 1; // Sensor reads pixels from bottom to top. RightToLeft = 2; // Sensor reads pixels from right to left. LeftToRight = 3; // Sensor reads pixels from left to right. } uint32 frame_width = 1; // Video frame width in pixels uint32 frame_height = 2; // Video frame height in pixels float duration_us = 3; // Clip duration in microseconds float record_frame_rate = 4; // Recording frame rate float sensor_frame_rate = 5; // Sensor frame rate. In most cases it will be equal to `record_frame_rate` float file_frame_rate = 6; // File frame rate. May be different in VFR mode. e.g. 120 fps recorded as 30 fps file int32 rotation_degrees = 7; // Video rotation in degrees. For example 180 degrees for upside-down, or 90 for vertical mode. uint32 imu_sample_rate = 8; // Sampling rate of the IMU chip. optional string color_profile = 9; // Shooting color profile, eg. Natural, Log, etc float pixel_aspect_ratio = 10; // For anamorphic lenses float frame_readout_time_us = 11; // Time it takes to read the video frame from the sensor, for rolling shutter correction. NOTE: It should be the time between first row of pixels to the last row of pixels, not for full sensor readout (if the crop is involved). ReadoutDirection frame_readout_direction = 12; // Frame readout direction } CameraMetadata camera = 1; ClipMetadata clip = 2; } message FrameMetadata { double start_timestamp_us = 1; // Frame capture start - the timestamp when the first row of pixels was captured. Internal camera clock timestamp. Unit: microseconds double end_timestamp_us = 2; // Frame capture end - the timestamp when the last row of pixels was captured. Internal camera clock timestamp. Unit: microseconds uint32 frame_number = 3; // Frame number in sequence. The first frame of the video clip should have this set to 1. optional uint32 iso = 4; // ISO Value optional float exposure_time_us = 5; // Actual exposure time in microseconds optional uint32 white_balance_kelvin = 6; // White balance in kelvins optional float white_balance_tint = 7; // White balance tint value optional float digital_zoom_ratio = 8; // Digital zoom ratio. If the video is zoomed in digitally, this value should indicate that. E.g. 0.9 for 10% digital crop optional int32 shutter_speed_numerator = 9; // Shutter speed numerator. E.g. 1 in case of 1/240 shutter speed. optional int32 shutter_speed_denumerator = 10; // Shutter speed denumerator. E.g. 240 in case of 1/240 shutter speed. optional float shutter_angle_degrees = 11; // Shutter angle in degrees. E.g. 180 optional float crop_x = 12; // Sensor crop area in pixels, X coordinate optional float crop_y = 13; // Sensor crop area in pixels, Y coordinate optional float crop_width = 14; // Sensor crop area in pixels, width optional float crop_height = 15; // Sensor crop area in pixels, height repeated LensData lens = 16; // Per-frame lens information, like focal length, distortion coefficients etc repeated IMUData imu = 17; // Per-frame raw IMU data samples, will likely have multiple samples in one video frame repeated QuaternionData quaternions = 18; // Per-frame quaternion data. Optional, can contain camera orientation after sensor fusion repeated LensOISData ois = 19; // Per-frame Lens optical stabilization data. Not present when OIS is disabled. ??? Exact data and format to be determined ??? repeated IBISData ibis = 20; // Per-frame in-body image stabilization (IBIS) data. Not present when IBIS is disabled. ??? Exact data and format to be determined ??? repeated EISData eis = 21; // Per-frame electronic in-camera stabilization data. Not present when EIS is disabled. ??? Exact data and format to be determined ??? } message LensData { enum DistortionModel { OpenCVFisheye = 0; // OpenCV's fisheye model. More details: https://docs.opencv.org/4.x/db/d58/group__calib3d__fisheye.html OpenCVStandard = 1; // OpenCV's standard model. More details: https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html Poly3 = 2; // LensFun's Poly3 model. More details: https://lensfun.github.io/manual/latest/group__Lens.html#gaa505e04666a189274ba66316697e308e Poly5 = 3; // LensFun's Poly5 model. More details: https://lensfun.github.io/manual/latest/group__Lens.html#gaa505e04666a189274ba66316697e308e PTLens = 4; // LensFun's PTLens model. More details: https://lensfun.github.io/manual/latest/group__Lens.html#gaa505e04666a189274ba66316697e308e GenericPolynomial = 5; // ??? Not implemented yet. ??? } DistortionModel distortion_model = 1; repeated float distortion_coefficients = 2; // Distortion model coefficients as an array of float values. repeated float camera_intrinsic_matrix = 3; // Row-major 3x3 camera intrinsic matrix. Usually [[fx, 0, cx], [0, fy, cy], [0, 0, 1]], where fx and fy are focal length values in pixels (f_mm = f_pixels * sensor_width_mm / image_width_px ; f_pixels = f_mm / sensor_width_mm * image_width_px), and cx and cy is the principal point in pixels (usually width/2, height/2). optional float focal_length_mm = 4; // Native lens focal length in mm optional float f_number = 5; // Lens aperture number. E.g. 2.8 optional float focus_distance_mm = 6; // Focal plane distance in millimeters } message IMUData { double sample_timestamp_us = 1; // Exact timestamp of the sampling time from the internal camera clock. Unit: microseconds float gyroscope_x = 2; // Gyroscope X reading. Unit: degrees/sec float gyroscope_y = 3; // Gyroscope Y reading. Unit: degrees/sec float gyroscope_z = 4; // Gyroscope Z reading. Unit: degrees/sec float accelerometer_x = 5; // Accelerometer X reading. Unit: m/s² float accelerometer_y = 6; // Accelerometer Y reading. Unit: m/s² float accelerometer_z = 7; // Accelerometer Z reading. Unit: m/s² optional float magnetometer_x = 8; // Magnetometer X reading. Unit: µT optional float magnetometer_y = 9; // Magnetometer Y reading. Unit: µT optional float magnetometer_z = 10; // Magnetometer Z reading. Unit: µT } message Quaternion { float w = 1; // Quaternion component W (angle) float x = 2; // Quaternion component X float y = 3; // Quaternion component Y float z = 4; // Quaternion component Z } message QuaternionData { double sample_timestamp_us = 1; // Exact timestamp of the sampling time from the internal camera clock. Unit: microseconds Quaternion quat = 2; // Quaternion } message LensOISData { double sample_timestamp_us = 1; // Exact timestamp of the sampling time from the internal camera clock. Unit: microseconds float x = 2; // Optical element shift value in the X axis in nanometers float y = 3; // Optical element shift value in the Y axis in nanometers } message IBISData { double sample_timestamp_us = 1; // Exact timestamp of the sampling time from the internal camera clock. Unit: microseconds float shift_x = 2; // X Sensor shift value in nanometers float shift_y = 3; // Y Sensor shift value in nanometers float roll_angle_degrees = 4; // Sensor roll rotation angle in degrees. } message EISData { enum EISDataType { QUATERNION = 0; // Rotation only, indicates how the frame was rotated internally by the camera EIS, from pixels read from the sensor to the final pixels in the encoded video file. MESH_WARP = 1; // Mesh warp. Allows for arbitrary mapping of the video frame. Contains exact transform/deform of the video frame read from the sensor to the final pixels in the encoded video file. MATRIX_4X4 = 2; // 4x4 matrix - rotation, translation and scaling. Indicates how the frame was transformed in the 3d space by the camera EIS, from pixels read from the sensor to the final pixels in the encoded video file. } optional double sample_timestamp_us = 1; // Exact timestamp of the sampling time from the internal camera clock. Unit: microseconds. Timestamp is ignored if there's only one entry of EISData per frame. EISDataType type = 2; // Type of EIS. Can be quaternion, mesh warp or 4x4 transform matrix. optional Quaternion quaternion = 3; // If type is QUATERNION, this field contains the quaternion data optional MeshWarpData mesh_warp = 4; // If type is MESH_WARP, this field contains the mesh values repeated float matrix_4x4 = 5; // If type is MATRIX_4x4, this field contains the 16 float matrix values (row-major order). } message MeshWarpData { int32 grid_width = 1; // Number of video frame divisions in the horizontal direction. int32 grid_height = 2; // Number of video frame divisions in the vertical direction. repeated float values = 3; // grid_width * grid_height float numbers representing new position of a coordinate at X and Y grid position. } --- # DaVinci Resolve (OpenFX) | Gyroflow documentation [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#installation) Installation ------------------------------------------------------------------------------------------------------------ The Gyroflow OpenFX Plugin works on Mac, Windows and Linux: Mac Windows Linux ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#installing-the-openfx-plugin) Installing the OpenFX plugin 1. Download the latest version from [https://gyroflow.xyz/download#plugins](https://gyroflow.xyz/download#plugins) 2. Create the OFX folder: `/Library/OFX/Plugins`. You can do that in Finder or in the Terminal: `sudo mkdir -p /Library/OFX/Plugins ; open /Library/OFX/Plugins`. 3. Run `Gyroflow-ofx-macosx.dmg` 4. Copy `Gyroflow.ofx.bundle` folder to `/Library/OFX/Plugins/` **IMPORTANT:** Make sure the OFX folder is in the root `/Library` folder, not your user `/Users/YOUR-USER-NAME/Library` folder. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FQzbCjOvuYFJ9hZvoIIq2%252FImage%252015-02-2023%2520at%252016.44.jpg%3Falt%3Dmedia%26token%3D47ac70d7-dcc9-4b5f-9422-0a386d0fd80e&width=768&dpr=4&quality=100&sign=e18fe96&sv=2) Properly installed plugin on macOS ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#hardware-acceleration) Hardware Acceleration Gyroflow OFX plugin supports **Metal** acceleration on Mac. ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#installing-the-openfx-plugin-1) Installing the OpenFX plugin 1. Download the latest version from [https://gyroflow.xyz/download#plugins](https://gyroflow.xyz/download#plugins) 2. Extract `Gyroflow-ofx-windows.zip` somewhere 3. Create the OFX folder: `C:\Program Files\Common Files\OFX\Plugins`. 4. Copy `Gyroflow.ofx.bundle` folder to `C:\Program Files\Common Files\OFX\Plugins` ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F2uvoD7QCMH2yWJ5KxUOC%252Fimage.png%3Falt%3Dmedia%26token%3D7acf3ce6-d454-443b-8d0d-68c7e55a30f9&width=768&dpr=4&quality=100&sign=2d426c44&sv=2) Properly installed plugin on Windows ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#hardware-acceleration-1) Hardware Acceleration Gyroflow OFX plugin supports **OpenGL**, **OpenCL** and **CUDA** acceleration on Windows ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#installing-the-openfx-plugin-2) Installing the OpenFX plugin 1. Download the latest version from [https://gyroflow.xyz/download#plugins](https://gyroflow.xyz/download#plugins) 2. Create the OFX folder: `/usr/OFX/Plugins`. 1. You can do that in the Terminal: `sudo mkdir -p /usr/OFX/Plugins && sudo chown $USER /usr/OFX/Plugins`. 3. Extract`Gyroflow-ofx-linux.zip` to `/usr/OFX/Plugins` ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FObAljZrjz48K2lobIbGU%252Fimage.png%3Falt%3Dmedia%26token%3D94d445de-35c2-479f-ac25-f677ceeef331&width=768&dpr=4&quality=100&sign=bcfce0e4&sv=2) Properly installed plugin on Linux ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#hardware-acceleration-2) Hardware Acceleration Gyroflow OFX plugin supports **OpenGL**, **OpenCL** and **CUDA** acceleration on Linux [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#source-code) Source Code ---------------------------------------------------------------------------------------------------------- You can find the source code for this OpenFX plugin on GitHub [here](https://github.com/gyroflow/gyroflow-plugins) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#nightly-builds) Nightly Builds ---------------------------------------------------------------------------------------------------------------- Development moves fast and there are new features added very often, check them out by downloading the nightly build: * [Nightly OpenFX Build for Mac](https://nightly.link/gyroflow/gyroflow-plugins/workflows/release/main/Gyroflow-OpenFX-macos.zip) * [Nightly OpenFX Build for Windows](https://nightly.link/gyroflow/gyroflow-plugins/workflows/release/main/Gyroflow-OpenFX-windows.zip) * [Nightly OpenFX Build for Linux](https://nightly.link/gyroflow/gyroflow-plugins/workflows/release/main/Gyroflow-OpenFX-linux.zip) * [Nightly Gyroflow Build](https://gyroflow.xyz/devbuild/?autodownload) The list of all nightly builds is available on [GitHub actions](https://github.com/gyroflow/gyroflow-plugins/actions) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#supported-hosts) Supported Hosts ------------------------------------------------------------------------------------------------------------------ This **OpenFX** plugin has been primarily built for Blackmagic's **DaVinci Resolve**, however it has also been tested in **MAGIX Vegas** and **ASSIMILATE Scratch**. It may also work in other OpenFX-compatible hosts, such as **Baselight**, **DVS Clipster**, **Nuke** & **Flame**, however it's currently untested. If you would like to use this OpenFX Plugin in another application, and it's not working correctly, please [post a GitHub issue](https://github.com/gyroflow/gyroflow-plugins/issues) . [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#interface) Interface ------------------------------------------------------------------------------------------------------ This section explains the various sections of the OpenFX Plugin Interface. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F9kxhy3GXu5vHnxab8qnB%252Fdavinci-resolve-mac-gyroflow-interface.png%3Falt%3Dmedia%26token%3Db5fcccf4-dfeb-49b7-b8a9-74a3550fa22e&width=768&dpr=4&quality=100&sign=b01e9088&sv=2) ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#gyroflow-project) Gyroflow Project #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#load-for-current-file) Load for current file This feature relies on external scripting and is only available in paid DaVinci Resolve Studio. To use this feature, you also have to allow executing external scripts. You can do this by going to **Preferences...** ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FdI6hnRpNb4QDqWt8sRoV%252Fdavinci-resolve-mac-preferences.png%3Falt%3Dmedia%26token%3D441e34d8-8ab1-49e9-9558-2ab299fc1a68&width=768&dpr=4&quality=100&sign=70a9431b&sv=2) Then within the **General** section, make sure **External scripting using** is set to **Local**. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FfJCyywkctJidh1JnKQB4%252Fdavinci-resolve-mac-general.png%3Falt%3Dmedia%26token%3Daa772e08-17e5-4d84-ab09-ea6d134c2a11&width=768&dpr=4&quality=100&sign=310a35ab&sv=2) For this feature to work, you must have the clip you want to apply Gyroflow to selected in the **Edit** page or in the **Color** page. It is also impossible to query file path on a **Compound Clip**. In any case, you can just select the video or project file using the **Browse** button, as explained next... #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#browse) Browse If you're not able to use the **Load for current file** feature, you can manually **Browse** for a Gyroflow Project. Just click the **Browse** button and navigate to wherever your Gyroflow Project is saved. The OpenFX Plugin will remember the last opened folder. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FaZo8Giu9sHl0vmPI4r7G%252Fdavinci-resolve-mac-gyroflow-browse.png%3Falt%3Dmedia%26token%3D7323659a-ea05-423d-ae09-1c1bec25db1d&width=768&dpr=4&quality=100&sign=8077644d&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#load-preset-lens-profile) Load preset/lens profile Clicking the **Load preset/lens profile** button allows you to select a **Preset** or **Lens Profile**. Lens calibration is a very important piece of the stabilization algorithm and it's very important to use accurate lens profile when stabilizing a video in Gyroflow. You can learn more [here](https://docs.gyroflow.xyz/app/getting-started/lens-calibration) . On macOS, the built-in Lens Profiles are located at: `/Applications/Gyroflow.app/Contents/Resources/camera_presets` ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Ftp6JfIdLcFcUtpyv5aOg%252Fdavinci-resolve-mac-gyroflow-load-preset.png%3Falt%3Dmedia%26token%3Dabe01f02-c001-47d9-8b32-390c83faedd2&width=768&dpr=4&quality=100&sign=841f63c3&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#open-in-gyroflow) Open in Gyroflow If you already have a Gyroflow Project loaded, pressing **Open in Gyroflow** will open this project in Gyroflow. If you don't already have a Gyroflow Project loaded, this will just open Gyroflow in it's default state. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FN2Z6lETF9PggF9BV5Aeu%252Fdavinci-resolve-mac-gyroflow-open.png%3Falt%3Dmedia%26token%3Dcd2848f0-af67-4260-a173-b3083e73b967&width=768&dpr=4&quality=100&sign=4957cacd&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#reload-project) Reload Project If you already have a Gyroflow Project loaded, pressing the **Reload Project** button will reload the project from the filesystem. This is useful if you've made changes in the main Gyroflow application, but now want to update the OpenFX Plugin. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FOEfYLlairAoRN0zGsFeX%252Fdavinci-resolve-mac-gyroflow-reload-project.png%3Falt%3Dmedia%26token%3D3c3f2f06-e992-4485-934b-2f29a3ff4ce5&width=768&dpr=4&quality=100&sign=13cf4212&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#last-saved-project) Last saved project This is a convenince function that allows you to load the last saved project in the main Gyroflow application to the OpenFX plugin. This is useful if you're working on the free version of DaVinci Resolve, and you don't have access to the **Load for current file** feature. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F3xUqf7ImiElIOowQwZ7H%252Fdavinci-resolve-mac-gyroflow-last-saved.png%3Falt%3Dmedia%26token%3D70381a58-1be9-4a1f-ac71-5dfc43cce136&width=768&dpr=4&quality=100&sign=b9337a83&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#status-message) Status Message Underneath the **Last save project** button is a checkbox that displays a status message. This is useful to determine if everything is working correctly, or if there's any issues or problems - for example, a frames per second mismatch: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FTmY1LGSdURPDgA2CyWAc%252Fdavinci-resolve-mac-gyroflow-mismatch.png%3Falt%3Dmedia%26token%3Db61c9d6b-79a1-4b6a-b94d-c041ca59be0c&width=768&dpr=4&quality=100&sign=9c7d9632&sv=2) If everything is correct and working, you'll see this: ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FxI2qyiqDvIOk3pqPEkWM%252Fdavinci-resolve-mac-gyroflow-ok.png%3Falt%3Dmedia%26token%3Db78d85c5-25e0-4e06-9ac6-7b6f9ea2d933&width=768&dpr=4&quality=100&sign=3435ec2f&sv=2) ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#adjust-parameters) Adjust Parameters This section allows you to manually adjust several Gyroflow parameters directly within the OpenFX plugin. You can also apply keyframes. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FTcvMlOvWSjlMmQ6ybQG1%252Fdavinci-resolve-mac-gyroflow-adjust-parameters.png%3Falt%3Dmedia%26token%3D4b43713c-0260-40a5-a4c8-8d0a3c9965a2&width=768&dpr=4&quality=100&sign=c5b430d8&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#input-and-video-rotation) Input & Video Rotation **Input Rotation** is when the Host (i.e. DaVinci Resolve) rotates the input pixels before feeding to the OpenFX Plugin. For example, if an `.mp4` contains rotation in the metadata, the Host will automatically rotate it. Gyroflow expects raw pixels directly from the source file, so if the Host has already rotated them, it won't match. Given this, the **Input rotation** is the rotation done by the host BEFORE feeding to the OpenFX plugin, whereas **Video rotation** is a rotation by the Gyroflow engine AFTER stabilisation. #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#video-speed) Video Speed Use this slider to change video speed or keyframe it, instead of built-in speed changes in the editor. #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#disable-gyroflows-stretch) Disable Gyroflow's stretch If you used Input stretch in the lens profile in Gyroflow, and you de-stretched the video separately in Resolve, check this to disable Gyroflow's internal stretching. ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#keyframes) Keyframes This section allows you to control how the OpenFX handles keyframes. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252Fr0ueOyRs6EYOB3rxH7g7%252Fdavinci-resolve-mac-gyroflow-keyframes.png%3Falt%3Dmedia%26token%3De66256e0-d327-4bf7-bb1d-e57cf22d5795&width=768&dpr=4&quality=100&sign=b01c5a36&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#use-gyroflows-keyframes) Use Gyroflow's keyframes Ticking this uses Gyroflow's internal keyframes, instead of the ones in your host application (i.e. DaVinci Resolve). This is enabled by default. #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#recalculate-keyframes) Recalculate keyframes This button allows you to recalculate keyframes after adjusting the splines (in Fusion mode). ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#additional-settings) Additional Settings This section covers the additional settings at the bottom of the OpenFX settings. ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252FBleWhZwmyRSfgTNHRSDV%252Fdavinci-resolve-mac-gyroflow-additional.png%3Falt%3Dmedia%26token%3Dad009f44-3d49-40da-8bd9-cc9e54235933&width=768&dpr=4&quality=100&sign=2f867ed&sv=2) #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#stabilization-overview) Stabilization overview This allow you to zoom out the view to see the stabilization results. This is very useful to see if and how Gyroflow is working. You should disable this before rendering. #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#dont-draw-outside-source-clip) Don't draw outside source clip When clip and timeline aspect ratio don't match, draw the final image inside the source clip, instead of drawing outside it. #### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#embed-.gyroflow-data-in-plugin) Embed .gyroflow data in plugin If you intend to share the host (i.e. DaVinci Resolve) project to someone else, the plugin can embed the Gyroflow project data including gyro data inside the host project. This way you don't have to share `.gyroflow` project files. Enabling this option will make the project bigger. This option is off by default. [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#workflow) Workflow ---------------------------------------------------------------------------------------------------- ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#vertical-video-or-different-aspect-ratio) Vertical Video or different aspect ratio For vertical video, or if your timeline has different aspect ratio than your source video, the first thing you have to do is change your timeline settings -> Mismatched resolution to "**Scale entire image to fit**" ![](https://docs.gyroflow.xyz/app/~gitbook/image?url=https%3A%2F%2F957905993-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FgogMettXiFqbEAwJmvy8%252Fuploads%252F7Fq8SCVpkFsWP53kGtNr%252Fimage.png%3Falt%3Dmedia%26token%3D24f19ae0-73f9-45d4-9b93-978aed286e95&width=768&dpr=4&quality=100&sign=4d302356&sv=2) Then you have two options: 1. The preferred option is to add the Gyroflow OpenFX plugin in a Fusion node, then set the target resolution in the **Output size** area in the plugin. Then go to plugin Settings and check **Use plugin RoD for output size** and then you can continue on the vertical timeline in the edit/color pages. For this to work correctly, you have to change **Clip attributes -> Image Orientation** to **0°**, and then in plugin set **Video rotation** to **90** or **\-90** and **Input rotation** to **0°.** 2. Alternatively, change your timeline scaling settings to **Scale image to fit** instead of **Scale image with crop** - this is easier method but if you have 16:9 video that you want to export as 9:16, it will negatively affect the quality. ### [](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#frame-rate-mismatch) Frame Rate Mismatch If your timeline has different frame rate than the source file, you may experience broken stabilization. The plugin tries its best to adapt to the frame rate differences, but sometimes it's not possible and in that case, you have to add the plugin as a Fusion node instead. Last updated 2 days ago * [Installation](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#installation) * [Source Code](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#source-code) * [Nightly Builds](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#nightly-builds) * [Supported Hosts](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#supported-hosts) * [Interface](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#interface) * [Gyroflow Project](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#gyroflow-project) * [Adjust Parameters](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#adjust-parameters) * [Keyframes](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#keyframes) * [Additional Settings](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#additional-settings) * [Workflow](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#workflow) * [Vertical Video or different aspect ratio](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#vertical-video-or-different-aspect-ratio) * [Frame Rate Mismatch](https://docs.gyroflow.xyz/app/video-editor-plugins/davinci-resolve-openfx#frame-rate-mismatch) --- # Email Protection | Cloudflare Please enable cookies. Email Protection ================ You are unable to access this email address docs.gyroflow.xyz ------------------------------------------------------------- The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**. If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection) . * [How does Cloudflare protect email addresses on website from spammers?](https://developers.cloudflare.com/waf/tools/scrape-shield/email-address-obfuscation/) * [Can I sign up for Cloudflare?](https://developers.cloudflare.com/fundamentals/setup/account/create-account/) Cloudflare Ray ID: **9af14db6cb35f4b5** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing) ---