<p align="center">
<h1 align="center">
<a href="https://github.com/gyroflow/gyroflow#gh-light-mode-only">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a9abc23f-b693-4317-82fc-c37504375d2a.svg" alt="Gyroflow标志" height="100">
</a>
<a href="https://github.com/gyroflow/gyroflow#gh-dark-mode-only">
<img src="https://yellow-cdn.veclightyear.com/0a4dffa0/91c03e9e-8472-410a-b41e-383064973e69.svg" alt="Gyroflow标志" height="100">
</a>
</h1>
<p align="center">
使用陀螺仪数据进行视频稳定
<br/>
<br/>
<a href="https://gyroflow.xyz">主页</a> •
<a href="https://github.com/gyroflow/gyroflow/releases">下载</a> •
<a href="https://docs.gyroflow.xyz">文档</a> •
<a href="https://discord.gg/WfxZZXjpke">Discord</a> •
<a href="https://github.com/gyroflow/gyroflow/issues">报告问题</a> •
<a href="https://github.com/gyroflow/gyroflow/issues">请求功能</a>
</p>
<p align="center">
<a href="https://github.com/gyroflow/gyroflow/releases">
<img src="https://img.shields.io/github/downloads/gyroflow/gyroflow/total" alt="下载量">
</a>
<a href="https://github.com/gyroflow/gyroflow/graphs/contributors">
<img src="https://img.shields.io/github/contributors/gyroflow/gyroflow?color=dark-green" alt="贡献者">
</a>
<a title="Crowdin" target="_blank" href="https://crowdin.com/project/gyroflow"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/8723c5d5-7b40-46c2-a566-597f28d2ef7d.svg">
</a>
<a href="https://github.com/gyroflow/gyroflow/issues/">
<img src="https://img.shields.io/github/issues/gyroflow/gyroflow" alt="问题">
</a>
<a href="https://github.com/gyroflow/gyroflow/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/gyroflow/gyroflow" alt="许可证">
</a>
</p>
</p>
关于项目
Gyroflow是一个应用程序,它可以使用来自陀螺仪和可选的加速度计的运动数据来稳定你的视频。现代相机内部会记录这些数据(GoPro、Sony、Insta360等),而这个应用程序通过使用这些数据来精确地稳定捕获的画面。它还可以使用来自外部源的陀螺仪数据(例如来自Betaflight黑匣子的数据)。
预告片/效果视频

<p align="center">
<a href="resources/comparison1.mp4"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0c3d5c54-bcf3-4c00-8d5e-65fbabb37fec.gif" height="200"></a>
<a href="resources/comparison2.mp4"><img src="https://yellow-cdn.veclightyear.com/0a4dffa0/6ba7e89a-d775-49e6-a30a-a59cd50296cb.gif" height="200"></a>
</p>
功能
- 实时预览、参数调整和所有计算
- GPU处理和渲染,所有算法都是多线程的
- 卷帘快门校正
- 支持已经稳定的GoPro视频(使用Hypersmooth拍摄)(Hero 8及以上)
- 支持并渲染10位视频(常规编解码器最高支持16位4:4:4:4,OpenEXR支持32位浮点 - 直接在YUV数据上工作以保持最高质量)
- 可自定义镜头校正强度
- 渲染队列
- 关键帧
- 能够创建自定义设置预设
- OpenFX插件(例如用于DaVinci Resolve),允许你在视频编辑器中应用稳定而无需任何转码
- Gyroflow Toolbox - 一个Final Cut Pro效果,允许你导入Gyroflow项目而无需转码
- 带有陀螺仪数据的可视化图表(可以显示陀螺仪、加速度计、磁力计和四元数)
- 平滑四元数的可视化显示
- 现代响应式用户界面,带有深色和浅色主题
- 自适应缩放(动态裁剪)
- 支持图像序列(PNG、OpenEXR、CinemaDNG)
- 基于telemetry-parser - 开箱即支持所有陀螺仪源
- 陀螺仪低通滤波器、任意旋转(俯仰、横滚、偏航角度)和方向
- 多种陀螺仪积分方法用于确定方向
- 多种视频方向平滑算法,包括地平线水平和每轴平滑度调整
- 跨平台 - 适用于Windows/Linux/Mac/Android/iOS
- 多种UI语言
- 支持可变和高帧率视频,所有计算都基于时间戳进行
- H.264/AVC、H.265/HEVC、ProRes、DNxHD、CineForm、PNG和OpenEXR输出,H.264和H.265完全GPU加速(ProRes在Apple Silicon上也加速)
- 自动镜头校准过程
- 完全零拷贝GPU预览渲染
- 核心引擎是一个没有外部依赖的独立库(无Qt、无ffmpeg、无OpenCV),可用于创建OpenFX和Adobe插件(在待办事项列表中)
- 自动更新镜头配置文件数据库
- 内置官方镜头配置文件,适用于GoPro:HERO 6、7、8、9、10、11、12;RunCam:Thumb、ThumbPro、5 Orange;Insta360:GO 2、GO 3的所有拍摄模式
支持的陀螺仪数据源
- GoPro (HERO 5及以后机型)
- 索尼 (a1, a7c, a7r V, a7 IV, a7s III, a9 II, a9 III, FX3, FX6, FX9, RX0 II, RX100 VII, ZV1, ZV-E10, ZV-E1, a6700)
- Insta360 (OneR, OneRS, SMO 4k, Go, GO2, GO3, Caddx Peanut, Ace, Ace Pro)
- 大疆 (Avata, Avata 2, O3 Air Unit, Action 2, Action 4)
- Blackmagic RAW (*.braw)
- RED RAW (V-Raptor, KOMODO) (*.r3d)
- Betaflight黑匣子 (*.bfl, *.bbl, *.csv)
- ArduPilot日志 (*.bin, *.log)
- Gyroflow .gcsv日志
- iOS应用:
Sensor Logger
, G-Field Recorder
, Gyro
, GyroCam
- Android应用:
Sensor Logger
, Sensor Record
, OpenCamera Sensors
, 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二进制和*.txt)
- Vuze (VuzeXR)
- KanDao (Obisidian Pro)
- CAMM格式
未列出相机的信息
- 对于内置陀螺仪的相机,请联系我们,我们将实现对该相机的支持。有关陀螺仪日志记录过程的信息,请参阅文档。
- 对于没有内置陀螺仪的相机,请考虑使用Betaflight飞控或查看我们的flowshutter项目。
安装
Windows
- 从Releases页面下载
Gyroflow-windows64.zip
,将文件解压到某个位置,然后运行Gyroflow.exe
- 如果显示有关
VCRUNTIME140.dll
的错误,请安装VC运行库
MacOS
- 从Releases页面下载
Gyroflow-mac-universal.dmg
,运行下载的文件,并将Gyroflow
应用拖放到应用程序文件夹(或任何你想要的位置,比如桌面)
- 你也可以使用brew安装:
brew install gyroflow
。要升级Gyroflow,运行brew update
然后brew upgrade gyroflow
Linux
- 从Releases页面下载
Gyroflow-linux64.tar.gz
,将文件解压到某个位置,然后在终端中运行./Gyroflow
。
- 如果不行,你可以尝试
Gyroflow-linux64.AppImage
,但首选.tar.gz版本。
- 确保安装了最新的显卡驱动
- 可能需要的包:
sudo apt install libva2 libvdpau1 libasound2 libxkbcommon0 libpulse0 libc++-dev libvulkan1
- GPU特定包:
- 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
每日构建
最新开发版本始终可在此处获得:https://gyroflow.xyz/devbuild/。
最低系统要求:
- Windows 10 64位(1809或更高版本)
- 如果你使用Windows "N"版本,请转到
设置
-> 应用
-> 可选功能
-> 添加功能
-> 启用媒体功能包
- macOS 10.14或更高版本(Intel和Apple Silicon都原生支持)
- Linux:
.tar.gz
包(推荐):Debian 10+,Ubuntu 18.10+,CentOS 8.2+,openSUSE 15.3+。其他发行版需要glibc 2.28+(使用ldd --version
检查)
.AppImage
应该可以在任何地方运行
- Android 6+
帮助和支持
对于一般支持和讨论,你可以在Gyroflow Discord服务器上找到开发人员和其他用户。
对于希望与团队私下联系以进行合作的公司或个人:devteam@gyroflow.xyz。
测试数据
你可以从这里下载一些带有陀螺仪数据的视频片段:https://drive.google.com/drive/folders/1sbZiLN5-sv_sGul1E_DUOluB5OMHfySh?usp=sharing
路线图
查看未解决的问题列表,了解提议的功能和已知问题。
代码中还有大量的TODO注释。
视频编辑器插件
Gyroflow OpenFX插件可在这里获得。OpenFX插件已在DaVinci Resolve中测试。
Gyroflow Toolbox允许你将Gyroflow项目导入Final Cut Pro效果中。
计划开发Adobe After Effects插件,但尚未就绪。
贡献
贡献是开源社区成为如此令人惊叹的学习、激励和创造之地的原因。我们非常感谢任何贡献者。
- 如果您对添加或删除功能有建议,欢迎开启一个议题来讨论。
- 如果您想实现某个功能,可以fork这个项目,实现您的代码并开启一个拉取请求。
翻译
目前Gyroflow提供以下语言版本:
- 英语(基础语言)
- 简体中文(由DusKing1翻译)
- 繁体中文(由DusKing1翻译)
- 捷克语(由Jakub Ešpandr、VitroidFPV、davidazarian、Michael Kmoch翻译)
- 丹麦语(由ElvinC翻译)
- 芬兰语(由Jesse Julkunen翻译)
- 法语(由KennyDorion翻译)
- 加利西亚语(由Martín Costas翻译)
- 德语(由Grommi和Nicecrash翻译)
- 希腊语(由Stamatis Galiatsatos翻译)
- 印度尼西亚语(由Aloysius Puspandono翻译)
- 意大利语(由Rosario Casciello翻译)
- 日语(由井上康翻译)
- 韩语(由EP45翻译)
- 挪威语(由MiniGod和alexagv翻译)
- 波兰语(由AdrianEddy翻译)
- 巴西葡萄牙语(由KallelGaNewk翻译)
- 葡萄牙语(由Ricardo Pimentel翻译)
- 俄语(由Андрей Гурьянов、redstar01和lukdut翻译)
- 斯洛伐克语(由Radovan Leitman和Eduard Petrovsky翻译)
- 西班牙语(由Pelado-Mat翻译)
- 土耳其语(由Metin Oktay Yılmaz翻译)
- 乌克兰语(由Artem Alexandrov翻译)
帮助我们将Gyroflow翻译成您的语言!我们使用crowdin管理翻译,您可以在这里贡献:https://crowdin.com/project/gyroflow
我想贡献但不懂Rust或QML
开发
使用的语言 和技术
Gyroflow使用Rust编写,UI使用QML编写。主程序使用Qt、ffmpeg、OpenCV和mdk-sdk外部依赖,但核心库是纯Rust编写的,没有任何外部依赖。
OpenCV的使用保持最小化,仅用于镜头校准和光流(src/core/calibration/mod.rs
和src/core/synchronization/opencv.rs
)。核心算法和去畸变不使用OpenCV。
GPU支持得益于Qt RHI和wgpu,支持DirectX、OpenGL、Metal和Vulkan。
对于GPU处理,我们使用OpenCL或wgpu,并有高度并行化的CPU实现作为后备。
代码结构
- 整个GUI在
src/ui
目录中
src/controller.rs
是UI和核心之间的桥梁,它接收来自QML的所有命令并调用核心中的函数
src/core
包含整个gyroflow引擎,不依赖于Qt或ffmpeg,OpenCV是可选的
src/rendering
包含所有用于渲染最终视频和同步处理的FFmpeg相关代码
src/core/gpu
包含去畸变的GPU实现
src/qt_gpu
包含使用Qt RHI和GLSL计算着色器的零拷贝GPU去畸变路径
src/gyroflow.rs
是主入口点
- 每个目录中的
mod.rs
或lib.rs
作为模块的主入口(目录名是模块名,mod.rs
是入口点)
开发环境
Visual Studio Code
配合rust-analyzer
扩展。
对于QML工作,我建议使用Qt Creator并在那里加载所有QML文件,因为它有自动完成和语法高亮功能。
该项目还支持UI实时重载,这是一种超快速的UI工作方式。只需在gyroflow.rs
中将live_reload = true
,它就应该立即生效。现在每次更 改任何QML文件时,应用程序都会立即重新加载。
在Windows上构建
- 先决条件:
git
、7z
和可用的powershell
。如果你从未运行过powershell脚本,请以管理员身份在powershell中运行set-executionpolicy remotesigned
- 从以下地址获取最新稳定版Rust语言:https://rustup.rs/
- 请确保在从Visual Studio安装程序安装C++构建工具时选中英语语言包选项
- 通过运行
cargo install --force just
安装Just
- 克隆仓库:
git clone https://github.com/gyroflow/gyroflow.git
- 进入项目目录并:
- 安装依赖:
just install-deps
- 编译并运行:
just run
在MacOS上构建
- 先决条件:
git
、brew
- 从以下地址获取最新稳定版Rust语言:https://rustup.rs/
- 通过运行
cargo install --force just
安装Just
- 克隆仓库:
git clone https://github.com/gyroflow/gyroflow.git
- 进入项目目录并:
- 安装依赖:
just install-deps
- 编译并运行:
just run
- 第一次运行时可能不会成功,运行一次
just deploy
然后just run
就可以正常工作了
在 Linux 上构建
- 先决条件:
git
、7z
、python
、apt
包管理器(如果使用其他发行版,请调整脚本中的命令)
- 从 https://rustup.rs/ 获取最新稳定版 Rust 语言
- 通过运行
cargo install --force just
安装 Just
- 克隆仓库:
git clone https://github.com/gyroflow/gyroflow.git
- 进入项目目录并:
- 安装依赖:
just install-deps
- 编译并运行:
just run
为 Android 构建
- 先决条件:
git
、7z
、可用的 powershell
、Android SDK 和 NDK。Android 支持尚不完善,但应用可以构建并基本运行。目前仅支持在 Windows 上构建
- 从 https://rustup.rs/ 获取最新稳定版 Rust 语言
- 通过运行
cargo install --force just
安装 Just
- 克隆仓库:
git clone https://github.com/gyroflow/gyroflow.git
- 安装 Android SDK 和 NDK r23c,并更新
_scripts/android.just
中的路径
- 进入项目目录并:
- 安装依赖:
just android install-deps
- 编译 apk 并安装到设备:
just android deploy
为 iOS 构建
- 先决条件:
git
、brew
- 从 https://rustup.rs/ 获取最新稳定版 Rust 语言
- 通过运行
cargo install --force just
安装 Just
- 克隆仓库:
git clone https://github.com/gyroflow/gyroflow.git
- 进入项目目录并:
- 安装依赖:
just ios install-deps
- 在
_scripts/ios.just
中更新团队 ID、签名密钥和配置文件
- 编译并在设备上运行:
just ios run
在 Windows 上进行性能分析
- 安装并运行
Visual Studio Community Edition
- 使用
profile
配置文件编译并运行 Gyroflow:just profile
- 在 Visual Studio 中,转到
调试 -> 性能分析器...
- 在
目标
下,打开 更改目标
并选择 正在运行的进程...
,选择正在运行的 gyroflow.exe
进程
QML 性能分析
- 在
build.rs
中取消注释 config.define("QT_QML_DEBUG", None);
- 在
gyroflow.rs
中注释掉 cli::run()
- 在调试模式下使用 QML 调试器参数运行:
cargo run -- "-qmljsdebugger=port:1234,block,services:CanvasFrameRate,EngineControl,DebugMessages"
- 在 Qt Creator 中转到
分析
-> QML 分析器(附加到等待中的应用程序)
并输入端口 1234
许可证
根据带有 App Store 例外的 GPLv3 许可证分发。有关更多信息,请参阅 LICENSE。
作为第 7 条下的附加许可,您可以通过应用商店分发 gyroflow_core
,即使该商店有与 GPL 不兼容的限制性条款和条件,前提是源代码也可以在没有这些限制性条款和条件的渠道下,根据 GPL 获得,无论是否有此许可。
作者
- AdrianEddy - Rust 实现的作者(本仓库中的代码),UI 作者,GPU 处理、滚动快门校正和高级渲染功能的作者
- Elvin Chen - Python 版本的第一作者,为这一切成为可能奠定了基础
主要贡献者
致谢