
【免费下载链接】shrimplyyoure telling me a shrimp made this video?!项目地址https://gitcode.com/gh_mirrors/sh/shrimply点击查看免费下载在深入架构之前先用一句话介绍Shrimply它是一个用Rust编写的跨平台视频编辑器以GPU 渲染为第一优先级同时支持 CUDANVIDIA与 MetalApple Silicon并通过142 个 Rust crate精细拆分模块职责。下面这张官方界面截图能帮你快速建立直观印象。为什么拆成 142 个 crate打开 Cargo.toml 可以看到[workspace]声明了crates/下 140 个成员外加vendor/中两个第三方 Rust 绑定。Shrimply 的开发者在 AGENTS.md 里明确写了「Keep things simple and stupid」的准则但这并不意味着项目简陋——恰恰相反模块化是它最显著的架构特征。拆成大量 crate 的核心收益职责清晰每个 crate 只做一件事例如 crates/math/core/ 只处理数学基础crates/render/render-core/ 只处理 GPU 渲染逻辑跨平台可组合GTK、Qt、AppKit 三套 UI 前端共享同一份shrimply-cross-ui-core、shrimply-render-core编译隔离Rust workspace 可以对每个 crate 独立编译缓存make dev增量构建速度更快依赖显式[workspace.dependencies]统一版本避免同一依赖出现多版本顶层分层从 UI 到 GPU 的四层结构Shrimply 的 crate 目录天然反映了一套四层架构UI 层 (crates/ui, crates/binaries) └─ 跨 UI 会话层 (cross-ui-core, editor-state) └─ 渲染/媒体层 (render/*, media/*) └─ GPU 抽象层 (gpu/*)下面按层拆解。第 1 层可执行入口binaries/crates/binaries/ 下有 6 个可执行 crate对应三种 UI 框架 × 两种入口launcher / editorCrate说明editor-gtkGTK 4 libadwaita 编辑器主程序Linux 默认editor-qtQt Quick/QML 编辑器editor-appkitmacOS AppKit 编辑器launcher-gtkGTK 启动器负责检查 GPU 并启动编辑器launcher-qtQt 启动器launcher-appkitmacOS 启动器一个关键设计启动器与编辑器是两个独立进程。launcher-gtk/src/main.rs 中首先调用shrimply_cross_ui_core::launcher::check_nvidia_gpu()如果 GPU 不支持就直接弹窗退出——这保证了「GPU 优先」的产品定位不会被 CPU 用户误装后抱怨。第 2 层跨 UI 会话核心cross-ui-core editor-state这一层是三套 UI 前端共享的业务大脑位于crates/ui/application/cross-ui-core/src/editor.rscrates/application/editor-state/src/EditorSession结构体见 cross-ui-core/src/editor.rs是理解整个系统的入口。它持有Project完整的项目文档模型来自 shrimply-project-documentplayer_state播放头、时间轴位置来自 shrimply-editor-stateplayback_performance性能采集器selection_state多选状态audio_player音频引擎句柄mcp_serverMCP 集成桥三套 UIGTK / Qt / AppKit都只是这个 Session 的视图渲染器业务逻辑不重复。第 3 层渲染与媒体管线render/ media/这是 Shrimply 最重的部分也是GPU 优先理念的落地点。3.1 渲染核心Slang shader 反射 ABIcrates/render/render-core/ 是整个视频合成引擎。它的 build.rs 做了两件非常工程化的事编译 shaders/reflection.slang 生成反射 ABI在 Rust 侧自动生成对应的结构体绑定编译 shaders/background_spirv.slang 等输出 SPIR-V 供 GPU 执行shaders/kernels.txt 列出了所有 GPU 核函数preview、export、modifiers、stabilization、mesh_flow、anime4k等——预览和导出走的是同一套 shader这是所见即所得在性能上可行的关键。3.2 GPU 抽象CUDA / Metal / OptiX 三选一crates/gpu/ 目录按后端拆分gpu-cuda gpu-cuda-memoryNVIDIA 计算 显存管理gpu-metalApple Silicondenoise-optix denoise-metal3D 降噪slang-buildSlang 编译器封装compiler.cpp Rust 绑定gpu-vulkanVulkan 备用后端crates/media/visual/visual-cuda/src/ 里 50 个.rs文件几乎一一对应一种 GPU 操作compositor.rs、modifiers/、paint_render.rs、text_render.rs、stabilization等。可以看到CUDA 后端是当前最完整的实现Metal 后端覆盖核心路径Vulkan 作为实验性后端。3.3 媒体解码与特效crates/media/visual/ 下的子目录展示了媒体支持的广度video/video-decoderdecoder-pool基于 ffmpeg-next 的解码池stabilization/三套防抖算法——affine-l1、mesh-flow、nvidia-optical-flow基于 NVIDIA 专有 SDKpaint/完整的手绘笔迹渲染栈paint-geometry→paint-interpolation→paint-skia基于 perfect-freehandmanim/Python Manim 数学动画桥接manim-bridgemanim-irmanim-wgpu/manim-cuda/manim-metal3d/3D 场景 3D Gaussian Splatting Metal/Vulkan 渲染anime4k-cuda内置 Anime4K 模型权重的 GPU 超分第 4 层UI 组件与平台适配crates/ui/crates/ui/ 是最大的一族100 crate按功能域组织目录职责关键 crateinspector/属性检查器inspector-core123 个 .rs 文件inspector-gtk/inspector-qt/timeline/时间轴timeline-skia72 个文件Skia 直绘timeline-gtktimeline-qtpreview/视频预览preview-gtk/preview-qt/preview-provider-skiacomponents/通用控件components-core 每平台实现keyframe-graph/关键帧曲线图Skia 渲染paint/笔迹编辑paint-edit-skiasurface/GPU 绘制表面surface-gl-skiasurface-metal-skia一个值得注意的细节Skia 被用作核心 2D 绘制引擎时间轴、关键帧图、加载屏都是 Skia 直绘而不是依赖 GTK 的 Cairo 或 Qt 的 QPainter——这与 AGENTS.md 中「Avoid WebKit」的极简理念一致只做真正需要的事。AI 与自动化的两大入口MCP 集成让 AI 驱动视频编辑crates/integrations/mcp/ 实现了一个MCPModel Context Protocol服务器可以让 Codex、Claude 等 AI 客户端直接操作打开中的 Shrimply 项目。docs/source/integrations/mcp.rst 描述了完整的工具面create_project/connect_project创建或连接项目读取时间轴、移动播放头添加/剪辑片段、导入媒体触发语音转写、TTS渲染单帧这个 crate 通过 local-ipc 与编辑器进程通信——一个 Unix socket 服务器AI 客户端和编辑器共享同一份EditorSession。Python 计算服务器把重活扔到 GPU 服务器server/ 目录是一个独立的 Python 服务通过 Docker 部署提供3D 相机追踪server/src/api/tracking_3d/语音转文字server/src/api/stt/基于 pocketsphinxTTSserver/src/api/tts/视频生成server/src/api/video_generation/SAM2 分割server/src/api/sam2/Pneuma 推理server/src/api/pneuma/47 个 Python 文件是最大的推理子模块Rust 端通过 crates/integrations/compute-client/ 中的pneuma.rs与managed.rs调用这个服务。这种「本地 Rust 编辑器 远程 Python 推理」的分离让 Shrimply 既能单机运行无 GPU 服务器时优雅降级也能对接大规模 GPU 集群。项目文档层一份 .shrimp 文件如何组织crates/project/ 是项目文档模型的核心14 个 crate 协作project-document主模型44 个 .rs 文件包含caption/字幕用 pest 解析project/时间轴、轨道、历史 undoproject-evaluationrhai 脚本引擎支持表达式expression_helpers.rhaiproject-types property-model类型与属性模型timeline-edit时间轴编辑逻辑kdenlive-parser otio-parser导入 Kdenlive 和 OTIO 项目recent-projects property-transfer最近项目 属性复制粘贴crates/application/trust-core/ 负责项目信任审查——在加载第三方.shrimp文件时弹出确认对话框这是视频编辑器里常被忽视的安全细节。数学与工具层math/ i18n diagnosticscrates/math/core时间用 fraction 表示避免浮点误差、color多后端adw/gdk/gif/skia、geometry2D/3D 几何、相机重建、形变、interpolation关键帧插值、mediacrates/i18n/基于 rust-i18n app.toml等 4 个 locale 文件crates/diagnostics/process-reporting崩溃捕获profiling性能分析crates/resource-pipeline/资源加载管线一次完整渲染的 crate 协作流理解了分层我们用一个具体场景串起来用户把播放头从 0 秒拖到 5 秒预览画面如何刷新UI 层timeline-gtk 捕获鼠标事件调用EditorSession的 seek API状态层editor-state/player_state.rs 更新播放头触发订阅者媒体层decoder-pool 从池中取解码器通过 CUDA 硬件解码或 CPU 回退取帧渲染层preview-render-core 组装Layer提交到 render-coreGPU 层Slangpreviewshader 在 GPU 上合成所有图层 特效输出到 surface-gl-skia 或 surface-metal-skiaUI 层Skia 把帧绘制到 GTK/Qt 窗口整个过程没有 CPU 参与像素合成——这是GPU 优先最直白的体现。给贡献者的入门路线如果你是第一次接触这个代码库建议按以下顺序阅读crates/binaries/launcher-gtk/src/main.rs理解进程入口crates/ui/application/cross-ui-core/src/editor.rs理解EditorSession是所有 UI 的中心crates/project/project-document/理解项目数据模型crates/render/render-core/理解 GPU 渲染的核心crates/gpu/cuda/gpu-cuda/理解 CUDA 抽象构建命令参考 docs/source/development.rstmake dev即可启动 GTK 开发版本。总结Shrimply 的架构可以用一句话概括用一个 Rust workspace 把 142 个 crate 编排成「UI 三前端 跨平台会话 GPU 渲染引擎 AI 集成」的四层结构把 99% 的像素工作交给 CUDA/Metal GPU 完成。这种设计的代价是模块众多、新人上手曲线陡但收益是每个 crate 都可以独立测试、独立演进三套 UI 共享 90% 的逻辑只改 10% 的视图GPU 后端可以按硬件能力降级而不是一刀切对于想学习现代 Rust 工程实践、或者对「如何用 Rust 写一个 GPU 优先的创意应用」感兴趣的开发者Cargo.toml 和 crates/ 本身就是一份绝佳的教材。赞分享【免费下载链接】shrimplyyoure telling me a shrimp made this video?!项目地址https://gitcode.com/gh_mirrors/sh/shrimply点击查看免费下载相关推荐HOP架构全解Tauri 2、Rust与TypeScript如何协作构建跨平台HWP编辑器HOP架构全解Tauri 2、Rust与TypeScript如何协作构建跨平台HWP编辑器 HOP 是一个开源的跨平台 HWP/HWPX 文档编辑器它的架构BlockSuite终极指南如何构建基于IndexedDB的离线优先协作编辑器想要构建一个既能离线使用又能实时协作的编辑器BlockSuite正是你需要的解决方案这个强大的开源工具包让你能够轻松创建支持CRDT技术的协作编辑器即使在前端UI组件富文本如何使用 Rust 构建高性能代码编辑器Lapce 核心架构深度解析如何使用 Rust 构建高性能代码编辑器Lapce 核心架构深度解析 Lapce 是一款使用 Rust 语言编写的快速且功能强大的代码编辑器它结合了现代编辑代码编辑器桌面应用开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考